Wstęp do inżynierii oprogramowania
Transkrypt
Wstęp do inżynierii oprogramowania
Wstęp do inżynierii oprogramowania 11/10/2005 Inżynieria oprogramowania co to jest i po co? Wstęp do inżynierii oprogramowania ! Cykl życia oprogramowania Fazy tworzenia oprogramowania Modele tworzenia programów CASE Jak sobie wyobrażasz proces budowy (projektowania, nadzoru, eksploatacji…) terminalu na Okęciu lub Złotych Tarasów? ! ! ! Ogólna inżynieria nie zawsze `pasuje` do specyfiki tworzenia oprogramowania Inne jest spojrzenie na `tolerancje`: drzwi mogą się trochę nie domykać, tynk może być trochę nierówny, oprogramowanie albo działa albo nie! Dla oprogramowania nie ma ilościowych systemów do mierzenia właściwości czyli tzw. metryk 2/12 ©2005 R. Robert ‘RoG@j’ Gajewski Fazy tworzenia oprogramowania Cykl życia oprogramowania Analiza Tworzenie Używanie Projektowanie Implementacja Modyfikowanie Testowanie 3/12 ©2005 R. Robert ‘RoG@j’ Gajewski 4/12 Analiza ! ! ! ! ! Badania potrzeb nabywców… Zbiór wymagań, które musi zrealizować system Przykład: ograniczenie dostępu do danych dla określonych osób ! ! ! Kwestia ograniczenia dostępu sprowadza się do konieczności wprowadzenia hasła ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski Projektowanie skupia się na odpowiedzi, jak system ma wykonać dane zadanie ! Po określeniu tych wymagań przekształca się je w techniczna specyfikację ! 5/12 Projektowanie Jej głównym celem jest określenie potrzeb użytkownika systemu ! ©2005 R. Robert ‘RoG@j’ Gajewski 6/12 Najlepszą strukturą dla dużego programu jest struktura modularna Tworzenie dużych systemów jest możliwe jedynie dzięki modularnej dekompozycji Sprzyja to przyszłej `pielęgnacji` oprogramowania, jego rozwijaniu Przykład: duży system obliczeniowy, zmienia się… sposób obliczania podatku (POLITYKA!!!) – trzeba tylko zmienić ten fragment ©2005 R. Robert ‘RoG@j’ Gajewski 1 Wstęp do inżynierii oprogramowania 11/10/2005 Implementacja Testowanie ! Wiąże się ściśle z implementacją ! ! ! ! Jest to proces kodowania, właściwego pisania programów… W zasadzie temu będzie poświęcony następny semestr ! Każdy moduł testuje się podczas implementacji Można testować cały produkt na końcu, ale nie jest to najlepszy pomysł… Nie jest możliwe pełne przetestowanie produktu ! Duże systemy zawsze zawierają błędy W każdym programie jest jeszcze jeden błąd… 7/12 ©2005 R. Robert ‘RoG@j’ Gajewski 8/12 Model kaskadowy ! Model przyrostowy Model kaskadowy (waterfall model) polega na wykonywaniu analizy, projektowania, implementacji i testowania w ściśle określonej kolejności ! ! ! ! ! Faza analizy musiała zostać zakończona przed projektowaniem! Fazy tworzenia oprogramowania są podobne do faz rozwiązywania problemów wg Polyi To tradycyjne postępowanie jest w sprzeczności z metoda swobodnie podejmowanych prób i błędów Twórcze rozwiązywanie problemów jest metodą niestrukturalną 9/12 ©2005 R. Robert ‘RoG@j’ Gajewski ! ! ! ! ! 11/12 Najpierw powstaje uproszczona wersja z ograniczoną funkcjonalnością Jest ona testowana i poddana ocenie użytkownika Następnie dodaje się jej kolejne funkcjonalności, aż do uzyskania pełnego systemu 10/12 ©2005 R. Robert ‘RoG@j’ Gajewski CASE Prototypowanie (prototyping) polega na tworzeniu i poddawaniu ocenie niepełnych wersji tworzonego systemu, nazywanych prototypami. ! Model przyrostowy (incremental model) uwzględnia sprzeczności i niedoskonałości modelu kaskadowego System konstruuje się metoda przyrostową ! Prototypowanie ! ©2005 R. Robert ‘RoG@j’ Gajewski ! ! Dla modelu przyrostowego prototypy przekształcają się w efekcie w pełen końcowy produkt - jest to prototypowanie ewolucyjne Jeśli prototypy zastępuje się nowymi implementacjami mówimy o prototypowaniu z odrzucaniem Prototypowanie błyskawiczne polega na szybkim utworzeniu modelu całego systemu już na wstępnym etapie rozwoju projektu ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski Zastosowanie technik komputerowych do procesu tworzenia oprogramowania CASE – Computer Aided Software Engieneering ! ! ! ! ! ! 12/12 Narzędzia do sporządzania planu projektu Narzędzia do zarządzania projektem Narzędzia do dokumentowania Narzędzia prototypujące i symulujące Narzędzia do projektowania interfejsu Narzędzia programowe ©2005 R. Robert ‘RoG@j’ Gajewski 2