Programowanie zespołowe - Team programming

W inżynierii oprogramowania , programowanie zespół jest zarządzanie projektem strategii za koordynację zadań w dystrybucji oprogramowania komputerowego rozwoju projektów, która obejmuje przypisanie dwóch lub więcej programistów pracować wspólnie na indywidualnym podzadania w ramach większego projektu programowania. Ogólnie rzecz biorąc, sposób, w jaki ten termin jest dziś używany, odnosi się do metod obecnie modnych w branży tworzenia oprogramowania, w których wiele osób pracuje jednocześnie nad tą samą działalnością; w tych systemach programiści są często grupowani w pary na tym samym stanowisku komputerowym , przy czym jeden obserwuje drugiego, pracując nad oprogramowaniem i zmieniając role w odstępach czasu.

Tradycyjne metody zarządzania zespołem

Tradycyjny rozwój oprogramowania prawie zawsze wymagał wielu programistów pracujących nad oddzielnymi częściami systemu komputerowego dla dowolnego projektu o znacznym zakresie i skali - jest to metoda podziału pracy . Oczywiście nierozsądne jest wyobrażanie sobie, że pojedynczy programista mógłby odpowiednio wykonać całą wymaganą pracę dla złożonego systemu działającego całkowicie samodzielnie w realnych ramach czasowych; a ponieważ projekty rozwojowe stają się coraz bardziej złożone, specjalistyczna wiedza nabiera pierwszorzędnego znaczenia w takich aspektach, jak analiza systemów , zapewnienie jakości i wyzwania techniczne stawiane przez poszczególne komponenty. Początkowo był to zwykle nieformalny proces, ale wraz z rozwojem komercyjnego oprogramowania jako rentownej branży konieczne stało się bardziej przemysłowe i systematyczne podejście.

Metodologie systemów zorientowanych na papierze, pierwotnie zaprojektowane do podejmowania projektów rządowych, takie jak metoda analizy i projektowania systemów strukturalnych (SSADM), wyznaczały poszczególne osoby do wykonywania poszczególnych zadań i określały rolę projektantów jako wyraźnie oddzieloną od roli programistów w model rozwoju oprogramowania wodospad . Ta metodologia również wyraźnie oddzieliła poszczególne etapy „cyklu życia”, przez które postępował projekt rozwoju systemu. Powstały „papierowy ślad” dla projektu rozwoju systemów mógł zająć tak dużo czasu, aby zbudować tak długo, że często część dokumentacji analitycznej - a czasami jej całość - była nieaktualna w momencie faktycznego rozwoju, co czyni je gorszymi niż bezużytecznymi.

Współczesne trendy: wielu programistów do jednego pod-zadania

W przypadku tych starszych metod napotkano trudności, na przykład koszty wymykające się spod kontroli wraz z rozwojem systemów i harmonogramy nie spełniające założeń dotyczących czasu wprowadzenia produktu na rynek. Te problemy doprowadziły do technik, takich jak programowanie w parach , programowania mob (aka. Zespół programowania ), wraz z nowymi systemami cyklu życia struktur, takich jak spirala Boehm . Specyfikacja tych nowych podejść rozpoczęła się w połowie lat osiemdziesiątych i trwa do dziś. Wiele z tych strategii wymaga współpracy wielu programistów nad tym samym fragmentem kodu źródłowego, w przeciwieństwie do indywidualnej odpowiedzialności za poszczególne zadania. Na przykład w „programowaniu w parach” odpowiedzialność za wynikowy produkt jest równo dzielona między dwóch programistów, którzy wspólnie pracują nad przydzielonym im podzadaniem. Korzyści z tego podejścia obejmują zdolność do kompensacji braków wiedzy i umiejętności w określonych obszarach przez innego programistę; ponadto uważa się, że wspólna odpowiedzialność zwiększa zachęty do dotrzymywania terminów projektów i celów jakościowych.

Technika ta jest często używana w nowszych metodologiach programowania, które koncentrują się wokół technik programowania zorientowanego obiektowo , takich jak Rational Unified Process i Extreme Programming (akronim „XP”), często w połączeniu z metodami dokumentacji projektowej, takimi jak Unified Modeling Language (UML ). W zorientowanych obiektowo językach programowania funkcjonalność oprogramowania tworzy modułowe, dyskretne jednostki (określane jako klasy dla elementów funkcjonalnych i pakiety dla konstelacji połączonych klas, które wykonują określoną funkcję); dwa najbardziej znane z nich to C ++ i Java . To dobrze nadaje się do podziału projektów programistycznych na podzespoły, chociaż nadal często napotyka się problemy z integracją powstałego produktu po zakończeniu każdego podzadania.

Bibliografia