Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu programowego. Może to być tworzenie oprogramowania od zera, ale coraz częściej nowe oprogramowanie powstaje poprzez rozszerzanie i modyfikowanie istniejących systemów. Procesy tworzenia oprogramowania są złożone i zależą od opinii ludzi, podobnie jak wszystkie procesy intelektualne.
Proces tworzenia oprogramowania Czynności tego procesu są następujące: 1. Specyfikowanie oprogramowania - funkcjonalność oprogramowania i ograniczenia jego działania muszą być zdefiniowane. 2. Projektowanie i implementacja oprogramowania - oprogramowanie, które spełnia specyfikację musi być stworzone. 3. Zatwierdzanie oprogramowania - oprogramowanie musi być zweryfikowane, aby zapewnić, że robi to, czego oczekiwał klient. 4. Ewolucja oprogramowania - oprogramowanie musi ewoluować, aby spełniać zmieniające się potrzeby użytkowników.
Specyfikowanie wymagań Ma na celu określenie, jakich usług wymaga się od systemu i jakim ograniczeniom podlega tworzenie i działanie oprogramowania. Ta czynność jest często nazywana inżynierią oprogramowania. Jest bardzo ważna bowiem błędy w tej fazie prowadzą do późniejszych kłopotów w trakcie projektowania i implementacji. Proces inżynierii wymagań prowadzi do opracowania dokumentacji wymagań, która jest specyfikacją systemu. W tym dokumencie wymagania zwykle przedstawia się w dwóch poziomach szczegółowości. Użytkownicy i klienci potrzebują wykazu wymagań na wysokim poziomie abstrakcji, podczas gdy programiści muszą mieć bardziej szczegółową specyfikację systemu.
Inżynieria wymagań W procesie inżynierii wymagań wyróżnia się cztery główne fazy: 1. Studium wykonalności - ocenia się, czy rozpoznane potrzeby użytkowników mogą być spełnione przy obecnych technologiach sprzętu i oprogramowania. Studium pozwala zdecydować, czy proponowany system, będzie opłacalny z punktu widzenia ekonomii czy można zbudować system w ramach założonego budżetu. 2. Określenie i analiza wymagań - jest to proces określania wymagań na podstawie obserwacji istniejących systemów, rozmów z potencjalnymi użytkownikami i zaopatrzeniowcami, analizy zadań itd. 3. Specyfikowanie wymagań - jest czynnością polegającą na zapisywaniu informacji zebranych w czasie analizy w dokumencie definiującym zbiór wymagań. Mogą w nim pojawić się dwa rodzaje wymagań
Inżynieria wymagań 4. Zatwierdzanie wymagań – w tej czynności sprawdza się realizm, spójność i kompletność wymagań. W jej trakcie niemal pewne jest wykrycie błędów. Następnie należy zmodyfikować dokumentację wymagań tak, aby usunąć te błędy. Czynności procesu inżynierii wymagań nie są wykonywane w tak ścisłej kolejności.
Projektowanie i implementowanie oprogramowania Faza implementowania w tworzeniu oprogramowania to proces przekształcania specyfikacji systemu w działający system. Obejmuje zawsze projektowanie i programowanie, ale jeśli zastosowano podejście ewolucyjne, to może również zawierać udoskonalanie specyfikacji oprogramowania. Projekt oprogramowania to opis struktury oprogramowania, które ma być zaimplementowane, danych, które są częścią systemu, interfejsów między komponentami systemu i użytych algorytmów. Projektanci nie tworzą od razu końcowego projektu, ale opracowują go iteracyjnie poprzez wiele różnych wersji. Proces projektowania może obejmować opracowanie kilku modeli na różnych poziomach abstrakcji. W miarę dekompozycji projektu odkrywa się błędy i przeoczenia w poprzednich fazach. Powoduje to sprzężenie zwrotne umożliwiające poprawę wcześniej powstałych błędów.
Projektowanie i implementowanie oprogramowania Końcowym wynikiem tego procesu są: 1. Projektowanie architektury - identyfikuje i dokumentuje podsystemy tworzące system i związki między nimi. 2. Specyfikowanie abstrakcyjne - opracowuje się abstrakcyjną specyfikację usług każdego podsystemu oraz ograniczeń, w ramach których musi pracować. 3. Projektowanie interfejsów - projektuje i dokumentuje interfejsy każdego podsystemu z innymi podsystemami. Specyfikacja interfejsów musi być jednoznaczna, ponieważ umożliwia korzystanie z podsystemów bez znajomości ich działania.
Projektowanie i implementowanie oprogramowania 4. Projektowanie komponentów - przypisuje się usługi do różnych komponentów i projektuje interfejsy tych komponentów. 5. Projektowanie struktur danych - szczegółowo specyfikuje się i projektuje struktury danych użyte w implementacji systemu. 6. Projektowanie algorytmów - szczegółowo specyfikuje się i projektuje algorytmy służące do realizacji usług.
Zatwierdzanie oprogramowania Zatwierdzanie oprogramowania lub bardziej ogólnie weryfikacja i zatwierdzanie mają wykazać, że system jest zgodny ze swoją specyfikacją i spełnia oczekiwania klienta. Obejmuje proces sprawdzania, m.in. kontrole i recenzje w każdym kroku procesu tworzenia od definicji wymagań użytkowania do pisania programów. Z wyjątkiem małych programów nie należy testować systemu jako pojedynczej, monolitycznej całości. Wielkie systemy buduje się z podsystemów, te są z kolei składane z modułów, w skład których wchodzą procedury i funkcje. Proces testowania powinien być zatem wykonywany w wielu krokach, w których testuje się przyrostowo jednocześnie z implementowaniem systemu.
Zatwierdzanie oprogramowania Faza procesu testowania są następujące: 1.Testowanie jednostek - testuje się poszczególne komponenty, aby zapewnić, że działają poprawnie. Każdy komponent jest niezależnie testowany bez udziału innych komponentów. 2. Testowanie modułów - moduł jest kolekcją niezależnych komponentów takich jak klasy obiektów, abstrakcyjne typy danych, albo bardziej luźną kolekcję procedur i funkcji. 3. Testowanie podsystemów - ta faza obejmuje testowanie kolekcji modułów, które zintegrowano w podsystemie. W wypadku wielkich systemów głównymi napotkanymi tu problemami są niezgodność interfejsów.
Zatwierdzanie oprogramowania 4. Testowanie systemu - podsystemy zintegrowano w system. Ten proces ma wykryć błędy wynikające z nie przewidzianych interakcji między podsystemami i problemami z interfejsami podsystemów. 5. Testowanie odbiorcze - jest to końcowa faza procesu testowania przed przyjęciem systemu przez użytkownika.
Ewolucja systemu Elastyczność systemów oprogramowania jest jedną z głównych przyczyn, że coraz więcej i więcej oprogramowania włącza się do wielkich złożonych systemów.
Ewolucja systemu Istniejące systemy Zdefiniuj wymagania Zbadaj istniejące systemy Zaproponuj zmiany Wybierz dostawcę Nowy system