Metoda inkrementalnego rozwijania oprogramowania

Można powiedzieć że „Metoda inkrementalnego rozwijania systemów informatycznych” to mój konik -> nie bez powodu pisałem z tego tematu moją pracę magisterską na studiach 🙂 Obecnie staram się wnieść trochę innowacyjności do tej metody poprzez realizację mojej pracy doktoranckiej. Ale o tym może kiedy indziej.

Teraz chciałem wprowadzić Was w tematykę tej metodyki, a tym, którzy mieli już z nią do czynienia, przypomnieć z czym to tak naprawdę się je 🙂

Tak więc zacznijmy od podstaw.

  1. Charakterystyka dziedziny
  2. Metoda inkrementalna – jedna z technik pisania oprogramowania polegająca na iteracyjnym tworzeniu systemu, począwszy do jego najprostszej bazowej wersji. W kolejnych iteracjach rozwijane i dołączane są kolejne części, aż do osiągnięcia systemu docelowego.

    diagram_idm

    Pierwsze koncepcje na temat metody inkrementalnej zrodziły się z pracy Waltera Shewharta z 1930 r. Statistical Method from the Viewpoint of Quality Control. W pracy tej Walter Shewhart proponuje poprawę jakości oprogramowania poprzez zastosowanie metodologii tak zwanych serii „plan-do-study-act” (PDSA), która w 1940 r. została wypromowana i rozwinięta przez guru ds. zapewnienia jakości W. Edwardsa Deminga.

    Pierwszym projektem, w którym została zastosowana metoda inkrementalna do tworzenia systemów był projekt Mercury rozpoczęty w 1958 r. przez NASA z udziałem IBM Federal Systems Division.

    W metodzie inkrementalnej pomiędzy poszczególnymi przyrostami funkcjonalności możliwe są zmiany w wymaganiach, mogą nastąpić zmiany w poszczególnych procesach towarzyszących wytwarzaniu oprogramowania a harmonogram prac może zostać uaktualniony. Podczas każdego przyrostu programista piszący oprogramowanie ma szansę skorzystania z wiedzy nabytej we wcześniejszych przyrostach. Wiedza ta pochodzi zarówno z procesu tworzenia oprogramowania, jak i z możliwości pracy na poszczególnych skończonych częściach systemu.

    Jeśli na metodę inkrementalną spojrzy się od strony metodyki rozwoju oprogramowania,
    to można powiedzieć że metoda inkrementalna rozpoczyna się od określenia wymagań oraz wykonania wstępnego, ogólnego projektu całości systemu, tak zwanego projektu bazowego. Następnie wybierany jest pewien podzbiór funkcji systemu według przyjętych kryteriów. Dalej, zgodnie z przebiegiem modelu kaskadowego wykonywany jest szczegółowy projekt oraz implementacja części systemu realizującej wybrane funkcje. Po przetestowaniu zrealizowany fragment pełnego systemu może zostać dostarczony klientowi.

    Jak widać z powyższego rysunku główna idea metody inkrementalnej zawarta jest w części oznaczonej przerywaną linią, realizowanej iteracyjnie. Pierwszym krokiem w każdej iteracji jest określenie podzbioru wymagań funkcjonalnych, które będą realizowane w określonej iteracji. Przeważnie wybieranych jest kilka wymagań funkcjonalnych, które tworzą jedną logiczną całość. W następnym kroku tworzymy szczegółowy projekt dla wybranej funkcjonalności. W zależności od wybranej metodyki otrzymujemy różne artefakty, które wchodzą w skład stworzonego projektu. Następnie wykonywane są prace implementacyjne oraz testowanie zaimplementowanych funkcji systemu. Pod koniec iteracji, gdy wszystkie testy zakończyły się powodzeniem, powstaje artefakt w postaci kolejnej wersji systemu
    z dodanymi nowymi funkcjami, który następnie trafia do klienta. Klient, po wykonaniu testów, decyduje, czy wymagana funkcjonalność została zrealizowana tak jak tego oczekiwał. Jeśli nowe elementy zostały pozytywnie przyjęte przez klienta, bieżąca iteracja jest zamykana i rozpoczynana jest kolejna iteracja. W razie, gdy funkcje nie zostały zrealizowane w systemie w odpowiedni sposób lub klient pragnie wzbogacić stworzoną funkcjonalność, nanoszone są poprawki do harmonogramu a poprawa błędów lub nowe elementy danej funkcjonalności realizowane są w kolejnej iteracji.

    Metoda inkrementalnego rozwijania oprogramowania najczęściej używana jest w projektach, w których wykorzystywane technologie oraz techniki programowania są nowe dla organizacji lub gdy klient pragnie, aby projekt był zrealizowany w krótkim czasie, maksymalnie zmniejszając możliwość wystąpienia dużych zmian w projekcie.

  3. Zalety i wady korzystania z metody inkrementalnej
    Decydując się na realizację projektu metodą inkrementalną musimy rozpatrzyć wszystkie zalety i wady tej metody, przed przystąpieniem do realizacji projektu. Możemy wyróżnić następujące zalety metody inkrementalnej:

    • Krótsze przerwy w kontaktach z klientem,
    • Klient ma możliwość wcześniejszego testowania i wykorzystania fragmentów systemu,
    • Opóźnienie realizacji fragmentu systemu nie musi mieć wpływu na opóźnienie realizacji całego systemu,
    • Wydajność każdego programisty wzrasta po każdym przyroście,
    • Zmiany w procesie wytwarzania mogą być dokonane pod koniec każdego przyrostu.

    Oprócz zalet metody inkrementalnej możemy wyróżnić też następujące wady:

    • Dodatkowy koszt towarzyszący niezależnej realizacji fragmentów systemu,
    • Zwiększone ryzyko nie wykrycia wszystkich błędów w fazie testowania,
    • Wymagana ścisła współpraca pomiędzy wszystkimi projektantami,
    • Konieczność dokładnego opracowania i rozplanowania etapów pracy,
    • Wymagane zachowanie przejrzystości i spójności w tworzonym kodzie.
  4. Wiele projektów udało się doprowadzić do końca dzięki zmianie wykorzystywanej metody na metodę inkrementalną. W najbardziej dramatycznych zamianach, dużą rolę odegrały tak zwane „breathing spaces” pomiędzy przyrostami, dzięki którym udało się całkowicie wymienić zespół projektowy, zmienić sposób zarządzania projektem, strukturę zespołu oraz zmienić metody harmonogramowania oraz estymacji czasu.

  5. Ograniczenia stosowania metody
    Metoda inkrementalna może być stosowana dopiero wtedy, gdy spełnione są nastę-pujące ograniczenia:

    • w tworzonym systemie możliwe jest wyodrębnienie początkowego zestawu funkcji, które będą wchodziły w skład pierwszej wersji prototypu a następnie możliwe będzie dokładanie kolejnych funkcji systemu,
    • wybrany język oraz stosowane techniki programowania pozwalają na budowanie kolejnych funkcji bez konieczności zmieniania struktury wcześniej stworzonych funkcji systemu.
  6. Metodyki Agile wspierające metodę inkrementalną
    Podczas moich badań dotyczących metodyki starałem się pokazać wspólne cechy metodyk Agile oraz metody inkrementalnej oraz udowodnić, że wiele zwinnych metodyk wytwarzania oprogramowania opiera się na metodzie inkrementalnej. W moich badaniach udało mi się wyodrębnić następujące metodyki:

    • Extreme Programming
    • Feature Driven Development
    • Dynamic System Development Method
    • Scrum
    • Agile Modeling
    • Agile Unified Process
    • Test Driven Development
    • Adaptive Software Development

    Metodyki, które wyżej zostały oznaczone boldem, zostały dokładnie przeze mnie zbadane i na podstawie nich, a w szczególności na podstawie Extreme Programming, napisałem swoją pracę magisterską.

Na razie to chyba tyle. W przyszłości postaram się opublikować dokładne informacje na temat poszczególnych etapów metodyki oraz jej zastosowanie w połączeniu nowymi technologiami i najlepszymi praktykami wytwarzania oprogramowania -> EntLib, CAB, wzorce projektowe, itp.

Advertisements

~ - autor: kaprys12 w dniu Październik 2, 2009.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

 
%d blogerów lubi to: