W rzeczywistości istnieje tyle odmian tych procesów, ile jest firm. Znaczenie: każda firma ma nieco inne konwencje niż inne, ale jest kilka wspólnych najlepszych praktyk, które są powszechnie stosowane w większości miejsc.
Najlepsze praktyki, które są zawsze przydatne
- Cały kod źródłowy projektu i wszystko, co jest wymagane do jego zbudowania, podlega kontroli wersji (nazywanej również kontrolą źródła). Każdy powinien być w stanie zbudować cały projekt jednym kliknięciem.
Ponadto niepotrzebne pliki (pliki obiektowe lub skompilowane pliki binarne) nie powinny być dodawane do repozytorium, ponieważ można je dość łatwo zregenerować i po prostu marnują miejsce w repozytorium.
- Każdy programista powinien aktualizować i zobowiązać się do kontroli wersji kilka razy dziennie. Przeważnie po zakończeniu zadania, nad którym pracują i przetestowaniu go na tyle, aby wiedzieć, że nie zawiera ono trywialnych błędów.
- Ponownie: każdy powinien być w stanie zbudować projekt jednym kliknięciem. Jest to ważne i ułatwia testowanie dla każdego. Duża zaleta, jeśli osoby nie będące programistami (np. Szef) też to potrafią. (Dzięki temu czują, że mogą dokładnie zobaczyć, nad czym dokładnie pracuje zespół).
- Każdy programista powinien przetestować nową funkcję lub poprawkę błędu, którą dodaje, zanim wprowadzi ją do repozytorium.
- Skonfiguruj serwer, który regularnie (w określonych odstępach czasu) aktualizuje się z repozytorium i próbuje zbudować wszystko w całym projekcie . Jeśli to się nie powiedzie, wysyła e-maile do zespołu wraz z najnowszymi zatwierdzeniami do kontroli wersji (od którego zatwierdzenia nie udało się zbudować), aby pomóc w debugowaniu problemu.
Ta praktyka nazywa się ciągłą integracją, a kompilacje są również nazywane kompilacjami nocnymi .
(Nie oznacza to, że programiści nie powinni tworzyć i testować kodu na swoich własnych maszynach. Jak wspomniano powyżej, powinni to robić).
- Oczywiście każdy powinien znać podstawowy projekt / architekturę projektu, więc jeśli coś jest potrzebne, różni członkowie zespołu nie muszą wymyślać koła na nowo. Pisanie kodu wielokrotnego użytku to dobra rzecz.
- Jakiś komunikacji potrzebna jest między członkami zespołu. Każdy powinien przynajmniej trochę zdawać sobie sprawę z tego, co robią inni. Im więcej tym lepiej. Dlatego codzienna walka jest przydatna w zespołach SCRUM.
- Testowanie jednostkowe to bardzo dobra praktyka, która automatycznie testuje podstawową funkcjonalność kodu.
- Oprogramowanie śledzenia błędów (czasem nazywane oprogramowanie śledzące czas ) jest bardzo dobrym środkiem śledzenie jakie błędy są i jakie zadania różne członkowie zespołu. Jest również dobry do testowania: testerzy alfa / beta projektu mogą w ten sposób komunikować się z zespołem programistycznym.
Te proste rzeczy zapewniają, że projekt nie wymknie się spod kontroli i wszyscy będą pracować na tej samej wersji kodu. Proces integracji continuos pomaga, gdy coś idzie strasznie źle.
Zapobiega również wysyłaniu rzeczy, które nie są kompilowane, do głównego repozytorium.
Jeśli chcesz dołączyć nową funkcję, której wdrożenie zajęłoby kilka dni i uniemożliwiłaby innym osobom budowanie (i testowanie) projektu, użyj funkcji gałęzi kontroli wersji.
Jeśli to nie wystarczy, możesz skonfigurować go również do przeprowadzania testów automatycznych, jeśli jest to możliwe w przypadku danego projektu.
Jeszcze kilka myśli
Na pierwszy rzut oka powyższa lista może być bardzo ciężka. Zalecam stosowanie się do niego w razie potrzeby : zacznij od kontroli wersji i narzędzia do śledzenia błędów, a następnie skonfiguruj serwer ciągłej integracji, jeśli tego potrzebujesz. (Jeśli jest to duży projekt, będziesz go wkrótce potrzebować.) Zacznij pisać testy jednostkowe dla najważniejszych części. Jeśli to nie wystarczy, napisz ich więcej.
Kilka przydatnych linków:
Ciągła integracja , Codzienne kompilacje to Twoi znajomi , Kontrola wersji , Testowanie jednostkowe
Przykłady:
Do kontroli wersji używam obecnie Git do moich osobistych projektów. Subversion jest również popularne i na przykład VisualSVN jest dość łatwy do skonfigurowania, jeśli używasz serwera Windows. Dla klienta TortoiseSVN działa najlepiej dla wielu osób. Oto porównanie między Git i SVN.
W przypadku oprogramowania do śledzenia błędów bardzo popularne są Jira i Bugzilla . Używaliśmy również Mantis w poprzednim miejscu pracy.
W przypadku oprogramowania do ciągłej integracji istnieje Teamcity (również godne uwagi są CruiseControl i jego odpowiednik .NET ).
Odpowiedź na Twoje pytanie „kto decyduje o głównym kształcie projektu?”
Oczywiście byłby to główny programista.
W firmach głównym deweloperem jest osoba, która rozmawia z osobami zajmującymi się finansami / marketingiem projektu i decyduje o strukturze arkusza w zależności od możliwości finansowych firmy, planowanych funkcji, wymagań użytkowników i dostępnego czasu.
Jest to złożone zadanie i zwykle zaangażowanych jest więcej niż jedna osoba. Czasami członkowie zespołu są również proszeni o udział lub przeprowadzenie burzy mózgów na temat projektu całego projektu lub określonych części.