Inżynieria oprogramowania. Wykład 1
Slide 1
Wstęp
Inżynieria oprogramowania. Wykład 1
Slide 2
Literatura
1. M.Kliszewski, Inżyneria oprogramowania
obiektowego, t.1-2, Wydawnictwa Naukowo-
Technicznego, Respekt, 1994.
2.
G.Booch, Object-oriented analysis and design
with applications, Addison-Wesley, 1994
.
3. M.Flasiński, Wstęp do analitycznych metod
projektowania systemów informatycznych,
Wydawnictwa Naukowo-Technicznego, Warszawa,
1997.
4.
A.Jaszkiewicz, Inżyneria oprogramowania,
Wydawnictwo Helion, 1997
.
Inżynieria oprogramowania. Wykład 1
Slide 3
Literatura
5. J.Górski, Inżyneria oprogramowania,
Wydawnictwo, Mikom 1999.
6.
G.Booch, Jezyk UML. Podrecznik uzytkownika,
2001.
7.
C.Larman. Applying UML and Patterns.
Prentice Hall, 1999.
8.
I.Jacobson, G.Booch, J.Rumbaugh. The unified
software development process. Addison-Wesley,
1999
.
9.
A.Shalloway, J.R.Trott. Design patterns
Explained. Addison-Wesley, 2002
.
Inżynieria oprogramowania. Wykład 1
Slide 4
Literatura
10. A.Alexandrescu. Modern C++ design. Addison-
Wesley, 2001.
11.
E.Gamma, R.Helm, R.Johnson, J.Vlissides.
Design Patterns. Addison-Wesley, 1995
.
12.
M.Fowler, K.Scott. UML destiled (UML w
kropelce). Addison-Wesley, 1997
.
13.
J.Rumbaugh, I.Jacobson, G.Booch. The unified
modeling language reference manual. Addison-
Wesley, 2001
.
Inżynieria oprogramowania. Wykład 1
Slide 5
Literatura
14.
I.Sommerville. Sofware engineering.
Pearson Education Limited, 2001
15.
D.Leffingwell, D.Widrig. Managing
software requirements (Zarządzanie
wymaganiami). Addison-Wesley, 2000
.
16. S. McConnel After the gold rush.
Microsoft Press, 1999.
17.
www.omg.org
18.
www.rational.org
Inżynieria oprogramowania. Wykład 1
Slide 6
Cele
Wprowadzenie do inżynierii oprogramowania i
wyjaśnienie jej wagi
Odpowiedzi na pytania kluczowe związane z
inżynierią oprogramowania
Inżynieria oprogramowania. Wykład 1
Slide 7
Ekonomiki WSHYSKICH krajów rozwiniętych
uzależnione od softu
SE jest związana z teoriami, metodami i
zasobami programistycznymi dla profesjonalnego
tworzenia oprogramowania
Znaczące koszty NPB na SE w krajach
rozwiniętych.
Inżynieria oprogramowania i
ekonomika
Inżynieria oprogramowania. Wykład 1
Slide 8
Inżynieria oprogramowania i
ekonomika
Inżynieria oprogramowania. Wykład 1
Slide 9
Kryzys oprogramowania
1968: Konferencja NATO poświęcona tematowi
‘kryzys
oprogramowania’
.
Bardzo duże (nawiet lata) opóźnienia w dostawie
oprogramowania
Ponoszone
koszty
byli często wyższe niż przewidywano.
Wiele programów było zawodnych.
Konserwacja oprogramowania
stawała się co raz
bardziej złożona.
Oprogramowanie bardzo często źle wykonywało zadania
w celu rozwiązania których właśnie zostało stworzone.
⇒
Ukazał się termin
‘inżynieria oprogramowania’
Inżynieria oprogramowania. Wykład 1
Slide 10
Ariane-5 flight 501
Background
•
European Space Agency’s
reusable launch vehicle
•
Ariane-4 a major success
•
Ariane-5 developed for larger
payloads
Launched
•
4 June 1996
Mission
•
$500 million payload to be
delivered to orbit
Fate:
•
Veered off course during launch
•
Self-destructed 40 seconds
after launch
Cause:
•
Unhandled floating point
exception in Ada code
Inżynieria oprogramowania. Wykład 1
Slide 11
Ocena sukcesu i porażek projektów
software-owych
Ukończone na czas i w ramach określonego budżetu
16.2%
Projekty anulowane na pewnym etapie cyklu życia
31.1%
Przekroczyli budżet, czas oraz/lub zredukowana
funkcjonalność
52.7%
Inżynieria oprogramowania. Wykład 1
Slide 12
Oznaki zagrożeń
powodujące kryzys
Organizacja projektująca podejmuje się wykonania największego w
swojej praktyce projektu.
Uczestnicy projektu mają bardzo zróżnicowany poziom
doświadczenia oraz umiejętności.
Project jest mocno zintegrowany.
Najnowsze technologii są wykorzystywane.
Nie było wcześniej precedensu stosowania oprogramowania tego
typu w przemyśle.
Oprogramowanie wymaga stałych modyfikacji żeby odpowiadać
wyzwaniom rynku.
Inżynieria oprogramowania. Wykład 1
Slide 13
Mity
Manadżer
• Mam standardy
• Mam najlepszy komputery
• Zawsze można dodać ludzi do projektu
• Jeśli co skorzystam z outsorsingu (
angl. outsourcing
).
Klient
• Już wiemy ogólne cele, więc możemy zaczynać projekt
• Zmiany to żaden problem, łatwo je dostosujemy.
Projektant
• Moja sprawa napisać kod
• I tak nie sprawdzę jakość kodu dopóki go nie uruchomię
• Mi tylko należy dostarczyć kod
• Inżynieria oprogramowania to jest jakaś bezsensowna
rzecz związana z dokumentacją.
Inżynieria oprogramowania. Wykład 1
Slide 14
Koszty oprogramowania są często dominującym
składnikiem kosztów całego systemu. Zdarza się,
że koszt oprogramowania znacznie przekracza
samą wartość sprzętu komputerowego np.
komputera osobistego.
Koszt utrzymania i konserwacji oprogramowania
jest większy niż koszt jego wytworzenia.
Wieloletnia konserwacja oprogramowania może
kosztować wielokrotnie więcej niż jego zakup.
Inżynieria oprogramowania zajmuje się
efektywnymi metodami wytwarzania i
implementowania oprogramowania.
Koszty oprogramowania
Inżynieria oprogramowania. Wykład 1
Slide 15
FAQs o inżynierii
oprogramowania
Co to jest jest oprogramowanie?
Co to jest inżynieria oprogramowania ?
Jaka jest różnica pomiędzy inżynierią
oprogramowania a informatyką ?
Jaka jest różnica pomiędzy inżynierią a inżynierią
systemów oprogramowania ?
Co to jest proces tworzenia oprogramowania ?
Co to jest model procesu tworzenia
oprogramowania ?
Inżynieria oprogramowania. Wykład 1
Slide 16
FAQs o inżynierii
oprogramowania
Jakie są koszty inżynierii oprogramowania ?
Co to jest CASE ?
Jakie właściwości ma dobre oprogramowanie ?
Jakie są najistotniejsze wyzwania dla inżynierów
oprogramowania ?
Inżynieria oprogramowania. Wykład 1
Slide 17
Co to jest oprogramowanie ?
Są to programy komputerowe razem z
dokumentacją
kod, dane, dokumentacja
Oprogramowanie produkuje się dla
•
potrzeb pojedynczego klienta zgodnie z opracowaną
przez niego specyfikacją
lub
•
na rynek
Inżynieria oprogramowania. Wykład 1
Slide 18
Dziedziny zastosowania
oprogramowania
•
Oprogramowanie systemowe
•
Systemy czasy rzeczywistego
•
Systemy informacyjne dla przedsiębiorstw
•
Oprogramowanie inżynierskie i naukowe
•
Systemy wbudowane
•
Oprogramowanie internetowe
•
Oprogramowanie komputerów osobistych
•
Sztuczna inteligencja
Inżynieria oprogramowania. Wykład 1
Slide 19
Co to jest inżynieria
oprogramowania ?
Inżynieria oprogramowania jest to dziedzina
wiedzy która jest związana ze wszystkimi
aspektami produkcji oprogramowania
Inżynierzy z inżynierii oprogramowania powinni
wykorzystywać usystematyzowane i
zorganizowane podejście do swej pracy jak
również właściwych narzędzi i technik w
zależności od problemu który się rozwiązuje,
ograniczeń i zasobów dostępnych
Inżynieria oprogramowania. Wykład 1
Slide 20
Co to jest inżynieria
oprogramowania ?
IEEE
Standard:
InOp
to
jest
stosowanie
systematycznego zdyscyplinowanego i wymiernego
podejścia do tworzenia, użytkowania i konserwacji
oprogramowania, tj. stosowanie zasad inżynierskiego
podejścia.
InOp
obejmuje wszystkie praktyczne aspekty
tworzenia,
konserwacji
i
rozwijania
wyrobów
programowych. Jej zadania można rozdzielić z grubsza
na dwa nakładające się działania
1. działania techniczne składające się na procesy wytwarzania i
późniejszego rozwoju produktu
2. zarządzanie przedsięwzięciami programistycznymi.
Inżynierskie podejście dotyczy w jednakowym stopniu
docelowego obiektu oraz procesu jego tworzenia.
Inżynieria oprogramowania. Wykład 1
Slide 21
Jaka jest różnica między inżynierią
oprogramowania a informatyką ?
Informatyka jest to teoria; inżynieria
oprogramowania jest to praktyka
tworzenia i dostarczenia oprogramowania
Dzisiaj samej teorii informatycznej zbyt
mało aby wykorzystać ją we wszystkich
aspektach inżynierii oprogramowania
Inżynieria oprogramowania. Wykład 1
Slide 22
Jaka jest różnica między inżynierią
oprogramowania a inżynierią systemów ?
Inżynierią systemów ( system engineering)
jest związana ze wszystkimi aspektami
tworzenia systemów bazowanych na
wykorzystaniu komputerów : hardware,
oprogramowanie i
proces
jego tworzenia.
Inżynieria oprogramowania jest częścią tego
procesu
.
Inżynieria oprogramowania. Wykład 1
Slide 23
Co to jest
proces
tworzenia
oprogramowania ?
Inżynieria oprogramowania. Wykład 1
Slide 24
Co to jest proces tworzenia
oprogramowania ?
To jest zbiór rodzajów działalności celem których
jest tworzenie i rozwój oprogramowania (I)
To jest zbiór rodzajów działalności koniecznych dla
przetwarzania
wymagań użytkownika
w
oprogramowanie (II)
Bazowe rodzaje działalności dla wszystkich procesów
tworzenia oprogramowania to są:
•
Specyfikacja
– co system powinien robić + jego ograniczenia
•
Projektowanie
– produkcja oprogramowania
•
Atestowanie
– sprawdzanie czy oprogramowanie odpowiada
wymogom klienta
•
Evolucja
– zmiana oprogramowania „w odwet” na zmiany wymagań
Inżynieria oprogramowania. Wykład 1
Slide 25
Co to jest proces tworzenia
oprogramowania ?
Inżynieria oprogramowania. Wykład 1
Slide 26
Co to jest proces tworzenia
oprogramowania ?
Stosowanie dobrego procesu
Inżynieria oprogramowania. Wykład 1
Slide 27
Uproszczona reprezentacja procesu tworzenia
oprogramowania która jest przedstawiona ze
specyficznej perspektywy
Przykłady różnych punktów widzenia na proces
•
Sekwencja działań (Workflow)
•
Przepływ danych (Data-flow)
•
Rola/akcja (Role/Action)
– kto i co robi
Przykładowe modeli procesów
•
Kaskadowy
•
Realizacja kierowana dokumentami
•
Prototypowanie
•
Ewolucyjny
•
Formalne transformacji
•
Integracja (montaż) z gotowych elementów
•
Zunifikowany proces korporacji Rational Rose
...itd
Co to jest model procesu tworzenia
oprogramowania ?
Lekkie (agile) procesy
Inżynieria oprogramowania. Wykład 1
Slide 28
Koszty na wytwarzanie
oprogramowania ?
Z grubsza 60% kosztów to są koszty
projektowania, 40% - testowania. Koszty
ewolucji oprogramowania na zamówienie
często przekraczają koszt projektowania
Koszty zalezą od typu systemu
projektowanego i wymagań do systemu np.
takich jak efektywność i niezawodność
Koszty zależą od wybranego modelu
procesu projektowania
Inżynieria oprogramowania. Wykład 1
Slide 29
Czym są metody inżynierii
oprogramowania?
Strukturalne podejście do projektowania oprogramowania
które zawiera
modele systemu
,
notacje
,
reguly
, porady do
projektowania i wykorzystania procesu. Na rzecz pojęcia
„metody” się składają następne komponenty:
Opisy modelu
•
Opisy modeli graficznych które ma być opracowane (np. Modele
obiektów, modele przepływów danych, modele relacji encji ).
Reguły
•
Ograniczenia i reguły których trzeba konieczne wykonywać przy
opracowaniu modeli systemów (np. Każdy element powinien mieć imię
unikalne)
Rekomendacje
•
Heurystyczne porady i rekomendacje odzwierciedlające
doświadczenia ich praktycznego wykorzystania (np. Każdy obiekt w
modeli nie może mieć więcej niż 7 obiektów mu podrzędnych)
Inżynieria oprogramowania. Wykład 1
Slide 30
Czym są metody inżynierii
oprogramowania?
Porady do zastosowania procesu
•
Opisuje czynności które trzeba wykonać aby stworzyć
model systemu zarówno jak i rekomendacje dla
organizacji tych czynności (np. Atrybut każdego
obiektu powinien być zadokumentowany przed
opracowaniem operacji tego obiektu)
Inżynieria oprogramowania. Wykład 1
Slide 31
Co to jest CASE (Computer-Aided
Software Engineering)
CASE obejmuje rożne programy
wykorzystane do wspomagania czynności
procesu tworzenia oprogramowania (np.
edytory notacji, generatory kodów)
Upper-CASE
•
Związane z początkowymi fazami tworzenia
oprogramowania
Lower-CASE
•
Wspomagają implementowanie i testowanie
Inżynieria oprogramowania. Wykład 1
Slide 32
Jakie właściwości ma dobre
oprogramowanie?
Konkretny zbiór właściwości zależy od zastosowania,
niemniej można podąć ogólny zbiór właściwości
Zdolność do pielęgnacji
•
Zdolność do ewolucji zgodnie z potrzebami klientów
Niezawodność
•
Nie powinno powodować fizycznych lub ekonomicznych
katastrof w przypadku awarii
Efektywność
•
Nie powinno marnotrawić zasobów systemu takich jak pamięć
czy czas procesora
Użyteczność
•
Powinno być użyteczne, bez zbędnego wysiłku ze strony
użytkownika (np. interfejsy)
Inżynieria oprogramowania. Wykład 1
Slide 33
Jakie są najistotniejsze wyzwania
dla inżynierów oprogramowania?
Wyzwanie dziedzictwa
•
Pielęgnacja i modyfikacji działających dużych
systemów, pełniących poważne funkcje gospodarcze
Wyzwanie różnorodności
•
Wymóg dzia
ł
ania oprogramowania w systemach
rozproszonych przy rożnych typach komputerów i
systemów wspomagających
Wyzwanie doręczenia
•
Wymóg dostarczanie gotowego programowania w
skróconym czasie bez utraty jakości
Inżynieria oprogramowania. Wykład 1
Slide 34
10 głównych przyczyn
klęski projektów
Niepełne wymagania
Brak uczestnictwa klienta
Brak zasobów
Nierealistyczne oczekiwania
Brak wsparcia kierownictwa
Ciągła zmiana wymagań oraz specyfikacji
Brak planowania
Oprogramowanie już nie jest aktualne
Brak informatycznych technologii zarządzania
Technologiczna nieumiejętność