SE_W01

download SE_W01

of 25

Transcript of SE_W01

Wykad 1 Pojcia wstpne Cykl ycia oprogramowania

Krzysztof Bana

Inynieria oprogramowania

1

Przedmiot inynierii oprogramowania

Oprogramowanie (software) pojcie podstawowe (do oprogramowania wcza si niekiedy, oprcz np. plikw binarnych i z kodem rdowym, take dokumentacj, pliki konfiguracyjne, przykadowe dane itp.) Inynieria oprogramowania (IO, software engineering) dziedzina inynierii zwizana z wytwarzaniem oprogramowania we wszystkich fazach jego cyklu ycia Jako dziedzina inynierii IO rozwaa w kontekcie praktycznym rozmaite aspekty wytwarzania oprogramowania (techniczny, organizacyjny, finansowy itp.)

Krzysztof Bana

Inynieria oprogramowania

2

Cel inynierii oprogramowania

Dostarczenie zasad organizacji procesu wytwarzania oprogramowania (software development) w oparciu o istniejce teorie, modele, metody i narzdzia (podejcie moe by tutaj mniej lub bardziej formalne) W kocowym efekcie proces wytwarzania oprogramowania ma w sposb efektywny doprowadzi do powstania produktu wysokiej jakoci Inynieria oprogramowania jest czci szerszej dyscypliny inynierii systemw (system engineering), w jej aspekcie dotyczcym oprogramowaniaKrzysztof Bana Inynieria oprogramowania 3

Inynieria oprogramowania

Cechy dobrego oprogramowania (Sommerville):

poprawno, zgodno z wymaganiami uytkownikw atwo pielgnacji (konserwacji), dokonywania zmian niezawodno (availability, reliability), bezpieczestwo (w obu znaczeniach safety, security) wydajno, efektywne wykorzystanie zasobw atwo stosowania, ergonomiczno

Krzysztof Bana

Inynieria oprogramowania

4

Inynieria oprogramowania

Problemy inynierii oprogramowania:

zoono programw zoono systemw, w ramach ktrych funkcjonuj programy (ludzie, sprzt, instytucje, procesy produkcyjne, itp.) zmienno systemw zoono procesw skadajcych si na wytwarzanie oprogramowania (w przeciwiestwie do prostoty samego pisania kodu) atwo i praktyczna nieunikniono popeniania bdw przy wytwarzaniu oprogramowania

Krzysztof Bana

Inynieria oprogramowania

5

Inynieria oprogramowaniaOdpowiedzialno zawodowa inynierw oprogramowania:

odpowiedzialno prawna aspekty ekonomiczne prawa autorskie kanony postpowania (codes of ethics)

Krzysztof Bana

Inynieria oprogramowania

6

Cykl ycia oprogramowania

Inynieria oprogramowania stara si zidentyfikowa i opisa podstawowe fazy tworzenia i funkcjonowania oprogramowania, a take wskaza model optymalnego przebiegu tych faz Podstawowe czynnoci zwizane z tworzeniem oprogramowania:

Okrelanie wymaga i specyfikacji Projektowanie i implementacja Testowanie walidacja (atestowanie) i weryfikacja Konserwacja (pielgnacja)Krzysztof Bana Inynieria oprogramowania 7

Cykl ycia oprogramowania

Podstawowe modele cyklu ycia oprogramowania:

Model spiralny Model kaskadowy (waterfall) Model iteracyjny

Warianty, techniki i strategie rozwoju oprogramowania jako rozszerzenia i modyfikacje podstawowych modeli:

Rozwj kierowany dokumentami Prototypowanie Programowanie odkrywcze Techniki komponentoweInynieria oprogramowania 8

Krzysztof Bana

Model spiralny

Model spiralny zosta zaproponowany jako oglny model rozwoju systemw oprogramowania Wyrnia si w nim cztery etapy, przez ktre przechodz poszczeglne fazy (czynnoci) w trakcie wytwarzania oprogramowania:

okrelanie celu analiza alternatyw oraz szacowanie i minimalizacja ryzyka realizacja i walidacja planowanie nastpnej fazy w oparciu o uzyskane wyniki

Model spiralny sabo ujmuje specyfik wytwarzania oprogramowania Zalet tego modelu jest jawne uwzgldnienie ryzykaKrzysztof Bana Inynieria oprogramowania 9

Model kaskadowy

W modelu kaskadowym kolejne etapy procesu rozwoju oprogramowania nastpuj po sobie w cile okrelonym porzdku:

Okrelenie wymaga (requirements) Projektowanie systemu (system design) Implementacja i testowanie moduw (podsystemw) Testowanie pocze moduw i caoci systemu Uytkowanie i pielgnacja (konserwacja, maintenance)

Kada nastpna faza rozpoczyna si dopiero po (czsto formalnym) zakoczeniu fazy poprzedzajcejKrzysztof Bana Inynieria oprogramowania 10

Model kaskadowy

Zalet modelu kaskadowego jest zidentyfikowanie podstawowych faz rozwoju oprogramowania i uporzdkowanie procesu tworzenia oprogramowania (uatwia to planowanie i zarzdzanie wykonaniem) Wad modelu kaskadowego jest rygorystyczne okrelenie nastpstwa faz (co moe utrudnia realizacj) W konsekwencji, jeeli pewne bdy zostaj popenione w fazie okrelania wymaga lub projektowania, a wykryte w fazie testowania lub uytkowania, koszt ich usunicia okazuje si bardzo wysokiKrzysztof Bana Inynieria oprogramowania 11

Realizacja kierowana dokumentami

Realizacja kierowana dokumentami (document driven) jest wariantem modelu kaskadowego, w ktrym przejcie od jednej fazy do nastpnej odbywa si po zaakceptowaniu zbioru dokumentw Realizacja kierowana dokumentami zostaa przyjta w realizacji przedsiwzi programistycznych w armii amerykaskiej Realizacja kierowana dokumentami posiada wady i zalety modelu kaskadowego Dodatkowo wad realizacji kierowanej dokumentami jest zwikszenie kosztu rozwoju oprogramowania w stosunku do modelu kaskadowegoKrzysztof Bana Inynieria oprogramowania 12

Model ewolucyjny

Celem modelu ewolucyjnego jest poprawienie modelu kaskadowego poprzez rezygnacj ze cisego, liniowego nastpstwa faz Pozostawia si te same czynnoci, ale pozwala na powroty, z pewnych faz do innych faz poprzedzajcych Tym samym umoliwia si adaptowanie do zmian w wymaganiach i korygowanie popenionych bdw (oba zjawiska wystpuj w niemal wszystkich praktycznie wykonywanych projektach std model ewolucyjny jest bardziej realistyczny od kaskadowego) Model ewolucyjny wymaga dodatkowych strategii dla uporzdkowania procesu wytwarzania oprogramowaniaKrzysztof Bana Inynieria oprogramowania 13

Prototypowanie

Prototypowanie jest technik w ramach wytwarzania ewolucyjnego, w ktrej pojawia si nowa faza tworzenia oprogramowania, poza wymienionymi dotychczas faza tworzenia prototypu Prototyp jest niepenym systemem, speniajcym cze wymaga, przeznaczonym do przetestowania rozwiza wykorzystanych do jego wytworzenia Z zaoenia prototyp nie wchodzi w skad ostatecznego systemu (ostateczny system budowany jest od podstaw po zaakceptowaniu rozwiza zastosowanych w prototypie)

Krzysztof Bana

Inynieria oprogramowania

14

Prototypowanie

Prototypowanie, bdce w powszechnym uyciu w innych dziedzinach produkcji, w informatyce posiada swoj specyfik:

najczciej wykorzystywane jest w fazie uzgadniania wymaga prototypy su do wykrystalizowania i ostatecznego ustalenia wymaga klienta w trakcie tworzenia oprogramowania wiele wysiku wkada si w ponowne wykorzystanie raz utworzonego kodu std typowe dla prototypowania podejcie z porzucaniem prototypw nie jest zalecane do stworzenia prototypu take trzeba wykorzysta jaki model rozwoju oprogramowaniaInynieria oprogramowania 15

Krzysztof Bana

Wytwarzanie odkrywcze

Wytwarzanie odkrywcze (exploratory development) jest wariantem modelu ewolucyjnego, w ktrym iteracje dotycz caego cyklu wytwarzania oprogramowania Istot wytwarzania odkrywczego jest staa wsppraca z klientem, ktry otrzymuje kolejne, coraz bogatsze wersje systemu i na ich podstawie wytwarza i uszczegawia swoje wymagania Wytwarzanie odkrywcze dobrze radzi sobie z wystpujcym powszechnie faktem zmiany wymaga przez klientw Wytwarzanie odkrywcze polega na staej modyfikacji kodu, bez odrzucania dotychczas wytworzonego oprogramowania (przeciwnie do prototypowania)Krzysztof Bana Inynieria oprogramowania 16

Wytwarzanie odkrywcze

Wytwarzanie odkrywcze musi poradzi sobie z dwoma istotnymi problemami:

jak czsto dokonywa rewizji aktualnego stanu kodu (problem wany dla efektywnego zarzdzania wytwarzaniem programw) jak nie dopuci do utraty jednolitej struktury przez cigle modyfikowany kod

W przypadku stosowania wytwarzania odkrywczego konieczne jest wypracowanie strategii zarzdzania wersjami, np. takiej w ktrej istniej wersje bdce drobnymi poprawkami w stosunku do poprzednich oraz istotne zmiany, przy ktrych odrzuca si znaczne czci poprzedniej wersji kodu (ktra moe by wtedy traktowana jako prototyp)Krzysztof Bana Inynieria oprogramowania 17

Wytwarzanie przyrostowe

Kolejnym wariantem modelu ewolucyjnego jest wytwarzanie przyrostowe (incremental development) W wytwarzaniu przyrostowym najpierw nastpuje okrelenie wymaga, po czym cao systemu dzielona jest na kolejne przyrosty (increments), kadorazowo tworzce dajce si testowa, rozrastajce si wersje systemu (pierwsze wersje zazwyczaj ujmuj podstawowe funkcjonalnoci systemu) Problemem podstawowym wytwarzania przyrostowego jest okrelenie przyrostw, tak aby byy one istotnymi fragmentami oprogramowania, a mimo to kad z wersji dawao si niezalenie testowa i oceniaKrzysztof Bana Inynieria oprogramowania 18

Model komponentowy

W modelu komponentowym idee ponownego uycia kodu posunite s najdalej Po fazie okrelania wymaga nastpuje faza analizy moliwoci wykorzystania istniejcych, gotowych komponentw i ewentualna faza modyfikacji wymaga, w konsekwencji zastosowania komponentw W fazie projektowania uwzgldnia si ju znalezione komponenty oraz ewentualnie nowe, zwizane z techniczn realizacj (implementacj) Projekt oprogramowania wykonywany jest tak, aby te spord wytwarzanych elementw, ktre si do tego nadaj, mogy by ponownie wykorzystane jako komponentyKrzysztof Bana Inynieria oprogramowania 19

Model komponentowy

W fazie wytwarzania kodu zwraca si szczegln uwag na interfejsy pomidzy moduami-komponentami Testowanie jest w duej mierze testowaniem integracji poszczeglnych komponentw Mimo zalet zwizanych z wykorzystaniem gotowych, przetestowanych moduw, wytwarzanie oprogramowania w oparciu o komponenty (component based software development) stwarza specyficzne trudnoci:

wymagania narzucane przez gotowe komponenty mog by niezgodne z wymaganiami klientw modyfikacje kodu mog by utrudnione przez brak kontroli nad pochodzcymi z zewntrz komponentamiInynieria oprogramowania 20

Krzysztof Bana

Podsumowanie

Model kaskadowy wskazuje czynnoci konieczne przy wytwarzaniu oprogramowania (okrelanie wymaga, projektowanie, implementacja, testowanie, konserwacja) Podobnie jak przy wytwarzaniu innych produktw, przy tworzeniu oprogramowania istotne jest:

szacowanie i analiza ryzyka i kosztw tworzenie wyczerpujcej dokumentacji

Zmienno wymaga klientw i nieunikniono popeniania bdw sugeruj wykorzystanie w praktyce ktrego z wariantw rozwoju ewolucyjnego (iteracyjnego)Krzysztof Bana Inynieria oprogramowania 21

Podsumowanie

Kady z konkretnych modeli wskazuje na pewne moliwoci, ktre mog okaza si przydatne w specyficznych warunkach realizacji okrelonego projektu (stworzenie prototypu, podzia na przyrosty, wykorzystanie gotowych komponentw) Najlepiej oczywicie rozway wszystkie modele i wybra lub skonstruowa proces wytwarzania oprogramowania optymalny dla konkretnego projektu There is no silver bullet (Brooks)

Krzysztof Bana

Inynieria oprogramowania

22

Narzdzia CASE

Istnieje wiele narzdzi komputerowych wspomagajcych wytwarzanie oprogramowania na wszystkich etapach Procesy wytwarzania oprogramowania staj si coraz bardziej zoone i przez to czsto zyskuj na standaryzacji i formalizacji pewnych krokw Programy CASE w coraz lepszym stopniu wspomagaj tworzenie programw Przy tworzeniu obszernego i zaawansowanego oprogramowania trudno jest obej si bez narzdzi CASE ... jednak wci jeszcze same narzdzia CASE nie wystarcz (na szczcie - co wtedy robiliby informatycy?)Krzysztof Bana Inynieria oprogramowania 23

Narzdzia CASEDo podstawowych narzdzi CASE mona zaliczy:

narzdzia wspomagajce niskiego poziomu edytory kompilatory programy wyszego poziomu ukierunkowane na wspomaganie konkretnych faz tworzenia oprogramowania analizy i projektowania implementacji testowania zintegrowane rodowiska wytwarzania oprogramowania zwizane z konkretn metodologi niezaleneInynieria oprogramowania 24

Krzysztof Bana

Narzdzia CASENarzdzia CASE mog realizowa lub wspomaga realizacj nastpujcych funkcji:

planowanie procesu szacowanie kosztw procesu zarzdzanie zmianami zarzdzanie konfiguracj prototypowanie edycja tekstw i diagramw generowanie kodu generowanie interfejsw uytkownika kompilacja i interpretacja programw analiza programw testowanie systemu debugging refaktoryzacja kodu dokumentacja procesu

Krzysztof Bana

Inynieria oprogramowania

25