Inżynieria oprogramowania
część 1 - Wprowadzenie
Mgr inż. Piotr Greniewski
Europejska Wyższa Szkoła Informatyczno-
Ekonomiczna
Slajd nr 2
©Ian Sommerville 2000 - Inżynieria oprogramowania
Materiały do wykładu
Wykład opracowano na podstawie książki:
Inżynieria oprogramowania - Jan Sommerville
Wydawnictwa Naukowo – Techniczne
Warszawa 2003 r.
Prawa własności:
Rysunki, diagramy oraz układ prezentowanych treści są
własnością:
©Ian Sommerville 2000
.
Prezentacja stanowi tłumaczenie prezentacji autora
książki pobranej z witryny
http:/www.software-
engin.com.
Zgodnie z wolą autora: ”wykładowcy mają prawo
dowolnie modyfikować i adoptować tę prezentacje”
(Przedmowa – Witryna WWW – punkt 2 ) co też czynię.
Slajd nr 3
©Ian Sommerville 2000 - Inżynieria oprogramowania
Wprowadzenie
Zawartość:
FAQ – najczęściej zadawane pytania
Odpowiedzialność etyczna i zawodowa
Slajd nr 4
©Ian Sommerville 2000 - Inżynieria oprogramowania
Wprowadzenie
Wszechobecność systemów informatycznych
Niemal każde urządzenie posiada
oprogramowanie
Programy komputerowe są używane we
wszystkich gałęziach przemysłu
Na inżynierię oprogramowania składają się
następujące prace nad systemami
komputerowymi:
Specyfikowanie
Wytwarzanie
Zarządzanie
Rozwijanie
Slajd nr 5
©Ian Sommerville 2000 - Inżynieria oprogramowania
Wprowadzenie
W chwili dzisiejszej nawet proste systemy
charakteryzują się dużą złożonością.
Przy projektowaniu należy więc stosować
podejście inżynierskie
Inżynieria oprogramowania to dziedzina
polegająca na optymalnym używaniu metod i
teorii informatycznych do rozwiązywania
skomplikowanych problemów.
Slajd nr 6
©Ian Sommerville 2000 - Inżynieria oprogramowania
Wprowadzenie
Wiele przedsięwzięć informatycznych ponosi
klęskę, co świadczy o tym, że problemy te są
naprawdę duże.
Powstaje wiele bardzo przydatnych
programów
Inżynieria oprogramowania powstała w
odpowiedzi na trudności związane z budową
dużych systemów informatycznych dla wojska,
rządu, przemysłu
W dniu dzisiejszym informatycy tworzą dużo
różnorodnego oprogramowania
Slajd nr 7
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ - co to jest oprogramowanie?
Nie należy utożsamiać oprogramowania z
programami komputerowymi.
Oprogramowanie to nie tylko programy. To też
dokumentacje, dane konfiguracyjne ...
Dwa rodzaje produktów programowych:
Produkty powszechne
Produkty na zamówienie
Slajd nr 8
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest inżynieria
oprogramowania?
Dziedzina inżynierii – inżynierowie sprawiają
że rzeczy „działają”. Stosują teorie i metody
tam gdzie są potrzebne
Wszystkie aspekty tworzenia
oprogramowania;
Proces techniczny
Zarządzanie przedsięwzięciami
Opracowanie narzędzi
Opracowanie metod
Opracowanie teorii wspomagania tworzenia
Slajd nr 9
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – różnica między inżynierią a
informatyką?
Informatyka obejmuje teorie i podstawowe
metody działania komputerów i systemów
komputerowych
Inżynieria obejmuje praktyczne problemy
związane z tworzeniem oprogramowania.
Pewien zakres wiedzy jest niezbędny do
tworzenia oprogramowania tak jak pewien
zakres fizyki jest potrzebny inżynierom
elektrykom
Slajd nr 10
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ –
różnica między inżynierią
oprogramowania a inżynierią systemów
Inżynieria systemów obejmuje wszystkie
aspekty tworzenia i ewolucji.
Mieści w sobie:
Tworzenie oprogramowania
Opracowywanie strategii
Projektowanie procesu tworzenia
Wdrażanie systemu
Inzynierię oprogramowania
Slajd nr 11
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest proces tworzenia
oprogramowania?
Specyfikacja oprogramowania
Tworzenie oprogramowania
Zatwierdzanie oprogramowania
Ewolucja oprogramowania
Slajd nr 12
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest model procesu tworzenia
oprogramowania?
Model przepływu prac.
Przedstawia ciąg czynności z wejściami, wyjściami i
zależnościami.
Czynności reprezentują działania ludzi.
Model przepływu danych (model czynności)
Przedstawia proces w postaci zbioru czynności z
których każda dokonuje przekształcenia danych
Opisuje jak wejście procesu jest przekształcane na
wyjście.
Czynności mogą być opisane na niższym poziomie niż
w modelu przepływu. Reprezentuje przekształcenia
wykonywane przez ludzi lub komputery
Slajd nr 13
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest model procesu tworzenia
oprogramowania?
Model rola – akcja
Przedstawia role osób biorących udział w procesie
tworzenia oprogramowania oraz czynności za które
osoby są odpowiedzialne
Slajd nr 14
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest model procesu tworzenia
oprogramowania?
Modele tworzenia oprogramowania:
Model kaskadowy – czynności przedstawia się jako
oddzielne fazy procesu. Po wykonaniu fazy
zatwierdza się wyniki i przechodzi do następnej.
Tworzenie ewolucyjne – czynności specyfikacji,
projektowania i zatwierdzania przeplatają się.
Budujemy pierwszą wersję systemu – prototyp,
przedstawiamy klientowi i udoskonalamy.
Slajd nr 15
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest model procesu tworzenia
oprogramowania?
Modele tworzenia oprogramowania cdn:
Formalne przekształcenia – budujemy system oparty
na matematycznych specyfikacjach i przekształceniu
tych specyfikacji w program za pomocą metod
matematycznych. Mamy pewność, że zbudowany
system spełnia specyfikacje.
Składanie systemu z istniejących komponentów –
technika zakłada, że części sytemu istnieją. Proces
budowy polega na integrowaniu fragmentów
Slajd nr 16
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – jakie są koszty inżynierii
oprogramowania?
Rozkład kosztów tworzenia (koszty liczone
oddzielnie):
Specyfikacja – 10%
Projektowanie – 25%
Budowa – 15%
Integracja i testowanie 50%
Koszty tworzenia ewolucyjnego;
Specyfikacja – 10%
Wytwarzanie ewolucyjne – 60%
Testowanie – 30%
Slajd nr 17
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – jakie są koszty inżynierii
oprogramowania?
Koszty ewolucji
(dla systemów pracujących przez długi czas):
Budowa systemu – 25%
Ewolucja systemu – 75%
Koszty wytworzenia produktu
(produkt z półki);
Specyfikacja – 5%
Budowa – 40%
Testowanie systemu – 55%
Slajd nr 18
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to są metody inżynierii
oprogramowania?
Analiza strukturalna
Powstała w latach 70-tych: De Marco 1978, Jakson
1983. Za jej pomocą starano się zidentyfikować
podstawowe składniki funkcjonalne systemu.
Metody obiektowe
Booch 1994, Rumbauch 1991
Podejścia te zintegrowano i zunifikowano i tak
powstał Unified Modeling Language (UML)
Cechy wspólne
Koncepcja opracowania modelu, przedstawienia go
graficznie oraz wykorzystanie modelu jako
specyfikacji i projektu systemu
Slajd nr 19
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest CASE?
CASE – Computer-Aided Software
Engineering czyli inżynieria oprogramowania
wspomagana komputerowo
Zastosowanie CASE:
Analiza wymagań
Modelowanie systemu
Wyszukiwanie i usuwanie błędów
Testowanie
Slajd nr 20
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – co to jest CASE?
Podział narzędzi CASE
Upper-CASE - narzędzia do wspomagania analizy i
projektowania, związane z początkowymi fazami
tworzenia oprogramowania.
Lower-CASE – narzędzia do wspomagania
implementowania i testowania oprogramowania,
wyszukiwania błędów, również generatory kodu.
Slajd nr 21
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ –jakie właściwości ma dobre
oprogramowanie?
Zdatność do pielęgnacji
Niezawodność
Efektywność
Użyteczność
Slajd nr 22
©Ian Sommerville 2000 - Inżynieria oprogramowania
FAQ – wyzwania dla inżynierów
oprogramowania?
Wyzwanie dziedzictwa
Większość dużych systemów napisano wiele lat temu
ale działają do dziś. Wyzwanie polega na pielęgnacji
tych systemów.
Wyzwanie różnorodności
Polega na opracowaniu metod budowy
niezawodnego oprogramowania radzącego sobie z
różnorodnością
Wyzwanie doręczenia
Polega na skróceniu czasu dostarczenia wielkich
złożonych systemów, bez utraty ich jakości.
Slajd nr 23
©Ian Sommerville 2000 - Inżynieria oprogramowania
Odpowiedzialność etyczna i zawodowa
Zachowanie tajemnicy
Kompetencja
Prawo własności intelektualnej
Właściwe użycie komputera
Slajd nr 24
©Ian Sommerville 2000 - Inżynieria oprogramowania
Odpowiedzialność etyczna i zawodowa
Kodeks etyki zawodowej ACM/IEEE 1999r.
Inżynierowie oprogramowania powinni
stosować się do następujących zasad:
Społeczeństwo
Klient i pracodawca
Produkt
Rozsądek
Zarządzanie
Profesja
Koleżeństwo
Ja sam
Slajd nr 25
©Ian Sommerville 2000 - Inżynieria oprogramowania
Główne tezy
Inżynieria oprogramowania to dziedzina inżynierii, która
obejmuje wszystkie aspekty tworzenia oprogramowania
Produkty programowe składają się z utworzonych
programów oraz związanej z nimi dokumentacji.
Zasadniczymi atrybutami produktów są: zdolność do
pielęgnacji, niezawodność efektywność i użyteczność.
Proces tworzenia oprogramowania składa się z
czynności prowadzących do utworzenia produktu
programowego. Głównymi czynnościami są: specyfikacja
oprogramowania, tworzenie, zatwierdzanie i ewolucja
Metody to uporządkowane sposoby budowy
oprogramowania. Obejmują sugestie wyboru procesu
tworzenia, notacji i reguł określających jakie opisy
systemu opracować a także wskazówki projektowe
Slajd nr 26
©Ian Sommerville 2000 - Inżynieria oprogramowania
Główne tezy
Narzędzia CASE to systemy komputerowe, które są
przeznaczone do wspomagania rutynowych
czynności procesu tworzenia takich jak praca nad
diagramami projektowymi, sprawdzanie
poprawności diagramów oraz śledzenie
wykonywanych testów.
Inżynierowie oprogramowania ponoszą
odpowiedzialność przed kolegami po fachu i
społeczeństwem. Nie powinni się zajmować jedynie
aspektami techniczny
Stowarzyszenia zawodowe publikują kodeksy
postępowania, które definiują standardy
zachowania oczekiwane od swoich członków.