Historia i geneza
Historia i geneza
inżynierii
inżynierii
oprogramowania
oprogramowania
„kryzys oprogramowania”
„kryzys oprogramowania”
Na podstawie
Na podstawie książki Inżynieria oprogramowania A. Jaszkiewicz Helion
1997
Górski J., Inżynieria oprogramowania w projekcie informatycznym.
Mikom 2000
oraz zasobów www.
Słowo wstępne
Słowo wstępne
Gospodarki wszystkich rozwiniętych krajów zależą
Gospodarki wszystkich rozwiniętych krajów zależą
od oprogramowania.
od oprogramowania.
Obecnie wytwarzanie oprogramowania jest
Obecnie wytwarzanie oprogramowania jest
poważną gałęzią gospodarki narodowej
poważną gałęzią gospodarki narodowej
rozwiniętego kraju.
rozwiniętego kraju.
Coraz więcej i więcej systemów wymaga
Coraz więcej i więcej systemów wymaga
niezawodnego oprogramowania.
niezawodnego oprogramowania.
Wytwarzanie oprogramowania nie jest prostym
Wytwarzanie oprogramowania nie jest prostym
zagadnieniem (system informatyczny dla ZUS ;) ).
zagadnieniem (system informatyczny dla ZUS ;) ).
Wraz ze wzrostem złożoności oprogramowania
Wraz ze wzrostem złożoności oprogramowania
pojawia się większa liczba błędów.
pojawia się większa liczba błędów.
Słowo wstępne
Słowo wstępne
Rynek oprogramowania
Rynek oprogramowania
Świat 207 miliardów euro (USA 97
Świat 207 miliardów euro (USA 97
miliardów, UE 63 miliardy)
miliardów, UE 63 miliardy)
Bez oprogramowania wytwarzanego na własne
Bez oprogramowania wytwarzanego na własne
potrzeby
potrzeby
Wzrost 5.1% rocznie
Wzrost 5.1% rocznie
+ 125 miliardów euro dodatkowych usług
+ 125 miliardów euro dodatkowych usług
W UE 60-70%
W UE 60-70%
oprogramowania
oprogramowania
jest
jest
wytwarzane w firmach, dla których nie jest
wytwarzane w firmach, dla których nie jest
to główną działalnością
to główną działalnością
Historia: początki
Historia: początki
1950-1960
1950-1960
Sprzęt o bardzo ograniczonych
Sprzęt o bardzo ograniczonych
możliwościach
możliwościach
Ograniczone zastosowania
Ograniczone zastosowania
Małe programy
Małe programy
Programy pisane często dla własnych
Programy pisane często dla własnych
potrzeb lub potrzeb dobrze znanych osób
potrzeb lub potrzeb dobrze znanych osób
Dobrze wyspecyfikowane zadania
Dobrze wyspecyfikowane zadania
Historia: rozwój
Historia: rozwój
1960-1980
1960-1980
Nowy zawód: programista
Nowy zawód: programista
Nowa rewolucja przemysłowa (Osborne 1979)
Nowa rewolucja przemysłowa (Osborne 1979)
Specjalizowane języki programowania – COBOL,
Specjalizowane języki programowania – COBOL,
Fortran, Algol
Fortran, Algol
Sprzęt o dużo większych możliwościach, np. pamięć
Sprzęt o dużo większych możliwościach, np. pamięć
wirtualna, pamięć masowa, czytniki kart i taśm
wirtualna, pamięć masowa, czytniki kart i taśm
Nowe, poza naukowe i poza militarne zastosowania
Nowe, poza naukowe i poza militarne zastosowania
– np. w biznesie
– np. w biznesie
Próba realizacji wielu dużych przedsięwzięć
Próba realizacji wielu dużych przedsięwzięć
programistycznych
programistycznych
Osborne 1
Osborne 1
r., który był
r., który był
pierwszym
pierwszym
w historii. Maszyna,
w historii. Maszyna,
sterowana systemem operacyjnym
sterowana systemem operacyjnym
, ważyła ok. 12 kg i
, ważyła ok. 12 kg i
kosztowała 1795
kosztowała 1795
.
Komputer zawierał 4-megahercowy procesor Zilog Z80, 64
Komputer zawierał 4-megahercowy procesor Zilog Z80, 64
kB RAM, 2 napędy dyskietek 5,25 cala o pojemności 90 kB,
kB RAM, 2 napędy dyskietek 5,25 cala o pojemności 90 kB,
składaną klawiaturę i 5-calowy wyświetlacz
składaną klawiaturę i 5-calowy wyświetlacz
monochromatyczny o rozdzielczości 24 wierszy x 53 znaki.
monochromatyczny o rozdzielczości 24 wierszy x 53 znaki.
był też pierwszym komputerem dostarczanym razem z
był też pierwszym komputerem dostarczanym razem z
dodatkowym oprogramowaniem -
dodatkowym oprogramowaniem -
,
i języki
i języki
CBASIC + MBASIC, o nominalnej wartości ok. 2000 USD.
CBASIC + MBASIC, o nominalnej wartości ok. 2000 USD.
Praktyka ta została wkrótce powszechnie przyjęta przez
Praktyka ta została wkrótce powszechnie przyjęta przez
producentów innych komputerów, co znacznie obniżyło ceny
producentów innych komputerów, co znacznie obniżyło ceny
systemów.
systemów.
W szczytowym momencie Osborne Computer Corporation
W szczytowym momencie Osborne Computer Corporation
produkowała 10 tys. maszyn miesięcznie.
produkowała 10 tys. maszyn miesięcznie.
Mikrokomputer ten bez problemów współpracował z polską
Mikrokomputer ten bez problemów współpracował z polską
drukarką D-100 produkcji MERA-BŁONIE.
drukarką D-100 produkcji MERA-BŁONIE.
Objawy kryzysu
Objawy kryzysu
oprogramowania
oprogramowania
1970-1990
1970-1990
Rozwój technik wytwarzania
oprogramowania nie nadąża za rozwojem
sprzętu komputerowego i potrzeb klientów
Objawy kryzysu
Objawy kryzysu
oprogramowania
oprogramowania
zarówno wytwarzanie, jak i
utrzymywanie oprogramowania kosztuje
zbyt dużo,
oprogramowanie jest zawodne,
współdziałanie pomiędzy produktami
programistycznymi stanowi poważny
problem
Metody tworzenia oprogramowania się
nie skalują
Przyczyny „kryzysu
Przyczyny „kryzysu
oprogramowania”:
oprogramowania”:
Duża złożoność systemów informatycznych
Duża złożoność systemów informatycznych
Złożoność, zmienność, nieadekwatność wymagań
Złożoność, zmienność, nieadekwatność wymagań
Niepowtarzalność poszczególnych przedsięwzięć
Niepowtarzalność poszczególnych przedsięwzięć
Nieprzejrzystość procesu budowy oprogramowania
Nieprzejrzystość procesu budowy oprogramowania
Pozorna łatwość wytwarzania i modyfikowania
Pozorna łatwość wytwarzania i modyfikowania
oprogramowania
oprogramowania
Potrzeba kreatywności
Potrzeba kreatywności
Czynnik ludzki
Czynnik ludzki
Mało wymagający rynek (błędy zostały uznane za normalne)
Mało wymagający rynek (błędy zostały uznane za normalne)
Niedoskonałość narzędzi
Niedoskonałość narzędzi
Brak standaryzacji
Brak standaryzacji
Problem Ograniczeń Człowieka
Problem Ograniczeń Człowieka
(twórcy oprogramowania)
(twórcy oprogramowania)
Po przekroczeniu pewnego progu złożoności człowiek przestaje
Po przekroczeniu pewnego progu złożoności człowiek przestaje
panować nad przygotowywanym produktem, ponieważ całościowe
panować nad przygotowywanym produktem, ponieważ całościowe
zrozumienie funkcjonowania systemu w różnych jego aspektach i
zrozumienie funkcjonowania systemu w różnych jego aspektach i
na dowolnym poziomie szczegółowości z zasady przekracza jego
na dowolnym poziomie szczegółowości z zasady przekracza jego
możliwości.
możliwości.
Zbyt szybki rozwój narzędzi programistycznych oraz konieczność
Zbyt szybki rozwój narzędzi programistycznych oraz konieczność
dostosowania się do coraz nowszych rozwiązań sprzętowych
dostosowania się do coraz nowszych rozwiązań sprzętowych
wprowadza frustracje samych wytwórców oprogramowania.
wprowadza frustracje samych wytwórców oprogramowania.
Specjaliści oceniają, że:
Specjaliści oceniają, że:
●
●
programista nie może panować na raz nad więcej niż jednym
programista nie może panować na raz nad więcej niż jednym
ekranem tekstu programu
ekranem tekstu programu
●
●
testowanie może wykazać błędność programu, ale nie może
testowanie może wykazać błędność programu, ale nie może
wykazać jego bezbłędności
wykazać jego bezbłędności
●
●
nie ma programów bezbłędnych; są tylko takie, w których
nie ma programów bezbłędnych; są tylko takie, w których
dotąd nie znaleziono błędu
dotąd nie znaleziono błędu
Przyczyny „kryzysu
Przyczyny „kryzysu
oprogramowania”:
oprogramowania”:
Złożoność systemów informatycznych, syndrom współczesnych
Złożoność systemów informatycznych, syndrom współczesnych
produktów, przekleństwo ciążące na większości projektów i
produktów, przekleństwo ciążące na większości projektów i
produktów informatyki związany z coraz większą mocą
produktów informatyki związany z coraz większą mocą
obliczeniową komputerów oraz ewaluacją oprogramowania.
obliczeniową komputerów oraz ewaluacją oprogramowania.
Szybkie zmiany w przemyśle informatycznym (5-7 miesięcy w
Szybkie zmiany w przemyśle informatycznym (5-7 miesięcy w
porównaniu do 5-7 lat w innych dziedzinach) stanowi to powód
porównaniu do 5-7 lat w innych dziedzinach) stanowi to powód
do frustracji nie tylko wytwórców oprogramowania, ale także
do frustracji nie tylko wytwórców oprogramowania, ale także
ich klientów.
ich klientów.
Wysokie prawdopodobieństwo niepowodzenia projektu (USA,
Wysokie prawdopodobieństwo niepowodzenia projektu (USA,
2003: 33% niepowodzeń, 33% sukcesów, 33% zakończeń
2003: 33% niepowodzeń, 33% sukcesów, 33% zakończeń
problematycznych)
problematycznych)
Sprzeczność pomiędzy odpowiedzialnością, jaka spoczywa na
Sprzeczność pomiędzy odpowiedzialnością, jaka spoczywa na
współczesnych SI, a ich zawodnością wynikającą ze złożoności i
współczesnych SI, a ich zawodnością wynikającą ze złożoności i
ciągle niedojrzałych metod tworzenia i weryfikacji
ciągle niedojrzałych metod tworzenia i weryfikacji
oprogramowania.
oprogramowania.
Ogromne koszty utrzymania oprogramowania.
Ogromne koszty utrzymania oprogramowania.
Przyczyny „kryzysu
Przyczyny „kryzysu
oprogramowania”:
oprogramowania”:
Niepowtarzalność poszczególnych przedsięwzięć
Niepowtarzalność poszczególnych przedsięwzięć
Nieprzejrzystość procesu budowy oprogramowania (np.
Nieprzejrzystość procesu budowy oprogramowania (np.
trudności w ocenie stopnia zaawansowania prac),.
trudności w ocenie stopnia zaawansowania prac),.
Długi i kosztowny cykl tworzenia oprogramowania, wysokie
Długi i kosztowny cykl tworzenia oprogramowania, wysokie
prawdopodobieństwo niepowodzenia projektu
prawdopodobieństwo niepowodzenia projektu
programistycznego. Tworzenie dużych systemów trwało 3-5 lat
programistycznego. Tworzenie dużych systemów trwało 3-5 lat
a i tak często stawały się przestarzałe, zanim zostały
a i tak często stawały się przestarzałe, zanim zostały
ukończone
ukończone
!
!
przez co statystycznie jeden na 4 projekty kończył
przez co statystycznie jeden na 4 projekty kończył
się porażką
się porażką
Pozorna łatwość wytwarzania i dokonywania poprawek
Pozorna łatwość wytwarzania i dokonywania poprawek
Problemy ze współdziałaniem niezależnie budowanego
Problemy ze współdziałaniem niezależnie budowanego
oprogramowania, nieprzejrzystość procesu budowy
oprogramowania, nieprzejrzystość procesu budowy
oprogramowania
oprogramowania
Problemy z dostosowaniem istniejącego oprogramowania do
Problemy z dostosowaniem istniejącego oprogramowania do
nowych wymagań
nowych wymagań
Długi i kosztowny cykl życia SI, wymagający stałych (często
Długi i kosztowny cykl życia SI, wymagający stałych (często
globalnych) zmian. Pielęgnacja oprogramowania stała się
globalnych) zmian. Pielęgnacja oprogramowania stała się
niezwykle trudna i kosztowna
niezwykle trudna i kosztowna
Historia: próby przełamania
Historia: próby przełamania
kryzysu
kryzysu
1968: konferencja NATO w Ga-Pa
1968: konferencja NATO w Ga-Pa
(Garmisch-Partenkirchen, Niemcy) nt.
(Garmisch-Partenkirchen, Niemcy) nt.
inżynierii oprogramowania
inżynierii oprogramowania
Metodyki strukturalne
Metodyki strukturalne
Metodyki obiektowe
Metodyki obiektowe
Technologie komponentowe
Technologie komponentowe
Programowanie aspektowe
Programowanie aspektowe
Standaryzacja technologii
Standaryzacja technologii
Kryzys czy chroniczne niedomaganie?
Jak powstawała inżynieria
Jak powstawała inżynieria
oprogramowania
oprogramowania
Co to jest inżynieria
Co to jest inżynieria
oprogramowania i jaki jest jej
oprogramowania i jaki jest jej
zakres?
zakres?
Termin "inżynieria oprogramowania" po raz pierwszy
Termin "inżynieria oprogramowania" po raz pierwszy
został użyty na przełomie lat 1950/60. Jednak
został użyty na przełomie lat 1950/60. Jednak
oficjalnie za narodziny tej dyscypliny podaje się lata
oficjalnie za narodziny tej dyscypliny podaje się lata
1968 i 1969, w których miały miejsce dwie konferencje
1968 i 1969, w których miały miejsce dwie konferencje
sponsorowane przez NATO w Garmisch i Rzymie.
sponsorowane przez NATO w Garmisch i Rzymie.
Inżynieria
Inżynieria
– projektowanie, budowa i obsługa
– projektowanie, budowa i obsługa
konstrukcji, maszyn, procesów i systemów
konstrukcji, maszyn, procesów i systemów
w przemyśle i codziennym życiu
w przemyśle i codziennym życiu
Inżynieria oprogramowania
Inżynieria oprogramowania
– projektowanie,
– projektowanie,
rozwój, dokumentowanie, wdrażanie i pielęgnacja
rozwój, dokumentowanie, wdrażanie i pielęgnacja
oprogramowania
oprogramowania
Cel
Cel
: jak w każdej inżynierii – optymalizacja kosztów i
: jak w każdej inżynierii – optymalizacja kosztów i
niezawodność produktu
niezawodność produktu
Sposoby walki z
Sposoby walki z
„kryzysem oprogramowania”
„kryzysem oprogramowania”
stosowanie technik i narzędzi ułatwiających pracę
stosowanie technik i narzędzi ułatwiających pracę
nad złożonymi systemami,
nad złożonymi systemami,
korzystanie z metod wspomagających analizę
korzystanie z metod wspomagających analizę
nieznanych problemów,
nieznanych problemów,
korzystanie z metod ułatwiających
korzystanie z metod ułatwiających
wykorzystywanie wcześniejszych doświadczeń,
wykorzystywanie wcześniejszych doświadczeń,
usystematyzowanie procesu wytwarzania
usystematyzowanie procesu wytwarzania
oprogramowania,
oprogramowania,
wprowadzenie przekonania wśród zamawiających
wprowadzenie przekonania wśród zamawiających
i wytwarzających oprogramowanie, że budowanie
i wytwarzających oprogramowanie, że budowanie
dużego systemu o wysokiej jakości wymaga
dużego systemu o wysokiej jakości wymaga
bardzo profesjonalnego podejścia.
bardzo profesjonalnego podejścia.
Co można na to poradzić:
Co można na to poradzić:
Mechanizmy abstrakcji
Mechanizmy abstrakcji
(eliminacja, ukrycie lub pominięcie
(eliminacja, ukrycie lub pominięcie
mniej istotnych szczegółów rozważanego przedmiotu lub
mniej istotnych szczegółów rozważanego przedmiotu lub
mniej istotnej informacji; wyodrębnianie cech wspólnych i
mniej istotnej informacji; wyodrębnianie cech wspólnych i
niezmiennych dla pewnego zbioru bytów i wprowadzaniu
niezmiennych dla pewnego zbioru bytów i wprowadzaniu
pojęć lub symboli oznaczających takie cechy)
pojęć lub symboli oznaczających takie cechy)
Mechanizmy kompozycji i dekompozycji
Mechanizmy kompozycji i dekompozycji
(rozdzielenie
(rozdzielenie
złożonego problemu na podproblemy, które można
złożonego problemu na podproblemy, które można
rozpatrywać i rozwiązywać niezależnie od siebie i
rozpatrywać i rozwiązywać niezależnie od siebie i
niezależnie od całości)
niezależnie od całości)
Ponowne użycie
Ponowne użycie
(wykorzystanie wcześniej wytworzonych
(wykorzystanie wcześniej wytworzonych
schematów, metod, wzorców, komponentów projektu,
schematów, metod, wzorców, komponentów projektu,
komponentów oprogramowania)
komponentów oprogramowania)
Zorientowanie technologii komputerowych na ludzi
Zorientowanie technologii komputerowych na ludzi
(dopasowanie modeli pojęciowych i modeli realizacyjnych
(dopasowanie modeli pojęciowych i modeli realizacyjnych
systemów, do wrodzonych ludzkich własności
systemów, do wrodzonych ludzkich własności
psychologicznych oraz mentalnych mechanizmów
psychologicznych oraz mentalnych mechanizmów
percepcji i rozumienia świata)
percepcji i rozumienia świata)
Podsumowanie
Podsumowanie
Mimo rozkwitu Inżynierii oprogramowania
Mimo rozkwitu Inżynierii oprogramowania
oraz ciągłego jej udoskonalania
oraz ciągłego jej udoskonalania
„kryzys oprogramowania”
„kryzys oprogramowania”
nadal trwa !
nadal trwa !
KONIEC
KONIEC
Dziękuje za uwage
Dziękuje za uwage