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