Popis:
1.1 Slovo autorů
Vážení studující, dostává se vám do rukou studijní opora k předmětu Úvod do soft-
warového inženýrství, který je vyučován v prvním ročníku bakalářského studijního
programu Informační technologie na Fakultě informačních technologií Vysokého
učení technického v Brně.
Studijní opory jsou určeny pro distanční a kombinovanou formu studia, kde
plní roli přednášek kvůli specificky omezeným možnostem studia pracujících studu-
jících. Když jsme tuto oporu v roce 2006 vytvářeli, domnívali jsme se, že může být
užitečnou pomůckou i pro studující v prezenční formě studia (např. pro zopakování
látky před zkouškou nebo pro nahrazení přednášky v případě nemoci). Později
jsme si uvědomili, že zpřístupnění studijní opory může mít i své negativní dopady -
studijní opora může u některých studujících vyvolat dojem, že nemusí chodit na
přednášky, protože se vše podstatné naučí ze studijní opory těsně před zkouškou
(dlouhodobý přínos na poslední chvíli a často bez hlubšího pochopení naučených
informací je pochopitelně minimální). Vzhledem k poměrně vysoké účasti studu-
jících na našich přednáškách toto riziko považujeme za únosné.
Dobrý předmět by se měl průběžně vyvíjet a s aktualizací přednášek studijní
opora zastarává. To se stalo i této opoře, jak jsme zaznamenali v loňském roce
mimo jiné i z reakcí studujících v anonymních dotaznících předmětu. Vlastně
by nás to nemělo překvapit, protože zkušenosti z českých i zahraničních univerzit
poskytujících distanční vzdělávání ukazují, že studijní oporu je nutné aktualizovat
alespoň jednou za tři roky. Aktualizace opory je bohužel proces časově náročný.
Pokud bychom vyšli z předpokladu, že čas, který je přednášející schopen a ochoten
každým rokem věnovat na aktualizaci předmětu, je pevně daný, pak paralelní
aktualizace přednášek a studijní opory zákonitě snižuje tempo aktualizace celého
předmětu (hrubým odhadem na polovinu). Zda jsou studijní opory v konečném
důsledku skutečně prospěšné pro prezenční studium, bude zřejmě vyžadovat hlubší
zamyšlení.
Klíčová slova:
software
požadavky
analýza
implementace
testování
řízení
management
projekty
řízení kvality
Obsah:
- 1 Úvod 4
1.1 Slovo autorů 4
1.2 Cíle předmětu a struktura opory 5
2 Softwarové inženýrství 7
2.1 Definice softwarového inženýrství 7
2.2 Historie softwarového inženýrství 8
2.2.1 60. léta 9
2.2.2 70. léta 10
2.2.3 80. léta 10
2.2.4 90. léta 10
2.2.5 Současnost 10
2.3 Softwarový produkt 11
2.3.1 Kvalita 12
2.3.2 Vlastnosti softwarového produktu 13
2.3.3 Problémy při vývoji softwaru 14
2.3.4 Příčiny zastavení softwarových projektů 17
2.3.5 Důležité faktory pro úspěch softwarových projektů 17
3 Modely životního cyklu softwaru 19
3.1 Proces vývoje softwaru 19
3.1.1 Dekompozice 19
3.1.2 Životní cyklus softwaru 20
3.2 Etapy životního cyklu softwaru 20
3.3 Modely životního cyklu softwaru 22
3.3.1 Vodopádový model 22
3.3.2 Iterativní model 23
3.3.3 Inkrementální model 24
3.3.4 Spirálový model 24
3.3.5 Rational Unified Process 24
3.3.6 Agilní metodologie 24
4 Objektová orientace 27
4.1 Objektově orientované modelování a návrh 27
4.1.1 Jazyk UML 27
4.2 Základy objektové orientace 28
4.2.1 Základní pojmy objektové orientace 29
4.2.2 Třídně založené jazyky 31
4.2.3 Prototypově založené jazyky 32
4.2.4 Typování 32
4.3 Vztahy mezi třídami 33
4.3.1 Asociace 33
4.3.2 Kompozice a agregace 35
4.3.3 Zobecnění 37
4.3.4 Závislost 39
4.3.5 Realizace 39
5 Analýza a specifikace požadavků 42
5.1 Činnosti spojené s vývojem softwaru 42
5.2 Analýza a specifikace požadavků 43
5.3 Typy požadavků 44
5.4 Specifikace požadavků 44
5.4.1 Metody získávání informací 44
5.4.2 Problémy při specifikaci požadavků 45
5.4.3 Kroky při specifikaci požadavků 46
5.5 Prostředky pro specifikaci požadavků v RUP 47
5.5.1 Případ užití 47
5.5.2 Detail případu užití 48
5.5.3 Pokročilé techniky modelování případů užití 51
5.6 Prostředky pro analýzu v RUP 54
5.6.1 Analytické třídy 54
5.6.2 Objektové diagramy 55
5.6.3 Analytické balíčky 55
5.6.4 Diagramy interakce 56
5.6.5 Sekvenční diagramy (sequence diagrams) 58
5.6.6 Diagramy aktivit 61
6 Strukturovaný přístup k analýze 62
6.1 Základní modely strukturované analýzy 62
6.2 Data Flow Diagram (DFD) 62
6.2.1 Základní princip 62
6.2.2 Ukázka funkčního modelování 63
6.3 Entity Relationship Diagram 64
6.3.1 Základní pojmy datového modelování 64
6.3.2 Atribut entity 65
6.3.3 Vztah mezi entitami 66
6.3.4 Tvorba ERD 69
6.3.5 Slabé (weak) entitní množiny 71
6.3.6 Alternativní notace ERD 72
7 Návrh 73
7.1 Prostředky pro návrh v RUP 73
7.2 Návrhové třídy 73
7.3 Rozhraní 74
7.4 Upřesňování analytických modelů 75
7.5 Stavové diagramy 75
8 Implementace a testování 80
8.1 Implementace softwaru 80
8.1.1 Výběr programovacího jazyka 80
8.1.2 Strategie implementace 81
8.2 Validace a verifikace programu 81
8.2.1 Typy ověřování 82
8.3 Testování 82
8.3.1 Výběr testovacích vstupů 83
8.3.2 Testovací kritérium 84
8.3.3 Strategie testování 86
8.3.4 Zvláštní typy testování 86
9 Řízení softwarových projektů 88
9.1 Pohled softwarového inženýra 88
9.1.1 Parametry softwarového projektu 88
9.1.2 Sestavení vývojového týmu 89
9.2 Management projektů 89
9.2.1 Demingův manažerský cyklus 90
9.2.2 Etapy projektu z pohledu managementu 90
9.3 Řízení kvality softwarových projektů 91
9.3.1 Normy pro systém zajištění kvality 92
9.4 Měření v softwarovém inženýrství 93
9.4.1 Metriky pro software 94