background image

Inżynieria oprogramowania

część 1 - Wprowadzenie

Mgr inż. Piotr Greniewski

Europejska Wyższa Szkoła Informatyczno-

Ekonomiczna

background image

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ę.

background image

Slajd nr 3

©Ian Sommerville 2000  - Inżynieria oprogramowania

Wprowadzenie

Zawartość:

FAQ – najczęściej zadawane pytania

Odpowiedzialność etyczna i zawodowa

background image

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

background image

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.

background image

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 

background image

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

background image

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

background image

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

background image

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

background image

Slajd nr 11

©Ian Sommerville 2000  - Inżynieria oprogramowania

FAQ – co to jest proces tworzenia 
oprogramowania?

Specyfikacja oprogramowania

Tworzenie oprogramowania

Zatwierdzanie oprogramowania

Ewolucja oprogramowania

background image

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

background image

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

background image

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.

background image

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

background image

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%

background image

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%

background image

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

background image

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

background image

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.

background image

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ść

background image

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.

background image

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

background image

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

background image

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

background image

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.


Document Outline