background image

Inżynieria Oprogramowania
Wykład 01 - Wprowadzenie

MIS-1-502-s
MIO-1-505-s
MIS-1-505-n

Kazimierz Michalik

Wydział Inżynierii Metali i Informatyki Przemysłowej

Katedra Informatyki Stosowanej i Modelowania

Kraków 2014-2015

www.agh.edu.pl

www.agh.edu.pl

background image

Pojęcie podstawowe

Oprogramowanie (software) – pojęcie podstawowe 

(do oprogramowania włącza się niekiedy, oprócz 

plików binarnych i z kodem źródłowym, także 

dokumentację, pliki konfiguracyjne, przykładowe 

dane itp..)

Inżynieria oprogramowania (Software Engineering) 

– dziedzina inżynierii związana z wytwarzaniem 

oprogramowania we wszystkich jego fazach cyklu 

życia.
Jako dziedzina inżynierii, IO rozważa w kontekście 

praktycznym rozmaite aspekty wytwarzania 

oprogramowania (techniczny, organizacyjny, finansowy 

itp..)

Oprogramowanie (software) – pojęcie podstawowe 

(do oprogramowania włącza się niekiedy, oprócz 

plików binarnych i z kodem źródłowym, także 

dokumentację, pliki konfiguracyjne, przykładowe 

dane itp..)

Inżynieria oprogramowania (Software Engineering) 

– dziedzina inżynierii związana z wytwarzaniem 

oprogramowania we wszystkich jego fazach cyklu 

życia.
Jako dziedzina inżynierii, IO rozważa w kontekście 

praktycznym rozmaite aspekty wytwarzania 

oprogramowania (techniczny, organizacyjny, finansowy 

itp..)

background image

Cele inżynierii oprogramowania

Cel podstawowy:
Dostarczenie zasad organizacji procesu 

wytwarzania oprogramowania (sofware 

development) w oparciu o istniejące teorie, 

modele, metody i narzędzia (formalne lub 

nieformalne).

• W końcowym efekcie proces wytwarzania 

oprogramowania ma w sposób efektywny doprowadzić 

do powstania produktu wysokiej jakości

• Inżynieria oprogramowania jest częścią szerszej 

dyscypliny: inżynierii systemów (system engineering), 

w jej aspekcie dotyczącym oprogramowania.

Cel podstawowy:
Dostarczenie zasad organizacji procesu 

wytwarzania oprogramowania (sofware 

development) w oparciu o istniejące teorie, 

modele, metody i narzędzia (formalne lub 

nieformalne).

• W końcowym efekcie proces wytwarzania 

oprogramowania ma w sposób efektywny doprowadzić 

do powstania produktu wysokiej jakości

• Inżynieria oprogramowania jest częścią szerszej 

dyscypliny: inżynierii systemów (system engineering), 

w jej aspekcie dotyczącym oprogramowania.

background image

Problemy inżynierii oprogramowania

• Złożoność programów
• Złożoność systemów, w ramach których 

funkcjonują programy (ludzie, sprzęt, instytucje, 

procesy produkcyjne etc.)

• Zmienność systemów
• Złożoność procesów składających się na 

wytwarzanie oprogramowania ( w przeciwieństwie 

do prostoty pisania samego kodu)

• Łatwość i praktyczna nieuniknioność popełniania 

błędów przy wytwarzaniu oprogramowania

• Złożoność programów
• Złożoność systemów, w ramach których 

funkcjonują programy (ludzie, sprzęt, instytucje, 

procesy produkcyjne etc.)

• Zmienność systemów
• Złożoność procesów składających się na 

wytwarzanie oprogramowania ( w przeciwieństwie 

do prostoty pisania samego kodu)

• Łatwość i praktyczna nieuniknioność popełniania 

błędów przy wytwarzaniu oprogramowania

background image

Cechy dobrego oprogramowania

Wg. Sommerville'a:

• Poprawność, zgodność z wymaganiami 

użytkowników

• Łatwość pielęgnacji (konserwacji) i dokonywania 

zmian

• Niezawodność (dostępność i pewność)
• Bezpieczeństwo (w obu znaczeniach – safety, 

security)

• Wydajność, efektywne korzystanie z zasobów
• Łatwość stosowania, ergonomiczność

Wg. Sommerville'a:

• Poprawność, zgodność z wymaganiami 

użytkowników

• Łatwość pielęgnacji (konserwacji) i dokonywania 

zmian

• Niezawodność (dostępność i pewność)
• Bezpieczeństwo (w obu znaczeniach – safety, 

security)

• Wydajność, efektywne korzystanie z zasobów
• Łatwość stosowania, ergonomiczność

background image

Historia Inżynierii Oprogramowania:

Prehistoria. II wojna światowa.

ABC (us.), Electronic Numerical Integrator And 

Computer(us.), Colossus(uk.), Konrad Zuse(de.)

• Nowe komputery (architekturalnie) pojawiają się w 

odstępach paru lat.

• Całe oprogramowanie musi być przepisane/napisane na 

nowo dla nowych maszyn

• Czasy kart perforowanych i wydruków z wynikami.
• Program = Algorytm.
• 1945: Architektura von Neumanna

background image

Historia Inżynierii Oprogramowania:

Prehistoria. II wojna światowa.

background image

Historia Inżynierii Oprogramowania:

1945 – 1965: Narodziny

Język programowania:

• Komputery, wraz z oprogramowaniem, są 

stworzone do konkretnych celów i rodzaju 

obliczeń.

• Ciągła potrzeba przepisywania programów 

doprowadza do powstania języków 

programowania

• Oprogramowanie było darmowe

Język programowania:

• Komputery, wraz z oprogramowaniem, są 

stworzone do konkretnych celów i rodzaju 

obliczeń.

• Ciągła potrzeba przepisywania programów 

doprowadza do powstania języków 

programowania

• Oprogramowanie było darmowe

Era freeware:

• Wydawcy tworzyli otwarte repozytoria z 

oprogramowaniem

• Na uniwersytetach nie istnieje taki przedmiot 

jak Informatyka (Inżynieria Oprogramowania 

też oczywiście nie)

Era freeware:

• Wydawcy tworzyli otwarte repozytoria z 

oprogramowaniem

• Na uniwersytetach nie istnieje taki przedmiot 

jak Informatyka (Inżynieria Oprogramowania 

też oczywiście nie)

background image

Historia Inżynierii Oprogramowania:

1965 - 1985: Kryzys oprogramowania

• Przekraczanie budżetu – o miliony dolarów (OS/360)
• Przekraczanie czasu – na przykład 10 lat
• Uszkodzenie mienia – w wyniku błędów programu (Mariner 1)
• Zagrożenie zdrowia i życia – np.: śmierć w wyniku napromieniowania 

(Therac-25), błędu systemu kierowania ogniem (MIM-104 Patriot)

background image

Historia Inżynierii Oprogramowania:

1968-1969: Software engineering

• Software Engineering: Report of a conference 

sponsored by the NATO Science Committee , 

Garmisch, Germany: Scientific Affairs Division, NATO.

• E.W. Dijkastra Go To Statement Considered Harmful

• Software Engineering: Report of a conference 

sponsored by the NATO Science Committee , 

Garmisch, Germany: Scientific Affairs Division, NATO.

• E.W. Dijkastra Go To Statement Considered Harmful

• 1969: Termin Inżynieria Oprogramowania 

ujrzał światło dzienne

• Wczesne lata '80: Inżynieria Oprogramowania 

staje się wyróżnialnym zawodem plasującym 

się między informatyką a Inżynierią

• 1969: Termin Inżynieria Oprogramowania 

ujrzał światło dzienne

• Wczesne lata '80: Inżynieria Oprogramowania 

staje się wyróżnialnym zawodem plasującym 

się między informatyką a Inżynierią

background image

Historia Inżynierii Oprogramowania:

1965 - 1985: Wciąż kryzys oprogramowania

1972: D.Parnas On the Criteria To Be Used 

in Decomposing Systems into Modules 

Programowanie modułowe i abstrakcyjne 

typy danych były już używane.

Późne lata '80: Koszty utrzymania 

oprogramowania 2x wyższe niż koszt 

stworzenia nowego.

Wczesne lata '90: Koszty utrzymania nadal 

wzrastają o kolejne 30%

1995: 50% programów uznawanych za 

porażkę, mimo teoretycznie poprawnego 

działania

Przeciętny projekt przekracza wyznaczony 

czas o 50%!

background image

Historia Inżynierii Oprogramowania:

1985 - 1989: Brak panaceum

Propozycje rozwiązania problemów:

• Narzędzia: różne sposoby programowania 

(strukturalne, OO), CASE, dokumentacja, 

standardy

• Dyscyplina pracy programistów.
• Metody formalne z inżynierii.
• Proces wytwarzania oprogramowania 

( Capability Maturity Model)

• Etyka pracy, licencje, profesjonalizm.

1986, Fred Brooks, No Silver Bullet

Brak „cudownego leku”, ale Inżynieria 

Oprogramowania ma sens!

1986, Fred Brooks, No Silver Bullet

Brak „cudownego leku”, ale Inżynieria 

Oprogramowania ma sens!

background image

Historia Inżynierii Oprogramowania:

1990 – 2000: Orientowane Obiektowo

• Intensywne użytkownie CASE
• Projektowanie O.O.
• Narzędzia do inżynierii wymagań
• Wzrost popularności architektur 

rozproszonych

• Universal Markup Language (UML)
• Java

background image

Historia Inżynierii Oprogramowania:

2000+ : Współczesność

• Zintegrowane środowiska programistyczne 

(IDE)

• UML 2.0
• Lekkie języki skryptowe
• Metodologie lekkie
• Zaawansowane metodologie hybrydowe
• Nowe platformy i języki: C# etc.

background image

Czynności w czasie produkcji 

oprogramowania

Inżynieria oprogramowania stara się zidentyfikować i 

opisać podstawowe fazy tworzenia i funkcjonowania 

oprogramowania, a także wskazać model optymalnego 

przebiegu tych faz.

Co można robić w czasie tworzenia 

oprogramowania?

• Planowanie
• Implementacja
• Testowanie
• Dokumentowanie
• Wdrożenie
• Utrzymanie (konserwacja).

Co można robić w czasie tworzenia 

oprogramowania?

• Planowanie
• Implementacja
• Testowanie
• Dokumentowanie
• Wdrożenie
• Utrzymanie (konserwacja).

background image

Warto przeczytać

• Sommerville I.: Inżynieria oprogramowania 8-th ed., 

Addison-Wesley, 2006 (wyd.6, WNT, 2003)

• Hunt A., Thomas D.: The Pragmatic Programmer: From 

Journeyman to Master

• Yourdon, E.: Marsz ku klęsce. Poradnik dla projektantów 

systemów. WNT, 2007

• Booch G., Jacobson I., Rumbaugh J.: UML przewodnik 

użytkownika WNT 2002

• Gamma E., Helm R., Johnson R., Vlissides J.: Wzorce 

projektowe. Elementy programowania obiektowego 

wielokrotnego użytku, WNT 2005

• Sacha K.: Inżynieria oprogramowania, Wydawnictwo 

Naukowe PWN, 2010

• Steve McConnel: Kod doskonały. Jak tworzy 

  c 

oprogramowanie pozbawione błędów.  Wydanie II

• Martin Fowler: UML Distilled
• Brooks, Mityczny osobomiesiąc: eseje o inżynierii 

oprogramowania. WNT, 2000

www.agh.edu.pl

www.agh.edu.pl

background image

Warunki zaliczenia przedmiotu (1)

www.agh.edu.pl

www.agh.edu.pl

Sposób obliczania oceny końcowej:

Wymagania wstępne i dodatkowe:

Programowanie w języku obiektowym

Nakład pracy studenta (bilans punktów ECTS):

Udział w wykładach

30 godz

Udział w ćwiczeniach projektowych

30 godz

Przygotowanie do zajęć

30 godz

Wykonanie projektu

30 godz

Samodzielne studiowanie tematyki zajęć

30 godz

Sumaryczne obciążenie pracą studenta

150 godz

Punkty ECTS za moduł

6 ECTS

WARUNKI UZYSKANIA ZALICZENIA:

91 – 100% bardzo dobry (5.0);
81 – 90% plus dobry (4.5);
71 – 80% dobry (4.0);
61 – 70% plus dostateczny (3.5);
50 – 60% dostateczny (3.0);
poniżej 50% niedostateczny (2.0).

PUNKTACJA: nominalnie jest do zdobycia 100 punktów

Średnia ważona ocen z egzaminu (66%) i projektu (34%) 
– po uzyskaniu co najmniej 3.0 z każdej z nich

(Regulamin studiów §13, pkt 1:)

background image

Warunki zaliczenia projektu (2)

www.agh.edu.pl

www.agh.edu.pl

PUNKTACJA: nominalnie jest do zdobycia 100 punktów

Wykłady: (DODATKOWO!)

Wykład

Semestr

za aktywne uczestnictwo w wykładzie 

1 pkt

15 pkt

Zajęcia projektowe:

Zajęcia

Semestr

za poprawne przygotowanie do zajęć

0 do 2 pkt

30 pkt

za punktualną obecność i wykonywanie  zadań

 0 do 1 pkt

15 pkt

(albo za spóźnienie do 15tu minut  i wykonywanie  zadań

0 do 0,5 pkt

7,5 pkt)

za poprawne i samodzielne ukończenie zadań na zajęciach

0 do 2 pkt

30 pkt

rozliczanie projektów na koniec listopada

0 do 10 pkt

10 pkt

rozliczanie projektów na koniec semestru

0 do 15 pkt

15 pkt

W SUMIE

100 pkt

background image

Warunki zaliczenia projektu (3)

Terminy poprawkowe:

Termin

W sumie

Przysługują tylko tym, którzy:
- nie uzyskali zaliczenia w poprzednim terminie i
-- byli na przynajmniej 7 zajęciach w semestrze lub

I popr.

25 pkt

II popr.

25 pkt

W SUMIE DODATKOWO

50 pkt

-- przedłożyli w wymaganym terminie
 usprawiedliwienie większej ilości nieobecności.

za wykonanie zadań z tematów, w których student 
nie wykazał się wiedzą w czasie semestru
za wykonanie zadań z tematów, w których student 
nie wykazał się wiedzą w czasie semestru
i I terminu poprawkowego.

background image

Warunki zaliczenia egzaminu (4)

Warunkiem przystąpienia do egzaminu jest 

pozytywna ocena z zajęć projektowych.

Egzamin trzeba po prostu zdać (50%+).

Jeżeli w czasie semestru ktoś zdobędzie więcej niż 

100 pkt, to dodatkowe punkty są doliczane do 

wyniku egzaminu.

Jakie jest absolutne minimum, żeby zdać egzamin na 

50%?
W każdym wykładzie, treści absolutnie wymagane do 

zdania egzaminu na 3.0 będą wyróżnione w ramkach 

koloru czerwonego.
(Technicznie jest to odcień bladopomarańczowego, ale 

jestem pewien, że zorientujecie się które to są ramki.)

Jakie jest absolutne minimum, żeby zdać egzamin na 

50%?
W każdym wykładzie, treści absolutnie wymagane do 

zdania egzaminu na 3.0 będą wyróżnione w ramkach 

koloru czerwonego.
(Technicznie jest to odcień bladopomarańczowego, ale 

jestem pewien, że zorientujecie się które to są ramki.)

background image

Dziękuję za uwagę

W przypadku sugestii, pytań lub spostrzeżenia 

błędów: kontakt mailowy to kamich@agh.edu.pl


Document Outline