background image

dr inż. Radosław Adamus

Inżynieria 

Oprogramowania

Plan wykładów

Zaliczenie

Literatura

Prowadzący:

prof. dr hab. Inż. Jacek Kucharski
Dr inż. Radosław Adamus

Plan wykładów - tematy

1.

Wprowadzenie – dziedzina inżynierii oprogramowania

2.

Procesy inżynierii oprogramowania

3.

Zarządzanie projektem informatycznym

4.

Wymagania stawiane oprogramowaniu i inżynieria wymagań

5.

Modele systemów

6.

Architektura systemów i projektowanie architektury

7.

Systemy rozproszone

8.

Projektowanie obiektowe 

9.

Rapid Application Development

10.

Powtórne użycie

11.

Oprogramowanie komponentowe

12.

Weryfikacja i walidacja i testowanie oprogramowania

13.

Zarządzanie konfiguracją oprogramowania

14.

Bezpieczeństwo/ AOP/SOA

background image

dr inż. Radosław Adamus

Literatura

1. Sommerville Ian: Inżynieria Oprogramowania, WNT, 

Wa-wa, 2003.

2. Dąbrowski Włodzimierz, Subieta Kazimierz: Podstawy 

Inżynierii Oprogramowania, PJWSK, Wa-wa, 2005.

3. Slajdy z wykładu oraz materiały dodatkowe.

z

radamus.kis.p.lodz.pl/ dydaktyka->inżynieria oprogramowania

z

user: io_student

password: io_wyklad

Forma zaliczenia

z

Przedmiot kończy się egzaminem

z

Forma

z

test (c.a. 40 pytań)

z

2 terminy w sesji

z

1 termin w sesji poprawkowej

background image

dr inż. Radosław Adamus

Źródła wykładów

z

Wykład jest kompilacją wielu źródeł, 
najważniejsze to:

z

Slajdy do książki Software Enginnering autorstwa 
Ian’a Sommerville’a (dostepne w internecie)

z

Wykłady prof. Kazimierza Subiety w PJWSTK (mojego 
promotora i mentora)

z

Materiały firmy IBM Rational

z

Inżynieria 

Oprogramowania

Wykład 1

Wprowadzenie

background image

dr inż. Radosław Adamus

Cel:

z

Wprowadzenie w zagadnienia inżynierii 
oprogramowania

z

Odpowiedź na najczęściej zadawane pytania 
dotyczące Inżynierii Oprogramowania

Inżynieria Oprogramowania

z

Gospodarka większości krajów rozwijających się jest 

zależna od oprogramowania.

z

Coraz więcej systemów jest kontrolowanych przez 

oprogramowanie.

z

Wydatki na oprogramowanie stanowią znaczący element 

kosztów jakie ponoszą kraje rozwijające się.

z

Inżynieria oprogramowania związana jest z metodami i 

narzędziami pozwalającymi na profesjonalne

wytwarzanie oprogramowania.

background image

dr inż. Radosław Adamus

Koszty oprogramowania

z

Koszty oprogramowania stanowią często największy 
procent kosztów systemów informatycznych 
(przewyższających koszty sprzętu).

z

Koszty wsparcia (konserwacji) istniejącego 
oprogramowania często przewyższają koszty jego 
wytworzenia.

z

Jednym z celów inżynierii oprogramowania jest 
efektywność (z punktu widzenia kosztów) procesu 
wytwarzania i wsparcia oprogramowania.

Inżynieria oprogramowania - FAQ

z

Co to jest oprogramowanie?

z

Co to jest inżynieria oprogramowania?

z

Jakie są koszty wytworzenia oprogramowania?

z

Co to jest CASE?

z

Co to jest kryzys oprogramowania?

z

Co to jest proces inżynierii oprogramowania?

z

Co to jest cykl życiowy oprogramowania?

background image

dr inż. Radosław Adamus

Co to jest oprogramowanie?

z

Program komputerowy i powiązana z nim 
dokumentacja

z

Oprogramowanie może być wytworzone dla 
konkretnego klienta bądź jako produkt rynkowy

z

Oprogramowanie jako produkt:

z

Generyczne (ogólne)  – wytworzone w celu 
sprzedaży szerokiemu zakresowi klientów

z

Dopasowane – wyprodukowane dla konkretnego 
klienta zgodnie z dostarczoną specyfikacją

Generic

Custom

Software

Atrybuty dobrego oprogramowania

z

Oprogramowanie powinno dostarczać
użytkownikom wymaganą funkcjonalność i 
wydajność.

z

Oprogramowanie powinna cechować:

z

Zarządzalność: musi ewoluować w odpowiedzi na 
zmieniające się wymagania

z

Wiarygodność: można na nim polegać

z

Sprawność: nie powinno marnować zasobów systemu

z

Użyteczność:  musi być użyteczne dla użytkowników, dla 
których zostało zaprojektowane

background image

dr inż. Radosław Adamus

Co to jest inżynieria 
oprogramowania?

z

Inżynieria oprogramowania jest wiedzą
techniczną 
dotycząca wszystkich faz cyklu życia 
oprogramowania. Traktuje oprogramowanie jako 
produkt, który ma spełniać potrzeby techniczne, 
ekonomiczne i społeczne.

Software engineering

Inżynieria Oprogramowania a 
Informatyka

z

Informatyka zajmuje się teorią i podstawami

z

Inżynieria Oprogramowania zajmuje się praktycznymi 

aspektami wytwarzania i dostarczania złożonego i 

użytecznego oprogramowania

z

Teorie informatyczne uważane są obecnie za 

niewystarczające do nominowania ich jako kompletnych 

fundamentów inżynierii oprogramowania.

z

Inżynieria Oprogramowania jest wiedzą empiryczną

Software engineering vs. 
Computer science

background image

dr inż. Radosław Adamus

Inżynieria oprogramowania a 
inżynieria systemów

z

Inżynieria systemów jest związana z wszystkimi 
aspektami wytwarzania systemów komputerowych, 
włączając w to produkcję sprzętu, oprogramowania i 
procesów. 

z

Inżynieria oprogramowania jest częścią tego procesu.

z

Inżynieria systemów jest zaangażowana w proces 
specyfikacji, projektowania architektury, integracji i 
wdrażania systemów.

Software engineering vs. 

system engineering

Zagadnienia inżynierii 
oprogramowania

z

Sposoby prowadzenia przedsięwzięć informatycznych.

z

Techniki planowania, szacowania kosztów, harmonogramowania i monitorowania 

przedsięwzięć informatycznych.

z

Metody analizy i projektowania systemów.

z

Techniki zwiększania niezawodności oprogramowania.

z

Sposoby testowania systemów i szacowania niezawodności.

z

Sposoby przygotowania dokumentacji technicznej i użytkowej.

z

Procedury kontroli jakości.

z

Metody redukcji kosztów konserwacji (usuwania błędów, modyfikacji i rozszerzeń)

z

Techniki pracy zespołowej i czynniki psychologiczne wpływające na efektywność

pracy.

background image

dr inż. Radosław Adamus

Podstawowe wyzwania Inżynierii 
Oprogramowania

z

Systemy spadkowe– techniki umożliwiające 
zarządzanie i wykorzystanie istniejących (starych), ale 
wartościowych systemów.

z

Heterogeniczność – techniki umożliwiające współpracę
rozproszonych i różnorodnych systemów.

z

Dostarczanie – techniki umożliwiające szybkie 
dostarczenie gotowego produktu.

z

Zaufanie – techniki, które umożliwiły by udowodnienie, 
że oprogramowaniu można zaufać.

Legacy systems

Heterogeneity

Delivery

Trust

Co to jest CASE ?

z

Oprogramowanie (system informatyczny), 

którego celem jest zautomatyzowane wsparcie 

działań wykonywanych w procesie inżynierii 

oprogramowania.

z

Upper-CASE: Narzędzia wspierające wczesne 

działania związane z wymaganiami i 

projektowaniem

z

Lower – CASE: Narzędzia wspierające późne 

działania: programowanie, debugowanie, 

testowanie

Computer Aided Software Engineering

background image

dr inż. Radosław Adamus

Jakie są koszty wytworzenia 
oprogramowania?

z

Z grubsza 60% to koszty wytworzenia, 40% to 
koszty testowania. W przypadku oprogramowania 
dopasowanego do klienta koszty ewolucji często 
przekraczają koszty wytworzenia

z

Koszty zależą od typu systemu, wymagań i 
pożądanych atrybutów systemu (np. wydajność, 
niezawodność)

z

Rozkład kosztów zależy od procesu inżynierii 
oprogramowania.

Software engineering costs

Co to jest kryzys oprogramowania? 
(1)

z

Sprzeczność pomiędzy odpowiedzialnością, jaka 

spoczywa na współczesnych SI (systemach 

informatycznych), a ich zawodnością wynikającą ze 

złożoności i ciągle niedojrzałych metod tworzenia i 

weryfikacji oprogramowania.

z

Ogromne koszty utrzymania oprogramowania. Długi i 

kosztowny cykl życia SI, wymagający stałych (często 

globalnych) zmian.

z

Niska kultura ponownego użycia wytworzonych 

komponentów projektów i oprogramowania; niski stopień

powtarzalności poszczególnych przedsięwzięć.

Software crisis

background image

dr inż. Radosław Adamus

Co to jest kryzys oprogramowania? 
(2)

z

Długi i kosztowny cykl tworzenia oprogramowania, 
wysokie prawdopodobieństwo niepowodzenia projektu 
programistycznego.

z

Eklektyczne, niesystematyczne narzędzia i języki 
programowania.

z

Frustracje projektantów oprogramowania i programistów 
wynikające ze zbyt szybkiego postępu w zakresie 
języków, narzędzi i metod oraz uciążliwości i 
długotrwałości procesów produkcji, utrzymania i 
pielęgnacji oprogramowania

Co to jest kryzys oprogramowania? 
(3)

z

Uzależnienie organizacji od systemów komputerowych i 
przyjętych technologii przetwarzania informacji, które nie 
są stabilne w długim horyzoncie czasowym.

z

Problemy współdziałania niezależnie zbudowanego 
oprogramowania, szczególnie istotne przy dzisiejszych 
tendencjach integracyjnych. 

z

Problemy przystosowania istniejących i działających 
systemów do nowych wymagań, tendencji i platform 
sprzętowo-programowych.

background image

dr inż. Radosław Adamus

Walka z kryzysem oprogramowania

Podstawowym powodem kryzysu 
oprogramowania jest 
złożoność produktów informatyki i 
procesów ich wytwarzania.

Stosowanie technik i narzędzi ułatwiających 

pracę nad złożonymi systemami

Korzystanie z metod wspomagających analizę

nieznanych problemów oraz ułatwiających  

wykorzystanie wcześniejszych doświadczeń

Usystematyzowanie procesu 

wytwarzania oprogramowania, tak aby 

ułatwić jego planowanie i monitorowanie

Wytworzenie wśród producentów i nabywców 

przekonania, że budowa dużego systemu 

wysokiej jakości jest zadaniem wymagającym 

profesjonalnego podejścia.

Źródła złożoności projektu informatycznego

Zespół projektantów 

podlegający ograniczeniom 
pamięci, percepcji, wyrażania 
informacji i komunikacji.

Dziedzina problemowa

obejmująca ogromną liczbę
wzajemnie uzależnionych 
aspektów i problemów.

Środki i technologie 
informatyczne

sprzęt, oprogramowanie, sieć,
języki, narzędzia, udogodnienia.

Oprogramowanie

:

decyzje strategiczne,

analiza, 

projektowanie,

konstrukcja,

dokumentacja,

wdrożenie,

szkolenie,

eksploatacja,

pielęgnacja,

modyfikacja.

Potencjalni użytkownicy

czynniki psychologiczne, 
ergonomia, ograniczenia pamięci 
i percepcji, skłonność do  błędów 
i nadużyć, tajność, prywatność. 

background image

dr inż. Radosław Adamus

Co to jest proces inżynierii 
oprogramowania?

z

Zestaw działań, których celem jest wytworzenie

lub ewolucja oprogramowania.

z

Ogólne czynności pojawiające się we wszystkich 

procesach IO:

z

Specyfikacja – jakie działania powinien wykonywać

system i jakie są ograniczenia nałożone na system.

z

Rozwój – produkcja oprogramowania

z

Walidacja – sprawdzenie czy system spełnia 

oczekiwania klientów 

z

Ewolucja – zmiana oprogramowania w odpowiedzi na 

zmieniające się wymagania

Software engineering
process

Najważniejsze cegiełki informacji

z

Oprogramowanie – produkt

z

Inżynieria Oprogramowania – wiedza 

empiryczna

z

Proces inżynierii oprogramowania – dotyczy 

tak tworzenia jak i ewolucji oprogramowania

z

Kryzys oprogramowania – powód: złożoność

produktów i procesów wytwarzania

background image

dr inż. Radosław Adamus

Do poczytania…

z

Sommerville: Inżynieria Oprogramowania, 
rozdział 1.

z

Dąbrowski, Subieta: Podstawy Inżynierii 
Oprogramowania, 
rozdział 1.