Inżynieria oprogramowania - 1 Slide 1
Inżynieria oprogramowania
dr inż. Tomasz Piaścik . (Zakład Informatyki Stosowanej)
E-mail: TAP@amu.edu.pl
Literatura:
1. Górski J., Inżynieria oprogramowania w projektach
informatycznych, Mikom
2. Jaszkiewicz A., Inżynieria oprogramowania, Helion
3. Sommerville I., Inżynieria oprogramowania, WNT
4. Booch G., Rumbaugh J., Jacobson I., UML przewodnik
użytkownika, WNT
Inżynieria oprogramowania - 1 Slide 2
Cele wykładu
. Wprowadzenie do inżynierii oprogramowania i
wyjaśnienie jej znaczenia
. Odpowiedź na kluczowe pytania dotyczące
inżynierii oprogramowania
. Przedstawienie etycznych i zawodowych kwestii
i wyjaśnienie dlaczego są one ważne dla
inżynierów oprogramowania
Inżynieria oprogramowania - 1 Slide 3
Zawartość
. Najczęściej zadawane pytania (FAQ) dotyczące
inżynierii oprogramowania
. Odpowiedzialność etyczna i zawodowa
Inżynieria oprogramowania - 1 Slide 4
. Funkcjonowanie gospodarek krajów rozwiniętych
jest zależne od oprogramowania
. Coraz więcej systemów kontrolowanych jest przy
pomocy oprogramowania
. Inżynieria oprogramowania interesuje się teorią,
metodologią i narzędziami do profesjonalnego
rozwoju oprogramowania
. Wydatki na inżynierię oprogramowania stanowią
znaczną część GNP we wszystkich rozwiniętych
krajach
Inżynieria oprogramowania
Inżynieria oprogramowania - 1 Slide 5
. Koszty oprogramowania są dominującymi
kosztami całego systemu. Koszt oprogramowania
przeznaczonego dla PC jest często większy niż
koszt sprzętu
. Utrzymanie oprogramowania kosztuje więcej niż
jego rozwój. Dla systemów o długim czasie życia
koszty utrzymania mogą być kilkukrotnie wyższe
niż koszty rozwoju oprogramowania
. Inżynieria oprogramowania skupia się na
efektywnym kosztowo rozwoju oprogramowania
Koszty oprogramowania
Inżynieria oprogramowania - 1 Slide 6
FAQ o inżynierii oprogramowania
. Co to jest oprogramowania?
. 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ą
oprogramowania a inżynierią systemów?
. Co to jest proces tworzenia oprogramowania?
. Co to jest model procesu tworzenia
oprogramowania?
Inżynieria oprogramowania - 1 Slide 7
FAQ o inżynierii oprogramowania
. Jakie są koszty inżynierii oprogramowania?
. Co to są metody inżynierii oprogramowania?
. Co to jest CASE (Computer-Aided Software
Engineering)?
. Jakie są atrybuty dobrego oprogramowania?
. Jakie są najistotniejsze wyzwania dla inżynierii
oprogramowania?
Inżynieria oprogramowania - 1 Slide 8
Co to jest oprogramowanie?
. Programy komputerowe i związana z nimi
dokumentacja
. Oprogramowanie może być tworzone dla
poszczególnych klientów lub jako produkt
rynkowy
. Produkty programowe mogą być:
. Ogólnodostępne - tworzone dla szerokiego zakresu różnych
klientów
. Dedykowane - wytwarzane dla konkretnego klienta zgodnie z
jego wymaganiami
. Predefiniowane . dostosowywane do potrzeb użytkownika
Inżynieria oprogramowania - 1 Slide 9
Co to jest inżynieria oprogramowania?
. Inżynieria oprogramowania jest dyscypliną
inżynierii która obejmuje wszystkie aspekty
tworzenia oprogramowania
. Inżynierowie oprogramowania powinni przyjąć
uporządkowany i zorganizowany sposób
podejścia do pracy oraz używać odpowiednich
narzędzi i metod zależnie od problemu jaki mają
do rozwiązania, ograniczeń i dostępnych zasobów
Inżynieria oprogramowania - 1 Slide 10
Jaka jest różnica pomiędzy inżynierią
oprogramowania a informatyką?
. Informatyka obejmuje teorię i podstawy;
inżynieria oprogramowania obejmuje praktyczne
stronę rozwoju i dostarczania użytecznego
oprogramowania
. Teorie informatyczne są niewystarczające do
stworzenia kompletnych podstaw inżynierii
oprogramowania
Inżynieria oprogramowania - 1 Slide 11
Jaka jest różnica pomiędzy inżynierią
oprogramowania a inżynierią systemów?
. Inżynieria systemów obejmuje wszystkie aspekty
rozwijania systemów komputerowych (sprzęt,
oprogramowanie, proces tworzenia
oprogramowania). Inżynieria oprogramowania
jest częścią inżynierii systemów
. Inżynierowie systemów biorą udział w
specyfikacji systemu, projektowaniu jego
architektury, integracji i wdrożeniu
Inżynieria oprogramowania - 1 Slide 12
Co to jest proces tworzenia oprogramowania?
. Zbiór czynności, których celem jest rozwój lub
ewolucja oprogramowania
. Ogólne czynności w procesie tworzenia
oprogramowania:
. Specyfikacja - co powinien robić system i jakie są jego
ograniczenia
. Rozwój - produkcja oprogramowania
. Zatwierdzenie - sprawdzanie czy oprogramowanie jest zgodne z
oczekiwaniem klienta
. Ewolucja - zmiana oprogramowania w odpowiedzi na
zmieniające się wymagania klienta
Inżynieria oprogramowania - 1 Slide 13
Co to jest model procesu tworzenia
oprogramowania?
. Uproszczona prezentacja procesu tworzenia
oprogramowania przedstawiona z określonej perspektywy
. Przykłady modeli procesów tworzenia oprogramowania:
. Model przepływu prac - sekwencja czynności
. Model przepływu danych - przepływ informacji
. Model rola/akcja - kto co robi?
. Ogólne modele tworzenia oprogramowania:
. Kaskadowy (ang. waterfall)
. Tworzenie ewolucyjne
. Formalne przekształcania
. Składanie systemu z komponentów ponownego użycia
Inżynieria oprogramowania - 1 Slide 14
Jakie są koszty inżynierii oprogramowania?
. W przybliżeniu 60 % to koszty związane z
rozwojem oprogramowania a 40% to koszty
testowania. W przypadku oprogramowania na
zamówienie koszty ewolucji często przewyższają
koszty tworzenia oprogramowania.
. Koszty zmieniają się w zależności od typu
tworzonego oprogramowania i stawianych mu
wymagań takich jak wydajność czy
niezawodność
. Rozdział kosztów zależy od używanego modelu
tworzenia oprogramowania
Inżynieria oprogramowania - 1 Slide 15
Co to są metody inżynierii oprogramowania?
. Uporządkowane podejście do tworzenia oprogramowania
które obejmuje modele systemu, notacje, reguły, wskazówki
projektowe i poradnictwo na temat procesu tworzenia
. Opisy modeli
. Opisy graficznych modeli które powinny być wyprodukowane
. Reguły
. Ograniczenia którym podlegają modele systemu
. Rekomendacje
. Rady dotyczące praktyki dobrego projektowania
. Poradnictwo na temat procesu tworzenia
. Czynności jakie należy kolejno wykonać
Inżynieria oprogramowania - 1 Slide 16
Co to jest CASE (Computer-Aided
Software Engineering)?
. Systemy oprogramowania przeznaczone do
wspomagania czynności procesu tworzenia
oprogramowania. Systemy CASE są często
używane do wspomagania metod inżynierii
oprogramowania
. Upper-CASE
. Narzędzia do wspomagania początkowych faz procesu
tworzenia oprogramowania (wymagania, projektowanie)
. Lower-CASE
. Narzędzia do wspomagania późniejszych faz procesu tworzenia
oprogramowania takich jak programowanie i testowanie
Inżynieria oprogramowania - 1 Slide 17
Jakie są atrybuty dobrego oprogramowania?
. Oprogramowanie powinno dostarczać wymaganą
funkcjonalność, być wydajne, łatwe w utrzymaniu, niezawodne,
efektywne i użyteczne
. Łatwe w utrzymaniu
. Oprogramowanie musi ewoluować zgodnie ze zmieniającymi się
potrzebami
. Niezawodność
. Oprogramowanie powinno być solidne i dobrze zabezpieczone
. Efektywność
. Oprogramowanie nie powinno marnotrawić zasobów systemu
. Użyteczność
. Oprogramowanie musi być użyteczne (łatwe w obsłudze) dla
użytkowników, dla których zostało zaprojektowane
Inżynieria oprogramowania - 1 Slide 18
Jakie są najistotniejsze wyzwania dla
inżynierii oprogramowania?
. Borykanie się z systemami dziedziczonymi,
wzrastającą różnorodnością i żądaniem redukcji
czasu doręczania oprogramowania
. Systemy dziedziczone
. Stare, wartościowe systemy muszą być utrzymywane i
uaktualniane
. Różnorodność
. Systemy są rozproszone i obejmują sprzęt i oprogramowanie
. Doręczenie
. Istnieje coraz większy nacisk na szybsze dostarczanie
oprogramowania
Inżynieria oprogramowania - 1 Slide 19
Odpowiedzialność etyczna i zawodowa
. Inżynieria oprogramowania pociąga za sobą dużo
większą odpowiedzialność niż proste
zastosowanie umiejętności technicznych
. Inżynierowie oprogramowania muszą
postępować w sposób uczciwy, etyczny i
odpowiedzialny jeśli chcą być uważani za
profesjonalistów
. Etyczne zachowanie to więcej niż proste
przestrzeganie prawa
Inżynieria oprogramowania - 1 Slide 20
Kwestia odpowiedzialności zawodowej
. Poufność
. Inżynierowie powinni zawsze dochowywać tajemnic
powierzonych przez swych pracodawców lub klientów bez
względu na to czy zawarto formalną umowę o ochronie
tajemnicy.
. Kompetencje
. Inżynierowie nie powinni zawyżać poziomu swoich
kompetencji. Nie powinni podejmować zleceń które
przekraczają ich kompetencje.
Inżynieria oprogramowania - 1 Slide 21
Kwestia odpowiedzialności zawodowej
. Prawa własności intelektualnej
. Inżynierowie powinni znać miejscowe prawo regulujące
korzystanie z własności intelektualnej takiej jak patenty, prawa
autorskie itd. Powinni szczególnie dbać o poszanowanie
intelektualnej własności swoich pracodawców i klientów.
. Niewłaściwe użycie komputera
. Inżynierowie oprogramowania nie powinni używać swoich
technicznych umiejętności w celu niewłaściwego używania
cudzych komputerów. Niewłaściwe użycie komputera może być
dość banalne (granie na maszynie pracodawcy) lub skrajnie
poważne (rozpowszechnianie wirusów).
Inżynieria oprogramowania - 1 Slide 22
ACM/IEEE kodeksy etyczne
. Stowarzyszenia zawodowe współpracują przy
tworzeniu kodeksu etycznego postępowania
. Członkowie tych organizacji zobowiązują się do
przestrzegania takiego kodeksu
. Kodeks zawiera osiem zasad odnoszących się do
postępowania i decyzji podejmowanych przez
profesjonalnych inżynierów oprogramowania,
włączając praktyków, nauczycieli, menedżerów,
jak również praktykantów i studentów tego
zawodu
Inżynieria oprogramowania - 1 Slide 23
Kodeks etyki - preambuła
. Preambuła
. Wersja skrócona kodeksu streszcza jego cele na wysokim
poziomie abstrakcji; postanowienia zawarte w wersji pełnej
zawierają przykłady i szczegółowe informacje o tym jak
powinniśmy postępować będąc prawdziwie profesjonalnymi
inżynierami oprogramowania. Bez określenia celów szczegóły
mogą wydawać się drobiazgowe i nudne. Bez szczegółów cele
będą brzmiały górnolotnie ale pusto. Cele i szczegóły razem
wzięte stanowią spójny kodeks.
. Inżynierowie oprogramowania muszą przyjąć na siebie
zobowiązanie utwierdzenia analizy, specyfikacji, projektowania,
budowy, testowania i pielęgnacji oprogramowania jako zawodu
pożytecznego i szanowanego. Zgodnie z tym zobowiązaniem
wobec zdrowia, bezpieczeństwa i dobrobytu społeczeństwa,
inżynierowie oprogramowania powinni stosować się do
następujących Ośmiu Zasad:
Inżynieria oprogramowania - 1 Slide 24
Kodeks etyki - zasady
1. SPOŁECZEŃSTWO
Inżynierowie oprogramowania powinni postępować dla dobra
społeczeństwa
2. KLIENT I PRACODAWCA
Inżynierowie oprogramowania powinni postępować zgodnie z
interesami swojego klienta lub pracodawcy zgodnymi z dobrem
społeczeństwa
3. PRODUKT
Inżynierowie oprogramowania powinni zapewnić że ich produkty i
związane z nimi zmiany spełniają najwyższe standardy
profesjonalizmu
Inżynieria oprogramowania - 1 Slide 25
Kodeks etyki - zasady
4. ROZSADEK
Inżynierowie oprogramowania powinni zachować rozsądek i
niezależność swoich sądów
5. ZARZĄDZANIE
Zarządzający inżynierami oprogramowania i zwierzchnicy powinni
przyjąć i promować etykę w zarządzaniu tworzeniem i pielęgnacją
oprogramowania
6. PROFESJA
Inżynierowie oprogramowania powinni podnosić wiarygodność i
reputację profesji zgodnie z dobrem społeczeństwa
Inżynieria oprogramowania - 1 Slide 26
Kodeks etyki - zasady
7. KOLEŻEŃSTWO
Inżynierowie oprogramowania powinni być uczciwi i chętni do
pomocy swoim kolegom
8. JA SAM
Inżynierowie oprogramowania powinni brać udział w długofalowej
nauce praktyki swojego zawodu. Powinni także promować etyczne
działanie w praktyce swojej profesji
Inżynieria oprogramowania - 1 Slide 27
Etyczne dylematy
. Różnica zdań w stosunku do polityki zarządu
. Twój pracodawca działa w sposób nieetyczny i
wypuszcza system krytyczny z punktu widzenia
bezpieczeństwa bez zakończenia fazy testowania
systemu
. Uczestnictwo w tworzeniu systemów broni
wojskowej i systemów nuklearnych
Inżynieria oprogramowania - 1 Slide 28
System oprogramowania jako produkt
Program
System
oprogramowania
(interfejsy, integracja
Systemu)
Produkt
programowy
(uogólnienie, testowanie,
dokumentacja, pielęgnacja)
System oprogramowania
jako produkt
x3
x3
Inżynieria oprogramowania - 1 Slide 29
Radość programowania
. Rozkosz tworzenia
. Przydatność tworzenia czegoś przydatnego dla
innych ludzi
. Fascynacja tworzeniem złożonych przedmiotów
. Ciągłe uczenie i niepowtarzalność istoty zadania
. Radość pracy z łatwym do obróbki tworzywem
.Programowanie sprawia radość, bo zaspokaja
tkwiące w nas pragnienie twórcze i porusza naszą
wrażliwość, wspólną wszystkim ludziom.
Inżynieria oprogramowania - 1 Slide 30
Ból programowania
. Należy działać perfekcyjnie
. Ktoś inny ustala cele, przydziela zasoby i
dostarcza informacji
. Wyszukiwanie podstępnych, drobnych błędów to
tylko żmudna praca
. Poprawianie programu ma tylko liniową
zbieżność
. Świadomość przestarzałości produktu w chwili
jego ukończenia
Inżynieria oprogramowania - 1 Slide 31
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ą zdatność do pielęgnacji, niezawodność,
efektywność i użyteczność
. Procesy tworzenia oprogramowania składają się z czynności
prowadzących do utworzenia produktu programowego.
Głównymi czynnościami są: specyfikacja oprogramowania,
tworzenie, zatwierdzenie i ewolucja.
. Metody to uporządkowane sposoby budowy oprogramowania.
Obejmują one sugestie wyboru procesu tworzenia, notacji,
reguły określające jakie opisy systemu opracować, a także
wskazówki projektowe
Inżynieria oprogramowania - 1 Slide 32
Główne tezy
. Narzędzia CASE to systemy komputerowe, które są
przeznaczone do wspomagania rutynowych czynności procesu
tworzenia oprogramowania takich jak praca nad diagramami
projektowymi, sprawdzanie poprawności diagramów oraz
śledzenie wykonania testów
. Inżynierowie oprogramowania ponoszą odpowiedzialność
przed kolegami po fachu i społeczeństwem. Nie powinni
zajmować się jedynie aspektami technicznymi.
. Stowarzyszenia zawodowe publikują kodeksy postępowania,
które obejmują standardy zachowania oczekiwane od swoich
członków