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
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
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
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.
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?
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
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
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.
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
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
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.
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ść.
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
dr inż. Radosław Adamus
Do poczytania…
z
Sommerville: Inżynieria Oprogramowania,
rozdział 1.
z
Dąbrowski, Subieta: Podstawy Inżynierii
Oprogramowania, rozdział 1.