Inżynieria Oprogramowania część 1

background image

In

ż

ynieria oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

1

Literatura do przedmiotu



Ian Sommerville: In

ż

ynieria oprogramowania



Włodzimierz D

ą

browski, Kazimierz Subieta:

Podstawy in

ż

ynierii oprogramowania



Perdita Stevens: UML. In

ż

ynieria

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

2



Perdita Stevens: UML. In

ż

ynieria

oprogramowania.



http://wazniak.mimuw.edu.pl/

Zagadnienia do zrealizowania na

wykładzie



Wprowadzenie

In

ż

ynieria systemów

komputerowych

Proces tworzenia oprogramowania

Zarz

ą

dzanie przedsi

ę

wzi

ę

ciami



Wymagania

Wymagania stawiane
oprogramowaniu

Proces in

ż

ynierii wymaga

ń



Systemy krytyczne

Pewno

ść

Specyfikowanie systemów
krytycznych

Wytwarzanie systemów krytycznych



Weryfikacja i zatwierdzanie

Weryfikacja i zatwierdzanie

Testowanie oprogramowania

Zatwierdzanie systemów krytycznych

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

3

Proces in

ż

ynierii wymaga

ń

Modele systemu

Prototypowanie oprogramowania

Specyfikacja formalna



Projektowanie

Projektowanie architektoniczne

Architektury systemów
rozproszonych

Projektowanie obiektowe

Projektowanie oprogramowania
czasu rzeczywistego

Projektowanie z u

ż

yciem

wielokrotnym

Projektowanie interfejsu
u

ż

ytkownika

Zatwierdzanie systemów krytycznych



Zarz

ą

dzanie

Zarz

ą

dzanie personelem

Szacowanie kosztu oprogramowania

Zarz

ą

dzanie jako

ś

ci

ą

Ulepszanie procesu



Ewolucja

Systemy odziedziczone

Modyfikacja oprogramowania

Restrukturyzacja oprogramowania

Zarz

ą

dzanie konfiguracjami



(UML)

Plan wykładu



Wprowadzenie do in

ż

ynierii oprogramowania i jej

roli w programowaniu



Odpowiedzi na podstawowe pytania dotycz

ą

ce

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

4



Odpowiedzi na podstawowe pytania dotycz

ą

ce

in

ż

ynierii oprogramowania (FAQ)



Wprowadzenie etycznych i profesjonalnych
zagadnie

ń

i wyja

ś

nienie roli jak

ą

graj

ą

w

in

ż

ynierii oprogramowania.

background image

Co to jest oprogramowanie?



Produkty powszechne. S

ą

to samodzielne systemy, które buduje

si

ę

w firmie programistycznej, a nast

ę

pnie sprzedaje na wolnym

rynku wszystkim klientom, którzy s

ą

w stanie je kupi

ć

. Czasem

nazywa si

ę

je oprogramowaniem w torebkach foliowych.

Przykładami takich produktów s

ą

bazy danych, edytory tekstów,

pakiety do rysowania i narz

ę

dzia do zarz

ą

dzania przedsi

ę

wzi

ę

ciami.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

5



Produkty na zamówienie (dostosowane). Takie systemy s

ą

zamawiane przez konkretnego klienta. Oprogramowanie jest
opracowywane specjalnie dla tego klienta przez firm

ę

zleceniobiorc

ę

.

Przykładami takich produktów s

ą

systemy steruj

ą

ce urz

ą

dzeniami

elektronicznymi, systemy przeznaczone do wspomagania
okre

ś

lonego procesu przedsi

ę

biorstwa oraz systemy kontroli lotów.

Co to jest in

ż

ynieria oprogramowania?



In

ż

ynieria oprogramowania to dziedzina

in

ż

ynierii, która obejmuje wszystkie aspekty

tworzenia oprogramowania od pocz

ą

tkowej fazy

specyfikacji systemu a

ż

do jego piel

ę

gnacji po

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

6

dacie rozpocz

ę

cia jego u

ż

ytkowania.

Co to jest in

ż

ynieria oprogramowania?



,,Dziedzina in

ż

ynierii” In

ż

ynierowie sprawiaj

ą

,

ż

e rzeczy działaj

ą

.

Stosuj

ą

teorie, metody i narz

ę

dzia tam, gdzie s

ą

potrzebne. Stosuj

ą

je jednak selektywnie i zawsze próbuj

ą

znale

źć

rozwi

ą

zanie nawet

tam, gdzie nie ma jeszcze teorii i metod, które mogłyby im pomóc.
In

ż

ynierowie wiedz

ą

tak

ż

e,

ż

e musz

ą

pracowa

ć

w ramach

ogranicze

ń

organizacyjnych i finansowych, szukaj

ą

wi

ę

c rozwi

ą

za

ń

zgodnych z tymi ograniczeniami

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

7

zgodnych z tymi ograniczeniami



Wszystkie aspekty tworzenia oprogramowania”. In

ż

ynieria

oprogramowania obejmuje nie tylko techniczny proces tworzenia
oprogramowania, ale tak

ż

e czynno

ś

ci takie, jak zarz

ą

dzanie

przedsi

ę

wzi

ę

ciem programistycznym, opracowywanie narz

ę

dzi,

metod i teorii wspomagaj

ą

cych tworzenie oprogramowania.

Jaka jest ró

ż

nica mi

ę

dzy in

ż

ynieri

ą

oprogramowania a informatyk

ą

?



Zasadniczo informatyka obejmuje teorie i podstawowe metody
działania komputerów i systemów komputerowych.



In

ż

ynieria oprogramowania obejmuje praktyczne problemy zwi

ą

zane

z tworzeniem oprogramowania.



Pewien zakres wiedzy informatycznej jest niezb

ę

dny dla ka

ż

dego

in

ż

yniera oprogramowania, tak samo jak pewien zakres fizyki jest

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

8

in

ż

yniera oprogramowania, tak samo jak pewien zakres fizyki jest

potrzebny in

ż

ynierom elektrykom.



In

ż

ynier oprogramowania dobrze powinien zna

ć

teorie

informatyczne. Niestety w rzeczywisto

ś

ci tak nie jest. In

ż

ynierowie

oprogramowania musz

ą

cz

ę

sto ad hoc wymy

ś

la

ć

sposoby produkcji

oprogramowania.



Eleganckie teorie informatyczne nie zawsze mog

ą

by

ć

zastosowane

do rzeczywistych, zło

ż

onych zada

ń

, które musz

ą

by

ć

rozwi

ą

zane za

pomoc

ą

oprogramowania.

background image

Jaka jest ró

ż

nica mi

ę

dzy in

ż

ynieri

ą

oprogramowania a in

ż

ynieri

ą

systemów?



In

ż

ynieria systemów (bardziej precyzyjnie in

ż

ynieria systemów

komputerowych) obejmuje wszystkie aspekty tworzenia i ewolucji
systemów komputerowych, w których oprogramowanie odgrywa
główn

ą

rol

ę

.



In

ż

ynieria systemów mie

ś

ci w sobie tworzenie oprogramowania,

opracowywanie strategii, projektowanie procesu tworzenia,
wdro

ż

enie systemu, a tak

ż

e in

ż

ynieri

ę

oprogramowania.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

9

wdro

ż

enie systemu, a tak

ż

e in

ż

ynieri

ę

oprogramowania.



In

ż

ynierowie systemów bior

ą

udział w specyfikacji systemu i

definiowaniu jego ogólnej architektury. Nast

ę

pnie integruj

ą

ż

ne

cz

ęś

ci i tworz

ą

z nich gotowy system. Mniej natomiast zajmuj

ą

si

ę

in

ż

ynieri

ą

składowych systemu (sprz

ę

t komputerowy,

oprogramowanie itd.).



In

ż

ynieria systemów jest dziedzin

ą

starsz

ą

ni

ż

in

ż

ynieria

oprogramowania.

Co to jest proces tworzenia

oprogramowania?



Proces tworzenia oprogramowania to zbiór czynno

ś

ci i zwi

ą

zanych z

nimi wyników, które zmierzaj

ą

do opracowania produktu

programowego. Wi

ę

kszo

ść

z tych czynno

ś

ci jest wykonywana przez

in

ż

ynierów oprogramowania.

Specyfikacja oprogramowania. Funkcjonalno

ść

oprogramowania i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

10

Specyfikacja oprogramowania. Funkcjonalno

ść

oprogramowania i

ograniczenia jego działania musz

ą

by

ć

zdefiniowane.

Tworzenie oprogramowania. Oprogramowanie spełniaj

ą

ce

specyfikacj

ę

musi by

ć

wyprodukowane.

Zatwierdzenie oprogramowania. Oprogramowanie musi by

ć

poddane

kontroli, aby zapewni

ć

,

ż

e robi to, czego klient oczekiwał.

Ewolucja oprogramowania. Oprogramowanie musi ewoluowa

ć

, aby

spełni

ć

zmieniaj

ą

ce si

ę

wymagania klienta.

Co to jest model procesu tworzenia

oprogramowania?



Model procesu tworzenia oprogramowania to
uproszczona prezentacja procesu tworzenia
oprogramowania z pewnego punktu widzenia. Modele ze
swej natury s

ą

uproszczeniami; model procesu tworzenia

oprogramowania jest wi

ę

c abstrakcj

ą

konkretnego

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

11

oprogramowania jest wi

ę

c abstrakcj

ą

konkretnego

procesu, który ma by

ć

opisany.



Modele procesów mog

ą

zawiera

ć

czynno

ś

ci składaj

ą

ce

si

ę

na proces, produkty programowe i role osób

bior

ą

cych udział w procesie tworzenia oprogramowania.

Modele procesu tworzenia



Model przepływu prac. Przedstawia ci

ą

g czynno

ś

ci procesu wraz z

ich wej

ś

ciami, wyj

ś

ciami i zale

ż

no

ś

ciami. Czynno

ś

ci w tym modelu

reprezentuj

ą

działania ludzi.



Model przepływu danych (lub model czynno

ś

ci). Przedstawia

proces w postaci zbioru czynno

ś

ci, z których ka

ż

da dokonuje

pewnego przekształcenia danych. Opisuje, jak wej

ś

cie procesu (np.

specyfikacja) jest przekształcane w wyj

ś

cie (np. projekt). W tym

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

12

specyfikacja) jest przekształcane w wyj

ś

cie (np. projekt). W tym

modelu czynno

ś

ci mog

ą

by

ć

zdefiniowane na ni

ż

szym poziomie

abstrakcji ni

ż

czynno

ś

ci w modelu przepływu prac. Reprezentuj

ą

przekształcenia wykonywane przez ludzi lub przez komputery.



Model rola-akcja. Przedstawia role osób bior

ą

cych udział w

procesie tworzenia oprogramowania oraz czynno

ś

ci, za które osoby

w tych rolach s

ą

odpowiedzialne.

background image

Modele tworzenia oprogramowania



Model kaskadowy. Poszczególne czynno

ś

ci przedstawiono w nim jako oddzielne

fazy procesu, takie jak specyfikacja wymaga

ń

, projektowanie oprogramowania,

implementacja, testowanie itd. Po wykonaniu ka

ż

dej fazy zatwierdza si

ę

jej wyniki i

przechodzi do nast

ę

pnej fazy.



Tworzenie ewolucyjne. W tym procesie czynno

ś

ci specyfikacji, projektowania i

zatwierdzania przeplataj

ą

si

ę

. Pierwsza wersja systemu powstaje bardzo szybko na

podstawie niezwykle abstrakcyjnych specyfikacji. Jest pó

ź

niej udoskonalana zgodnie z

informacjami otrzymanymi od klienta. Prowadzi to do stworzenia systemu, który
spełnia oczekiwania klienta. Wówczas system jest dostarczany klientowi. Mo

ż

e by

ć

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

13

spełnia oczekiwania klienta. Wówczas system jest dostarczany klientowi. Mo

ż

e by

ć

równie

ż

zaimplementowany ponownie za pomoc

ą

lepiej uporz

ą

dkowanego podej

ś

cia,

by stał si

ę

mocniejszy i zdatny do piel

ę

gnacji.



Formalne przekształcenia. To podej

ś

cie jest oparte na budowaniu formalnych

matematycznych specyfikacji systemu i przekształcaniu tych specyfikacji w program
za pomoc

ą

metod matematycznych. Te przekształcenia maj

ą

wła

ś

ciwo

ść

„zachowywania poprawno

ś

ci”. Oznacza to pewno

ść

,

ż

e zbudowany system spełnia

swoj

ą

specyfikacj

ę

.



Składanie systemu z komponentów ponownego u

ż

ycia. Ta technika zakłada,

ż

e

cz

ęś

ci systemu ju

ż

istniej

ą

. Proces budowy systemu polega głównie na integrowaniu

tych fragmentów, a nie tworzeniu ich od pocz

ą

tku.

Jakie s

ą

koszty oprogramowania?



Koszty oprogramowania cz

ę

sto dominuj

ą

systemy

komputerowe i cz

ę

sto s

ą

dro

ż

sze ni

ż

sam sprz

ę

t.



Koszt zarz

ą

dzania oprogramowaniem cz

ę

sto kosztuje

wi

ę

cej ni

ż

koszt jego wytworzenia. W systemach z

„długim czasem

ż

ycia” cz

ę

sto koszty obsługi s

ą

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

14

„długim czasem

ż

ycia” cz

ę

sto koszty obsługi s

ą

wielokrotnie wy

ż

sze ni

ż

koszty opracowania programu



In

ż

ynieria oprogramowania koncentruje si

ę

na „mo

ż

liwie

efektywnym” koszcie opracowania systemu
(oprogramowania)

Koszt in

ż

ynierii oprogramowania



Około 60% kosztów to koszt opracowania, 40% koszty to
koszy testowania. Dla oprogramowania ”indywidualnego”
koszt rozwoju/testowania cz

ę

sto przewy

ż

sza koszt

opracowania.



Oczywi

ś

cie koszty ró

ż

ni

ą

si

ę

w zale

ż

no

ś

ci od systemu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

15



Oczywi

ś

cie koszty ró

ż

ni

ą

si

ę

w zale

ż

no

ś

ci od systemu

który powstaje, od wymaga

ń

dotycz

ą

cych wydajno

ś

ci i

wiarygodno

ś

ci systemu (ilo

ś

ci bł

ę

dów które jeste

ś

my w

stanie zaakceptowa

ć

)



Koszty dystrybucji zale

żą

równie

ż

od modelu

projektowania jaki został przyj

ę

ty.

Koszty in

ż

ynierii oprogramowania



Taka struktura kosztów wyst

ę

puje

wówczas, gdy koszty specyfikacji,
projektowania, implementacji i integracji s

ą

mierzone oddzielnie.



Je

ś

li oprogramowanie jest tworzone

ewolucyjnie, to nie ma wyra

ź

nej granicy

mi

ę

dzy specyfikacj

ą

, projektowaniem i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

16

mi

ę

dzy specyfikacj

ą

, projektowaniem i

budow

ą

.



Oprócz kosztów tworzenia ponosi si

ę

tak

ż

e koszty zmian w oprogramowaniu,

które s

ą

wprowadzane po oddaniu go do

u

ż

ytku.



W wypadku wielu systemów
komputerowych, które pracuj

ą

przez długi

czas, koszty te prawdopodobnie
przekrocz

ą

koszty tworzenia trzy- lub

nawet czterokrotnie

background image

Koszty projektu



Poprzedni slajd prezentował rozkład kosztów dotycz

ą

cych oprogramowania na

zamówienie, które wyspecyfikował klient, a stworzył zleceniobiorca.



Produkty działaj

ą

ce (głównie) na komputerach osobistych b

ę

d

ą

miały profil

kosztów b

ę

dzie prawdopodobnie inny. Takie produkty s

ą

zwykle budowane na

podstawie szkicowej specyfikacji za pomoc

ą

podej

ś

cia ewolucyjnego. Koszty

specyfikacji s

ą

raczej niskie. Takie produkty maj

ą

by

ć

jednak u

ż

ywane w ró

ż

nych

konfiguracjach i dlatego musz

ą

by

ć

niezwykle starannie przetestowane.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

17

Co to s

ą

metody in

ż

ynierii oprogramowania?

Metoda in

ż

ynierii oprogramowania to uporz

ą

dkowane podej

ś

cie do

tworzenia oprogramowania, którego celem jest zbudowanie
oprogramowania wysokiej jako

ś

ci w ekonomiczny sposób.



Opis modelu:

Opisy modeli systemu (mog

ą

by

ć

graficzne), które nale

ż

y opracowa

ć

oraz

notacje u

ż

yte do definicji tych modeli (Modele obiektów, modele przepływu

danych, modele maszyn stanowych, itd.).



Reguły

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

18



Reguły

Ograniczenia, którym podlegaj

ą

modele systemu



Rekomendacje

Zawieraj

ą

„dobre zasady” projektowania (Heurystyki, które okre

ś

laj

ą

dobre

zwyczaje projektantów w ramach danej metody. Uwzgl

ę

dnianie tych

rekomendacji powinno doprowadzi

ć

do powstania dobrze zorganizowanego

modelu systemu.



Poradnictwo na temat procesu tworzenia

Opis czynno

ś

ci, które nale

ż

y wykona

ć

aby opracowa

ć

modele systemu oraz

porz

ą

dek tych czynno

ś

ci.

Co to jest CASE (Computer-Aided Software Engineering

– In

ż

ynieria Oprogramowania Wspierana Komputerowo



CASE obejmuje rozmaite programy wykorzystywane do
wspomagania czynno

ś

ci procesu tworzenia oprogramowania, np.

analizy wymaga

ń

, modelowania systemu, wyszukiwania i usuwania

ę

dów oraz testowania.



Wszystkie współczesne metody s

ą

powi

ą

zane z narz

ę

dziami

technologii CASE takimi jak edytory notacji u

ż

ywanej w metodzie,

moduły analityczne, które weryfikuj

ą

poprawno

ść

modelu zgodnie z

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

19

moduły analityczne, które weryfikuj

ą

poprawno

ść

modelu zgodnie z

regułami metody, oraz generatory raportów, które pomagaj

ą

opracowa

ć

dokumentacj

ę

systemu.



Narz

ę

dziami CASE s

ą

tak

ż

e generator kodu, który automatycznie

tworzy kod

ź

ródłowy na podstawie modelu systemu, oraz poradniki

opisuj

ą

ce proces, które doradzaj

ą

in

ż

ynierowi oprogramowania

kolejno

ść

czynno

ś

ci.

Jakie wła

ś

ciwo

ś

ci ma dobre

oprogramowanie?



Zdatno

ść

do piel

ę

gnacji

Oprogramowanie powinno by

ć

napisane w taki sposób, aby mogło

ewoluowa

ć

zgodnie ze zmieniaj

ą

cymi si

ę

potrzebami klientów. Ten

atrybut jest niezb

ę

dny, poniewa

ż

ewolucja oprogramowania jest

nieodzown

ą

konsekwencj

ą

zmieniaj

ą

cego si

ę

ś

rodowiska

gospodarczego



Niezawodno

ść

Niezawodno

ść

oprogramowania obejmuje wiele wła

ś

ciwo

ś

ci, m.in.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

20

Niezawodno

ść

oprogramowania obejmuje wiele wła

ś

ciwo

ś

ci, m.in.

solidno

ść

, zabezpieczenia i bezpiecze

ń

stwo. Niezawodne systemy nie

powinny powodowa

ć

ani fizycznych, ani ekonomicznych katastrof, gdy

ulegn

ą

awarii



Efektywno

ść

Oprogramowanie nie powinno marnotrawi

ć

zasobów systemu takich

jak pami

ęć

lub czas procesora. Efektywno

ść

obejmuje zatem szybko

ść

reakcji, czas przetwarzania, u

ż

ycie pami

ę

ci itd.



U

ż

yteczno

ść

Oprogramowanie musi by

ć

u

ż

yteczne (bez zb

ę

dnego wysiłku) dla

u

ż

ytkowników, dla których je zaprojektowano. Oznacza to,

ż

e powinno mie

ć

odpowiedni interfejs u

ż

ytkownika i adekwatn

ą

dokumentacj

ę

background image

Jakie s

ą

najistotniejsze wyzwania

dla in

ż

ynierów oprogramowania?



Wyzwanie dziedzictwa. Chocia

ż

wi

ę

kszo

ść

obecnie u

ż

ywanych du

ż

ych

systemów opracowano wiele lat temu, ci

ą

gle pełni

ą

powa

ż

ne funkcje

gospodarcze. Wyzwanie dziedzictwa polega zatem na piel

ę

gnacji i

modyfikacji takiego oprogramowania tak, aby unikn

ąć

przesadnych kosztów i

podtrzyma

ć

dostarczanie zasadniczych usług.



Wyzwanie ró

ż

norodno

ś

ci. Coraz cz

ęś

ciej wymaga si

ę

od systemów, aby

pracowały jako systemy rozproszone w sieci i obejmowały coraz wi

ę

cej

ż

nych typów komputerów i rozmaitych rodzajów systemów

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

21

ż

nych typów komputerów i rozmaitych rodzajów systemów

wspomagaj

ą

cych. Wyzwanie ró

ż

norodno

ś

ci polega zatem na

opracowywaniu metod budowy niezawodnego oprogramowania, które jest
wystarczaj

ą

co elastyczne, aby radzi

ć

sobie z ró

ż

norodno

ś

ci

ą

.



Wyzwanie dor

ę

czenia. Wiele tradycyjnych technik in

ż

ynierii

oprogramowania jest bardzo czasochłonnych. Czas, który pochłaniaj

ą

, jest

niezb

ę

dny do osi

ą

gni

ę

cia dobrej jako

ś

ci oprogramowania. Obecnie

gospodarka musi jednak natychmiast reagowa

ć

na zmiany i ewoluowa

ć

bardzo gwałtownie. Wyzwanie dor

ę

czenia polega na skróceniu czasu

dostarczenia wielkich zło

ż

onych systemów bez utraty ich jako

ś

ci.

Odpowiedzialno

ść

etyczna i zawodowa



In

ż

yniera oprogramowania zawiera szerszy

zakres odpowiedzialno

ś

ci ni

ż

tylko techniczne

przygotowanie in

ż

yniera.



In

ż

ynier musi post

ę

powa

ć

etycznie je

ż

eli chce

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

22



In

ż

ynier musi post

ę

powa

ć

etycznie je

ż

eli chce

by

ć

postrzegany jako profesjonalista



Zachowanie etyczne jest to co

ś

wi

ę

cej ni

ż

przestrzeganie prawa

Odpowiedzialno

ść

profesjonalisty



Zachowywanie tajemnicy. In

ż

ynierowie powinni zawsze dochowywa

ć

tajemnic powierzonych przez swych pracodawców i klientów, niezale

ż

nie od

tego, czy podpisano formaln

ą

umow

ę

o ochronie tajemnicy.



Kompetencja. In

ż

ynierowie nie powinni zawy

ż

a

ć

poziomu swoich

kompetencji. Nie powinni

ś

wiadomie przyjmowa

ć

prac, które przekraczaj

ą

ich mo

ż

liwo

ś

ci.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

23



Prawo własno

ś

ci intelektualnej. In

ż

ynierowie powinni zna

ć

miejscowe

prawo reguluj

ą

ce korzystanie z własno

ś

ci intelektualnej, takiej jak patenty,

prawo autorskie itd. Powinni szczególnie dba

ć

o poszanowanie intelektualnej

własno

ś

ci swoich pracodawców i klientów.



Niewła

ś

ciwe u

ż

ycie komputera. In

ż

ynierowie oprogramowania nie powinni

u

ż

ywa

ć

swoich technicznych umiej

ę

tno

ś

ci do niewła

ś

ciwego u

ż

ywania

cudzych komputerów. Niewła

ś

ciwe u

ż

ycie komputera mo

ż

e by

ć

do

ść

banalne (np. granie na maszynie pracodawcy) lub skrajnie powa

ż

ne

(rozsiewanie wirusów).

ACM/IEEE Kodeks etycznego

post

ę

powania (Code of Ethics)



Profesjonalne organizacje opracowały kodeks
etyczny.



Członkowie organizacji musieli przestrzega

ć

te

postanowienia

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

24

postanowienia

background image

Kodeks etyki



Preambuła

Wersja skrócona kodeksu streszcza jego cele na wysokim poziomie
abstrakcji; postanowienia zawarte w wersji pełnej zawieraj

ą

przykłady i

szczegółowe informacje o tym, jak powinni

ś

my post

ę

powa

ć

b

ę

d

ą

c

prawdziwie profesjonalnymi in

ż

ynierami oprogramowania. Bez

okre

ś

lenia celów szczegóły mog

ą

wydawa

ć

si

ę

drobiazgowe i nudne.

Bez szczegółów cele b

ę

d

ą

brzmiały górnolotnie, ale pusto. Cele i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

25

Bez szczegółów cele b

ę

d

ą

brzmiały górnolotnie, ale pusto. Cele i

szczegóły razem wzi

ę

te stanowi

ą

spójny kodeks.

In

ż

ynierowie oprogramowania musz

ą

przyj

ąć

na siebie zobowi

ą

zanie

utwierdzenia analizy, specyfikacji, projektowania, budowy, testowania i
piel

ę

gnacji oprogramowania jako zawodu po

ż

ytecznego i szanowanego.

Zgodnie z tym zobowi

ą

zaniem wobec zdrowia, bezpiecze

ń

stwa i

dobrobytu społecze

ń

stwa, in

ż

ynierowie oprogramowania powinni

stosowa

ć

si

ę

do nast

ę

puj

ą

cych zasad:

Kodeks etyki



SPOŁECZE

Ń

STWO — In

ż

ynierowie oprogramowania powinni post

ę

powa

ć

dla dobra społecze

ń

stwa.



KLIENT I PRACODAWCA — In

ż

ynierowie oprogramowania powinni

post

ę

powa

ć

zgodnie z interesami swojego klienta lub pracodawcy zgodnymi

z dobrem społecze

ń

stwa.



PRODUKT — In

ż

ynierowie oprogramowania powinni zapewni

ć

,

ż

e ich

produkty i zwi

ą

zane z nimi zmiany spełniaj

ą

najwy

ż

sze standardy

profesjonalizmu.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

26

profesjonalizmu.



ROZS

Ą

DEK — In

ż

ynierowie oprogramowania powinni zachowywa

ć

rozs

ą

dek i niezale

ż

no

ść

swoich s

ą

dów.



ZARZ

Ą

DZANIE — Zarz

ą

dzaj

ą

cy in

ż

ynierami oprogramowania i

zwierzchnicy powinni przyj

ąć

i promowa

ć

etyk

ę

w zarz

ą

dzaniu tworzeniem i

piel

ę

gnacj

ą

oprogramowania.



PROFESJA — In

ż

ynierowie oprogramowania powinni podnosi

ć

wiarygodno

ść

i reputacj

ę

profesji zgodnie z dobrem społecze

ń

stwa.



KOLE

Ż

ENSTWO — In

ż

ynierowie oprogramowania powinni by

ć

uczciwi i

ch

ę

tni do pomocy swoim kolegom.



JA SAM — In

ż

ynierowie oprogramowania powinni bra

ć

udział w

długofalowej nauce praktyki swojego zawodu. Powinni tak

ż

e promowa

ć

etyczne działania w praktyce swej profesji.

Dylematy etyczne



Jak si

ę

zachowa

ć

je

ż

eli si

ę

nie zgadzamy z

przeło

ż

onym.



Jak si

ę

zachowa

ć

je

ż

eli pracodawca post

ę

puje

nieetycznie np. w sprawie projektów od których
zale

ż

y bezpiecze

ń

stwo ludzi (np. nie testuje do

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

27

zale

ż

y bezpiecze

ń

stwo ludzi (np. nie testuje do

ko

ń

ca systemu)



Staramy si

ę

rozwi

ą

zywa

ć

problemy szanuj

ą

c

pracodawc

ę

Dylematy etyczne



Czy bra

ć

udział w projektach sprzecznych z naszymi

zasadami (np. tworzenie wojskowych systemów
nuklearnych)

Na wst

ę

pie nale

ż

y przedstawi

ć

pracodawcy swoje

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

28



Na wst

ę

pie nale

ż

y przedstawi

ć

pracodawcy swoje

pogl

ą

dy.



Dalsza dyskusja spowodowała by przekształcenie
wykładu z in

ż

ynierii w wykład z filozofii…

background image

Główne tezy in

ż

ynierii oprogramowania



In

ż

ynieria oprogramowania to dziedzina in

ż

ynierii, która

obejmuje wszystkie aspekty tworzenia oprogramowania.



Produkty programowe składaj

ą

si

ę

z utworzonych programów

oraz zwi

ą

zanej z nimi dokumentacji. Zasadniczymi atrybutami

produktów s

ą

zdatno

ść

do piel

ę

gnacji, niezawodno

ść

,

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

29

produktów s

ą

zdatno

ść

do piel

ę

gnacji, niezawodno

ść

,

efektywno

ść

i u

ż

yteczno

ść

.



Proces tworzenia oprogramowania składa si

ę

z czynno

ś

ci

prowadz

ą

cych do utworzenia produktu programowego.

Głównymi czynno

ś

ciami s

ą

specyfikacja oprogramowania,

tworzenie, zatwierdzanie i ewolucja.

Główne tezy in

ż

ynierii oprogramowania



Metody to uporz

ą

dkowane sposoby budowy oprogramowania.

Obejmuj

ą

sugestie wyboru procesu tworzenia, notacji, reguły

okre

ś

laj

ą

ce, jakie opisy systemu opracowa

ć

, a tak

ż

e wskazówki

projektowe.



Narz

ę

dzia CASE to systemy komputerowe, które s

ą

przeznaczone

do wspomagania rutynowych czynno

ś

ci procesu tworzenia takich jak

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

30

do wspomagania rutynowych czynno

ś

ci procesu tworzenia takich jak

praca nad diagramami projektowymi, sprawdzanie poprawno

ś

ci

diagramów oraz

ś

ledzenie wykonanych testów.



In

ż

ynierowie oprogramowania ponosz

ą

odpowiedzialno

ść

przed

kolegami po fachu i społecze

ń

stwem. Nie powinni zajmowa

ć

si

ę

jedynie aspektami technicznymi.



Stowarzyszenia zawodowe publikuj

ą

kodeksy post

ę

powania, które

definiuj

ą

standardy zachowania oczekiwane od swoich członków.

In

ż

ynieria systemów

komputerowych

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

31

komputerowych

Co to jest in

ż

ynieria systemów

komputerowych?



In

ż

ynieria systemów to czynno

ść

specyfikowania,

projektowania, implementowania, weryfikowania,
wdra

ż

ania i piel

ę

gnacji systemów postrzegana jako

cało

ść

. In

ż

ynierowie systemów nie zajmuj

ą

si

ę

tylko

oprogramowaniem, ale tak

ż

e sprz

ę

tem komputerowym

oraz interakcjami systemu z jego u

ż

ytkownikami i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

32

oraz interakcjami systemu z jego u

ż

ytkownikami i

ś

rodowiskiem.



Usługi, które system oferuje, ograniczenia, w ramach
których system musi by

ć

zbudowany i w których musi

działa

ć

, oraz interakcji ze

ś

rodowiskiem.



In

ż

ynierowie oprogramowania musz

ą

rozumie

ć

in

ż

ynieri

ę

systemów, (problemy in

ż

ynierii oprogramowania s

ą

cz

ę

sto wynikiem decyzji in

ż

ynierów systemów).

background image

Co to jest system?



System jest celow

ą

kolekcj

ą

powi

ą

zanych ze

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

33



System jest celow

ą

kolekcj

ą

powi

ą

zanych ze

sob

ą

komponentów, które współpracuj

ą

, aby

osi

ą

gn

ąć

pewien cel.

Wła

ś

ciwo

ś

ci systemu



„Całkowity ci

ęż

ar” systemu jest to wła

ś

ciwo

ść

wła

ś

ciwo

ś

ci, któr

ą

mo

ż

na wyznaczy

ć

z wła

ś

ciwo

ś

ci

poszczególnych komponentów.



Niezawodno

ść

systemu zale

ż

y od niezawodno

ś

ci

komponentów systemu i zwi

ą

zków mi

ę

dzy nimi.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

34

komponentów systemu i zwi

ą

zków mi

ę

dzy nimi.



U

ż

yteczno

ść

systemu jest bardzo zło

ż

on

ą

wła

ś

ciwo

ś

ci

ą

,

która nie zale

ż

y jedynie od oprogramowania i sprz

ę

tu, ale

tak

ż

e od operatorów systemu i

ś

rodowiska, w którym si

ę

go u

ż

ywa.

Wła

ś

ciwo

ś

ci systemu - podsystemy



Wła

ś

ciwo

ś

ci funkcjonalne, które s

ą

widoczne, gdy

wszystkie cz

ęś

ci systemu współpracuj

ą

, aby osi

ą

gn

ąć

pewien cel. (Rower ma na przykład cech

ę

funkcjonaln

ą

bycia

ś

rodkiem transportu, gdy scali si

ę

go z jego cz

ęś

ci).



Wła

ś

ciwo

ś

ci niefunkcjonalne, takie jak niezawodno

ść

,

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

35

Wła

ś

ciwo

ś

ci niefunkcjonalne, takie jak niezawodno

ść

,

efektywno

ść

, bezpiecze

ń

stwo i zabezpieczenia. S

ą

zwi

ą

zane z zachowaniem systemu w jego

ś

rodowisku

pracy. Niektóre funkcje systemu mog

ą

nie by

ć

potrzebne

wszystkim jego u

ż

ytkownikom, a zatem system mo

ż

na

bez tych funkcji zaakceptowa

ć

. System, który jest jednak

zawodny lub zbyt wolny, b

ę

dzie prawdopodobnie

odrzucony przez wszystkich u

ż

ytkowników.

Czynniki wpływaj

ą

ce na niezawodno

ść

systemu



Niezawodno

ść

sprz

ę

tu - jakie jest prawdopodobie

ń

stwo

awarii komponentu sprz

ę

towego i jak długi jest czas jego

naprawy? (czy to musi by

ć

komponent sprz

ę

tu

komputerowego?)



Niezawodno

ść

oprogramowania - jakie jest

prawdopodobie

ń

stwo wytworzenia przez komponent

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

36

prawdopodobie

ń

stwo wytworzenia przez komponent

programowy bł

ę

dnych danych wyj

ś

ciowych? Awarie

oprogramowania istotnie ró

ż

ni

ą

si

ę

od awarii sprz

ę

tu,

poniewa

ż

oprogramowanie nie zu

ż

ywa si

ę

. Mo

ż

e dalej

działa

ć

nawet wówczas, gdy wytworzyło niepoprawny wynik.



Niezawodno

ść

operatora - jakie jest prawdopodobie

ń

stwo

ę

du operatora systemu? (czy system jest zabezpieczony

przed nieautoryzowanym dost

ę

pem?, jakie mog

ą

by

ć

konsekwencje dost

ę

pu)

background image

Systemy i ich

ś

rodowiska



Systemy nie s

ą

niezale

ż

nymi bytami, ale istniej

ą

w pewnym

ś

rodowisku.

Ś

rodowisko to ma wpływ

na funkcjonowanie i efektywno

ść

systemu.

Czasem

ś

rodowisko mo

ż

na uwa

ż

a

ć

za system

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

37

sam w sobie, ale w ogólniejszym wypadku
składa si

ę

ono z pewnej liczby oddziałuj

ą

cych na

siebie systemów.

Przykład systemu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

38

Czy in

ż

ynierowie systemu musz

ą

zna

ć

otoczenie systemu?



W wielu wypadkach system ma powodowa

ć

pewne zmiany w swoim

ś

rodowisku. (np.

ogrzewanie)



Na funkcjonowanie systemu mog

ą

mie

ć

wpływ

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

39



Na funkcjonowanie systemu mog

ą

mie

ć

wpływ

trudne do przewidzenia zmiany zachodz

ą

ce w

ś

rodowisku (np. zaniki napi

ę

cia, burze)

Czynniki wpływaj

ą

ce na projekt systemu



Zmiany procesu. Czy system wymaga zmian w procesach pracy
wykonywanej w

ś

rodowisku? Je

ś

li tak, to b

ę

d

ą

potrzebne szkolenia.

Je

ś

li zmiany s

ą

powa

ż

ne lub oznaczaj

ą

utrat

ę

pracy przez pewne

osoby, to istnieje niebezpiecze

ń

stwo sprzeciwu u

ż

ytkowników wobec

systemu.



Zmiany zawodu. Czy system zmniejsza umiej

ę

tno

ś

ci u

ż

ytkowników

i sprawia,

ż

e musz

ą

zmieni

ć

swój styl pracy? Je

ś

li tak, mog

ą

oni

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

40

i sprawia,

ż

e musz

ą

zmieni

ć

swój styl pracy? Je

ś

li tak, mog

ą

oni

aktywnie sabotowa

ć

wprowadzenie systemu do organizacji. Projekty,

które zmuszaj

ą

zarz

ą

dzaj

ą

cych do zmiany sposobu pracy tak, aby

dostosowa

ć

si

ę

do systemu komputerowego, bardzo cz

ę

sto nie s

ą

akceptowane. Mened

ż

erowie mog

ą

odczuwa

ć

,

ż

e systemy

umniejszyły ich rol

ę

w firmie.



Zmiany organizacyjne. Czy system zmienia struktur

ę

o

ś

rodków

władzy politycznej w organizacji? Je

ś

li firma zale

ż

y, na przykład, od

zło

ż

onego systemu, to osoby, które wiedz

ą

, jak si

ę

mm posługiwa

ć

,

maj

ą

wi

ę

ksz

ą

władz

ę

polityczn

ą

.

background image

Co musimy wiedzie

ć

projektuj

ą

c system



Jakie ludzkie, społeczne i organizacyjne czynniki
wpływaj

ą

na proces.



Jak wykorzysta

ć

socjotechniki (w celu okre

ś

lenia wpływu

systemu na organizacj

ę

pracy)

W idealnej sytuacji powinna by

ć

znana wiedza o

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

41



W idealnej sytuacji powinna by

ć

znana wiedza o

ś

rodowisku – do którego ma by

ć

adresowany produkt

(system)



Wiedza o otoczeniu w którym ma pracowa

ć

system i

poprawne przeszkolenie z zasad działania systemu (np.
elektromagnetyczne bramki)

Modelowanie systemu



Najcz

ęś

ciej prezentowany jest diagram blokowy

zawieraj

ą

cy podsystemy i i poł

ą

czenia pomi

ę

dzy

nimi



W modelu architektury systemu mamy poł

ą

czone

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

42



W modelu architektury systemu mamy poł

ą

czone

ze sob

ą

elementy programowe i sprz

ę

towe-

cz

ę

sto bez wyra

ź

nego rozgraniczenia.

Przykładowy model systemu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

43

Komponenty funkcjonalne systemu



Komponenty detektorowe zbieraj

ą

informacje ze

ś

rodowiska

systemu. Przykładami takich komponentów s

ą

radary w systemie

kontroli lotów, detektory papieru w drukarkach laserowych i
termopara w piecu.



Komponenty efektorowe (uruchamiaj

ą

ce) powoduj

ą

zmiany w

ś

rodowisku systemu. Przykładami takich komponentów s

ą

zawory,

które otwieraj

ą

si

ę

i zamykaj

ą

, aby zwi

ę

kszy

ć

lub zmniejszy

ć

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

44

które otwieraj

ą

si

ę

i zamykaj

ą

, aby zwi

ę

kszy

ć

lub zmniejszy

ć

przepływ cieczy w rurze, stateczniki samolotu, które wyznaczaj

ą

kierunek lotu, i mechanizm wci

ą

gania papieru do drukarki, który

przesuwa papier za detektor papieru.



Komponenty obliczeniowe pobieraj

ą

dane wej

ś

ciowe, wykonuj

ą

na

nich pewne obliczenia i wytwarzaj

ą

wyniki. Przykładem takiego

komponentu jest procesor zmiennopozycyjny, który wykonuje
obliczenia na liczbach rzeczywistych.

background image

Komponenty funkcjonalne systemu



Komponenty komunikacyjne umo

ż

liwiaj

ą

komunikacj

ę

innym

komponentom systemu. Przykładem takiego komponentu jest sie

ć

Ethernet ł

ą

cz

ą

ca ró

ż

ne komputery wewn

ą

trz budynku.



Komponenty koordynuj

ą

ce koordynuj

ą

operacje innych

komponentów. Przykładem takiego komponentu jest proces
szereguj

ą

cy w systemach czasu rzeczywistego, który decyduje,

kiedy poszczególne procesy powinny mie

ć

przydzielony procesor.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

45

kiedy poszczególne procesy powinny mie

ć

przydzielony procesor.



Komponenty interfejsu przetwarzaj

ą

dane w reprezentacji

u

ż

ywanej przez jedne komponenty na reprezentacje u

ż

ywane przez

inne komponenty. Przykładem mo

ż

e by

ć

komponent interfejsu do

komunikacji z człowiekiem, który pobiera pewien model systemu i
wy

ś

wietla go operatorowi. Innym przykładem jest przetwornik

analogowo-cyfrowy, który zamienia wej

ś

cie analogowe na wyj

ś

cie

cyfrowe.

Komponenty systemu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

46

Przykładowy system:

systemu kontroli lotów

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

47

Proces in

ż

ynierii systemów

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

48

background image

Proces in

ż

ynierii systemów a proces

tworzenia oprogramowania



Wiele ró

ż

nych dziedzin in

ż

ynierii wchodzi w skład

in

ż

ynierii systemów. Liczba mo

ż

liwych nieporozumie

ń

jest ogromna, poniewa

ż

dla ró

ż

nych dziedzin in

ż

ynierii

posługujemy si

ę

odmienn

ą

terminologi

ą

.



Ograniczona mo

ż

liwo

ść

modyfikacji w trakcie tworzenia

systemu. Gdy pewne decyzje techniczne (np.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

49

systemu. Gdy pewne decyzje techniczne (np.
umiejscowienie radarów systemu kontroli lotów) s

ą

ju

ż

podj

ę

te, zmienianie ich jest bardzo kosztowne.



Przekształcenie projektu systemu tak, aby rozwi

ą

za

ć

takie problemy, jest mo

ż

liwe bardzo rzadko. Jedn

ą

z

przyczyn znaczenia oprogramowania w systemach jest
jego elastyczno

ść

— mo

ż

na dokonywa

ć

zmian w

odpowiedzi na nowe wymagania.

Interdyscyplinalno

ść

in

ż

ynierii systemów

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

50

Definicja wymaga

ń

systemowych



Abstrakcyjne wymagania opcjonalne. Podstawowe funkcje, które
system ma wypełnia

ć

, s

ą

definiowane na wysokim poziomie

abstrakcji. Szczegółowa specyfikacja wymaga

ń

funkcjonalnych ma

miejsce na poziomie podsystemów. Np. baza danych ruchu
samolotów (cez struktury bazy).



Wła

ś

ciwo

ś

ci systemu. S

ą

to niefunkcjonalne pojawiaj

ą

ce si

ę

wła

ś

ciwo

ś

ci systemu. Mo

ż

e to by

ć

dost

ę

pno

ść

, efektywno

ść

i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

51

wła

ś

ciwo

ś

ci systemu. Mo

ż

e to by

ć

dost

ę

pno

ść

, efektywno

ść

i

bezpiecze

ń

stwo. Te niefunkcjonalne wła

ś

ciwo

ś

ci systemu maj

ą

wpływ na wymagania stawiane wszystkim podsystemom.



Cechy, których system ma nie mie

ć

. W specyfikacji systemu

kontroli lotów mo

ż

na na przykład ustali

ć

,

ż

e system nie powinien

jednocze

ś

nie podawa

ć

kontrolerowi zbyt wiele informacji.

Przykłady wymaga

ń

systemu



Dostarczy

ć

antywłamaniowy i przeciwpo

ż

arowy system

alarmowy biurowca, który na zewn

ą

trz i we wn

ę

trzu

wyemituje ostrze

ż

enie o po

ż

arze lub włamaniu.



Zapewni

ć

, aby normalna praca w biurowcu nie była

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

52



Zapewni

ć

, aby normalna praca w biurowcu nie była

powa

ż

nie zakłócana przez po

ż

ary i włamania.



Zaprojektowa

ć

system ostrzegania przed trz

ę

sieniami

ziemi…..

background image

Projektowanie systemu



Podział wymaga

ń

. Analizuje si

ę

i ł

ą

czy w grupy powi

ą

zane ze sob

ą

wymagania. W tej fazie procesu mo

ż

na utworzy

ć

kilka ró

ż

nych opcji.



Identyfikacja podsystemów. Podsystemy samodzielnie lub zespołowo
spełniaj

ą

wymagania. Grupy wymaga

ń

s

ą

zwykle skojarzone z

podsystemami, a zatem t

ę

czynno

ść

i grupowanie wymaga

ń

mo

ż

na ze sob

ą

poł

ą

czy

ć

.



Przypisywanie wymaga

ń

podsystemom. W praktyce nie mamy jednak

nigdy do czynienia z idealn

ą

zgodno

ś

ci

ą

podziału wymaga

ń

i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

53

nigdy do czynienia z idealn

ą

zgodno

ś

ci

ą

podziału wymaga

ń

i

zidentyfikowanych podsystemów. Z ogranicze

ń

narzuconych przez kupione

na zewn

ą

trz podsystemy mo

ż

e wynikn

ąć

konieczno

ść

zmiany wymaga

ń

.



Okre

ś

lenie funkcjonalno

ś

ci podsystemów. Specyfikuje si

ę

poszczególne

funkcje realizowane przez podsystemy. Czynno

ść

t

ę

mo

ż

na uwa

ż

a

ć

za

cz

ęść

fazy projektowania systemu albo fazy specyfikacji wymaga

ń

, gdy

podsystem jest systemem oprogramowania. Nale

ż

y tak

ż

e rozpozna

ć

zwi

ą

zki

mi

ę

dzy podsystemami.



Definicja interfejsów podsystemów. Definiuje si

ę

interfejsy oferowane i

wymagane przez poszczególne podsystemy. Po ich uzgodnieniu mo

ż

na

równolegle pracowa

ć

nad podsystemami.

Projektowanie systemu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

54

Tworzenie podsystemów



W czasie tworzenia podsystemów implementuje si

ę

podsystemy

zidentyfikowane w trakcie projektowania. Mo

ż

e to oznacza

ć

rozpocz

ę

cie kolejnego procesu in

ż

ynierii systemów dla

poszczególnych podsystemów. Je

ś

li jest to podsystem

oprogramowania, to prawdopodobnie rozpocznie si

ę

proces

tworzenia oprogramowania obejmuj

ą

cy gromadzenie wymaga

ń

,

projektowanie, implementacj

ę

itd.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

55

projektowanie, implementacj

ę

itd.



Proces tworzenia rzadko b

ę

dzie polegał na budowie wszystkich

podsystemów od zera. Zwykle kupienie istniej

ą

cego produktu jest

znacznie ta

ń

sze ni

ż

stworzenie własnego wyspecjalizowanego

komponentu. W tej fazie prawdopodobnie nale

ż

y cofn

ąć

si

ę

do

projektowania, aby przystosowa

ć

si

ę

do nowego kupionego

komponentu.

Integracja systemu



Integracja systemu polega na pobraniu niezale

ż

nie

zbudowanych podsystemów i scaleniu ich w jeden
kompletny system. Integracj

ę

mo

ż

na przeprowadzi

ć

za

pomoc

ą

podej

ś

cia „wielkiego wybuchu”, gdy wszystkie

podsystemy s

ą

integrowane w tym samym czasie. Z

powodów technicznych i mened

ż

erskich najlepiej jest

przyrostowo

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

56

powodów technicznych i mened

ż

erskich najlepiej jest

jednak integrowa

ć

przyrostowo, tzn. w jednym kroku

jest integrowany jeden system.



Zwykle nie da si

ę

ustali

ć

harmonogramów budowania

wszystkich podsystemów tak, aby ko

ń

czyły si

ę

w tym

samym czasie.



Integracja przyrostowa zmniejsza koszty wykrywania

ę

dów.

background image

Instalacja systemu - problemy



Ś

rodowisko, w którym system ma by

ć

zainstalowany, jest inne ni

ż

to,

które zakładali twórcy systemu. Jest to najcz

ęś

ciej wyst

ę

puj

ą

cy

problem w trakcie instalacji systemów oprogramowania. System
mo

ż

e na przykład korzysta

ć

z funkcji oferowanych przez specyficzn

ą

wersj

ę

systemu operacyjnego.



Potencjalni u

ż

ytkownicy systemu mog

ą

by

ć

wrogami jego

wprowadzenia. System mo

ż

e zmniejszy

ć

zakres ich

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

57

wprowadzenia. System mo

ż

e zmniejszy

ć

zakres ich

odpowiedzialno

ś

ci lub liczb

ę

stanowisk w firmie.



Nowy system ma koegzystowa

ć

z istniej

ą

cym systemem do czasu

przekonania firmy,

ż

e nowy system pracuje poprawnie. Instalacja

nowego systemu mo

ż

e nie by

ć

mo

ż

liwa bez usuni

ę

cia starego.

Próby z nowym systemem mog

ą

si

ę

zatem odbywa

ć

jedynie w

czasie, gdy stary system nie jest u

ż

ywany.



Mog

ą

wyst

ą

pi

ć

fizyczne problemy z instalacj

ą

. Wstawienie systemu

do istniej

ą

cego budynku mo

ż

e by

ć

niemo

ż

liwe z braku miejsca,

braku wymaganej klimatyzacji, zbyt itd. Je

ś

li system ma by

ć

instalowany w budynku zabytkowym, to jakiekolwiek przebudowy
b

ę

d

ą

prawdopodobnie zakazane.

Działanie systemu



Po zainstalowaniu system zaczyna działa

ć

. Uruchomienie systemu

mo

ż

e wymaga

ć

organizacji sesji szkoleniowych dla operatorów i

zmiany normalnego toku pracy, aby jak najefektywniej wykorzysta

ć

nowy system. Nie wykryte problemy mog

ą

pojawi

ć

si

ę

w tej fazie,

poniewa

ż

specyfikacja systemu mogła zawiera

ć

ę

dne lub niepełne

dane



Jednym z problemów, które mog

ą

wyj

ść

na jaw dopiero po

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

58



Jednym z problemów, które mog

ą

wyj

ść

na jaw dopiero po

uruchomieniu systemu, jest współpraca nowego systemu z
istniej

ą

cymi ju

ż

systemami. Mog

ą

wyst

ą

pi

ć

fizyczne problemy z

niekompatybilno

ś

ci

ą

. Przeniesienie danych mi

ę

dzy systemami mo

ż

e

by

ć

trudne. Bardziej subtelne s

ą

problemy z bardzo ró

ż

ni

ą

cymi si

ę

interfejsami u

ż

ytkownika ró

ż

nych systemów. Wprowadzenie nowego

systemu mo

ż

e doprowadzi

ć

do zwi

ę

kszenia liczby bł

ę

dów

operatorów, poniewa

ż

operatorom mog

ą

si

ę

myli

ć

polecenia

dost

ę

pne w ró

ż

nych interfejsach u

ż

ytkownika.

Ewolucja systemu - koszty



Proponowane zmiany musz

ą

by

ć

bardzo starannie rozwa

ż

one z

punktu widzenia przedsi

ę

biorstwa i technologii. Musz

ą

by

ć

zaakceptowane przez rozmaite osoby, zanim b

ę

d

ą

wprowadzone.



Podsystemy nigdy nie s

ą

całkowicie niezale

ż

ne, zatem zmiany w

jednym systemie mog

ą

ź

le wpłyn

ąć

na zachowanie i efektywno

ść

innych podsystemów. Odpowiednie zmiany powinny by

ć

wi

ę

c

wprowadzone do tych podsystemów.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

59

wprowadzone do tych podsystemów.



Przyczyny pierwotnych decyzji projektowych zwykle nie s

ą

zapisywane. Osoby odpowiedzialne za ewolucj

ę

systemu musz

ą

ustali

ć

, dlaczego podj

ę

to takie a nie inne decyzje.



W miar

ę

starzenia si

ę

systemu jego struktura staje si

ę

coraz bardziej

skomplikowana przez zmiany, a koszt wprowadzenia nowych zmian
jest coraz wi

ę

kszy.

Likwidacja systemu



Likwidacja systemu oznacza wycofanie go po okresie jego
po

ż

ytecznego u

ż

ytkowania. Czasem jest to proste, niektóre jednak

systemy mog

ą

zawiera

ć

surowce niebezpieczne dla

ś

rodowiska.



W wypadku oprogramowania nie ma mowy o

ż

adnych fizycznych

problemach z likwidacj

ą

. Pewne funkcje oprogramowania mog

ą

jednak wyst

ę

powa

ć

w systemie po to, aby ułatwi

ć

proces likwidacji.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

60



Oprogramowanie mo

ż

e na przykład monitorowa

ć

stan innych

komponentów systemu. Gdy system ulega likwidacji, nie zu

ż

yte

komponenty mo

ż

na zidentyfikowa

ć

i ponownie u

ż

y

ć

.



Je

ś

li dane przechowywane w likwidowanym systemie musz

ą

by

ć

zachowane to nale

ż

y je przekształci

ć

i przenie

ść

do innego

systemu. Cz

ę

sto mo

ż

e si

ę

to wi

ą

za

ć

z wysokimi kosztami, poniewa

ż

struktury danych mog

ą

by

ć

niejawnie zdefiniowane w samym

oprogramowaniu.

background image

Zaopatrywanie w system



Aby kupi

ć

lub podpisa

ć

kontrakt na projekt i

budow

ę

systemu, nale

ż

y najpierw na wysokim

poziomie abstrakcji opracowa

ć

specyfikacj

ę

tego, co system ma robi

ć

.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

61



Mo

ż

e si

ę

zdarzy

ć

,

ż

e taniej jest kupi

ć

system („z

półki”), ni

ż

go zaprojektowa

ć

, wyprodukowa

ć

i

zbudowa

ć

jako oddzielne przedsi

ę

wzi

ę

cie.

Proces zaopatrywania w system



Komponenty „z półki” zwykle nie spełniaj

ą

wymaga

ń

idealnie, chyba

ż

e napisano te wymagania z my

ś

l

ą

o tych wła

ś

nie komponentach.

Wybór systemu oznacza zatem znalezienie najlepszego
dopasowania mi

ę

dzy wymaganiami stawianymi systemowi a

mo

ż

liwo

ś

ciami systemów z półki.



Gdy system b

ę

dzie budowany na zamówienie, specyfikacja

wymaga

ń

jest podstaw

ą

kontraktu na zaopatrzenie w system. Jest to

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

62

wymaga

ń

jest podstaw

ą

kontraktu na zaopatrzenie w system. Jest to

wi

ę

c dokument zarówno prawniczy, jak i techniczny.



Po wybraniu wykonawcy systemu nast

ę

puje okres negocjacji

kontraktu, w trakcie którego uzgadnia si

ę

dalsze zmiany wymaga

ń

i

omawia ró

ż

ne sprawy, na przykład koszt zmian.

Proces zaopatrywania w system

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

63

In

ż

ynieria systemów - posumowanie



In

ż

ynieria systemów jest zło

ż

onym i trudnym procesem, który wymaga

wkładu pracy specjalistów wielu innych dziedzin in

ż

ynierii.



Pojawiaj

ą

ce si

ę

wła

ś

ciwo

ś

ci systemu s

ą

charakterystykami systemu jako

cało

ś

ci, a nie jego cz

ęś

ci składowych. S

ą

to m.in. efektywno

ść

,

niezawodno

ść

, u

ż

yteczno

ść

, bezpiecze

ń

stwo i zabezpieczenia. Powodzenie

lub pora

ż

ka systemu cz

ę

sto zale

ż

y od tych pojawiaj

ą

cych si

ę

wła

ś

ciwo

ś

ci.



Architektury systemów zwykle prezentuje si

ę

na diagramach blokowych,

przedstawiaj

ą

cych główne podsystemy i zwi

ą

zki mi

ę

dzy nimi.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

64

przedstawiaj

ą

cych główne podsystemy i zwi

ą

zki mi

ę

dzy nimi.



Typami komponentów funkcjonalnych systemu s

ą

komponenty detektorowe,

komponenty efektorowe, komponenty obliczeniowe, komponenty
koordynuj

ą

ce, komponenty komunikacyjne i komponenty interfejsu.



Proces in

ż

ynierii systemów obejmuje specyfikacj

ę

, projektowanie, tworzenie,

integracj

ę

i testowanie. Integracja systemu (ł

ą

czenie podsystemów od

ż

nych dostawców tak, aby współpracowały) jest zwykle najtrudniejsza i

najwa

ż

niejsza.



Proces zaopatrywania w system obejmuje specyfikacj

ę

systemu, ogłoszenie

przetargu, wybór dostawcy i zawarcie kontraktu na dostaw

ę

systemu.

Niektóre cz

ęś

ci systemu komputerowego s

ą

kupowane jak komercyjne

komponenty z półki.

background image

Proces tworzenia

oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

65

oprogramowania

Tworzenie oprogramowania



Specyfikowanie oprogramowania. Funkcjonalno

ść

oprogramowania i ograniczenia jego działania musz

ą

by

ć

zdefiniowane.



Projektowanie i implementowanie oprogramowania.
Oprogramowanie, które spełnia specyfikacj

ę

, musi by

ć

stworzone.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

66

stworzone.



Zatwierdzanie oprogramowania. Oprogramowanie musi
by

ć

zweryfikowane, aby zapewni

ć

,

ż

e robi to, czego

oczekiwał klient.



Ewolucja oprogramowania. Oprogramowanie musi
ewoluowa

ć

, aby spełnia

ć

zmieniaj

ą

ce si

ę

potrzeby

u

ż

ytkowników.

Modele procesów 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.

ź

niej jest udoskonalana zgodnie z informacjami otrzymanymi od

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

67

ź

niej jest udoskonalana zgodnie z informacjami otrzymanymi od

klienta. Prowadzi to do stworzenia systemu, który spełnia oczekiwania
klienta.



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 integrowaniu tych
fragmentów, a nie na tworzeniu ich od pocz

ą

tku.

Model kaskadowy



Definiowanie i analiza wymaga

ń

. Usługi, ograniczenia i cele systemu s

ą

ustalane w czasie narad z u

ż

ytkownikami systemu. S

ą

ź

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.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

68

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

ę

.



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. Zwykle (chocia

ż

niekoniecznie) jest to najdłu

ż

sza faza

cyklu

ż

ycia. System jest zainstalowany i przekazany do praktycznego

u

ż

ytkowania. Piel

ę

gnacja obejmuje poprawianie bł

ę

dów, których nie wykryto we

wcze

ś

niejszych fazach cyklu

ż

ycia, poprawianie implementacji jednostek

systemu i wzbogacanie usług systemu w miar

ę

odkrywania nowych wymaga

ń

.

background image

Model kaskadowy

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

69

Wady modelu kaskadowego



Wad

ą

modelu kaskadowego jest zawarty w nim

nieelastyczny podział na rozł

ą

czne etapy. Zobowi

ą

zania

musz

ą

by

ć

podejmowane w bardzo wczesnej fazie

procesu. Oznacza to trudno

ś

ci z reagowaniem na

zmieniaj

ą

ce si

ę

wymagania klienta.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

70



Model kaskadowy powinien by

ć

u

ż

ywany jedynie

wówczas, gdy wymagania s

ą

jasne i zrozumiałe. Ten

model odzwierciedla jednak normaln

ą

praktyk

ę

in

ż

yniersk

ą

. Procesy tworzenia oprogramowania oparte

na tym modelu s

ą

ci

ą

gle cz

ę

sto u

ż

ywane, a szczególnie

wtedy, kiedy s

ą

cz

ęś

ciami wi

ę

kszych przedsi

ę

wzi

ęć

in

ż

ynierii systemów.

Tworzenie ewolucyjne



Tworzenie ewolucyjne polega na opracowaniu
wst

ę

pnej implementacji, pokazaniu jej

u

ż

ytkownikowi z pro

ś

b

ą

o komentarze i

udoskonalaniu jej w wielu wersjach a

ż

do

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

71

powstania odpowiedniego systemu. Nie ma tu
oddzielnych czynno

ś

ci specyfikacji, tworzenia i

zatwierdzania, a s

ą

one raczej przeprowadzane

równolegle z szybkim reagowaniem na
informacje zwrotne.

Tworzenie ewolucyjne

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

72

background image

Typy tworzenia ewolucyjnego



Tworzenie badawcze, w którym celem procesu jest praca
z klientem, polegaj

ą

ca na badaniu wymaga

ń

i

dostarczeniu ostatecznego systemu. Tworzenie
rozpoczyna si

ę

od tych cz

ęś

ci systemu, które s

ą

dobrze

rozpoznane. System ewoluuje przez dodawanie nowych
cech, które proponuje klient.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

73

cech, które proponuje klient.



Prototypowanie z porzuceniem, w którym celem procesu
tworzenia ewolucyjnego jest zrozumienie wymaga

ń

klienta i wypracowanie lepszej definicji wymaga

ń

stawianych systemowi. Budowanie prototypu ma głównie
na celu eksperymentowanie z tymi wymaganiami
u

ż

ytkownika, które s

ą

niejasne.

Zalety tworzenia ewolucyjnego



Najdokładniej odpowiadaj

ą

potrzebom

u

ż

ytkowników.



Zalet

ą

procesu tworzenia oprogramowania

opartego na podej

ś

ciu ewolucyjnym jest

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

74

opartego na podej

ś

ciu ewolucyjnym jest

przyrostowe opracowywanie specyfikacji.



Wypracowanie coraz lepszego zrozumienia
przez u

ż

ytkowników ich problemu znajduje swoje

odzwierciedlenie w systemie oprogramowanym.

Wady



Proces nie jest widoczny. Mened

ż

erowie potrzebuj

ą

regularnych wyników, aby mierzy

ć

post

ę

p prac. Je

ś

li

systemy s

ą

tworzone szybko, nie opłaca si

ę

generowa

ć

dokumentów opisuj

ą

cych ka

ż

d

ą

wersj

ę

systemu.



System ma zł

ą

struktur

ę

. Nieustaj

ą

ce modyfikacje

przyczyniaj

ą

si

ę

do psucia struktury oprogramowania.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

75

przyczyniaj

ą

si

ę

do psucia struktury oprogramowania.

Wprowadzanie nowych zmian w programach staje si

ę

coraz trudniejsze i bardziej kosztowne.



Konieczne mog

ą

by

ć

specjalne narz

ę

dzia i techniki.

Ułatwiaj

ą

szybkie tworzenie, ale mog

ą

by

ć

niekompatybilne z innymi narz

ę

dziami lub technikami.

Prawdopodobnie niewiele osób potrafi si

ę

nimi

posługiwa

ć

Tworzenie formalne systemów



Tworzenie formalne systemów jest podej

ś

ciem,

które ma wiele wspólnego z modelem
kaskadowym. Proces tworzenia jest tu jednak
oparty na matematycznych przekształceniach

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

76

specyfikacji systemu w program wykonywamy.

background image

ż

nice w podej

ś

ciu formalnym a

kaskadowym



Specyfikacja wymaga

ń

stawianych

oprogramowaniu jest zapisywana w postaci
szczegółowej formalnej specyfikacji wyra

ż

onej

za pomoc

ą

notacji matematycznej.

Procesy projektowania, implementacji i

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

77



Procesy projektowania, implementacji i
testowania jednostek s

ą

zast

ą

pione przez proces

tworzenia z przekształceniem, w którym
specyfikacja formalna jest udoskonalana przez
ci

ą

g przekształce

ń

, które prowadz

ą

do powstania

programu.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

78

Przekształcenia formalne



W procesie przekształcania formalna matematyczna
reprezentacja systemu jest metodycznie przekształcana
w bardziej szczegółowe, ale wci

ąż

matematycznie

poprawne reprezentacje systemu. Ka

ż

dy krok dodaje

nowe detale i trwa to do chwili, w której specyfikacja

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

79

nowe detale i trwa to do chwili, w której specyfikacja
formalna stanie si

ę

równowa

ż

nym jej programem.

Przekształcenia s

ą

odpowiednio małe, co oznacza,

ż

e

wysiłek po

ś

wi

ę

cony na ich sprawdzenie nie jest

nadmierny. Mo

ż

na zatem zagwarantowa

ć

,

ż

e je

ś

li nie

było bł

ę

dów weryfikacji, to otrzymany program jest

naprawd

ę

implementacj

ą

wyj

ś

ciowej specyfikacji.

Przekształcenia formalne



Formalnie wykonuje si

ę

ka

ż

dy krok i dowodzi jego

poprawno

ś

ci. Nie ma testowania w poszukiwaniu usterek

w procesie, a testowanie systemu koncentruje si

ę

na

zapewnieniu niezawodno

ś

ci systemu.



Taki proces jest szczególnie przydatny do tworzenia

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

80

Taki proces jest szczególnie przydatny do tworzenia
systemów z surowymi wymaganiami bezpiecze

ń

stwa,

niezawodno

ś

ci i zabezpiecze

ń

. Podej

ś

cie formalne

upraszcza generowanie przypadków testuj

ą

cych

bezpiecze

ń

stwo i zabezpieczenia, które słu

żą

do

wykazywania klientom i instytucjom certyfikuj

ą

cym,

ż

e

system rzeczywi

ś

cie spełnia wymagania dotycz

ą

ce

bezpiecze

ń

stwa i zabezpiecze

ń

.

background image

Stosowanie podej

ś

cia formalnego



Oprócz specjalistycznych dziedzin procesy oparte na
przekształceniach formalnych s

ą

u

ż

ywane rzadko.



Wymagaj

ą

specjalistycznej wiedzy i w praktyce okazuje

si

ę

,

ż

e w wypadku wi

ę

kszo

ś

ci systemów nie powoduj

ą

zmniejszenia kosztów lub polepszenia jako

ś

ci w

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

81

zmniejszenia kosztów lub polepszenia jako

ś

ci w

porównaniu z innymi podej

ś

ciami.



Główn

ą

tego przyczyn

ą

jest fakt,

ż

e interakcje systemów

nie poddaj

ą

si

ę

łatwo specyfikowaniu formalnemu, a to

wła

ś

nie jest bardzo du

ż

a cz

ęść

wysiłku tworzenia w

wi

ę

kszo

ś

ci systemów oprogramowanych.

Tworzenie z u

ż

yciem wielokrotnym



W wi

ę

kszo

ś

ci przedsi

ę

wzi

ęć

programistycznych

wyst

ę

puje u

ż

ycie wielokrotne oprogramowania.

Dzieje si

ę

to zwykle nieformalnie, gdy

zatrudnione osoby znaj

ą

projekty lub kody

programów podobne do tych wymaganych.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

82

programów podobne do tych wymaganych.
Szukaj

ą

ich, modyfikuj

ą

zgodnie z wymaganiami

i wł

ą

czaj

ą

do swojego systemu.



W podej

ś

ciu ewolucyjnym u

ż

ycie wielokrotne jest

cz

ę

sto uwa

ż

ane za podstaw

ę

szybkiego

tworzenia systemów.

Tworzenie z u

ż

yciem wielokrotnym



W metodzie z u

ż

yciem wielokrotnym zakłada si

ę

istnienie

wielkiego zbioru dost

ę

pnych komponentów

programowych u

ż

ycia wielokrotnego oraz integruj

ą

cej je

struktury. Niekiedy komponenty te s

ą

same w sobie

systemami, które dostarczaj

ą

specyficznej

funkcjonalno

ś

ci, np. formatowanie tekstu, obliczenia

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

83

funkcjonalno

ś

ci, np. formatowanie tekstu, obliczenia

numeryczne.



Pocz

ą

tkowa faza specyfikacji wymaga

ń

i faza

zatwierdzania s

ą

podobne do innych procesów; etapy

po

ś

rednie w procesie opartym na u

ż

yciu wielokrotnym s

ą

inne.

Etapy po

ś

rednie w metodzie



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; te, które mo

ż

na wykorzysta

ć

,

dostarczaj

ą

jedynie cz

ęść

wymaganej funkcjonalno

ś

ci.



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, to

czynno

ść

analizy komponentów mo

ż

e by

ć

powtórzona w celu poszukiwania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

84

czynno

ść

analizy komponentów mo

ż

e by

ć

powtórzona w celu poszukiwania

innych rozwi

ą

za

ń

.



Projektowanie systemu z u

ż

yciem wielokrotnym. Projektanci bior

ą

pod

uwag

ę

ponownie u

ż

yte komponenty i tworz

ą

zgodnie z ich wymaganiami.

Pewne nowe fragmenty oprogramowania mog

ą

by

ć

potrzebne, je

ś

li nie s

ą

dost

ę

pne komponenty u

ż

ycia wielokrotnego.



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

Zalety



Model oparty na u

ż

yciu wielokrotnym ma

oczywist

ą

przewag

ę

nad innymi redukuje ilo

ść

tworzonego oprogramowania, zmniejsza zatem
koszt i zagro

ż

enia.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

85



Zwykle powoduje tak

ż

e szybsze dostarczenie

oprogramowania. Kompromisy zwi

ą

zane z

wymaganiami s

ą

tu jednak nieodzowne, co mo

ż

e

oznacza

ć

,

ż

e system nie b

ę

dzie spełniał

rzeczywistych potrzeb u

ż

ytkowników.

Wady



Traci si

ę

cz

ęść

kontroli nad ewolucj

ą

systemu,

poniewa

ż

firma korzystaj

ą

ca z komponentów

u

ż

ycia wielokrotnego nie ma wpływu na ich nowe

wersje.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

86



Koniec poprzedniego…..

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

87

Podej

ś

cia hybrydowe (iteracja procesu)



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

ę

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

88



Tworzenie spiralne, w którym system rozwija si

ę

ruchem spiralnym na zewn

ą

trz od pocz

ą

tkowego

szkicu do ko

ń

cowego systemu.

background image

Podej

ś

cia hybrydowe (iteracja procesu)



Istot

ą

procesu iteracyjnego jest to,

ż

e specyfikacja

jest opracowywana w poł

ą

czeniu z

oprogramowaniem.



Pełna specyfikacja systemu jest cz

ęś

ci

ą

kontraktu

na jego tworzenie. W wypadku tworzenia

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

89

na jego tworzenie. W wypadku tworzenia
przyrostowego nie ma pełnej specyfikacji a

ż

do

chwili wyspecyfikowania ostatniego przyrostu. To
wymaga nowej formuły kontraktów, która mo

ż

e by

ć

trudna do zaakceptowania przez powa

ż

nych

klientów, na przykład agencje rz

ą

dowe.

Tworzenie przyrostowe



Podej

ś

cie ewolucyjne do tworzenia umo

ż

liwia odło

ż

enie

w czasie decyzji projektowych i dotycz

ą

cych wymaga

ń

,

ale prowadzi do zbudowania oprogramowania o złej
strukturze, trudnego do zrozumienia i piel

ę

gnacji.



Model kaskadowy tworzenia zmusza klientów do

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

90

Model kaskadowy tworzenia zmusza klientów do
zatwierdzenia pewnego zbioru wymaga

ń

, zanim

rozpocznie si

ę

projektowanie. Zmusza równie

ż

projektantów do zatwierdzenia konkretnych strategii
projektowych przed przyst

ą

pieniem do implementacji.



Tworzenie przyrostowe jest podej

ś

ciem po

ś

rednim, które

ł

ą

czy w sobie zalety obu tych modeli.

Tworzenie przyrostowe

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

91

Tworzenie przyrostowe - zalety



Klienci nie musz

ą

czeka

ć

na dostarczenie całego systemu, zanim

zaczn

ą

czerpa

ć

z niego korzy

ś

ci.



Klienci mog

ą

u

ż

ywa

ć

wst

ę

pnych przyrostów jako rodzaju prototypu i

zdobywa

ć

do

ś

wiadczenia, które inspiruj

ą

wymagania wobec

ź

niejszych przyrostów.



Ryzyko całkowitej pora

ż

ki przedsi

ę

wzi

ę

cia jest mniejsze. Chocia

ż

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

92



Ryzyko całkowitej pora

ż

ki przedsi

ę

wzi

ę

cia jest mniejsze. Chocia

ż

mog

ą

pojawi

ć

si

ę

problemy w niektórych przyrostach,

prawdopodobnie wiele usług b

ę

dzie z powodzeniem dostarczone

klientowi.



Usługi o najwy

ż

szym priorytecie b

ę

d

ą

dostarczone jako pierwsze, a

ź

niejsze przyrosty b

ę

d

ą

z nimi integrowane, a zatem

najwa

ż

niejsze usługi systemu b

ę

d

ą

najdokładniej przetestowane.

Oznacza to,

ż

e klienci maj

ą

mniejsz

ą

szans

ę

dozna

ć

awarii

oprogramowania najbardziej istotnych cz

ęś

ci systemu.

background image

Tworzenie przyrostowe - wady



Mo

ż

e by

ć

trudno przypisa

ć

wymagania klienta do

przyrostów odpowiedniej wielko

ś

ci. Co wi

ę

cej, wi

ę

kszo

ść

systemów wymaga zbioru podstawowych udogodnie

ń

,

które s

ą

u

ż

ywane przez ró

ż

ne cz

ęś

ci systemu. Skoro

wymagania nie s

ą

szczegółowo zdefiniowane przed

implementacj

ą

przyrostu, trudno jest zidentyfikowa

ć

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

93

implementacj

ą

przyrostu, trudno jest zidentyfikowa

ć

wspólne udogodnienia potrzebne wszystkim przyrostom.



Ewolucja podej

ś

cia przyrostowego doprowadziła ostatnio

do powstania tzw. „programowania ekstremalnego”.
Opiera si

ę

ono na tworzeniu i dostarczaniu bardzo

małych przyrostów funkcjonalno

ś

ci, wł

ą

czeniu klienta w

cały proces, ustawicznym poprawianiu kodu.

Tworzenie spiralne



Proces nie jest tu przedstawiany jako ci

ą

g

czynno

ś

ci z pewnymi nawrotami od jednej do

drugiej, ale ma posta

ć

spirali. Ka

ż

da p

ę

tla tej

spirali reprezentuje jedn

ą

faz

ę

procesu.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

94

Najbardziej wewn

ę

trzna p

ę

tla mo

ż

e by

ć

wi

ę

c

po

ś

wi

ę

cona wykonalno

ś

ci systemu, nast

ę

pna

definicji wymaga

ń

stawianych systemowi, kolejna

projektowaniu systemu itd. Ka

ż

da p

ę

tla spirali

jest podzielona na cztery sektory

Tworzenie spiralne



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 zagro

ż

enia przedsi

ę

wzi

ę

cia.



Rozpoznanie i redukcja zagro

ż

e

ń

. Przeprowadza si

ę

szczegółow

ą

analiz

ę

ka

ż

dego z rozpoznanych zagro

ż

e

ń

przedsi

ę

wzi

ę

cia. Podejmuje si

ę

kroki

zmierzaj

ą

ce do redukcji tych zagro

ż

e

ń

. Je

ś

li zagra

ż

a nam na przykład to,

ż

e

wymagania s

ą

nieodpowiednie, mo

ż

na opracowa

ć

prototyp systemu

Tworzenie i zatwierdzanie. Po ocenie zagro

ż

e

ń

wybiera si

ę

model

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

95



Tworzenie i zatwierdzanie. Po ocenie zagro

ż

e

ń

wybiera si

ę

model

tworzenia systemu. Je

ś

li najpowa

ż

niejsze zagro

ż

enie jest zwi

ą

zane z

interfejsem u

ż

ytkownika, to odpowiednim modelem tworzenia mo

ż

e by

ć

prototypowanie ewolucyjne. Je

ś

li najbardziej zagro

ż

one jest

bezpiecze

ń

stwo, to tworzenie oparte na przekształceniach formalnych mo

ż

e

by

ć

najwła

ś

ciwsze itd. Model kaskadowy mo

ż

e by

ć

uzasadniony w wypadku,

gdy głównym rozpoznanym ryzykiem jest integracja podsystemów.



Planowanie. Recenzuje si

ę

przedsi

ę

wzi

ę

cie i podejmuje decyzj

ę

, czy

rozpoczyna

ć

nast

ę

pn

ą

p

ę

tl

ę

spirali. Je

ś

li jest ona pozytywna, to planuje si

ę

nast

ę

pn

ą

faz

ę

przedsi

ę

wzi

ę

cia.

Tworzenie spiralne

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

96

background image

Tworzenie spiralne



Wa

ż

n

ą

cech

ą

odró

ż

niaj

ą

c

ą

model spiralny od innych

modeli procesów jest wyst

ę

puj

ą

ce w tym modelu jawne

potraktowanie zagro

ż

e

ń

. Nieformalnie, zagro

ż

enie to

po prostu co

ś

, co mo

ż

e pój

ść

ź

le.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

97



Je

ś

li mamy na przykład zamiar u

ż

y

ć

nowy j

ę

zyk

programowania, to zagro

ż

eniem jest zawodno

ść

dost

ę

pnych kompilatorów lub to,

ż

e mog

ą

generowa

ć

nie

do

ść

efektywny kod po

ś

redni. Kłopoty przedsi

ę

wzi

ę

cia,

na przykład przekroczenie kosztów lub harmonogramu,
równie

ż

powoduj

ą

zagro

ż

enie.

Specyfikowanie oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

98

Specyfikowanie oprogramowania

Specyfikowanie wymaga

ń



Studium wykonalno

ś

ci. Ocenia si

ę

, czy rozpoznane potrzeby

u

ż

ytkowników mog

ą

by

ć

spełnione przy obecnych technologiach sprz

ę

tu i

oprogramowania. Studium pozwoli zdecydowa

ć

, czy proponowany system

b

ę

dzie opłacalny z punktu widzenia ekonomii oraz czy mo

ż

na system ten

zbudowa

ć

w ramach zało

ż

onego bud

ż

etu.



Okre

ś

lanie i analiza wymaga

ń

. Jest to proces okre

ś

lania wymaga

ń

stawianych systemowi na podstawie obserwacji istniej

ą

cych systemów,

rozmów z potencjalnymi u

ż

ytkownikami i zaopatrzeniowcami, analizy zada

ń

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

99

rozmów z potencjalnymi u

ż

ytkownikami i zaopatrzeniowcami, analizy zada

ń

itd.



Specyfikowanie wymaga

ń

. Jest czynno

ś

ci

ą

polegaj

ą

c

ą

na zapisywaniu

informacji zebranych w czasie analizy w dokumencie definiuj

ą

cym zbiór

wymaga

ń

. Mog

ą

w nim pojawi

ć

si

ę

dwa rodzaje wymaga

ń

. Wymagania

u

ż

ytkownika 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.

Nast

ę

pnie nale

ż

y zmodyfikowa

ć

dokumentacj

ę

wymaga

ń

tak, aby usun

ąć

te

ę

dy.

Specyfikowanie wymaga

ń

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

100

background image

Projektowanie i implementowanie

oprogramowania



Faza implementowania w tworzeniu oprogramowania to
proces przekształcania specyfikacji systemu w działaj

ą

cy

system.



Projekt oprogramowania to opis struktury
oprogramowania, które ma by

ć

zaimplementowane,

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

101

oprogramowania, które ma by

ć

zaimplementowane,

danych, które s

ą

cz

ęś

ci

ą

systemu, interfejsów mi

ę

dzy

komponentami systemu i u

ż

ytych algorytmów.



Ko

ń

cowym wynikiem tego procesu jest precyzyjna

specyfikacja algorytmów i struktur danych, które nale

ż

y

zaimplementowa

ć

.

Projektowanie i implementowanie

oprogramowania



Projektowanie architektury. Identyfikuje i dokumentuje si

ę

podsystemy

tworz

ą

ce system oraz zwi

ą

zki mi

ę

dzy nimi.



Specyfikowanie abstrakcyjne. Opracowuje si

ę

abstrakcyjn

ą

specyfikacj

ę

usług ka

ż

dego podsystemu oraz ogranicze

ń

, w ramach których musi

pracowa

ć

.



Projektowanie interfejsów. Projektuje i dokumentuje si

ę

interfejsy ka

ż

dego

podsystemu z innymi podsystemami. Specyfikacja interfejsów musi by

ć

jednoznaczna, poniewa

ż

umo

ż

liwia korzystanie z podsystemów bez

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

102

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.



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.

Projektowanie i implementowanie

oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

103

Metody projektowania



Metodyczne podej

ś

cia do projektowania oprogramowania

zaproponowano w „metodach strukturalnych”, które s

ą

zbiorami

notacji i porad dla projektantów oprogramowania.



U

ż

ycie metod strukturalnych polega zwykle na opracowaniu

graficznych modeli systemu i prowadzi do utworzenia ogromnej ilo

ś

ci

dokumentacji projektowej. Metody strukturalne były z powodzeniem
u

ż

ywane w wielu ogromnych przedsi

ę

wzi

ę

ciach. Mog

ą

doprowadzi

ć

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

104

u

ż

ywane w wielu ogromnych przedsi

ę

wzi

ę

ciach. Mog

ą

doprowadzi

ć

do istotnego zmniejszenia kosztów, poniewa

ż

obejmuj

ą

standardowe

notacje i zapewniaj

ą

powstanie standardowej dokumentacji

projektowej.



Metoda strukturalna zawiera model procesu projektowania, notacje
do zapisu projektu, formaty raportów, zasady i porady dla
projektantów.

background image

Metody strukturalne



Model 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.

Modele encja-zwi

ą

zek s

ą

przyj

ę

t

ą

technik

ą

opisu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

105

Modele encja-zwi

ą

zek s

ą

przyj

ę

t

ą

technik

ą

opisu

struktury baz danych.



Model strukturalny, w którym dokumentuje si

ę

komponenty systemu i ich interakcje.



Metody obiektowe zawieraj

ą

model dziedziczenia w

systemie, modele statycznych i dynamicznych zwi

ą

zków

mi

ę

dzy obiektami oraz modele interakcji obiektów w

czasie działania systemu.

Programowanie i wyszukiwanie bł

ę

dów



Tworzenie programu, który implementuje system, nast

ę

puje zwykle

po procesie projektowania systemu. W wielu wypadkach programista
musi doda

ć

jedynie szczegóły operacji ka

ż

dego komponentu

programu.



Programowanie jest indywidualn

ą

czynno

ś

ci

ą

i nie istnieje

ż

aden

ogólny proces, zgodnie z którym si

ę

post

ę

puje. Niektórzy

programi

ś

ci zaczn

ą

od komponentów, które rozumiej

ą

, utworz

ą

je, a

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

106

programi

ś

ci zaczn

ą

od komponentów, które rozumiej

ą

, utworz

ą

je, a

potem przejd

ą

do pracy z mniej zrozumiałymi komponentami. Inni

post

ą

pi

ą

odwrotnie, pozostawiaj

ą

c znajome komponenty na koniec,

poniewa

ż

wiedz

ą

, jak je utworzy

ć

.



Niektórzy programi

ś

ci lubi

ą

wcze

ś

nie definiowa

ć

dane, a potem

u

ż

ywa

ć

ich do kierowania pisaniem programów. Inni pozostawi

ą

dane bez specyfikacji tak długo, jak to tylko jest mo

ż

liwe.

Programowanie i wyszukiwanie bł

ę

dów



Programi

ś

ci wykonuj

ą

pewne testy kodu, który napisali. Cz

ę

sto

prowadzi to do wykrycia bł

ę

dów, które nale

ż

y usun

ąć

z programu.

Czynno

ść

ta nosi nazw

ę

usuwania bł

ę

dów.



Testowanie usterek i usuwanie bł

ę

dów to dwa ró

ż

ne procesy.

Testowanie wykazuje istnienie bł

ę

dów. Usuwanie bł

ę

dów polega na

ich lokalizacji i poprawieniu.



Usterki w kodzie nale

ż

y zlokalizowa

ć

i zmodyfikowa

ć

program tak,

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

107



Usterki w kodzie nale

ż

y zlokalizowa

ć

i zmodyfikowa

ć

program tak,

aby spełnił wymagania. Testowanie nale

ż

y powtarza

ć

, aby zapewni

ć

wła

ś

ciwe wprowadzenie zmian.



Proces usuwania bł

ę

dów jest zatem cz

ęś

ci

ą

zarówno tworzenia, jak i

testowania oprogramowania.

Zatwierdzanie i testowanie

oprogramowania



Zatwierdzanie oprogramowania lub bardziej ogólnie weryfikacja i
zatwierdzanie maj

ą

wykaza

ć

,

ż

e system jest zgodny ze swoj

ą

specyfikacj

ą

i spełnia oczekiwania klienta, który go kupuje. Obejmuje

proces sprawdzania, m.in. kontrole i recenzje w ka

ż

dym kroku

procesu tworzenia od definicji wymaga

ń

u

ż

ytkownika do pisania

programów. Wi

ę

kszo

ść

kosztów zatwierdzania powstaje po

zaimplementowaniu, gdy testuje si

ę

działaj

ą

cy system.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

108

zaimplementowaniu, gdy testuje si

ę

działaj

ą

cy system.



Z wyj

ą

tkiem małych programów, nie nale

ż

y testowa

ć

systemu jako

pojedynczej, monolitycznej cało

ś

ci. Wielkie systemy buduje si

ę

z

podsystemów, te s

ą

z kolei składane z modułów, w skład których

wchodz

ą

procedury i funkcje. Proces testowania powinien by

ć

zatem

wykonywany w wielu krokach, w których testuje si

ę

przyrostowo

jednocze

ś

nie z implementowaniem systemu.

background image

Zatwierdzanie i testowanie

oprogramowania



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 systemu.



Testowanie modułów. Moduł jest kolekcj

ą

niezale

ż

nych

komponentów takich jak klasy obiektów, abstrakcyjne typy danych,
albo bardziej lu

ź

n

ą

kolekcj

ą

procedur i funkcji. Moduł zamyka w

sobie powi

ą

zane komponenty, mo

ż

na go zatem testowa

ć

bez

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

109

sobie powi

ą

zane komponenty, mo

ż

na go zatem testowa

ć

bez

udziału innych modułów systemu.



Testowanie podsystemów. Ta faza obejmuje testowanie kolekcji
modułów, które zintegrowano w podsystemie. W wypadku wielkich
systemów głównymi napotykanymi tu problemami s

ą

niezgodno

ś

ci

interfejsów. Proces testowania podsystemu powinien zatem
prowadzi

ć

do wykrycia bł

ę

dów w interfejsach modułów przez

intensywne próbkowanie tych interfejsów.

Zatwierdzanie i testowanie

oprogramowania



Testowanie systemu. Podsystemy zintegrowano ju

ż

w system. Ten

proces testowania ma wykry

ć

ę

dy wynikaj

ą

ce z nie przewidzianych

interakcji mi

ę

dzy podsystemami i problemów z interfejsami

podsystemów. W tej fazie sprawdza si

ę

tak

ż

e, czy system spełnia

stawiane mu wymagania funkcjonalne i niefunkcjonalne. Bada si

ę

tak

ż

e pojawiaj

ą

ce si

ę

wła

ś

ciwo

ś

ci systemu.



Testowanie odbiorcze. Jest to ko

ń

cowa faza procesu testowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

110



Testowanie odbiorcze. Jest to ko

ń

cowa faza procesu testowania

przed przyj

ę

ciem systemu do u

ż

ytkowania. System testuje si

ę

za

pomoc

ą

danych dostarczonych przez u

ż

ytkownika, a nie danych

symulowanych. Testowanie odbiorcze mo

ż

e doprowadzi

ć

do

wykrycia bł

ę

dów i zaniedba

ń

w definicji wymaga

ń

stawianych

systemowi, poniewa

ż

prawdziwe dane wypróbowuj

ą

system w

zupełnie inny sposób ni

ż

dane testowe. Testowanie odbiorcze mo

ż

e

równie

ż

ujawni

ć

problemy z wymaganiami polegaj

ą

ce na tym,

ż

e

udogodnienia systemu nie w pełni odpowiadaj

ą

potrzebom

u

ż

ytkowników lub efektywno

ść

systemu jest nie do zaakceptowania.

Zatwierdzanie i testowanie

oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

111

Fazy testowania w procesie tworzenia

oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

112

background image

Fazy testowania w procesie tworzenia

oprogramowania



Za testowanie jednostek i testowanie modułów zwykle odpowiadaj

ą

programi

ś

ci, którzy utworzyli komponent. Programi

ś

ci opracowuj

ą

własne dane testowe i przyrostowo testuj

ą

swój kod w miar

ę

jego

tworzenia. Takie podej

ś

cie jest sensowne ekonomicznie, poniewa

ż

to wła

ś

nie programista zna najlepiej swój komponent, jest zatem

najwła

ś

ciwsz

ą

osob

ą

do wygenerowania danych testowych.

Testowanie jednostek jest cz

ęś

ci

ą

procesu implementacji. Oczekuje

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

113

Testowanie jednostek jest cz

ęś

ci

ą

procesu implementacji. Oczekuje

si

ę

,

ż

e w wyniku tego procesu b

ę

dzie dostarczony komponent

zgodny ze swoj

ą

specyfikacj

ą

.



ź

niejsze fazy testowania obejmuj

ą

integracj

ę

prac wielu

programistów; nale

ż

y je uprzednio zaplanowa

ć

. Powinien je

wykonywa

ć

niezale

ż

ny zespół testerów na podstawie wcze

ś

niej

zapisanych planów testów opracowanych na podstawie specyfikacji i
projektu systemu.

Fazy testowania w procesie tworzenia

oprogramowania



Testowanie odbiorcze jest czasem nazywane testowaniem alfa.
Systemy na zamówienie s

ą

tworzone dla jednego klienta. Proces

testowania alfa trwa do chwili, w której wytwórca systemu i klient
zgodz

ą

si

ę

,

ż

e dostarczony system jest mo

ż

liw

ą

do przyj

ę

cia

implementacj

ą

wymaga

ń

stawianych systemowi.



Je

ś

li system jest sprzedawany jako produkt programowy, cz

ę

sto

stosuje si

ę

proces testowania zwany testowaniem beta. Testowanie

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

114

stosuje si

ę

proces testowania zwany testowaniem beta. Testowanie

beta polega na dostarczeniu systemu pewnej liczbie potencjalnych
klientów, którzy zgodzili si

ę

z niego korzysta

ć

. Informuj

ą

oni

wytwórców o pojawiaj

ą

cych si

ę

problemach. Sprawia to,

ż

e produkt

podlega prawdziwemu u

ż

ytkowaniu i umo

ż

liwia wykrycie bł

ę

dów,

których nie przewidzieli budowniczowie systemu. Po otrzymaniu tych
zwrotnych informacji modyfikuje si

ę

system i udost

ę

pnia do dalszego

testowania beta lub do ogólnego u

ż

ytku.

Ewolucja oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

115

Ewolucja oprogramowania



Elastyczno

ść

systemów oprogramowanych jest jedn

ą

z

głównych przyczyn,

ż

e coraz wi

ę

cej oprogramowania

ą

cza si

ę

do wielkich, zło

ż

onych systemów.



Po podj

ę

ciu decyzji o wyprodukowaniu sprz

ę

tu zmiany w

jego projekcie s

ą

bardzo kosztowne.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

116

jego projekcie s

ą

bardzo kosztowne.



W wypadku oprogramowania zmiany mog

ą

by

ć

jednak

wprowadzane w ka

ż

dej chwili tworzenia lub nawet po

jego zako

ń

czeniu. Koszt tych zmian mo

ż

e by

ć

bardzo

wysoki, ale wci

ąż

b

ę

dzie ni

ż

szy ni

ż

odpowiednie zmiany

w sprz

ę

cie systemu.

background image

Ewolucja oprogramowania



Od dawna istniało wyra

ź

ne rozgraniczenie mi

ę

dzy

procesem tworzenia oprogramowania a procesem
ewolucji oprogramowania (piel

ę

gnacji oprogramowania).



Tworzenie oprogramowania jest uwa

ż

ane za czynno

ść

twórcz

ą

, w której system oprogramowany ze wst

ę

pnego

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

117

twórcz

ą

, w której system oprogramowany ze wst

ę

pnego

pomysłu staje si

ę

działaj

ą

cym systemem.



Piel

ę

gnacja oprogramowania to proces zmieniania

systemu po przekazaniu go do u

ż

ytku. Chocia

ż

koszty

„piel

ę

gnacji” s

ą

zwykle wielokrotnie wy

ż

sze ni

ż

koszt

wst

ę

pnego tworzenia, proces piel

ę

gnacji jest uwa

ż

any za

mniejsze wyzwanie ni

ż

tworzenie oprogramowania.

Ewolucja oprogramowania

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

118

Zautomatyzowane wspomaganie

procesu

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

119

procesu

CASE



Komputerowo wspomagana in

ż

ynieria oprogramowania

(Computer-aided Software Engineering, CASE) jest
nazw

ą

oprogramowania u

ż

ywanego do wspomagania

czynno

ś

ci procesu tworzenia oprogramowania, takich jak

in

ż

ynieria wymaga

ń

, projektowanie, programowanie i

testowanie. Narz

ę

dzia CASE obejmuj

ą

zatem edytory

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

120

testowanie. Narz

ę

dzia CASE obejmuj

ą

zatem edytory

projektów, słowniki danych, kompilatory, programy do
usuwania bł

ę

dów, narz

ę

dzia do budowania systemu itd.



Technologia CASE wspomaga proces tworzenia
oprogramowania przez automatyzacj

ę

niektórych

czynno

ś

ci procesu i dostarczanie informacji o tworzonym

oprogramowaniu.

background image

Czynno

ś

ci które mo

ż

emy

zautomatyzowa

ć



Opracowywanie graficznych modeli systemu jako cz

ęś

ci

specyfikacji wymaga

ń

i projektu oprogramowania.



Czytanie projektu za pomoc

ą

słownika danych, który

przechowuje informacje o encjach i zwi

ą

zkach w

projekcie.



Generowanie interfejsu u

ż

ytkownika na podstawie

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

121



Generowanie interfejsu u

ż

ytkownika na podstawie

graficznego opisu interfejsu opracowanego interaktywnie
przez u

ż

ytkownika.



Ś

ledzenie bł

ę

dów przez udost

ę

pnienie informacji o

wykonuj

ą

cym si

ę

programie.



Automatyczne tłumaczenie programów ze starych wersji
j

ę

zyków programowania (np. COBOL) na ich bardziej

aktualne wersje.

Ograniczenia CASE



In

ż

ynieria oprogramowania jest głównie czynno

ś

ci

ą

projektowania opart

ą

na kreatywnym my

ś

leniu. Istniej

ą

ce

systemy CASE automatyzuj

ą

rutynowe czynno

ś

ci, ale

próby zastosowania sztucznej inteligencji do
wspomagania projektowania nie były udane.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

122

wspomagania projektowania nie były udane.



W wi

ę

kszo

ś

ci firm in

ż

ynieria oprogramowania jest

czynno

ś

ci

ą

zespołow

ą

. In

ż

ynierowie sp

ę

dzaj

ą

wi

ę

c sporo

czasu na interakcji z innymi członkami zespołu.
Technologia CASE nie daje tu

ż

adnego wsparcia.

CASE



Perspektywa funkcjonalno

ś

ci, w której klasyfikuje si

ę

narz

ę

dzia CASE wzgl

ę

dem ich specyficznej funkcji.



Perspektywa procesu, w której klasyfikuje si

ę

narz

ę

dzia

CASE wzgl

ę

dem wspomaganych przez nie czynno

ś

ci

procesu.

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

123

procesu.



Perspektywa integracji, w której klasyfikuje si

ę

narz

ę

dzia CASE wzgl

ę

dem sposobu ich integracji w

spójne jednostki, które oferuj

ą

wspomaganie jednej lub

wi

ę

cej czynno

ś

ci procesu.

Klasyfikacja



Narz

ę

dzia do planowania – np. arkusze kalkulacyjne



Narz

ę

dzia do edycji – edytory tekstów, diagramów



Narz

ę

dzia do zarz

ą

dzania zmianami- Systemy kontroli zmian



Narz

ę

dzia do zarz

ą

dzania konfiguracjami – zarz

ą

dzanie wersjami



Narz

ę

dzia do prototypowania- j

ę

zyki wysokiego poziomu, generatory

interfejsów
Narz

ę

dzia do wspomagania metod – edytory projektów, słowniki danych,

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

124



Narz

ę

dzia do wspomagania metod – edytory projektów, słowniki danych,

generatory kodu



Narz

ę

dzia do przetwarzania j

ę

zyków- kompilatory, interpretatory



Narz

ę

dzia do analizy programów – generatory wzajemnych odwoła

ń

,

analizy statystyczne



Narz

ę

dzia do testowania – generatory danych testowych (porównuj

ą

ce

pliki)



Narz

ę

dzia do usuwania bł

ę

dów – systemy interakcyjnego usuwania

ę

dów



Narz

ę

dzia do dokumentowania- programy składu, edytory rysunków

background image

CASE

©Ian Sommerville /

W. Suszyński

Inżynieria oprogramowania 1

125


Wyszukiwarka

Podobne podstrony:
Inżynieria Oprogramowania część 2
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

więcej podobnych podstron