inżynieria oprogramowani2 3CG7IYGEJ2NCBYSPXPEC2TMLCST2F2EB5F7IJLA


Inżynieria oprogramowania - 3 Slide 1

Proces tworzenia oprogramowania

. Spójny zbiór czynności

specyfikowania,

projektowania,

implementacji

i testowania oprogramowania

Inżynieria oprogramowania - 3 Slide 2

Cele

. Wprowadzenie modeli procesu tworzenia

oprogramowania

. Opis kilku różnych modeli procesu tworzenia

oprogramowania i sytuacji ich zastosowania

. Zrozumienie modeli procesów inżynierii wymagań

stawianych oprogramowaniu, tworzenia oprogramowania,

testowania i ewolucji

. Wprowadzenie pojęcia technologii CASE wspomagającej

proces tworzenia oprogramowania

Inżynieria oprogramowania - 3 Slide 3

Zawartość

. Modele procesu tworzenia oprogramowania

. Iteracja procesu

. Specyfikacja oprogramowania

. Projektowanie i implementacja oprogramowania

. Zatwierdzanie oprogramowania

. Ewolucja oprogramowania

. Zautomatyzowane wspomaganie procesu

Inżynieria oprogramowania - 3 Slide 4

Proces tworzenia oprogramowania

. Zbiór czynności wymaganych do tworzenia

systemów oprogramowania

. Specyfikacja

. Projektowanie

. Zatwierdzanie

. Ewolucja

. Model procesu tworzenia oprogramowania jest

abstrakcyjną reprezentacją procesu. Prezentuje

opis procesów z wielu poszczególnych

perspektyw

Inżynieria oprogramowania - 3 Slide 5

Ogólne modele procesów tworzenia

oprogramowania

. Model kaskadowy (ang. waterfall)

. Separacja faz specyfikacji i tworzenia oprogramowania

. Tworzenie ewolucyjne

. Przeplatanie faz specyfikacji i tworzenia oprogramowania

. Tworzenie formalne systemu

. Matematyczny model systemu jest formalnie przekształcany w

implementację (metoda przekształceń formalnych)

. Tworzenie z użyciem wielokrotnym

. System składany jest z istniejących komponentów

Inżynieria oprogramowania - 3 Slide 6

Model kaskadowy

(wodospadowy)

Definiowanie

wymagań

Projektowanie

systemu i

oprogramowania

Implementacja i

testowanie

jednostek

Integracja i

testowanie

systemu

Eksploatacja

i pielęgnacja

Inżynieria oprogramowania - 3 Slide 7

Fazy modelu kaskadowego

. Analiza i definicja wymagań

. Projektowanie systemu i oprogramowania

. Implementacja i testowanie jednostek

. Integracja i testowanie systemu

. Eksploatacja i pielęgnacja

Wadą tego modelu są trudności z

przystosowaniem do zmieniających się wymagań

klienta już w trakcie trwania procesu tworzenia

oprogramowania

Inżynieria oprogramowania - 3 Slide 8

Problemy modelu kaskadowego

. Nieelastyczny podział projektu na rozłączne

etapy

. Duże trudności w reagowaniu na zmieniające się

potrzeby klienta

Model ten jest odpowiedni tylko wtedy gdy

wymagania są jasne i zrozumiałe

Inżynieria oprogramowania - 3 Slide 9

Tworzenie ewolucyjne

. Tworzenie badawcze

. Celem jest praca z klientem i wytworzenie

ostatecznej wersji systemu z ogólnych specyfikacji.

Powinien rozpocząć się od dobrego zrozumienia

wymagań

. Prototypowanie z porzuceniem

. Celem jest zrozumienie wymagań systemowych.

Powinien zacząć się od pobieżnego zrozumienia

wymagań

Inżynieria oprogramowania - 3 Slide 10

Tworzenie ewolucyjne

Ogólny opis

Wersja

początkowa

Wersje pośrednie

Wersja końcowa

Specyfikacja

Zatwierdzanie

Tworzenie

Równoległe czynności

Inżynieria oprogramowania - 3 Slide 11

Tworzenie ewolucyjne

. Problemy

. Mało widoczny proces

. System ma złą strukturę

. Konieczne mogą być specjalne narzędzia i techniki

(np. języki do szybkiego prototypowania)

. Odpowiedni dla

. Małych i średnich systemów

. Części dużych systemów (np. interfejs użytkownika)

. Systemów o krótkim czasie życia

Inżynieria oprogramowania - 3 Slide 12

Tworzenie formalne systemów

. Bazuje na matematycznych przekształceniach

specyfikacji systemu poprzez różne reprezentacje

aż po program wykonywalny

. Przekształcenia zachowują matematyczną

poprawność reprezentacji systemu więc

bezpośrednio pokazują, że program odpowiada

początkowej specyfikacji

. Najbardziej znanym przykładem formalnego

procesu tworzenia oprogramowania jest

.Cleanroom. firmy IBM

Inżynieria oprogramowania - 3 Slide 13

Tworzenie formalne systemów

Definicja

wymagań

Specyfikacja

formalna

Przekształcenie

formalne

Integracja i

testowanie

systemu

Inżynieria oprogramowania - 3 Slide 14

Przekształcenia formalne

R1 Specyfikacja

formalna

R3 R2 Program

wykonywalny

P1 P2 P3 P4

Inżynieria oprogramowania - 3 Slide 15

Tworzenie formalne systemów

. Problemy

. Wymaga specjalistycznych umiejętności do zastosowania tej

techniki

. Trudności w formalnej specyfikacji kilku aspektów systemu

takich jak np. interfejs użytkownika

Model odpowiedni dla krytycznych systemów, w

szczególności tych gdzie wymaga się pokazania,

że system spełnia wymogi dotyczące

bezpieczeństwa i zabezpieczeń

Inżynieria oprogramowania - 3 Slide 16

Tworzenie z użyciem wielokrotnym

. Bazuje na wielokrotnym wykorzystaniu oprogramowania;

systemy są składane z istniejących już komponentów lub

produktów typu COTS (Commercial-off-the-shelf)

. Etapy procesu:

. Analiza komponentów

. Modyfikacja wymagań

. Projektowanie systemu z użyciem wielokrotnym

. Tworzenie i integracja

. Podejście to staje się się coraz częściej stosowane bardziej

w sposób niejawny niż jako paradygmat procesu

Inżynieria oprogramowania - 3 Slide 17

Tworzenie z użyciem wielokrotnym

Specyfikacja

wymagań

Analiza

komponentów

Modyfikacja

wymagań

Projekt systemu z

użyciem

wielokrotnym

Tworzenie i

integracja

Zatwierdzanie

systemu

Inżynieria oprogramowania - 3 Slide 18

Iteracja procesu

. Wymagania systemowe ZAWSZE ewoluują podczas

trwania projektu; tak więc iteracja w której wcześniejsze

fazy są modyfikowane jest zawsze częścią procesu

tworzenia dużych systemów

. Iteracja może być zastosowana do każdego z ogólnych

modeli procesu tworzenia oprogramowania

. Dwa podejścia

. Tworzenie przyrostowe

. Tworzenie spiralne

Inżynieria oprogramowania - 3 Slide 19

Tworzenie przyrostowe

. Zamiast dostarczać system w pojedynczej

dostawie, tworzenie i dostawa podzielone są na

inkrementacje (przyrosty). Każdy przyrost

dostarcza część wymaganej funkcjonalności

. Wymagania użytkownika mają określone

priorytety i wymagania o najwyższym priorytecie

są spełnione we wczesnych inkrementacjach

systemu

. Kiedy tworzenie przyrostu wystartuje, wymagania

są zamrażane lecz wymagania dla późniejszych

inkrementacji mogą dalej ewoluować

Inżynieria oprogramowania - 3 Slide 20

Tworzenie przyrostowe

Zdefiniuj zarys

wymagań

Przypisz

wymagania do

przyrostów

Zaprojektuj

architekturę

systemu

Wytwórz

przyrost

systemu

Zweryfikuj

przyrost

Zintegruj

przyrost

Zweryfikuj

system

System nie ukończony

System końcowy

Inżynieria oprogramowania - 3 Slide 21

Zalety tworzenia przyrostowego

. Klienci nie muszą czekać na dostarczenie całego

systemu zanim zaczną czerpać z niego korzyści

. Wcześniejsze inkrementacje pełnią rolę

prototypów i są inspiracją do określenia

wymagań dla późniejszych przyrostów

. Mniejsze ryzyko porażki całego przedsięwzięcia

. Usługi o najwyższym priorytecie są dostarczane

jako pierwsze tak więc są najdłużej testowane

Inżynieria oprogramowania - 3 Slide 22

Programowanie ekstremalne

. Bazuje na tworzeniu i dostarczaniu bardzo

małych przyrostów funkcjonalności

. Polega na stałym wzroście kodu oprogramowania

i zaangażowaniu użytkownika

Inżynieria oprogramowania - 3 Slide 23

Tworzenie spiralne

. Proces tworzenia reprezentowany jako spirala

zamiast sekwencji czynności z pewnymi

nawrotami

. Każda pętla spirali reprezentuje fazę w procesie

tworzenia oprogramowania

. Nie ma stałych faz jak specyfikacja czy

projektowanie - pętle w spirali są wybierane

zależnie od tego która jest odpowiednia

Inżynieria oprogramowania - 3 Slide 24

Model spiralny procesu tworzenia

oprogramowania

analysis

analys is

rototyp e

rototyp e

Concept of

Operation

Requiremen

valid ation

Design

V&V

Prod uct

desi n Detailed

design

Code

Unit tes

Acceptance

test Service Develop, v erify

next-level p roduct

Ev aluate altern atives

id en tify, resolve risk s

Determine ob jectiv es

alternatives and

constraints

Plan next p has e

Integration

and test plan

Development

plan

equi rements pla

if c plan

REVIEW

Oceń inne strategie,

rozpoznaj i zmniejsz

zagrożenia Analiza

zagrożeń

Analiza

zagrożeń

Analiza

zagrożeń

Analiza

zagrożeń

Prototyp 1

Prototyp 2

Prototyp 3

Działający

prototyp

Symulacje, modele, miary odniesienia

RECENZJA

Plan wymagań

Plan cyklu życia

Sposób

postępowania

Plan tworzenia

Plan testowania i

integracji Zaplanuj następną

fazę

Wymagania

S/W Projektowa-

nie produktu Szczegółowe

projektowanie Zatwierdzenie

wymagań

Weryfikacja i

zatwierdzanie

Działanie

Testy

akceptacji

Testy

integracji

Testy

jednostek

Kodowanie

Utwórz, zweryfikuj

produkt następnego

poziomu

Określ cele, inne

strategie i ograniczenia

Inżynieria oprogramowania - 3 Slide 25

Sektory modelu spiralnego

. Ustalanie celów

. Definicja konkretnych celów fazy

. Rozpoznanie i redukcja zagrożeń

. Szczegółowa analiza zagrożeń i działania prowadzące do

redukcji tych zagrożeń

. Tworzenie i zatwierdzanie

. Wybór modelu tworzenia systemu spośród dostępnych

ogólnych modeli

. Planowanie

. Przegląd projektu i planowanie kolejnej fazy

Inżynieria oprogramowania - 3 Slide 26

Specyfikacja oprogramowania

. Proces określania wymaganych usług i

ograniczeń jakim podlega tworzenie i działanie

oprogramowania

. Proces inżynierii wymagań

. Studium wykonalności

. Określenie i analiza wymagań

. Specyfikowanie wymagań

. Zatwierdzanie wymagań

Inżynieria oprogramowania - 3 Slide 27

Proces inżynierii wymagań

Studium

wykonalności

Określanie i

analiza wymagań

Specyfikacja

wymagań

Zatwierdzanie

wymagań

Raport

wykonalności Modele

systemu Wymagania

użytkownika i

systemu

Dokumentacja

wymagań

Inżynieria oprogramowania - 3 Slide 28

Projektowanie i implementowanie

oprogramowania

. Proces przekształcania specyfikacji systemu w

działający system

. Projektowanie oprogramowania

. Projektowanie struktury oprogramowania, która realizuje

określone specyfikacje

. Implementacja

. Tłumaczenie zaprojektowanej struktury w wykonywalny

program

. Działania związane z projektowaniem i

implementacją są ściśle ze sobą związane i mogą

się przeplatać

Inżynieria oprogramowania - 3 Slide 29

Czynności procesu projektowania

. Projektowanie architektury

. Specyfikowanie abstrakcyjne

. Projektowanie interfejsów

. Projektowanie komponentów

. Projektowanie struktur danych

. Projektowanie algorytmów

Inżynieria oprogramowania - 3 Slide 30

Ogólny model procesu projektowania

Specyfikacja

wymagań

Projektowanie

architektury

Specyfikowanie

abstrakcyjne

Projektowanie

interfejsów

Projektowanie

struktur danych

Projektowanie

algorytmów

Projektowanie

komponentów

Architektura

systemu

Specyfikacja

oprogramowania

Specyfikacja

interfejsów

Specyfikacja

komponentów

Specyfikacja

struktur

danych

Specyfikacja

algorytmów

Czynności projektowe

Produkty projektowania

Inżynieria oprogramowania - 3 Slide 31

Metody projektowania

. Metodyczne podejście do tworzenia projektu

oprogramowania

. Projekt jest zwykle dokumentowany jako zbiór

graficznych modeli

. Możliwe modele

. Model przepływu danych (DFD)

. Model encja-związek (ERD)

. Model strukturalny

. Model obiektowy

Inżynieria oprogramowania - 3 Slide 32

Programowanie i wyszukiwanie

błędów

. Tłumaczenie projektu na program i usuwanie

błędów z tego programu

. Programowanie jest indywidualną czynnością -

nie istnieje jeden ogólny proces programowania

. Programiści wykonują testy które mają na celu

wykrycie błędów w programie i ich usunięcie

Inżynieria oprogramowania - 3 Slide 33

Proces usuwania błędów

Zlokalizuj

błąd

Zaprojektuj

naprawę błędu

Napraw błąd Przetestuj program

ponownie

Inżynieria oprogramowania - 3 Slide 34

Zatwierdzanie oprogramowania

. Weryfikacja i zatwierdzanie mają na celu

wykazać, że system jest zgodny ze swoją

specyfikacją i spełnia oczekiwania klienta

. Obejmuje procesy sprawdzania, przeglądania i

testowania

. Testowanie systemu dotyczy prezentacji działania

systemu w przypadkach przetwarzania

rzeczywistych danych, które zostały określone w

specyfikacjach

Inżynieria oprogramowania - 3 Slide 35

Proces testowania

Testowanie

jednostek

Testowanie

modułów

Testowanie

podsystemów

Testowanie

systemów

Testowanie

odbiorcze

Inżynieria oprogramowania - 3 Slide 36

Fazy testowania

. Testowanie jednostek

. Testowanie poszczególnych komponentów

. Testowanie modułów

. Testowanie zbioru powiązanych ze sobą komponentów

. Testowanie podsystemów

. Testowanie kolekcji modułów które zintegrowano w podsystemie. Duży

nacisk kładzie się tu na testowanie interfejsów

. Testowanie systemu

. Testowanie systemu jako całości. Bada się także pojawiające się

właściwości systemu

. Testowanie odbiorcze

. Testowanie u klienta, sprawdzanie czy system jest akceptowalny

Inżynieria oprogramowania - 3 Slide 37

Fazy testowania

Specyfikacja

wymagań

Specyfikacja

systemu

Projekt

systemu

Projekt

szczegółowy

Kod modułów i

jednostek oraz

ich test

Działanie Test

odbiorczy

Test integracji

systemu

Test integracji

podsystemu

Plan testów

odbiorczych

Plan testów

integracji

systemu

Plan testów

integracji

podsystemów

Inżynieria oprogramowania - 3 Slide 38

Ewolucja oprogramowania

. Oprogramowanie jest elastyczne i może ulegać zmianie

. W miarę upływu czasu, w wyniku zmiany uwarunkowań

biznesowych, oprogramowanie wspierające musi również

ewoluować

. Pomimo istnienia rozgraniczenia pomiędzy procesem

tworzenia oprogramowania a procesem ewolucji

oprogramowania, rozgraniczenie to jest coraz bardziej

nieistotne ponieważ coraz mniej systemów tworzonych jest

od nowa. Nie są to dwa rozłączne etapy lecz kontinuum

Inżynieria oprogramowania - 3 Slide 39

Ewolucja systemu

Zdefiniuj wymagania

stawiane systemowi

Istniejące

systemy

Nowy

system

Zbadaj istniejące

systemy

Zaproponuj zmiany

systemów

Zmodyfikuj

systemy

Inżynieria oprogramowania - 3 Slide 40

Zautomatyzowane wspieranie procesu

(CASE)

. Computer-aided software engineering (CASE) to

oprogramowanie do wspomagania procesów

tworzenia i ewolucji oprogramowania

. Automatyzacja działań

. Graficzny edytor do tworzenia modeli systemu

. Słownik danych do zarządzania zaprojektowanymi jednostkami

. Graficzne narzędzia do konstruowania interfejsu użytkownika

. Odpluskwiacze do wspomagania znajdowania błędów programu

. Automatyczny tłumacz do generowania nowych wersji

programu

Inżynieria oprogramowania - 3 Slide 41

Technologia CASE

. Technologia CASE doprowadziła do znaczącego

polepszenia procesu tworzenia oprogramowania

chociaż nie tak dużego jak się wcześniej

spodziewano

. Inżynieria oprogramowania wymaga kreatywnego myślenia - nie

jest łatwa do zautomatyzowania

. Inżynieria oprogramowania jest czynnością zespołową i dla

dużych projektów inżynierowie spędzają wiele czasu na

interakcjach z innymi członkami zespołu. Technologia CASE

nie daje tu żadnego wsparcia

Inżynieria oprogramowania - 3 Slide 42

Klasyfikacja CASE

. Klasyfikacja pomaga nam zrozumiećżne typy narzędzi

CASE oraz ich rolę we wspomaganiu czynności procesu

tworzenia oprogramowania

. Perspektywa funkcjonalności

. Narzędzia są klasyfikowane według ich specyficznych funkcji

. Perspektywa procesu

. Narzędzia są klasyfikowane według wspomaganych przez nie

czynności procesu

. Perspektywa integracji

. Narzędzia są klasyfikowane według zakresu i stopnia ich

zorganizowania

Inżynieria oprogramowania - 3 Slide 43

Funkcjonalna klasyfikacja narzędzi

CASE

Typ narzędzia Przykłady

Narzędzia do planowania Narzędzia PERT, narzędzia do szacowania, arkusze

kalkulacyjne

Narzędzia do edycji Edytory tekstowe, edytory diagramów, procesory tekstów

Narzędzia do zarządzania

zmianami

Narzędzia do śledzenia wymagań, systemy kontroli zmian

Narzędzia do zarządzania

konfiguracjami

Systemy zarządzania wersjami, narzędzia do budowania

systemów

Narzędzia do prototypowania Języki bardzo wysokiego poziomu, generatory interfejsu

użytkownika

Narzędzia do wspomagania

metod

Edytory projektów, słowniki danych i generatory kodów

Inżynieria oprogramowania - 3 Slide 44

Funkcjonalna klasyfikacja narzędzi

CASE - c.d.

Typ narzędzia Przykłady

Narzędzia do przetwarzania

języków

Kompilatory, interpretery

Narzędzia do analizy

programów

Generatory wzajemnych odwołań, analizatory statyczne,

analizatory dynamiczne

Narzędzia do testowania Generatory danych testowych, programy porównujące pliki

Narzędzia do usuwania

błędów

Systemy interakcyjnego usuwania błędów

Narzędzia do

dokumentowania

Programy składu, edytory rysunków

Narzędzia do inżynierii

wstecz

Systemy wyszukiwania wzajemnych odwołań, programy do

restrukturyzacji systemów

Klasyfikacja narzędzi CASE względem

czynności

Specyfikowanie Projektowanie Implementowanie Weryfikacja i

zatwierdzanie

Narzędzia do inżynierii wstecz

Narzędzia do testowania

Narzędzia do usuwania błędów

Narzędzia do analizy programów

Narzędzia do przetwarzania języków

Narzędzia do wspomagania metod

Narzędzia do prototypowania

Narzędzia do zarządzania

konfiguracjami

Narzędzia do zarządzania zmianami

Narzędzia do dokumentowania

Narzędzia do edycji

Narzędzia do planowania

x x

x

x x

x x

x x

x x

x x x x

x x

x x

x x x x

x x x x

x x x x

Inżynieria oprogramowania - 3 Slide 46

Integracja CASE

. Narzędzia

. Wspomagają poszczególne zadania w ramach procesu takie jak

sprawdzanie spójności projektu, edytowanie tekstu itd.

. Warsztaty

. Wspomagają fazy procesów takie jak specyfikacja czy

projektowanie; zwykle zawierają pewną liczbę zintegrowanych

narzędzi

. Środowiska

. Wspomagają całość lub znaczną część procesu tworzenia

oprogramowania; zwykle składają się z kilku zintegrowanych

warsztatów

Inżynieria oprogramowania - 3 Slide 47

Narzędzia, warsztaty i środowiska

Technologia

CASE

Warsztaty Narzędzia Środowiska

Kompilatory Edytory Narzędzia do

porównywania

plików

Środowiska

zintegrowane

Środowiska

zbudowane dla

procesu

Programowanie Analiza i

projektowanie

Testowanie

Warsztaty

ogólnego

przeznaczenia

Warsztaty do

konkretnego

języka

Warsztaty do

jednej metody

Warsztaty do

wielu metod

Inżynieria oprogramowania - 3 Slide 48

Główne tezy

. Procesy tworzenia oprogramowania to czynności

zmierzające do wyprodukowania i ewolucji systemów

oprogramowania. Są one reprezentowane w modelu

procesu tworzenia oprogramowania

. Podstawowymi elementami procesu tworzenia

oprogramowania są: specyfikowanie, projektowanie i

implementacja, zatwierdzanie i ewolucja

. Ogólne modele procesów opisują organizację procesów

tworzenia oprogramowania

. Iteracyjne modele procesów tworzenia oprogramowania

opisują proces tworzenia jako cykl czynności

Inżynieria oprogramowania - 3 Slide 49

Główne tezy

. Inżynieria wymagań to proces opracowywania

specyfikacji oprogramowania

. Procesy projektowania i implementowania przekształcają

specyfikację w działający program

. Zatwierdzanie oprogramowania wymaga sprawdzania czy

system jest zgodny ze swoją specyfikacją i potrzebami

użytkownika

. Ewolucja oprogramowania dotyczy modyfikacji systemu

po tym jak został on wprowadzony do użycia

. technologia CASE wspomaga działania procesu

tworzenia oprogramowania



Wyszukiwarka

Podobne podstrony:
Inzynieria oprogramowania w ujeciu obiektowym UML wzorce projektowe i Java iowuje
ZadanieNaZaliczenie, WAT, semestr IV, Inżynieria oprogramowania
Rafał Polak 12k2 lab8, Inżynieria Oprogramowania - Informatyka, Semestr III, Systemy Operacyjne, Spr
zagadnienia egzaminacyjne z przedmiotu inżynieria oprogramowania zIO
Inżynieria oprogramowania Diagramy ERD
2006 06 Wstęp do Scrum [Inzynieria Oprogramowania]
sciąga moja, Informatyka SGGW, Semestr 4, Inżynieria oprogramowania, Od starszego rocznika
Tworzenie oprogramowania, Semestr 5, Inżynieria oprogramowania
2007 05 Mechanizm koncepcji w języku C nowe oblicze szablonów [Inzynieria Oprogramowania]
Inżynieria oprogramowania syllabus IV niestac 07 08, Prywatne, WAT, SEMESTR IV, IO, io, Materiały od
Rafał Polak 12k2 lab9, Inżynieria Oprogramowania - Informatyka, Semestr III, Systemy Operacyjne, Spr
inżynieria oprogramowani5s 3D2LFW6JYNMO6D276CSZQV5ONUNVXOTKWFXHA3A
inżynieria oprogramowani1 2EM7Y2ON72DKTCAQF3UOSCLXHY5636FZE7C7PUQ
inżynieria oprogramowani5 G46UQE27RE6UDINZWBW2TXNEOUUYOYV2MMVZ2NI
2008 06 Java Microedition – metody integracji aplikacji [Inzynieria Oprogramowania]
Inżynieria oprogramowania II
Opracowanie na Inżynierie Oprogramowania
Przykład diagramu sekwencji, Inżynieria oprogramowania
Inżynieria oprogramowania, Studia, Informatyka, Informatyka, Informatyka

więcej podobnych podstron