03 Proces tworzenia oprogramowaniaid 4616 ppt

background image

Inżynieria oprogramowania

część 3 - Proces tworzenia oprogramowania

mgr inż. Piotr Greniewski

Europejska Wyższa Szkoła Informatyczno-

Ekonomiczna

background image

Slajd nr 2

©Ian Sommerville 2000 - Inżynieria oprogramowania

Materiały do wykładu

Wykład opracowano na podstawie książki:

Inżynieria oprogramowania - Jan Sommerville

Wydawnictwa Naukowo – Techniczne

Warszawa 2003 r.

Prawa własności:

Rysunki, diagramy oraz układ prezentowanych treści są
własnością:

©Ian Sommerville 2000

.

Prezentacja stanowi tłumaczenie prezentacji autora
książki pobranej z witryny

http:/www.software-

engin.com.

Zgodnie z wolą autora: ”wykładowcy mają prawo
dowolnie modyfikować i adoptować tę prezentacje

(Przedmowa – Witryna WWW – punkt 2 ) co też czynię.

background image

Slajd nr 3

©Ian Sommerville 2000 - Inżynieria oprogramowania

3. Proces tworzenia oprogramowania

Zawartość:

Modele procesu tworzenia oprogramowania

Iteracja procesu

Specyfikowanie oprogramowania

Projektowanie i implementowanie
oprogramowania

Zatwierdzanie oprogramowania

Ewolucja oprogramowania

Zautomatyzowane wspomaganie procesu

background image

Slajd nr 4

©Ian Sommerville 2000 - Inżynieria oprogramowania

Proces tworzenia oprogramowania

Proces tworzenia oprogramowania jest zbiorem czynności i
związanych z nimi wyników, które prowadzą do powstania
produktu.

Może to być tworzenie od zera lub przez rozszerzenie
istniejącego oprogramowania.

Procesy tworzenia oprogramowania są złożone i zależą od
ludzi jak wszystkie procesy intelektualne. Rozsądek i
kreatywność są niezbędne. Automatyzacja procesu
tworzenia nie przynosi spodziewanych rezultatów.

Narzędzia CASE mogą jedynie wspomóc niektóre czynności.

Przyczyną ograniczenia możliwości automatyzacji jest
niezmierna różnorodność procesów tworzenia.

Nie ma idealnego procesu twórczego – różne firmy
wypracowały różne podejścia.

background image

Slajd nr 5

©Ian Sommerville 2000 - Inżynieria oprogramowania

Proces tworzenia oprogramowania

Czynności wspólne dla wszystkich procesów
tworzenia oprogramowania;

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

Projektowanie i implementowanie oprogramowani.
Stworzone musi być oprogramowanie spełniające
specyfikację.

Zatwierdzenie oprogramowania. Oprogramowanie musi
być zweryfikowane, aby zapewnić to, czego oczekiwał
klient.

Ewolucja oprogramowania. Oprogramowanie musi
ewoluować, aby spełniać zmieniające się potrzeby
użytkowników.

background image

Slajd nr 6

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele procesu tworzenia
oprogramowania

Model kaskadowy. W tym modelu podstawowe

czynności specyfikowania, tworzenia,

zatwierdzania i ewolucji są odrębnymi fazami

procesu takimi jak specyfikowanie wymagań,

projektowanie oprogramowania, implementacja,

testowanie itd.

Tworzenie ewolucyjne. W tym procesie czynności

specyfikowania, projektowania i zatwierdzania

przeplatają się. Pierwsza wersja systemu powstaje

bardzo szybko na podstawie abstrakcyjnych

specyfikacji. Później jest udoskonalana zgodnie z

informacjami otrzymanymi od klienta. Prowadzi to

do stworzenia systemu spełniającego oczekiwania

klienta.

background image

Slajd nr 7

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele procesu tworzenia
oprogramowania

Tworzenie formalne systemu. To podejście jest
oparte na budowaniu formalnych matematycznych
specyfikacji systemu i przekształcaniu tych
specyfikacji w program za pomocą metod
matematycznych.Weryfikacja komponentów
systemu polega na wnioskowaniu matematycznym
o ich zgodności ze specyfikacją.

Tworzenie z użyciem wielokrotnym. W tym
podejściu zakłada się istnienie dużej liczby
komponentów zdatnych do ponownego użycia.
Proces budowy systemu polega głównie na
integracji tych fragmentów, a nie tworzeniu ich od
początku.

background image

Slajd nr 8

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele: - Model kaskadowy

Definiowanie i analiza wymagań. Usługi, ograniczenia i
cele systemu są ustalane w czasie narad z użytkownikami
systemu. Są później szczegółowo definiowane i służą jako
specyfikacja systemu.

Projektowanie systemu i oprogramowania. Proces
projektowania systemu prowadzi do podziału wymagań na
systemy sprzętu i oprogramowania. Ustala ogólną
architekturę systemu. Projektowanie oprogramowania
obejmuje identyfikowanie i opisywanie zasadniczych
abstrakcji systemu oprogramowania i związki między nimi.

Implementacja i testowanie jednostek. W tym kroku
projekt oprogramowania jest realizowany w postaci zbioru
programów albo jednostek programów. Testowanie
jednostek polega na sprawdzeniu, czy każda jednostka
spełnia swoją specyfikację.

background image

Slajd nr 9

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele: - Model kaskadowy

Integracja i testowanie systemu. Jednostki programów
albo programy są integrowane i testowane jako
kompletne systemy, aby upewnić się czy spełniono
wymagania. Po zakończeniu testowania system jest
dostarczany klientowi.

Działanie i pielęgnacja systemu. Zwykle jest to
najdłuższa faza życia systemu. System jest
zainstalowany i przekazany do praktycznego
użytkowania. Pielęgnacja obejmuje poprawianie
błędów, których nie wykryto we wcześniejszych fazach
życia, poprawianie implementacji jednostek systemu i
wzbogacanie usług w miarę odkrywania nowych
wymagań.

background image

Slajd nr 10

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele: - Model kaskadowy

Definiowanie

wymagań

Projektowanie

systemu i oprogr.

Implementacja i

testow. jednostek

Integracja i

testowanie syst.

Działanie

i pielęgnacja

Cykl życia oprogramowania

background image

Slajd nr 11

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele: - Model kaskadowy

Wynikiem każdej fazy jest co najmniej jeden dokument, który
podlega akceptacji.

Następnej fazy nie powinno się rozpoczynać zanim poprzednia nie
zakończy się. W praktyce jednak te etapy zazębiają się i przekazują
nawzajem informacje. Proces ten nie jest prostym modelem
liniowym ale obejmuje ciąg iteracji czynności tworzenia.

Koszty opracowania dokumentów są wysokie i dlatego iteracje są też
kosztowne i wymagają powtórzenia wielu prac. Często po wykonaniu
kilku iteracji zostawia się problem do późniejszego rozwiązania,
pomija lub rozwiązuje się go metodami poza modelowymi.

Powoduje to ryzyko powstania złej struktury systemu lub otrzymanie
systemu który nie będzie robił tego co chce użytkownik.

W trakcie ostatniej fazy cyklu życia oprogramowanie jest
przekazywane do użytku i odkrywa się w nim błędy i zaniedbania w
pierwotnych wymaganiach. System musi ewoluować aby pozostać
użytecznym.

background image

Slajd nr 12

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele: - Model kaskadowy

Wady modelu kaskadowego

nieelastyczny podział na rozłączne etapy.

zobowiązania muszą być podejmowane w bardzo wczesnej
fazie procesu. Stwarza to trudności z reagowaniem na
zmieniające się wymagania.

Model kaskadowy powinien być używany wtedy gdy
wymagania są jasne i zrozumiałe. Model ten jednak
odzwierciedla normalną praktykę inżynierską. Jest on
często używany mimo wad

.

background image

Slajd nr 13

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie ewolucyjne

Tworzenie ewolucyjne polega na opracowaniu
wstępnej implementacji, pokazaniu jej
użytkownikowi z prośbą o komentarze i
udoskonalaniu jej w kolejnych wersjach aż do
powstania odpowiedniego systemu

background image

Slajd nr 14

©Ian Sommerville 2000 - Inżynieria oprogramowania

Validation

Final

version

Development

Intermediate

versions

Specification

Initial

version

Outline

description

Concurrent

activities

Tworzenie ewolucyjne

background image

Slajd nr 15

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie ewolucyjne

Dwa typy tworzenia ewolucyjnego:

Tworzenie badawcze – celem procesu jest praca z
klientem polegająca na badaniu wymagań i
dostarczenie ostatecznego systemu. Tworzenie
rozpoczyna się od tych części systemu które są
dobrze rozpoznane. System ewoluuje przez dodanie
nowych cech proponowanych przez klienta.

Prototypowanie z porzuceniem – celem procesu jest
zrozumienie wymagań klienta i wypracowanie
lepszej definicji wymagań stawianych systemowi.
Budowanie prototypu służy do eksperymentu z
niejasnymi wymaganiami.

background image

Slajd nr 16

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie ewolucyjne

Podejście ewolucyjne jest bardziej efektywne
od kaskadowego

Powstają systemy bardziej odpowiadające
użytkownikom

Zaletą procesu tworzenia ewolucyjnego jest
przyrostowe powstawanie specyfikacji

Użytkownik coraz lepiej rozumie swoje
problemy a to daje bardziej przydatne
oprogramowanie.

background image

Slajd nr 17

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie ewolucyjne

Problemy tworzenia ewolucyjnego;

Proces nie jest widoczny. Menedżerowie potrzebują
regularnych wyników aby mierzyć postęp prac.
Jeżeli prace postępują szybko nie opłaca się
generować dokumentów opisujących każdą wersję
systemu.

System ma złą strukturę. Nieustanne modyfikacje
psują strukturę oprogramowania. Wprowadzanie
nowych zmian staje się kosztowne i trudniejsze.

Konieczne jest stosowanie specjalnych narzędzi i
technik
. Ułatwiają one i przyspieszają proces
tworzenia ale są niekompatybilne z innymi
narzędziami.

background image

Slajd nr 18

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie formalne systemów

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

Oparty jest na na matematycznych
przekształceniach specyfikacji systemu w
program wykonywalny

background image

Slajd nr 19

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie formalne systemów

Requirements

definition

Formal

specification

Formal

transformation

Integration and

system testing

background image

Slajd nr 20

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie formalne systemów

Zasadnicze cechy odróżniające model
kaskadowy od formalnego:

specyfikacja wymagań jest zapisywana za pomocą
notacji matematycznej

procesy projektowania, implementacji i testowania
jednostek są zastąpione przez proces tworzenia z
przekształceniem. Specyfikacja formalna jest
udoskonalana przez ciąg przekształceń, które
prowadzą do powstania programu

background image

Slajd nr 21

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie formalne systemów

R2

Formal

specification

R3

Executable

program

P2

P3

P4

T1

T2

T3

T4

Proofs of transformation correctness

Formal transformations

R1

P1

background image

Slajd nr 22

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie formalne systemów

W procesie przekształcenia formalna matematyczna
reprezentacja systemu jest metodycznie przekształcana
w bardziej szczegółowe ale wciąż matematycznie
poprawne reprezentacje systemu

Metoda przydatna do tworzenia systemów z surowymi
wymaganiami bezpieczeństwa

Metoda używana jedynie do specjalistycznych dziedzin.

background image

Slajd nr 23

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie z użyciem wielokrotnym

W większości projektów informatycznych występuje użycie
wielokrotne oprogramowania.

Dzieje się to zwykle nieformalnie, gdy zatrudnione osoby
znają projekty lub lub kody programów podobne do tych
wymaganych.

W podejściu ewolucyjnym użycie wielokrotne jest uważane za
podstawę szybkiego tworzenia systemów

W ostatnich latach wyłoniło się nowe podejście do tworzenia
oprogramowania (inżynieria oprogramowania
komponentowego) oparte na użyciu wielokrotnym.

Metoda zakłada istnienie wielkiego zbioru komponentów
programowych oraz integrującej je struktury.

Początkowa faza specyfikacji oprogramowania i faza
zatwierdzania są podobne do innych procesów, etapy
pośrednie są inne.

background image

Slajd nr 24

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie z użyciem wielokrotnym

Requirements

specification

Component

analysis

Development

and integration

System design

with reuse

Requirements

modification

System

validation

background image

Slajd nr 25

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie z użyciem wielokrotnym

Etapy pośrednie:

Analiza komponentów. Na podstawie specyfikacji
wymagań poszukuje się komponentów
implementujących tę specyfikację. Zwykle nie
można znaleźć idealnie pasujących komponentów.

Modyfikacja wymagań. W trakcie tej fazy analizuje
się wymagania pod kątem uzyskanych
komponentów. Następnie modyfikuje się wymagania
aby odzwierciedlały dostępne komponenty. Jeśli
modyfikacje nie są możliwe analiza komponentów
musi być powtórzona.

background image

Slajd nr 26

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie z użyciem wielokrotnym

Projektowanie systemu z użyciem wielokrotnym. W
trakcie tej fazy projektuje się szkielet systemu lub
wykorzystuje istniejące szkielety. Projektanci biorą
pod uwagę. Jest on tworzony zgodnie z
wymaganiami użytych komponentów. Czasami
potrzebne są nowe fragmenty oprogramowania.

Tworzenie i integracja. Tworzy się oprogramowanie,
którego nie można było kupić. Integruje się w
system komponenty i zakupione systemy. W tym
modelu integracja systemu może być częścią
procesu tworzenia a nie oddzielną czynnością.

background image

Slajd nr 27

©Ian Sommerville 2000 - Inżynieria oprogramowania

Iteracja procesu

Wymienione dotychczas modele procesów
mają szereg zalet i wad. W wypadku
projektowania dużych systemów stosujemy
modele hybrydowe.

Tworzenie przyrostowe, w którym specyfikacja,
projektowanie i implementacja są podzielone na ciąg
po kolei realizowanych przyrostów.

Tworzenie spiralne, w którym system rozwija się
ruchem spiralnym na zewnątrz od początkowego
szkicu do końcowego systemu.

background image

Slajd nr 28

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie przyrostowe

Model tworzenia przyrostowego łączy w sobie zalety modelu
kaskadowego i ewolucyjnego likwidując część ich wad.

Umożliwił on ograniczenie powtarzania prac oraz dał klientom
możliwość odkładania decyzji o szczegółowych wymaganiach aż
do czasu gdy zdobędą pewne doświadczenie w pracy z systemem.

Klienci identyfikują w zarysie usługi, które system ma oferować.
Wskazują które są najważniejsze a które mniej ważne.

Definiuje się pewną liczbę przyrostów, które mają być
dostarczone. Każdy z nich zawiera część funkcjonalności
systemu. Przyporządkowanie usług do przyrostów zależy od ich
priorytetu.

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

Po zdefiniowaniu przyrostów definiuje się szczegółowo
wymagania stawiane usługom dostarczonym w pierwszym
przyroście.

background image

Slajd nr 29

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie przyrostowe

Przyrost jest tworzony za pomocą odpowiedniego procesu
a w jego trakcie prowadzi się analizę dla następnych
przyrostów

Gdy przyrost jest gotowy klienci mogą go uruchomić –
szybko otrzymują część funkcjonalności systemu.

Po zakończeniu prac nad kolejnymi wymaganiami integruje
się je z istniejącymi przyrostami.

Funkcjonalność systemu wzrasta wraz z kolejnymi
przyrostami.

Nie ma konieczności aby tworzenia przyrostów odbywało
się zgodnie z tym samym procesem

Gdy usługi w przyroście mają mają staranną specyfikację
stosujemy model kaskadowy

Gdy specyfikacja jest niejasna stosujemy model ewolucyjny.

background image

Slajd nr 30

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie przyrostowe

Validate

increment

Develop system

increment

Design system

architecture

Integrate

increment

Validate

system

Define outline

requirements

Assign requirements

to increments

System incomplete

Final

system

background image

Slajd nr 31

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie przyrostowe

Zalety ( wady) tworzenia przyrostowego:

Klienci nie muszą czekać na dostawę całego systemu.
Pierwszy przyrost spełnia najbardziej istotne
wymagania i może być używany

Klienci mogą używać przyrostów jako prototypów i
zdobywać doświadczenia.

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

Usługi o najwyższym priorytecie będą dostarczane jako
pierwsze, a późniejsze przyrosty będą z nimi
integrowane. Dzięki temu najważniejsze usługi będą
dokładnie przetestowane

Przyrosty nie mogą być zbyt duże a każdy przyrost
powinien dostarczać pewną funkcjonalność.

background image

Slajd nr 32

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie spiralne

W modelu spiralnym proces nie jest
przedstawiany jako ciąg czynności z pewnymi
nawrotami od jednej do drugiej ale ma postać
spirali.

Każda pętla spirali reprezentuje jedną fazę
procesu

wykonalności

definicji stawianych wymagań

projektowaniu systemu

itd.

background image

Slajd nr 33

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie spiralne

Każda pętla spirali podzielona jest na cztery
sektory:

Ustalanie celów. Definiuje się konkretne cele tej
fazy przedsięwzięcia. Identyfikuje się ograniczenia
którym podlega proces i produkt. Rysuje się
szczegółowe plany zarządzania. Rozpoznaje się
zagrożenia i strategie ich unikania.

Rozpoznanie i redukcja zagrożeń. Przeprowadza się
szczegółową analizę każdego z rozpoznanych
zagrożeń przedsięwzięcia. Podejmuje się kroki aby
je zredukować. Gdy np. wymagania są
nieodpowiednie można opracować prototyp itp.

background image

Slajd nr 34

©Ian Sommerville 2000 - Inżynieria oprogramowania

Tworzenie spiralne

Tworzenie i zatwierdzanie. Po ocenie zagrożeń
wybiera się model tworzenia systemu. Jeśli
zagrożenie jest związane z interfejsem użytkownika
to możemy wybrać prototypowanie ewolucyjne. Jeśli
zagrożone jest bezpieczeństwo to model kaskadowy.

Planowanie. Recenzuje się przedsięwzięcie i
podejmuje decyzję czy rozpoczynać następną pętlę.

background image

Slajd nr 35

©Ian Sommerville 2000 - Inżynieria oprogramowania

Risk

analysis

Risk

analysis

Risk

analysis

Risk

anal

ysisProto-

type 1

Prototype 2

Prototype 3

Opera-

tional

protoype

Concept of

Operation

Simulations, models, benchmarks

S/W

requirements

Requirement

validation

Design

V&V

Product

design

Detailed

design

Code

Unit test

Integration

test

Acceptance

test

Service

Develop, verify

next-level product

Evaluate alternatives

identify, resolve risks

Determine objectives

alternatives and

constraints

Plan next phase

Integration

and test plan

Development

plan

Requirements plan

Life-cycle plan

REVIEW

Tworzenie spiralne

background image

Slajd nr 36

©Ian Sommerville 2000 - Inżynieria oprogramowania

Specyfikowanie oprogramowania

Specyfikowanie oprogramowania ma na celu określenie
jakich usług wymaga się od systemu i jakim
ograniczeniom podlega tworzenie i działanie
oprogramowania.

Czynność ta nazywana bywa inżynierią wymagań

Jest to bardzo istotna faza ponieważ błędy w tej fazie
prowadzą do późniejszych kłopotów w fazach
projektowania i implementacji.

background image

Slajd nr 37

©Ian Sommerville 2000 - Inżynieria oprogramowania

Specyfikowanie oprogramowania

Cztery fazy specyfikowania oprogramowania

:

Studium wykonalności. Ocenia się czy rozpoznane
potrzeby użytkowników mogą być spełnione przy
obecnych technologiach sprzętu i oprogramowania.
Ocenia się czy proponowany system będzie opłacalny z
punktu widzenia ekonomii i czy można go zbudować w
ramach założonego budżetu. Studium powinno być
krótkie i tanie. Jego wynik decyduje o dalszych analizach.

Określenie i analiza wymagań. Jest to proces określania
wymagań stawianych systemowi na podstawie obserwacji
istniejących systemów, rozmów z potencjalnymi
użytkownikami, analizy zadań. Może wymagać
opracowania jednego lub kilku modeli i prototypów
pomagających analitykom zrozumieć system.

background image

Slajd nr 38

©Ian Sommerville 2000 - Inżynieria oprogramowania

Specyfikowanie oprogramowania

Specyfikowanie wymagań. Polega na zapisywaniu
informacji zebranych w czasie analizy w dokumencie
definiującym zbiór wymagań. Mogą wystąpić dwa
rodzaje wymagań. Wymagania użytkownika są
abstrakcyjnymi określeniami są abstrakcyjnymi
określeniami wymagań stawianych systemowi
spisanymi dla klienta i użytkownika. Wymagania
systemowe są bardziej szczegółowym opisem
funkcjonalności którą należy dostarczyć.

Zatwierdzanie wymagań. W tej czynności sprawdza
się realizm, spójność i kompletność wymagań. W jej
trakcie niemal pewne jest wykrycie błędów. Należy
zmodyfikować dokumentację wymagań tak, aby
usunąć te błędy.

background image

Slajd nr 39

©Ian Sommerville 2000 - Inżynieria oprogramowania

Specyfikowanie oprogramowania

Feasibility

study

Requirements

elicitation and

analysis

Requirements

specification

Requirements

validation

Feasibility

report

System

models

User and system

requirements

Requirements

document

background image

Slajd nr 40

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie i implementowanie
wymagań

Faza implementowania to proces
przekształcania specyfikacji systemu w
działający system. Obejmuje zawsze
projektowanie i programowanie ale może
zawierać udoskonalanie specyfikacji gdy
wybraliśmy podejście ewolucyjne.

background image

Slajd nr 41

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie i implementowanie
wymagań

Architectur

al

design

Abstr

act

specifica

tion

Interface

design

Component

design

Data

structur

e

design

Algorithm

design

System

architectur

e

Softw

are

specifica

tion

Interface

specifica

tion

Component

specifica

tion

Data

structur

e

specifica

tion

Algorithm

specifica

tion

Requir

ements

specifica

tion

Design acti

vities

Design pr

oducts

background image

Slajd nr 42

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie i implementowanie
wymagań

Czynności procesu projektowania:

Projektowanie architektury. Identyfikuje i dokumentuje
podsystemy tworzące system oraz związki między nimi.

Specyfikowanie abstrakcyjne. Opracowuje się
abstrakcyjną specyfikację usług i ograniczeń każdego
podsystemu.

Projektowanie interfejsów. Projektuje się i dokumentuje
interfejsy każdego podsystemu z innymi podsystemami.
Specyfikacja musi być jednoznaczna ponieważ
umożliwia korzystanie z podsystemów bez znajomości
ich działania.

Projektowanie komponentów. Przypisuje się usługi do
różnych komponentów i projektuje interfejsy tych
komponentów.

background image

Slajd nr 43

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie i implementowanie
wymagań

Czynności procesu projektowania:

Projektowanie struktur danych. Szczegółowo
specyfikuje się i projektuje struktury danych użyte w
implementacji systemu.

Projektowanie algorytmów. Szczegółowo specyfikuje
się i projektuje algorytmy służące do realizacji
usług.

background image

Slajd nr 44

©Ian Sommerville 2000 - Inżynieria oprogramowania

Metody projektowania

Metody niestrukturalne. Na podstawie zbioru
wymagań zapisanych w języku naturalnym
przygotowuje się nieformalny projekt. Rozpoczyna
się kodowanie a projekt jest modyfikowany w
miarę implementacji systemu. Gdy faza
implementacji jest ukończona projekt zwykle jest
różny od swego pierwotnego opisu. Brak
dokumentacji zmiany projektu itp.

Metody strukturalne. Opracowanie graficznych
modeli systemu. Metoda strukturalna zawiera
model procesu projektowania, notacje do zapisu
projektu, formaty raportów, zasady i porady dla
projektantów.

background image

Slajd nr 45

©Ian Sommerville 2000 - Inżynieria oprogramowania

Metody projektowania

Modele systemu używane przez metody
strukturalne:

Modele przepływu danych, w którym system jest
opisywany za pomocą przekształceń danych
wykonywanych w trakcie ich przetwarzania.

Model encja-związek, który służy do opisu
podstawowych encji w projekcie i związków między
nimi.

Model strukturalny w którym dokumentuje się
komponenty systemu i ich interakcje.

Metody obiektowe zawierające model dziedziczenia w
systemie, modele statycznych i dynamicznych związków
między obiektami oraz modele interakcji obiektów w
czasie działania systemu.

background image

Slajd nr 46

©Ian Sommerville 2000 - Inżynieria oprogramowania

Programowanie i wyszukiwanie błędów

Programowanie jest indywidualną czynnością i
nie istnieje żaden ogólny proces, zgodnie z
którym się postępuje.

Czasami zaczyna się od komponentów albo
zostawia się je na koniec.

Niektórzy programiści zaczynają od
zdefiniowania danych inni zostawiają dane bez
specyfikacji jak długo się da.

Programiści wykonują testy aby zlokalizować i
usunąć błędy.

Testowanie usterek i usuwanie błędów to dwa
różne procesy.

background image

Slajd nr 47

©Ian Sommerville 2000 - Inżynieria oprogramowania

Programowanie i wyszukiwanie błędów

Locate

error

Design

error repair

Repair

error

Re-test

program

background image

Slajd nr 48

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zatwierdzanie oprogramowania

Weryfikacja i zatwierdzanie oprogramowania
mają wykazać, że system jest zgodny ze swoją
specyfikacją i spełnia oczekiwania klienta.

background image

Slajd nr 49

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zatwierdzanie oprogramowania

Sub-system

testing

Module

testing

Unit

testing

System

testing

Acceptance

testing

Component

testing

Integration testing

User

testing

background image

Slajd nr 50

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zatwierdzanie oprogramowania

Fazy procesu testowania:

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.

Testowanie modułów. Moduł to kolekcja
niezależnych komponentów takich jak klasy
obiektów, abstrakcyjne typy danych, procedury,
funkcje. Moduł testujemy bez udziału innych
modułów.

Testowanie podsystemów. Faza obejmuje testowanie
kolekcji modułów zintegrowanych w podsystem.
Służy głównie do wykrycia błędów w interfejsach.

background image

Slajd nr 51

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zatwierdzanie oprogramowania

Fazy procesu testowania:

Testowanie systemu. Podsystemy zintegrowano w

system. Ten proces ma wykryć błędy wynikające z

nieprzewidzianych interakcji między podsystemami i

problemów z interfejsami. W tej fazie sprawdza się czy

system spełnia stawiane mu wymagania funkcjonalne i

niefunkcjonalne. Bada się pojawiające się właściwości

systemu.

Testowanie odbiorcze. Końcowa faza procesu

testowania. System testuje się za pomocą danych

dostarczonych przez użytkownika. Testowanie może

doprowadzić do wykrycia błędów i zaniedbań w definicji

wymagań stawianych systemowi ponieważ prawdziwe

dane to co innego niż testy. Testowanie może wykazać

że udogodnienia nie odpowiadają użytkownikom lub

system nie jest efektywny.

background image

Slajd nr 52

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zatwierdzanie oprogramowania

Requirements

specification

System

specification

System

design

Detailed

design

Module and

unit code

and tess

Sub-system

integration

test plan

System

integration

test plan

Acceptance

test plan

Service

Acceptance

test

System

integration test

Sub-system

integration test

background image

Slajd nr 53

©Ian Sommerville 2000 - Inżynieria oprogramowania

Ewolucja oprogramowania

Elastyczność oprogramowania – w
przeciwieństwie do nie elastyczności sprzętu.

Zmiany w oprogramowaniu mogą być
wykonywane po zakończeniu prac nad nim.

Rozgraniczenie pomiędzy tworzeniem
oprogramowania a jego pielęgnacją.

W chwili obecnej niewiele systemów
oprogramowania jest tworzonych od nowa.
Zaciera się więc granica pomiędzy
tworzeniem a pielęgnacją.

pojawia się pojęcie ewolucji systemu.

background image

Slajd nr 54

©Ian Sommerville 2000 - Inżynieria oprogramowania

Ewolucja oprogramowania

Assess existing

systems

Define system

requirements

Propose system

changes

Modify

systems

New

system

Existing

systems

background image

Slajd nr 55

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zautomatyzowane wspomaganie procesu

Przykłady automatyzacji za pomocą CASE

Opracowanie graficznych modeli systemu, jako
części specyfikacji wymagań i projektu
oprogramowania.

Czytanie projektu za pomocą słownika danych, który
przechowuje informację o encjach i związkach w
projekcie.

Generowanie interfejsu użytkownika na podstawie
graficznego opisu interfejsu.

Śledzenie błędów przez udostępnianie informacji o
wykonującym się programie.

Automatyczne tłumaczenie programów.

background image

Slajd nr 56

©Ian Sommerville 2000 - Inżynieria oprogramowania

Zautomatyzowane wspomaganie procesu

Ograniczenia CASE

Inżynieria oprogramowania jest oparta na
kreatywnym myśleniu. CASE automatyzują
rutynowe czynności. Próby zastosowania sztucznej
inteligencji nie były udane.

Inżynieria oprogramowania jest czynnością
zespołową, interakcja między użytkownikami jest
bardzo ważna – CASE nie daje tu żadnego wsparcia.

background image

Slajd nr 57

©Ian Sommerville 2000 - Inżynieria oprogramowania

Klasyfikacja CASE

Narzędzia do planowania (PERT, arkusz kalkulac.)

Narzędzia do edycji (tekstów, diagramów)

Narzędzia do zarządzania zmianami

Narzędzia do zarządzania konfiguracjami (system zarządz.
wersjami)

Narzędzia do prototypowania

Narzędzia do wspomagania metod(edyt. proj., słowniki,
generat. kodu)

Narzędzia do przetwarzania języków (kompilatory)

Narzędzia do analizy programów (analizatory)

Narzędzia do testowania

Narzędzia do usuwania błędów

Narzędzia do dokumentowania

Narzędzia do inżynierii wstecz.

background image

Slajd nr 58

©Ian Sommerville 2000 - Inżynieria oprogramowania

Klasyfikacja CASE

background image

Activity-based classification

Reengineering tools

Testing tools

Debugging tools

Program analysis tools

Language-processing

tools

Method support tools

Prototyping tools

Configuration

management tools

Change management tools

Documentation tools

Editing tools

Planning tools

Specification

Design

Implementation Verification

and

Validation

©Ian Sommerville 2000 - Inżynieria oprogramowania

background image

Slajd nr 60

©Ian Sommerville 2000 - Inżynieria oprogramowania

Klasyfikacja CASE

Kategorie systemów CASE

Narzędzia wspomagające poszczególne zadania w
ramach procesu takie jak kompilacja, spójność
projektu itp.

Warsztaty wspomagające całe fazy procesów lub
czynności, na przykład specyfikowanie lub
projektowanie. Zwykle jest to zintegrowany zbiór
narzędzi.

Środowiska wspomagają całość lub znaczącą część
procesu tworzenia oprogramowania.. Zwykle
składają się z kilku różnych zintegrowanych
warsztatów.

background image

Slajd nr 61

©Ian Sommerville 2000 - Inżynieria oprogramowania

Klasyfikacja CASE

Single-method

workbenches

General-purpose

workbenches

Multi-method

workbenches

Language-specific

workbenches

Programming

Testing

Analysis and

design

Integrated

environments

Process-centred

environments

File

comparators

Compilers

Editors

Environments

Workbenches

Tools

CASE

technology

background image

Slajd nr 62

©Ian Sommerville 2000 - Inżynieria oprogramowania

Główne tezy

Proces tworzenia oprogramowania to czynności zmierzające
do wyprodukowania systemu. Modele procesów tworzenia
oprogramowania to abstrakcyjne reprezentacje tych
procesów.

Wszystkie procesy tworzenia oprogramowania obejmują
specyfikowanie, projektowanie, implementację,
zatwierdzanie i ewolucję oprogramowania.

Ogólne modele procesów opisują organizację procesu
tworzenia oprogramowania. Przykładami takich modeli są:
model kaskadowy, tworzenie ewolucyjne, tworzenie
formalne oraz tworzenie z użyciem wielokrotny.

W modelach iteracyjnych tworzenie oprogramowania
przedstawia się w postaci cyklu czynności. Zaletą jest
uniknięcie zbyt wczesnego zatwierdzania specyfikacji lub
projektu. Model przyrostowy i spiralny.

background image

Slajd nr 63

©Ian Sommerville 2000 - Inżynieria oprogramowania

Główne tezy

Inżynieria wymagań to proces opracowywania
specyfikacji oprogramowania. Obejmuje przygotowanie
specyfikacji zrozumiałej dla użytkowników systemu
oraz bardziej szczegółowej specyfikacji dla
budowniczych systemu.

Proces projektowania i implementowania polega na
przekształcaniu specyfikacji wymagań w działający
system oprogramowania. Metody systematycznego
projektowania mogą być elementem tego
przekształcenia.

Zatwierdzanie oprogramowania to proces sprawdzania
czy system jest zgodny ze swoją specyfikacją oraz czy
spełnia rzeczywiste potrzeby użytkowników.

background image

Slajd nr 64

©Ian Sommerville 2000 - Inżynieria oprogramowania

Główne tezy

Ewolucja oprogramowania polega na modyfikowaniu
istniejącego systemu oprogramowania tak aby spełniał
nowe wymagania. Takie podejście staje się standardem
tworzenia oprogramowania dla małych i średnich
przedsięwzięć.

Technologia CASE zapewnia zautomatyzowane
wspomaganie procesu tworzenia oprogramowania.
Narzędzia CASE wspomagają poszczególne czynności
procesu. Warsztaty CASE wspomagają zbiory
powiązanych czynności. Środowiska CASE wspomagają
większość czynności procesu tworzenia
oprogramowania.


Document Outline


Wyszukiwarka

Podobne podstrony:
14(45) Proces Tworzenia oprogramowaniaid 15602 ppt
Proces tworzenia oprogramowania
Proces tworzenia oprogramowania
@PSI W10a Proces strukturalnego tworzenia oprogramowania
W4 Proces wytwórczy oprogramowania
03 Odświeżanie pamięci DRAMid 4244 ppt
03 RYTMY BIOLOGICZNE CZŁOWIEKAid 4197 ppt
03 Autoperswazja Teoria optymizmuid 4313 PPT
08 Prototypowanie oprogramowaniaid 7587 ppt
09 03 2012 TEST KOŃCOWY GASTROLOGIA ppt
Tworzenie oprogramowania, Semestr 5, Inżynieria oprogramowania
Wskazówki pomocne w procesie tworzenia systemów świadczeń pozapłacowych w małych firmachx
proces tworzenia unii gospodarczej i walutowej NHBCQWGQKVRAWOLP3DMJXZNM3MOAYYXURMD4ISQ
fijewski,instalcje wodno kanalizacyjne,DWUTEOWY PROCES TWORZENIA KOMPUTEROWEGO MODELU NUMERYCZNEGOx
Inżynieria str2a, Metodologie tworzenia oprogramowania:
Tworzenie oprogramowania na sprzedaż, Gazeta Podatkowa
2009 03 18 POZ 03id 26788 ppt
06 Proces inzynierii wymaganid 6526 ppt

więcej podobnych podstron