Firma programistyczna - Software company

Firma programistyczna to firma, której głównymi produktami są różne formy oprogramowania , technologia oprogramowania, dystrybucja i rozwój oprogramowania. Tworzą oni branżę oprogramowania .

Rodzaje

Istnieje wiele różnych rodzajów producentów oprogramowania:

Wszystkie te można podzielić na jedną lub wiele z poniższych kategorii:

  • kontraktowy - gdy firma programistyczna ma umowę na dostarczenie określonego oprogramowania z zewnątrz ( outsourcing oprogramowania )
  • rozwój produktu - gdy wytwarza gotowe do użycia, pakietowe oprogramowanie; Komercyjne gotowe produkty

Wspólne role w firmie programistycznej

Organizowanie firmy programistycznej to bardzo wyspecjalizowana umiejętność zarządzania, w której doświadczone osoby mogą przekształcić problem organizacyjny w wyjątkową korzyść. Na przykład rozmieszczenie podzespołów w różnych strefach czasowych może umożliwić całodobowy dzień pracy firmy, jeśli zespoły, systemy i procedury są dobrze ugruntowane. Dobrym przykładem jest zespół testowy w strefie czasowej 8 godzin przed lub za zespołem programistów, który naprawia błędy w oprogramowaniu znalezione przez testerów.

Profesjonalna firma programistyczna zwykle składa się z co najmniej trzech dedykowanych zespołów podrzędnych:

W większych firmach programistycznych stosuje się większą specjalizację, a często są też:

Struktura

Menedżer firmy programistycznej jest zwykle nazywany Head Of Development (HOD) i podlega interesariuszom . Kieruje podzespołami bezpośrednio lub przez menedżerów/liderów, w zależności od wielkości organizacji . Zazwyczaj najbardziej sprawne są zespoły liczące do 10 osób. W większych organizacjach istnieją na ogół dwa modele hierarchii:

Typowa struktura firmy programistycznej

Wszystkie zespoły są w pełni niezależne i pracują oddzielnie nad różnymi projektami. Struktura jest dość prosta i wszyscy pracownicy podlegają jednej osobie, co sprawia, że ​​sytuacja jest dość jasna, jednak nie jest to dobre rozwiązanie z punktu widzenia wymiany wiedzy i optymalnego wykorzystania zasobów ludzkich.

Struktura macierzy

W tym modelu dedykowani menedżerowie/liderzy dla każdej głównej specjalizacji „wynajmują” swoich ludzi do poszczególnych projektów prowadzonych przez kierowników produktów/projektów, którzy formalnie lub nieformalnie kupują ludzi i płacą za ich czas. Prowadzi to do tego, że każdy prywatny pracownik ma dwóch szefów – kierownika produktu/projektu i wyspecjalizowanego kierownika ds. zasobów. Z jednej strony optymalizuje wykorzystanie zasobów ludzkich, z drugiej może rodzić konflikty, co do których jeden z menedżerów ma pierwszeństwo w strukturze.

Istnieje również wiele wariantów tych struktur, a wiele organizacji ma tę strukturę rozproszoną i podzieloną na różne działy i jednostki.

Metodologie

Firmy programistyczne mogą używać wielu różnych metodologii do tworzenia kodu. Mogą to być:

Istnieją również pewne metodologie, które łączą oba, takie jak model spiralny , Rational Unified Process (RUP) czy MSF .

Cykl życia produktu

Niezależnie od zastosowanej metodologii cykl życia produktu zawsze składa się z co najmniej trzech etapów:

  • Projekt – obejmujący zarówno specyfikację biznesową, jak i techniczną
  • Kodowanie – sam rozwój
  • Testowanie – zarządzanie jakością

Idealnie, każdy etap zajmuje 30% całkowitego czasu, a pozostałe 10% w rezerwie.

UML schemat sekwencji interakcji pomiędzy te grupy mogą wyglądać następująco:

Ogólna interakcja między czterema głównymi grupami

Na każdym etapie inna grupa odgrywa kluczową rolę, jednak każdy rodzaj roli musi być zaangażowany w cały proces rozwoju:

  • Analitycy, po skompletowaniu specyfikacji biznesowej, zarządzają zmieniającą się sytuacją biznesową, aby zminimalizować możliwość zmian w czasie. Wspierają również programistów i testerów podczas całego procesu rozwoju, aby finalny produkt spełniał określone na starcie potrzeby biznesowe. Proces idealnie stawia analityków biznesowych jako kluczowych graczy podczas ostatecznego dostarczania rozwiązania do klienta, ponieważ są oni najlepiej przygotowani do zapewnienia najlepszej warstwy biznesowej.
  • Programiści tworzą specyfikację techniczną w fazie projektowania, dlatego nazywani są programistami/projektantami, a podczas testów naprawiają błędy.
  • Testerzy wypełniają scenariusze testowe w fazie projektowania i oceniają je w fazie kodowania

Systemy i procedury

firmy programistyczne posiadają różne systemy i procedury wdrożone i działające wewnętrznie we wszystkich podzespołach. Obejmują one:

Analitycy biznesowi

Programiści

Testerzy

Kierownicy projektów/produktów

Istnieje również zarządzanie cyklem życia aplikacji (ALM), które osadzają niektóre z tych funkcji w jednym pakiecie i są używane we wszystkich grupach. Dostarczane są od różnych dostawców, takich jak Borland , ECM czy Compuware .

Audyty efektywności

Firmy programistyczne o ugruntowanej pozycji zazwyczaj mają jakiś sposób mierzenia własnej wydajności. Odbywa się to zwykle poprzez zdefiniowanie zestawu kluczowych wskaźników wydajności (KPI), takich jak:

  • Średnia liczba błędów wykonanych przez programistę na jednostkę czasu lub wiersze kodu źródłowego
  • Liczba błędów znalezionych przez testera na cykl testowy
  • Średnia liczba cykli testowych do Zero Bug Bounce (ZBB)
  • Średni czas cyklu testowego
  • Szacowany czas wykonania zadania w porównaniu do czasu rzeczywistego zadania (dokładność planowania)
  • Liczba poprawek do linii bazowej

Wiele organizacji koncentruje się na osiągnięciu optymalnego poziomu Modelu Dojrzałości Zdolności (CMM), gdzie „optymalny” niekoniecznie oznacza najwyższy. Istnieją także inne systemy, takie jak Carnegie-Mellon University „s SEMA lub poszczególnych ISO standardów. Małe firmy programistyczne czasami stosują mniej sformalizowane podejście. Każda organizacja wypracowuje swój własny styl, który leży gdzieś pomiędzy totalną technokracją (gdzie wszystko jest definiowane przez liczby) a totalną anarchią (gdzie w ogóle nie ma liczb). Niezależnie od tego, w którą stronę pójdzie organizacja, rozważa piramidę opisującą koszt i ryzyko wprowadzenia zmian do już rozpoczętych procesów rozwojowych:

piramida pokazująca ryzyko i koszt czasu zmiany

Zobacz też

Bibliografia

  1. ^ „Co to jest firma zajmująca się oprogramowaniem dzisiaj?” . Czerwony Mnich. 2014 . Źródło 2 czerwca 2017 .
  2. ^ Proces oprogramowania: zasady, metodologia i technologia Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
  3. ^ Greenlit: Rozwijanie rzeczywistych / Reality TV pomysłów od koncepcji do Pitch p.12
  4. ^ Zarządzanie udanymi projektami z PRINCE2
  5. ^ Podręcznik użytkownika do przewodnika PMBOK
  6. ^ Planowanie ekstremalnego programowania
  7. ^ Zwinne zarządzanie projektami za pomocą Scrum
  8. ^ Ułatwiony racjonalny, ujednolicony proces: przewodnik praktyka po RUP
  9. ^ Microsoft Solutions Framework (MSF): przewodnik kieszonkowy