38
INśYNIERIA OPROGRAMOWANIA INśYNIERIA OPROGRAMOWANIA INśYNIERIA OPROGRAMOWANIA Proces tworzenia oprogramowania Wykorzystane materiały: • prezentacje J.E. Sienkiewicza • I. Sommerville, InŜynieria oprogramowania, WNT 2003 http://www.projectportfolio.pl/fun/Cykl%20zycia%20projektu.jpg

INśYNIERIA OPROGRAMOWANIA OPROGRAMOWANIA ... - … · Programowanie zwinne (ang. Agile software development ) ... Tworzenie formalne systemów INśYNIERIA OPROGRAMOWANIA Proces tworzenia

Embed Size (px)

Citation preview

INśYNIERIA OPROGRAMOWANIAINśYNIERIA OPROGRAMOWANIA INśYNIERIAOPROGRAMOWANIA

Proces tworzenia oprogramowania

Wykorzystane materiały:• prezentacje J.E. Sienkiewicza • I. Sommerville, InŜynieria oprogramowania, WNT 2003

http://www.projectportfolio.pl/fun/Cykl%20zycia%20projektu.jpg

Czym jest proces tworzenia oprogramowania?Czym jest proces tworzenia oprogramowania? INśYNIERIAOPROGRAMOWANIA

�� Zbiorem Zbiorem czynnościczynności i i związanych z nimi związanych z nimi wynikówwyników, , które prowadzą do powstania które prowadzą do powstania produktu produktu programowegoprogramowego

�� MoŜe obejmować tworzenie oprogramowania od MoŜe obejmować tworzenie oprogramowania od podstaw, jednak coraz częściej nowe podstaw, jednak coraz częściej nowe oprogramowanie powstaje przez rozszerzanie i oprogramowanie powstaje przez rozszerzanie i modyfikowanie istniejących systemów bądź modyfikowanie istniejących systemów bądź powtórne wykorzystanie istniejących powtórne wykorzystanie istniejących komponentówkomponentów

�� Automatyzacja procesu tworzenia Automatyzacja procesu tworzenia oprogramowania jest do tej pory niewielkaoprogramowania jest do tej pory niewielka

Zasadnicze czynności Zasadnicze czynności w procesie tworzenia oprogramowaniaw procesie tworzenia oprogramowania

INśYNIERIAOPROGRAMOWANIA

�� Specyfikowanie.Specyfikowanie. Funkcjonalność oprogramowania i Funkcjonalność oprogramowania i ograniczenia jego działania muszą być dobrze ograniczenia jego działania muszą być dobrze zdefiniowane. zdefiniowane.

�� Projektowanie i implementowanie.Projektowanie i implementowanie. Stworzenie Stworzenie oprogramowania spełniającego specyfikację.oprogramowania spełniającego specyfikację.

�� Testowanie i zatwierdzanie.Testowanie i zatwierdzanie. Wykazanie,Wykazanie, Ŝe Ŝe wytworzone oprogramowanie spełnia specyfikację i wytworzone oprogramowanie spełnia specyfikację i oczekiwania klienta. oczekiwania klienta.

�� Ewolucja.Ewolucja. Oprogramowanie ewoluuje, aby spełniać Oprogramowanie ewoluuje, aby spełniać zmieniające się potrzeby uŜytkowników.zmieniające się potrzeby uŜytkowników.

SpecyfikowanieSpecyfikowanie INśYNIERIAOPROGRAMOWANIA

�� Zasadniczym etapem tworzenia specyfikacji jest Zasadniczym etapem tworzenia specyfikacji jest tzw. tzw. inŜynieria wymagańinŜynieria wymagań::�� proces szukania, analizowania, dokumentowania, proces szukania, analizowania, dokumentowania,

sprawdzania i zatwierdzania usług i ograniczeń sprawdzania i zatwierdzania usług i ograniczeń projektowanego systemuprojektowanego systemu

�� innymi słowy innymi słowy –– proces ustalenia, co system powinien proces ustalenia, co system powinien robić, przy uwzględnieniu istniejących ograniczeńrobić, przy uwzględnieniu istniejących ograniczeń

�� opisy usług i ograniczeń są opisy usług i ograniczeń są wymaganiamiwymaganiami stawianymi stawianymi systemowisystemowi

�� W wyniku przeprowadzonych analiz dostajemy W wyniku przeprowadzonych analiz dostajemy kompletną kompletną Specyfikację Wymagań SystemowychSpecyfikację Wymagań Systemowych

InŜynierii wymagań poświęcone będą osobne wykłady

ProjektowanieProjektowanie INśYNIERIAOPROGRAMOWANIA

�� Projekt oprogramowaniaProjekt oprogramowania to opis struktury oprogramowania, które to opis struktury oprogramowania, które ma być zaimplementowane; danych, które są częścią systemu; ma być zaimplementowane; danych, które są częścią systemu; interfejsów między komponentami systemu i uŜytych algorytmów.interfejsów między komponentami systemu i uŜytych algorytmów.

�� Proces projektowania moŜe obejmować opracowanie kilku modeli Proces projektowania moŜe obejmować opracowanie kilku modeli systemu na róŜnych poziomach abstrakcji.systemu na róŜnych poziomach abstrakcji.

�� Czynności:Czynności:

�� Projektowanie architekturyProjektowanie architektury

�� Specyfikowanie abstrakcyjneSpecyfikowanie abstrakcyjne

�� Projektowanie interfejsówProjektowanie interfejsów

�� Projektowanie komponentówProjektowanie komponentów

�� Projektowanie struktur danychProjektowanie struktur danych

�� Projektowanie algorytmówProjektowanie algorytmów

Ogólny model procesu projektowaniaOgólny model procesu projektowania INśYNIERIAOPROGRAMOWANIA

Projektowaniearchitektury

Specyfikowanieabstrakcyjne

Projektowanieinterfejsów

Projektowaniekomponentów

Architekturasystemu

Specyfikacjaoprogramowania

Specyfikacja interfejsów

Specyfikacjakomponentów

Projektowaniestruktur danych

Specyfikacjastrukturydanych

Specyfikacjaalgorytmów

Projektowaniealgorytmów

Specyfikacjawymagań

Produkty projektowania

Czynności projektowe

Metody projektowaniaMetody projektowania INśYNIERIAOPROGRAMOWANIA

�� Do chwili obecnej projektowanie jest często działaniem Do chwili obecnej projektowanie jest często działaniem ad ad hochoc, , bez formalnej kontroli zmian ani zarządzania projektowaniem.bez formalnej kontroli zmian ani zarządzania projektowaniem.

�� Lepsze podejście polega na uŜyciu metod strukturalnych, które Lepsze podejście polega na uŜyciu metod strukturalnych, które są zbiorami notacji i porad dla projektantów oprogramowania. są zbiorami notacji i porad dla projektantów oprogramowania. Ich uŜycie polega zwykle na opracowaniu graficznych modeli Ich uŜycie polega zwykle na opracowaniu graficznych modeli systemu i prowadzi do duŜej ilości dokumentacji projektowej.systemu i prowadzi do duŜej ilości dokumentacji projektowej.

�� Metody strukturalne mogą obejmować:Metody strukturalne mogą obejmować:

�� modele przepływu danych,modele przepływu danych,

�� modele modele encjaencja--związekzwiązek,,

�� modele strukturalne,modele strukturalne,

�� modele obiektowe.modele obiektowe.

Metodom projektowania poświęcone będą osobne wykłady

ImplementowanieImplementowanie INśYNIERIAOPROGRAMOWANIA

�� Faza implementowania w tworzeniu Faza implementowania w tworzeniu oprogramowania to proces przekształcania oprogramowania to proces przekształcania specyfikacji systemu w działający system, na specyfikacji systemu w działający system, na postawie projektu.postawie projektu.

Zatwierdzanie oprogramowaniaZatwierdzanie oprogramowania INśYNIERIAOPROGRAMOWANIA

�� Weryfikacja i zatwierdzenie mają wykazać, Ŝe Weryfikacja i zatwierdzenie mają wykazać, Ŝe system jest zgodny ze swoją specyfikacją i spełnia system jest zgodny ze swoją specyfikacją i spełnia oczekiwania klienta.oczekiwania klienta.

�� Obejmuje proces sprawdzania, m.in. Obejmuje proces sprawdzania, m.in. kkontroleontrole, , inspekcje i recenzje w kaŜdym kroku procesu inspekcje i recenzje w kaŜdym kroku procesu tworzenia, od definicji wymagań uŜytkownika aŜ do tworzenia, od definicji wymagań uŜytkownika aŜ do implementacji.implementacji.

�� Z wyjątkiem małych programów, nie naleŜy Z wyjątkiem małych programów, nie naleŜy testować systemu jako pojedynczej całości testować systemu jako pojedynczej całości ––najpierw naleŜy wykonywać testy jednostkowe, najpierw naleŜy wykonywać testy jednostkowe, przechodząc do coraz większych struktur.przechodząc do coraz większych struktur.

TestowanieTestowanie INśYNIERIAOPROGRAMOWANIA

�� Programiści wykonują pewne testy kodu, który napisali. Zwykle Programiści wykonują pewne testy kodu, który napisali. Zwykle prowadzi to do wykrycia błędów, które naleŜy usunąć z programu.prowadzi to do wykrycia błędów, które naleŜy usunąć z programu.

�� Testowanie programu i usuwanie błędów to dwa róŜne procesy.Testowanie programu i usuwanie błędów to dwa róŜne procesy.

�� Znalezienie lokalizacji błędu moŜe wymagać nowych przypadków Znalezienie lokalizacji błędu moŜe wymagać nowych przypadków testowych.testowych.

Fazy procesu testowaniaFazy procesu testowania INśYNIERIAOPROGRAMOWANIA

�� Testowanie poszczególnych jednostek (klas, komponentów)Testowanie poszczególnych jednostek (klas, komponentów)�� Testuje się poszczególne jednostki, aby zapewnić, Ŝe działają poTestuje się poszczególne jednostki, aby zapewnić, Ŝe działają poprawnie.prawnie.

�� Testowanie modułów i podsystemówTestowanie modułów i podsystemów�� Moduł jest kolekcją niezaleŜnych jednostek takich jak klasy obieModuł jest kolekcją niezaleŜnych jednostek takich jak klasy obiektów, któw,

abstrakcyjne typy danych, albo bardziej luźną kolekcją procedur abstrakcyjne typy danych, albo bardziej luźną kolekcją procedur i funkcji. i funkcji.

�� Kolekcję modułów moŜna z kolei zintegrować w podsystemie (większKolekcję modułów moŜna z kolei zintegrować w podsystemie (większej ej całości).całości).

�� Testowanie systemuTestowanie systemu�� Proces ma wykryć błędy wynikające z nieprzewidzianych interakcjiProces ma wykryć błędy wynikające z nieprzewidzianych interakcji między między

podsystemami zintegrowanymi w pełen system oraz problemy z interpodsystemami zintegrowanymi w pełen system oraz problemy z interfejsami fejsami podsystemów.podsystemów.

�� Testowanie odbiorcze (akceptacyjne)Testowanie odbiorcze (akceptacyjne)�� Jest to końcowa faza procesu testowania przed przyjęciem systemuJest to końcowa faza procesu testowania przed przyjęciem systemu do do

uŜytkowania.uŜytkowania.

Testowaniu poświęcone będą osobne wykłady

Testowanie alfa i betaTestowanie alfa i beta INśYNIERIAOPROGRAMOWANIA

�� Testowanie alfaTestowanie alfa jest testowaniem odbiorczym, stosowanym jest testowaniem odbiorczym, stosowanym kiedy system jest tworzony dla konkretnego klienta. Proces kiedy system jest tworzony dla konkretnego klienta. Proces testowania trwa do momentu osiągnięcia zgody pomiędzy testowania trwa do momentu osiągnięcia zgody pomiędzy wytwórcą systemu i klientem co do tego, Ŝe dostarczony wytwórcą systemu i klientem co do tego, Ŝe dostarczony system jest moŜliwą do przyjęcia implementacją wymagań.system jest moŜliwą do przyjęcia implementacją wymagań.

�� Testowanie betaTestowanie beta stosuje się, kiedy system sprzedawany jako stosuje się, kiedy system sprzedawany jako produkt programowy. Testowanie polega na dostarczeniu produkt programowy. Testowanie polega na dostarczeniu systemu pewnej liczbie potencjalnych klientów, którzy systemu pewnej liczbie potencjalnych klientów, którzy zgodzili się z niego korzystać. Klienci informują zgodzili się z niego korzystać. Klienci informują wytwórców o pojawiających się problemach.wytwórców o pojawiających się problemach.

Ewolucja oprogramowaniaEwolucja oprogramowania INśYNIERIAOPROGRAMOWANIA

�� Elastyczność systemów oprogramowania jest jedną z głównych przycElastyczność systemów oprogramowania jest jedną z głównych przyczyn, Ŝe coraz zyn, Ŝe coraz więcej i więcej oprogramowania włącza się do wielkich, złoŜonychwięcej i więcej oprogramowania włącza się do wielkich, złoŜonych systemów.systemów.

�� W przypadku oprogramowania, w przeciwieństwie do sprzętu, zmianyW przypadku oprogramowania, w przeciwieństwie do sprzętu, zmiany mogą być mogą być wprowadzone w kaŜdej chwili tworzenia systemu, lub nawet po jegowprowadzone w kaŜdej chwili tworzenia systemu, lub nawet po jego zakończeniu.zakończeniu.

�� Koszt tych zmian moŜe być bardzo wysoki, ale wciąŜ będzie niŜszyKoszt tych zmian moŜe być bardzo wysoki, ale wciąŜ będzie niŜszy niŜ niŜ odpowiednie zmiany w sprzęcie systemu.odpowiednie zmiany w sprzęcie systemu.

Zidentyfikuj wymaganiastawiane systemowi

Zbadaj istniejącesystemy

Zaproponuj zmianysystemów

Zmodyfikujsystem

Nowy systemIstniejące systemy

Praca, błędy i koszty w tworzeniu systemuPraca, błędy i koszty w tworzeniu systemu INśYNIERIAOPROGRAMOWANIA

�� Rozkład pracy w cyklu tworzenia systemu:Rozkład pracy w cyklu tworzenia systemu:

�� Specyfikacja Specyfikacja 6%6%

�� Projektowanie Projektowanie 5%5%

�� Kodowanie Kodowanie 7%7%

�� Testowanie Testowanie 15%15%

�� Eksploatacja / ewolucja Eksploatacja / ewolucja 67%67%

�� Źródła błędów:Źródła błędów:

�� Specyfikacja Specyfikacja 56%56%

�� Projektowanie Projektowanie 27%27%

�� Kodowanie Kodowanie 7%7%

�� Inne Inne 10%10%

�� Koszty poprawienia błędów:Koszty poprawienia błędów:

�� Specyfikacja Specyfikacja 82%82%

�� Projektowanie Projektowanie 13%13%

�� Kodowanie Kodowanie 1%1%

�� Inne Inne 4%4%

na podstawie: konspekt ISPI – R. Tadeusiewicz

Podstawowe modele Podstawowe modele procesu tworzenia oprogramowaniaprocesu tworzenia oprogramowania

INśYNIERIAOPROGRAMOWANIA

�� Model kaskadowy (wodospad, ang. Model kaskadowy (wodospad, ang. waterfallwaterfall))

Podstawowe czynności specyfikowania, tworzenia, zatwierdzania i Podstawowe czynności specyfikowania, tworzenia, zatwierdzania i ewolucji są ewolucji są odrębnymi fazami procesu.odrębnymi fazami procesu.

�� Model przyrostowy (ang. Model przyrostowy (ang. incrementalincremental))

Specyfikowanie, projektowanie, implementowanie i zatwierdzanie pSpecyfikowanie, projektowanie, implementowanie i zatwierdzanie przeplatają się.rzeplatają się.

�� Model ewolucyjny (ang. Model ewolucyjny (ang. evolutionaryevolutionary))

Tworzy się prototypy w celu przedyskutowania z klientem oraz uzyTworzy się prototypy w celu przedyskutowania z klientem oraz uzyskania akceptacji.skania akceptacji.

�� Model spiralny (ang. spiral)Model spiralny (ang. spiral)

Proces tworzenia ma postać spirali, której kaŜda pętla reprezentProces tworzenia ma postać spirali, której kaŜda pętla reprezentuje jedną fazę procesu.uje jedną fazę procesu.

�� Tworzenie formalne systemu (Tworzenie formalne systemu (anfanf. . formalformal))

Oparte na budowaniu formalnych matematycznych specyfikacji systeOparte na budowaniu formalnych matematycznych specyfikacji systemu i mu i przekształcaniu tych specyfikacji w program za pomocą metod mateprzekształcaniu tych specyfikacji w program za pomocą metod matematycznych.matycznych.

�� Tworzenie z uŜyciem wielokrotnymTworzenie z uŜyciem wielokrotnym

W tym podejściu zakłada się istnienie duŜej liczby komponentów zW tym podejściu zakłada się istnienie duŜej liczby komponentów zdatnych do datnych do ponownego uŜycia.ponownego uŜycia.

Model kaskadowyModel kaskadowy INśYNIERIAOPROGRAMOWANIA

Definiowanie wymagań

Projektowanie systemu i oprogramowania

Implementacja i testowanie jednostkowe

Integracja i testowanie

Działanie i pielęgnacja

Fazy modelu kaskadowego

Opis poszczególnych faz modelu kaskadowegoOpis poszczególnych faz modelu kaskadowego INśYNIERIAOPROGRAMOWANIA

�� Definiowanie wymagańDefiniowanie wymagań

Zebranie i Zebranie i zdokumentowaniezdokumentowanie wymagań na system. Powstaje wymagań na system. Powstaje specyfikacja specyfikacja systemu.systemu.

�� Projekt systemu i oprogramowaniaProjekt systemu i oprogramowania

Zdefiniowanie architektury systemu (elementów sprzętowych i Zdefiniowanie architektury systemu (elementów sprzętowych i programowych). Zdefiniowanie interfejsów i interakcji między posprogramowych). Zdefiniowanie interfejsów i interakcji między poszczególnymi zczególnymi elementami. Powstaje elementami. Powstaje projekt systemuprojekt systemu..

�� Implementacja i testowanie jednostkoweImplementacja i testowanie jednostkowe

Kodowanie poszczególnych Kodowanie poszczególnych jednostek programowychjednostek programowych ((npnp. klas) oraz ich . klas) oraz ich testowanie.testowanie.

�� Integracja i testowanieIntegracja i testowanie

Zintegrowanie jednostek programowych do Zintegrowanie jednostek programowych do kompletnego systemukompletnego systemu. . Sprawdzenie, czy kompletny system spełnia specyfikację.Sprawdzenie, czy kompletny system spełnia specyfikację.

�� Działanie i pielęgnacjaDziałanie i pielęgnacja

Przekazanie systemu do uŜytkowania. Modyfikacja systemu zgodnie Przekazanie systemu do uŜytkowania. Modyfikacja systemu zgodnie ze zmianą ze zmianą wymagań.wymagań.

Wariant modelu kaskadowego Wariant modelu kaskadowego –– model Vmodel V INśYNIERIAOPROGRAMOWANIA

Po sprawdzeniu po prawej stronie, jeŜeli wynik danego testu jestPo sprawdzeniu po prawej stronie, jeŜeli wynik danego testu jestniepomyślny, to po następuje odesłanie problemu z powrotem na niepomyślny, to po następuje odesłanie problemu z powrotem na lewą stronę. Tam problem zostaje naprawiony i jeszcze raz podleglewą stronę. Tam problem zostaje naprawiony i jeszcze raz podlega a sprawdzeniu.sprawdzeniu.

źródło: konspekt ISPI – R. Tadeusiewicz

Wady modelu kaskadowegoWady modelu kaskadowego INśYNIERIAOPROGRAMOWANIA

�� Powodzenie projektu zaleŜy głownie od poprawnej i Powodzenie projektu zaleŜy głownie od poprawnej i kompletnej specyfikacji systemu kompletnej specyfikacji systemu –– model kaskadowy model kaskadowy powinien być uŜywany jedynie wówczas, gdy wymagania są powinien być uŜywany jedynie wówczas, gdy wymagania są jasne i zrozumiałe.jasne i zrozumiałe.

�� Nieelastyczny podział na rozłączne etapy Nieelastyczny podział na rozłączne etapy –– następnej fazy następnej fazy nie powinno się rozpoczynać, jeśli poprzednia się nie nie powinno się rozpoczynać, jeśli poprzednia się nie zakończy.zakończy.

�� Ewentualne iteracje są kosztowne oraz wymagają Ewentualne iteracje są kosztowne oraz wymagają powtarzania wielu prac powtarzania wielu prac –– koszty opracowania i akceptacji koszty opracowania i akceptacji dokumentów są wysokie.dokumentów są wysokie.

�� Ostatni etap moŜe się rozrosnąć w sposób Ostatni etap moŜe się rozrosnąć w sposób niekontrolowany.niekontrolowany.

Model przyrostowyModel przyrostowy INśYNIERIAOPROGRAMOWANIA

Zasada: opracowanie wstępnej implementacji, pokazanie jej Zasada: opracowanie wstępnej implementacji, pokazanie jej uŜytkownikowi z prośbą o komentarze i udoskonalanie jej w wielu uŜytkownikowi z prośbą o komentarze i udoskonalanie jej w wielu wersjach aŜ do powstania odpowiedniego systemu. wersjach aŜ do powstania odpowiedniego systemu.

Wersja początkowa

Ogólny opis

Specyfikacja

Tworzenie

Zatwierdzanie

Wersje pośrednie

Wersja końcowa

czynności równoległe

Tworzenie badawcze w modelach przyrostowychTworzenie badawcze w modelach przyrostowych INśYNIERIAOPROGRAMOWANIA

�� PPraca z klientemraca z klientem, polegająca na badaniu wymagań. Tworzenie , polegająca na badaniu wymagań. Tworzenie rozpoczyna się od tych części systemu, które są dobrze rozpoznanrozpoczyna się od tych części systemu, które są dobrze rozpoznane. e. System ewoluuje przez dodawanie nowych cech, które proponuje kliSystem ewoluuje przez dodawanie nowych cech, które proponuje klient, ent, aŜ do ostatecznej wersji systemu. Pojawiają się aŜ do ostatecznej wersji systemu. Pojawiają się iteracjeiteracje, polegające na , polegające na powtarzaniu pewnych etapów tworzenia systemu.powtarzaniu pewnych etapów tworzenia systemu.

�� Podejście przyrostowe zaproponowano jako sposób na ograniczenie Podejście przyrostowe zaproponowano jako sposób na ograniczenie powtarzania prac w procesie tworzenia oraz danie klientom pewnycpowtarzania prac w procesie tworzenia oraz danie klientom pewnych h moŜliwości odkładania decyzji o szczegółowych wymaganiach do czamoŜliwości odkładania decyzji o szczegółowych wymaganiach do czasu, su, aŜ zdobędą pewne doświadczenia w pracy z systemem.aŜ zdobędą pewne doświadczenia w pracy z systemem.

�� Klienci identyfikują w zarysie usługi, które system ma oferować.Klienci identyfikują w zarysie usługi, które system ma oferować.Wskazują, które z nich są dla nich najwaŜniejsze, a które najmniWskazują, które z nich są dla nich najwaŜniejsze, a które najmniej ej waŜne. Definiuje się następnie pewną liczbę przyrostów, które mawaŜne. Definiuje się następnie pewną liczbę przyrostów, które maja być ja być dostarczone. dostarczone.

�� Gdy przyrost jest juŜ gotowy i dostarczony, klienci mogą go urucGdy przyrost jest juŜ gotowy i dostarczony, klienci mogą go uruchomić. homić. Oznacza to, Ŝe szybko otrzymują część funkcjonalności systemuOznacza to, Ŝe szybko otrzymują część funkcjonalności systemu

Schemat tworzenia przyrostowegoSchemat tworzenia przyrostowego INśYNIERIAOPROGRAMOWANIA

Zdefiniuj zaryswymagań

Wytwórz przyrostsystemu

Przypisz wymaganiado przyrostów

Zweryfikujprzyrost

Zaprojektujarchitekturę systemu

Zintegruj system Zweryfikuj system

Systemkońcowy

System nie ukończony

Warianty modelu przyrostowegoWarianty modelu przyrostowego INśYNIERIAOPROGRAMOWANIA

�� Programowanie zwinne (ang. Programowanie zwinne (ang. AgileAgile softwaresoftware developmentdevelopment))

�� Ludzie i interakcje pomiędzy nimi Ludzie i interakcje pomiędzy nimi –– zamiast procesów i narzędzizamiast procesów i narzędzi

�� Działające oprogramowanie Działające oprogramowanie –– zamiast szczegółowej dokumentacjizamiast szczegółowej dokumentacji

�� Współpraca z klientem Współpraca z klientem –– zamiast negocjowania kontraktówzamiast negocjowania kontraktów

�� Reagowanie na zmiany Reagowanie na zmiany –– zamiast realizowania planuzamiast realizowania planu

�� Programowanie ekstremalne (ang. Programowanie ekstremalne (ang. eXtremeeXtreme ProgrammingProgramming, XP), XP)

�� określenie metafory tworzonego systemuokreślenie metafory tworzonego systemu

�� gra planistycznagra planistyczna

�� prosty projekt systemuprosty projekt systemu

�� programowanie sterowane testami (Test programowanie sterowane testami (Test DrivenDriven DevelopmentDevelopment, TDD), TDD)

�� ciągła integracja, częste wydania systemuciągła integracja, częste wydania systemu

�� udział klienta w zespoleudział klienta w zespole

�� programowanie w parachprogramowanie w parach

Programowaniu zwinnemu i ekstremalnemu poświęcone będą osobne wykłady

Zalety modelu przyrostowegoZalety modelu przyrostowego INśYNIERIAOPROGRAMOWANIA

�� Klienci nie muszą czekać na dostarczenie całego systemu, Klienci nie muszą czekać na dostarczenie całego systemu, zanim zaczną czerpać z niego korzyść.zanim zaczną czerpać z niego korzyść.

�� Klienci mogą uŜywać wstępnych przyrostów jako rodzaju Klienci mogą uŜywać wstępnych przyrostów jako rodzaju prototypu i zdobywać doświadczenia, które inspirują prototypu i zdobywać doświadczenia, które inspirują wymagania wobec późniejszych przyrostów.wymagania wobec późniejszych przyrostów.

�� Ryzyko całkowitej poraŜki przedsięwzięcia jest mniejsze.Ryzyko całkowitej poraŜki przedsięwzięcia jest mniejsze.

�� Usługi o najwyŜszym priorytecie będą dostarczane jako Usługi o najwyŜszym priorytecie będą dostarczane jako pierwsze.pierwsze.

Bardzo dobrze sprawdza się Bardzo dobrze sprawdza się

w przypadku systemów małych lub średnich w przypadku systemów małych lub średnich

oraz tych z krótkim czasem Ŝycia.oraz tych z krótkim czasem Ŝycia.

Wady modelu przyrostowegoWady modelu przyrostowego INśYNIERIAOPROGRAMOWANIA

�� Proces nie jest widocznyProces nie jest widoczny

�� System ma często złą strukturęSystem ma często złą strukturę

�� Brak dokładnej specyfikacjiBrak dokładnej specyfikacji

�� Dokumentacja czasami nie jest aktualnaDokumentacja czasami nie jest aktualna

�� Konieczne mogą być specjalne narzędzia i technikiKonieczne mogą być specjalne narzędzia i techniki

�� Konieczna stała dostępność przedstawiciela klienta.Konieczna stała dostępność przedstawiciela klienta.

Nie sprawdza się w przypadku Nie sprawdza się w przypadku

duŜych systemów o długim czasie ŜyciaduŜych systemów o długim czasie Ŝycia

Model ewolucyjnyModel ewolucyjny INśYNIERIAOPROGRAMOWANIA

�� W tym modelu, podczas projektowania tworzy się W tym modelu, podczas projektowania tworzy się prototypprototyp w celu jego w celu jego przedyskutowania z klientem oraz uzyskania jego akceptacji. Po aprzedyskutowania z klientem oraz uzyskania jego akceptacji. Po akceptacji kceptacji prototypu przechodzi się do kolejnych etapów tworzenia oprogramoprototypu przechodzi się do kolejnych etapów tworzenia oprogramowania.wania.

�� Prototypowanie zapobiega błędnemu zrozumieniu wymagań systemu, kPrototypowanie zapobiega błędnemu zrozumieniu wymagań systemu, które tóre moŜe powodować wzrost kosztów moŜe powodować wzrost kosztów –– pozwala programistom lepiej pozwala programistom lepiej zrozumieć potrzeby klienta.zrozumieć potrzeby klienta.

�� Pozwala klientowi zobaczyć jak mniej więcej system będzie wyglądPozwala klientowi zobaczyć jak mniej więcej system będzie wyglądał ał (moŜna (moŜna npnp. rozpocząć wcześnie szkolenia).. rozpocząć wcześnie szkolenia).

�� Prototyp jest zwykle porzucany (nie jest dalej rozwijany) Prototyp jest zwykle porzucany (nie jest dalej rozwijany) –– jest to tzw. jest to tzw. prototypowanie z porzuceniemprototypowanie z porzuceniem. W przeciwnym przypadku mamy do . W przeciwnym przypadku mamy do czynienia z czynienia z tworzeniem badawczymtworzeniem badawczym..

�� Prototypowanie z porzuceniem ma na celu eksperymentowanie z tymiPrototypowanie z porzuceniem ma na celu eksperymentowanie z tymiwymaganiami uŜytkownika które są niejasne, aby lepiej zrozumieć wymaganiami uŜytkownika które są niejasne, aby lepiej zrozumieć wymagania klienta i wypracować lepszą definicję wymagań stawianywymagania klienta i wypracować lepszą definicję wymagań stawianych ch systemowi. systemowi.

�� Główne wady: konieczne specjalnie narzędzia; prototyp kosztuje.Główne wady: konieczne specjalnie narzędzia; prototyp kosztuje.

Model spiralnyModel spiralny INśYNIERIAOPROGRAMOWANIA

�� Zaproponowany w 1998 r.Zaproponowany w 1998 r.

�� Proces nie jest przedstawiany jako ciąg czynności z Proces nie jest przedstawiany jako ciąg czynności z pewnymi nawrotami między nimi, ale ma postać pewnymi nawrotami między nimi, ale ma postać spirali.spirali.

�� KaŜda pętla spirali reprezentuje jedną fazę procesu.KaŜda pętla spirali reprezentuje jedną fazę procesu.

�� Najbardziej wewnętrzna pętla moŜe być Najbardziej wewnętrzna pętla moŜe być poświęcona wykonalności systemu, następna poświęcona wykonalności systemu, następna definicji wymagań stawianych systemowi, kolejna definicji wymagań stawianych systemowi, kolejna projektowaniu itd.projektowaniu itd.

�� Jawne potraktowanie zagroŜeń.Jawne potraktowanie zagroŜeń.

Model spiralny Model spiralny –– schematschemat INśYNIERIAOPROGRAMOWANIA

Określ cele,inne strategiei ograniczenia

Oceń inne strategie,rozpoznaj i zmniejsz

zagroŜenia

RECENZJA

Plan wymagańPlan cyklu Ŝycia

Plan tworzenia

Plan testowaniai integracji

Zaplanuj następną fazę

Analiza zagroŜeń

Analiza zagroŜeń

Analiza zagroŜeń

AnalizazagroŜeń

Prototyp 1

Prototyp 2

Prototyp 3

Działającyprototyp

Sposóbpostępowania

Symulacje, modele, miary odniesienia

Zatwierdzeniewymagań

Wymagania Projekto-wanie

produktu

Weryfikacja izatwierdzenie

Działanie

Testyakceptacji

Testyintegracji

Testyjednostek

Kodowanie

Szczegółoweprojektowanie

Utwórz, zweryfikujprodukt następnego

poziomu

Sektory spirali w modelu spiralnymSektory spirali w modelu spiralnym INśYNIERIAOPROGRAMOWANIA

�� Ustalanie celówUstalanie celów�� Definiuje się konkretne cele tej fazy przedsięwzięcia. IdentyfikDefiniuje się konkretne cele tej fazy przedsięwzięcia. Identyfikuje uje

się ograniczenia, którym podlega proces i produkt.się ograniczenia, którym podlega proces i produkt.

�� Rozpoznanie i redukcja zagroŜeńRozpoznanie i redukcja zagroŜeń�� Przeprowadza się szczegółową analizę kaŜdego z rozpoznanych Przeprowadza się szczegółową analizę kaŜdego z rozpoznanych

zagroŜeń przedsięwzięcia.zagroŜeń przedsięwzięcia.

�� Tworzenie i zatwierdzanieTworzenie i zatwierdzanie�� Po ocenie zagroŜeń wybiera się model tworzenia systemu.Po ocenie zagroŜeń wybiera się model tworzenia systemu.

�� PlanowaniePlanowanie�� Recenzuje się przedsięwzięcie i podejmuje decyzję, czy Recenzuje się przedsięwzięcie i podejmuje decyzję, czy

rozpoczynać następną pętlę spirali.rozpoczynać następną pętlę spirali.

Tworzenie formalne systemówTworzenie formalne systemów INśYNIERIAOPROGRAMOWANIA

�� Proces tworzenia jest oparty na matematycznych Proces tworzenia jest oparty na matematycznych przekształceniach specyfikacji systemu w program przekształceniach specyfikacji systemu w program wykonywalny. wykonywalny.

�� Podejście to ma wiele wspólnego z modelem kaskadowym. Podejście to ma wiele wspólnego z modelem kaskadowym.

�� W procesie przekształcania, formalna matematyczna W procesie przekształcania, formalna matematyczna reprezentacja systemu jest metodycznie przekształcana w reprezentacja systemu jest metodycznie przekształcana w bardziej szczegółowe, ale wciąŜ matematycznie poprawne bardziej szczegółowe, ale wciąŜ matematycznie poprawne reprezentacje systemu.reprezentacje systemu.

Definicja wymagań

Specyfikacjaformalna

Przekształcenie formalne

Integracja i testowaniesystemu

Przekształcenia formalnePrzekształcenia formalne INśYNIERIAOPROGRAMOWANIA

R2 R3

P2 P3 P4

T1 T2 T3 T4

R1

P1

Specyfikacjaformalna

Programwykonywalny

Tworzenie formalne Tworzenie formalne –– przykładprzykład INśYNIERIAOPROGRAMOWANIA

�� Zapisujemy wymagania w wybranej notacji, Zapisujemy wymagania w wybranej notacji, npnp. . BackusBackus––NauraNaura (BNF):(BNF):

<<postalpostal -- addressaddress > ::= <> ::= < namename-- partpart > <> < streetstreet -- addressaddress > <> < zipzip -- partpart >>

<<namename-- partpart > ::= <> ::= < personalpersonal -- partpart > <> < lastlast -- namename> <> < optopt -- jrjr -- partpart > <EOL> | > <EOL> | <<personalpersonal -- partpart > >

<<namename-- partpart > <> < personalpersonal -- partpart > ::= <> ::= < firstfirst -- namename> | <> | < initialinitial > ".„> ".„

<<streetstreet -- addressaddress > ::= <> ::= < househouse -- numnum> <> < streetstreet -- namename> <> < optopt -- aptapt -- numnum> <EOL> > <EOL>

<<zipzip -- partpart > ::= <> ::= < towntown -- namename> "," <> "," < statestate -- codecode > <> < ZIPZIP -- codecode > <EOL> > <EOL>

<<optopt -- jrjr -- partpart > ::= "Sr." | "> ::= "Sr." | " JrJr ." | <." | < romanroman -- numeralnumeral > | "„> | "„

�� Przekształcamy formalnie zapisane wymagania do postaci Przekształcamy formalnie zapisane wymagania do postaci npnp. . gotowego formularza, kodu C++ czy zapytań SQL ręcznie, bądź przygotowego formularza, kodu C++ czy zapytań SQL ręcznie, bądź przypomocy specjalistycznego oprogramowania.pomocy specjalistycznego oprogramowania.

�� Generujemy Generujemy parserparser ((npnp. programem YACC), który sprawdzi . programem YACC), który sprawdzi utworzony kod pod względem jego zgodności z wyspecyfikowanymi utworzony kod pod względem jego zgodności z wyspecyfikowanymi wymaganiami.wymaganiami.

Tworzenie formalne Tworzenie formalne –– zastosowania i problemyzastosowania i problemy INśYNIERIAOPROGRAMOWANIA

�� Oprócz specjalistycznych dziedzin procesy oparte na Oprócz specjalistycznych dziedzin procesy oparte na przekształceniach formalnych są uŜywane rzadko.przekształceniach formalnych są uŜywane rzadko.

�� Najlepiej znanym przykładem takiego formalnego procesu tworzeniaNajlepiej znanym przykładem takiego formalnego procesu tworzeniajest jest CleanroomCleanroom, pierwotnie opracowany przez IBM. , pierwotnie opracowany przez IBM. CleanroomCleanroom jest jest oparty na przyrostowym tworzeniu oprogramowania, gdy formalnie oparty na przyrostowym tworzeniu oprogramowania, gdy formalnie wykonuje się kaŜdy krok i dowodzi jego poprawności.wykonuje się kaŜdy krok i dowodzi jego poprawności.

�� Wymagają specjalistycznej wiedzy i w praktyce okazuje się, Ŝe w Wymagają specjalistycznej wiedzy i w praktyce okazuje się, Ŝe w wypadku większości systemów nie powodują zmniejszenia kosztów wypadku większości systemów nie powodują zmniejszenia kosztów lub polepszenia jakości w porównaniu z innymi podejściami.lub polepszenia jakości w porównaniu z innymi podejściami.

�� Interakcje systemów nie poddają się łatwo specyfikowaniu Interakcje systemów nie poddają się łatwo specyfikowaniu formalnemu.formalnemu.

Więcej informacji: Więcej informacji: http://http://www.fmeurope.orgwww.fmeurope.org

Tworzenie z uŜyciem wielokrotnymTworzenie z uŜyciem wielokrotnym INśYNIERIAOPROGRAMOWANIA

�� Zakłada się istnienie duŜego zbioru dostępnych komponentów Zakłada się istnienie duŜego zbioru dostępnych komponentów programowych do uŜycia wielokrotnego oraz integrującej je struktprogramowych do uŜycia wielokrotnego oraz integrującej je strukturyury

�� Etapy procesu:Etapy procesu:

�� analiza komponentówanaliza komponentów

�� modyfikacja wymagańmodyfikacja wymagań

�� projektowanie systemu z uŜyciem wielokrotnymprojektowanie systemu z uŜyciem wielokrotnym

�� tworzenie i integracjatworzenie i integracja

Specyfikacja wymagań

Zatwierdzeniesystemu

Tworzenie i integracja

Projekt systemu z uŜyciem

wielokrotnym

Analizakomponentów

Modyfikacjawymagań

Tematyce tej poświęcony będzie osobny wykład

Zautomatyzowane wspomaganie Zautomatyzowane wspomaganie procesu tworzenia oprogramowaniaprocesu tworzenia oprogramowania

INśYNIERIAOPROGRAMOWANIA

�� Komputerowo wspomagana inŜynieria oprogramowania (CASE)Komputerowo wspomagana inŜynieria oprogramowania (CASE) korzysta z korzysta z róŜnego oprogramowania do wspomagania czynności procesu tworzeniróŜnego oprogramowania do wspomagania czynności procesu tworzenia a oprogramowania, takich jak inŜynieria wymagań, projektowanie, oprogramowania, takich jak inŜynieria wymagań, projektowanie, programowanie i testowanie.programowanie i testowanie.

�� Czynności, które moŜna zautomatyzować za pomocą CASE:Czynności, które moŜna zautomatyzować za pomocą CASE:

�� oprogramowanie do tworzenia graficznych modeli systemu jako częśoprogramowanie do tworzenia graficznych modeli systemu jako części ci specyfikacji wymagań i projektu oprogramowaniaspecyfikacji wymagań i projektu oprogramowania

�� czytanie projektu za pomocą słownika danych, który przechowuje czytanie projektu za pomocą słownika danych, który przechowuje informacje o informacje o encjachencjach i związkach w projekciei związkach w projekcie

�� generowanie graficznego interfejsu uŜytkownika na podstawie opisgenerowanie graficznego interfejsu uŜytkownika na podstawie opisu u interfejsu, opracowanego interaktywnie przez uŜytkownikainterfejsu, opracowanego interaktywnie przez uŜytkownika

�� śledzenie błędów przez udostępnienie informacji o wykonującym siśledzenie błędów przez udostępnienie informacji o wykonującym się ę programie (programie (debuggingdebugging))

�� automatyczne tłumaczenie programów ze starych wersji języków automatyczne tłumaczenie programów ze starych wersji języków programowaniaprogramowania

Technologia CASETechnologia CASE INśYNIERIAOPROGRAMOWANIA

�� Technologia CASE jest obecnie dostępna dla większości Technologia CASE jest obecnie dostępna dla większości rutynowych czynności procesu tworzenia oprogramowania.rutynowych czynności procesu tworzenia oprogramowania.

�� InŜynieria oprogramowania jest czynnością projektową InŜynieria oprogramowania jest czynnością projektową opartą głównie na kreatywnym myśleniu. Istniejące systemy opartą głównie na kreatywnym myśleniu. Istniejące systemy CASE automatyzują pewne rutynowe czynności, ale próby CASE automatyzują pewne rutynowe czynności, ale próby zastosowania sztucznej inteligencji do wspomagania zastosowania sztucznej inteligencji do wspomagania programowania nie powiodły się dotychczas.programowania nie powiodły się dotychczas.

�� W większości firm procesy związane z inŜynierią W większości firm procesy związane z inŜynierią oprogramowania są czynnością zespołową. InŜynierowie oprogramowania są czynnością zespołową. InŜynierowie spędzają więc sporo czasu na interakcji z innymi członkami spędzają więc sporo czasu na interakcji z innymi członkami zespołu. Technologia CASE nie daje tu zbyt duŜego zespołu. Technologia CASE nie daje tu zbyt duŜego wsparcia.wsparcia.

Klasyfikacja narzędzi CASEKlasyfikacja narzędzi CASE INśYNIERIAOPROGRAMOWANIA

�� Narzędzia do planowaniaNarzędzia do planowania�� Narzędzia do szacowania kosztów, arkusze kalkulacyjneNarzędzia do szacowania kosztów, arkusze kalkulacyjne

�� Narzędzia do zarządzania zmianamiNarzędzia do zarządzania zmianami�� Narzędzia do zapisu i śledzenia wymagań, systemy kontroli zmian,Narzędzia do zapisu i śledzenia wymagań, systemy kontroli zmian, systemy systemy

zarządzania wersjamizarządzania wersjami

�� Narzędzia do projektowaniaNarzędzia do projektowania�� Edytory i procesory tekstów, edytory diagramówEdytory i procesory tekstów, edytory diagramów

�� Narzędzia do zarządzania konfiguracjamiNarzędzia do zarządzania konfiguracjami�� Narzędzia do budowania systemów, systemy zarządzania wersjamiNarzędzia do budowania systemów, systemy zarządzania wersjami

�� Narzędzia do prototypowaniaNarzędzia do prototypowania�� Języki bardzo wysokiego poziomu, generatory interfejsu uŜytkowniJęzyki bardzo wysokiego poziomu, generatory interfejsu uŜytkownikaka

�� Narzędzia wspomagająceNarzędzia wspomagające�� Edytory projektów, słowniki danychEdytory projektów, słowniki danych