background image

 

 

Inżynieria 
oprogramowania

Wykład I. Wprowadzenie

Politechnika Radomska

background image

 

 

Literatura

Andrzej Jaszkiewicz „Inżynieria 

oprogramowania” Helion 1997
Grady Booch, James Rumbaugh, Ivar 

Jacobson „UML – przewodnik 

użytkownika”, seria inżynieria 

oprogramowania, Wydawnictwo 

Naukowo-Techniczne 2002
Martin Flower, Kendal Scott „UML w 

kropelce” LTP Warszawa 2002

background image

 

 

O czym będzie

Złożoność oprogramowania, cykl 
życia aplikacji,
Dlaczego modelujemy ? Znaczenie 
i zasady modelowania
Modelowanie obiektowe
Historia powstania UML

background image

 

 

Złożoność 

oprogramowania

jak pokazuje wykres 
zależność między  wielkością, 
a złożonością programu nie 
jest liniowa – stworzenie 2 
razy większej aplikacji nie 
zajmuje 2 razy więcej czasu, 
lecz trwa dłużej
istnieje pewna graniczna 
wielkość programu, po której 
przekroczeniu człowiek 
przestaje panować nad jego 
złożonością

wielkość

o

żo

n

o

ść

Zależność między wielkością
i złożonością programu

background image

 

 

Pokonanie problemu 

złożoności

Istnieje jakieś rozwiązanie problemu skoro istnieje 
wiele bardzo złożonych i skomplikowanych 
aplikacji, które całkiem nieźle działają.
Nie możemy pokonać złożoności problemu – 
ponieważ użytkownicy żądają coraz lepszych 
(bardziej złożonych aplikacji), ale możemy 
budować aplikacje z małych części.
Tworzymy zatem stosunkowo małe moduły, 
sprawdzamy je i testujemy, a gdy okażą się 
niezawodne, łączymy je w większą całość.

background image

 

 

Cykl życia aplikacji

Analiz

a

Projektowa

nie

Kodowa

nie

Testowan

ie

Eksploata

cja

Konserwa

cja

czas

E

ta

p

y

 t

w

o

rz

e

n

ia

 a

p

lik

a

cj

i

background image

 

 

Analiza

definiowanie i zrozumienie problemu
określenie czy do rozwiązania problemu 
niezbędny jest komputer
oszacowanie niezbędnych środków (wielkość 
zespołu programistów, twórców dokumentacji, 
ilość komputerów

Rezultatem analizy powinna być 
specyfikacja systemu, zawierająca opis 
wszystkich jego funkcji

background image

 

 

Projektowanie

tworzymy szczegółowy projekt każdego 
rozwiązania
opisujemy zależności między modułami
określamy kolejność wywoływania procedur
projektujemy wygląd formularzy i postać raportów

wszystkie elementy konsultujemy z 
zamawiającym (zwykle wielokrotnie aż do 
zaakceptowania przez niego naszych 
propozycji)

background image

 

 

Kodowanie

Stworzenie programu na bazie 
projektu 
(jeśli jest on dobrze 
wykonany to jest to program „pisze się 
sam”)
Ta faza właściwie się nigdy nie kończy 
(trwa przez cały czas życia aplikacji), 
gdyż każda zmiana i poprawka w 
programie będzie wymagała zmiany 
kodu źródłowego programu

background image

 

 

Testowanie

głównym celem testowania jest sprawdzenie, 

czy stworzony przez nas produkt spełnia 

określone wcześniej założenia. Każdą funkcję 

powinniśmy skonfrontować z założeniami
testowanie odbywa się zwykle w 2 krokach:

– testowanie poszczególnych modułów (unit 

testing) – sprawdzanie poprawności działania 

modułów składających się na aplikację

– testowanie całości (integration testing) – 

sprawdzenie czy moduły poprawnie współpracują 

i komunikują się ze sobą

background image

 

 

Eksploatacja, 

konserwacja

konserwacja aplikacji to zwykle około 80% 

czasu jaki jej poświęcamy
uzupełniamy program o nowe (drobne) funkcje 

(„zachcianki klientów”)
usuwamy niezaplanowane funkcje (błędy) 

programu
nadzorujemy eksploatację programu

na tym etapie zwraca się wysiłek włożony w 

tworzenie założeń, specyfikacji, projektu, opisu 

kodu źródłowego czy instrukcji obsługi

background image

 

 

Sukces 

producenta 

oprogramowania

Konsekwentne wdrażanie wyrobów wysokiej jakości
Wyroby spełniają oczekiwania użytkowników
Programy są dostarczone na czas
W trakcie tworzenia oprogramowania efektywnie 

wykorzystuje się zasoby ludzkie i sprzętowe
Wynikiem pracy programistów nie są piękne 

dokumenty, konferencje na wysokim 

poziomie, hałaśliwe slogany, czy piękne 

wiersze kodu. Są nimi dobre programy 

spełniające zmienne wymagania 

użytkowników i przedsiębiorstw. Wszystko 

inne ma drugorzędne znaczenie.

background image

 

 

Warunki wytworzenie 

oprogramowania dobrej 

jakości

We wdrożeniu i projektowaniu oprogramowania muszą 

brać udział jego użytkownicy – pomogą odkryć 

rzeczywiste wymagania stawiane systemowi
System powinien mieć solidną podstawę 

architektoniczną, którą można elastycznie modyfikować
Trzeba dysponować właściwym zespołem ludzi i 

odpowiednimi narzędziami
Wszystkie działania powinny być spójne i 

przewidywalne – zaplanowane!!!; powinny  

uwzględniać przyszłe koszty pielęgnacji systemu, rozwój 

aplikacji powinien być taki by można go było 

dostosować do zmiennych technologii i potrzeb 

przedsiębiorstwa

background image

 

 

Dlaczego modelujemy ?

Modelowanie to najważniejsza czynność, 

która sprzyja wytworzeniu dobrego 

oprogramowania.

Modele opracowujemy po to, by

wyrazić pożądaną strukturę i zachowanie systemu 
zobrazować architekturę systemu i panować nad 

nią
lepiej zrozumieć budowany system (często 

przedstawiamy też możliwości jego uproszczenia 

bądź ponownego użycia)
lepiej zarządzać ryzykiem

background image

 

 

Znaczenie modelowania

Psia buda – deski i  gwoździe zabieramy się do roboty
Dom dla rodziny – zazwyczaj przygotowujemy plany , 

konsultujemy i  zgodność z lokalnym prawem, 

szacujemy koszty, liczmy czas trwania projektu, itd.. 

(chyba że ktoś już zbudował setki takich domów)
Wielopiętrowy biurowiec -  inwestorzy chcą mieć 

wpływ na kształt i styl projektu, często zmieniają 

zdanie (zwykle gdy budowa idzie pełna parą) . 

Staranne planowanie jest nieodzowne – koszt 

niepowodzenia jest bowiem bardzo wysoki. Potrzebne 

są zatem plany i modele do wewnętrznej komunikacji 

między członkami zespołu.

background image

 

 

Szczęście

Wielu wytwórców oprogramowania próbuje 
wznosić drapacze chmur metodami 
przeznaczonymi do zbijania psiej budy.

Projekt mimo to może się udać gdy:

układ planet będzie korzystny
będziecie współpracować tylko z najlepszymi 
ludźmi
wyeksploatujecie ich ponad miarę (zwiększenie 
obciążenia pracą, jako reakcja na kryzys, 
opóźnienie)

background image

 

 

Właściwy cel

Nie jest nim napisanie olbrzymiej ilości kodu, 
a wybór , bądź wytworzenie właściwego 
kodu przy jego minimalnym rozmiarze.
Jest to możliwe tylko wówczas gdy 
właściwie opracujemy architekturę 
produktu i odpowiednio dobierzemy 
narzędzia.
Wiele przedsięwzięć, które wyglądają na psie 
budy rozrasta się z czasem do wielkości 
drapacza chmur.

background image

 

 

Czym jest model?

 Model jest uproszczeniem rzeczywistości
Stosowanie modeli

budownictwo – plany, makiety
produkcja samochodów, samolotów – model 

komputerowy, model aerodynamiczny, prototyp
urządzenia elektroniczne – schematy, prototypy
film – scenariusze
socjologia, ekonomia – weryfikacja teorii i 

wypróbowanie nowych pomysłów przy 

minimalnym ryzyku i kosztach

background image

 

 

Po co budujemy modele?

By lepiej zrozumieć system, który budujemy:

łatwiej możemy wyobrazić sobie system 

taki , jaki jest lub, jaki chcemy, żeby był,
modelowanie umożliwia wyspecyfikowanie 

struktury i zachowania systemu
W wyniku modelowania otrzymujemy 

szablony, które ułatwiają sterowanie 

działaniami w trakcie tworzenia systemu
Modele stanowią dokumentację podjętych 

decyzji

background image

 

 

Modelowanie 

złożonych systemów

Opracowujemy dlatego, że nie jesteśmy w 
stanie objąć ich złożoności, ogarnąć tych 
systemów w całości.
Możemy skupić się na jednym aspekcie systemu, 
zawęzić problem. Trudne problemy  atakujemy, 
dzieląc je na mniejsze części, które potrafimy 
rozwiązać.
Dzięki modelowi nie tracimy jednak widoku 
całości i możliwa staje się praca na wyższym niż 
osiągany tradycyjnymi metodami poziomie 
abstrakcji

background image

 

 

Zasady modelowania

Podjęcie decyzji, jakie modele tworzyć, ma 

wielki wpływ na to, w jaki sposób zaatakujemy 

problem i jaki kształt przyjmie rozwiązanie
Każdy model może być opracowany na różnych 

poziomach szczegółowości
Najlepsze modele odpowiadają rzeczywistości
Żaden model nie jest wystarczający. Niewielka 

liczba niemal niezależnych modeli to najlepsze 

rozwiązanie w przypadku każdego 

niebanalnego systemu.

background image

 

 

Podejście do modelowania

W inżynierii oprogramowanie istnieją dwa 
najważniejsze podejścia do tworzenia modeli:
algorytmiczne  (podstawową 
opracowywaną jednostką jest tu funkcja lub 
procedura; programiści koncentrują się na 
przepływie sterowania i podziale algorytmów 
na mniejsze części) – powstałe systemy nie 
są zazwyczaj odporne na zmiany wymagań
obiektowe – dominuje we współczesnych 
metodach wytwarzania oprogramowania

background image

 

 

Modelowanie obiektowe

Podstawowym elementem 

konstrukcyjnym jest klasa lub obiekt.
Obiekt – rzecz pochodząca z dziedziny 

problemu lub przestrzeni dopuszczalnych 

rozwiązań
Klasa to zbiór obiektów o podobnych 

cechach
Każdy obiekt ma przypisaną tożsamość, 

stan i zachowanie

background image

 

 

Przykład

Trójwarstwowa architektura systemu 

rozliczeniowego: interfejs 

użytkownika, powłoka pośrednia, 

baza danych.
w interfejsie użytkownika: przyciski, 

menu, okna dialogowe
baza danych: tabele
powłoka pośrednia: transakcje, reguły 

działania przedsiębiorstwa

background image

 

 

Historia UML

Przed 1975 -1989  pojawiają się pierwsze 
języki modelowania obiektowego dla 
rozwiązań dotyczących analizy i projektowania
1989-1994 – istnieje ponad pięćdziesiąt 
metod projektowania obiektowego – nie mogą 
być one jednoznaczną platformą 
porozumiewania się projektantów. Trwa „wojna 
metod’.
Zebrane doświadczenia umożliwiły 
opracowanie nowej generacji metod

background image

 

 

Historia UML. Przodkowie 

UML.

Metoda Boocha – sprawdzała się podczas 
projektowania i implementacji
Metoda OOSE (Object – Oriented software 
Engineering) Jacobsona – stanowiła wsparcie 
przy badaniu spełniania wymagań 
Metoda OMT (Object Modeling Technique) 
Rumbaugha – OMT2  okazywała się 
przydatna do analizy oraz rozwijania 
systemów przetwarzających duże ilości 
danych

background image

 

 

Przełom – unifikacja metod

Grady Booch (Rational Software Corporation), 

Ivar Jacobson (Objectory) i James Rumbough 

(General Electric) łączą i wzbogacają wspólnie 

i unifikują opracowane przez siebie metody by
Modelować system obiektowo – odo 

opracowania koncepcji do wytworzenia 

gotowego produktu
Wskazać problemy związane ze zwiększeniem 

skali złożonych systemów
Opracować język modelowania wygodny dla 

ludzi i maszyn

background image

 

 

Początek UML

1994 Roumbaugh przechodzi do Rational 

Rose Co. I powstaje robocza wersja 0.8 

nazwana UM (Unified Method)
1995 Jacobson dołącza do Rational Rose Co. 

Co po dołąćzeniu jego metody do UM 

doprowadziło do powstania dokumentacji 

nazwanej UML (Unified Modelling Language) 

w wersji 0.9 w czerwcu 1996 
Powołane zostaje konsorcjum skłądające się z 

wielu firm (Digital Equipment, HP, IBM< MS, 

Oracle, Rational Rose...) promujące standard

background image

 

 

UML – proces 

standaryzacji

Styczeń 1997 UML 1.0 przekazany do Object 

Managment Group  (OMG)  i oficjalnie 

zaproponowany jako standard
Lipiec 1997 przedstawiono zmodyfikowaną wersję 

1.1 i dopiero ta wersja została przez OMG ADTF 

(Analysiis and Design Task Force ) zaakceptowana 

jako standard (ostatecznie 14 listopada 1997)
W czerwcu 1998 OMG RTF (Revison Task Force) 

dokonuje poprawek i przedstawia wersją UML 1.2
Jesienią 1999 publikuje wersję 1.3 o której będzie 

mowa


Document Outline