Tomasz Giętka Sieci Komputerowe, II rok PWSZ Płock Incremental development (model przyrostowy, realizacja przyrostowa) Na wstępie wyjaśnię na czym polega metodyka prowadzenia projektu informatycznego . Jest to zestaw pojęć, notacji, modeli, języków, technik i sposobów postępowania służący do analizy dziedziny stanowiącej przedmiot projektowanego systemu oraz do projektowania pojęciowego, logicznego i/lub fizycznego. Metodyka jest powiązana z notacją służącą do dokumentowania wyników faz projektu (pośrednich, końcowych), jako środek wspomagający ludzką pamięć i wyobraźnię i jako środek komunikacji w zespołach oraz pomiędzy projektantami i klientem. Metodyka ustala: fazy projektu, role uczestników projektu modele tworzone w każdej z faz scenariusze postępowania w każdej z faz reguły przechodzenia od fazy do następnej fazy notacje, których należy używać dokumentację powstającą w każdej z faz Typowy podział na fazy projektu: 1. specyfikacja – na tym etapie następuje określenie i ustalenie wymagań, które musi spełniać oprogramowanie 2. projektowanie – ustalenie ogólnej architektury systemu, wymagań dla poszczególnych jego składowych 3. implementacja – realizacja ustalonej architektury poprzez implementację składowych (modułów) i połączeń między nimi. 4. integracja – zintegrowanie poszczególnych składowych w jeden system, testowanie całego systemu 5. ewolucja – uruchomienie systemu, usuwanie wykrytych podczas jego używania błędów, rozszerzanie systemu Możemy wyróżnić szereg modeli życiowych oprogramowania : model kaskadowy model przyrostowy (iteracyjny) programowanie zwinne (ang. agile programming) programowanie ekstremalne (ang. extreme programming) model spiralny Zajmę się modelem przyrostowym (incremental development), który stosowany jest do tworzenia początkowo małych, ale z czasem „rozrastających” się części oprogramowania. Pozwala na osiąganie celów projektowych klientów, którzy nie potrafią dokładnie określić własnych potrzeb. Fazy tworzenia w modelu przyrostowym: 1. określenie całości wymagań (w ramach naszych możliwości, na tyle na ile uda nam się ją sprecyzować), wykonanie wstępnego, ogólnego projektu całości systemu 2. wybór pewnego podzbioru funkcji systemu 3. szczegółowy projekt (wg modelu kaskadowego) oraz implementacja części systemu realizującej wybrane funkcje 4. testowanie zrealizowanego fragmentu i dostarczenie go klientowi 5. powtarzanie kolejnych etapów, aż do zakończenia implementacji całego systemu Problemem podstawowym wytwarzania przyrostowego jest określenie „przyrostów”, tak aby były one istotnymi fragmentami oprogramowania, a mimo to każdą z wersji dawało się niezależnie testować i oceniać. Zalety modelu przyrostowego: częste kontakty z klientem (skrócenie przerw w porównaniu z modelem kaskadowym) brak konieczności zdefiniowania z góry całości wymagań (na wstępie definiujemy co nam się uda mając nadzieję, że uda nam się wyspecyfikować całość wymagań na etapie testowania zrealizowanych fragmentów) wczesne wykorzystanie przez klienta fragmentów systemu (funkcjonalności) możliwość elastycznego reagowania na opóźnienia realizacji fragmentu – przyspieszenie prac nad inną/innymi częściami (sumarycznie – bez opóźnienia całości przedsięwzięcia projektowego) Wady modelu przyrostowego: dodatkowy koszt związany z niezależną realizacją fragmentów systemu potencjalne trudności z wycinaniem podzbioru funkcji w pełni niezależnych dlatego: konieczność implementacji szkieletów (interfejs zgodny z docelowym systemem) – dodatkowy nakład pracy (koszt), ryzyko niewykrycia błędów w fazie testowania Podobnie jak przy wytwarzaniu innych produktów, przy tworzeniu oprogramowania istotne jest szacowanie i analiza ryzyka i kosztów oraz tworzenie wyczerpującej dokumentacji. Każdy z konkretnych modeli wskazuje na pewne możliwości, które mogą okazać się przydatne w specyficznych warunkach realizacji określonego projektu (stworzenie prototypu, podział na „przyrosty”, wykorzystanie gotowych komponentów). Najlepiej oczywiście rozważyć wszystkie modele i wybrać lub skonstruować proces wytwarzania oprogramowania optymalny dla konkretnego projektu . Czynnikami, które należy uwzględnić przy wyborze lub konstrukcji modelu przyrostowego są m.in.: specyfika tworzonego systemu (m.in. rozmiar systemu), stosowane technologie, wielkość i charakter zespołu realizującego proces, ryzyka związane z realizacją procesu, itp.