Please enable JavaScript.
Coggle requires JavaScript to display documents.
17. Softwarové inženýrství I (sw inženýrství (fáze sw produktu (evoluce -…
17. Softwarové inženýrství I
Životní cyklus SW a související aktivity
životní cyklus
implementace
spustitelný program
implementační problémy
configuration management - proces vedení měnícího se sw, integrace, konzistence
host-target development - vývojová/exekuční platforma
reuse - maximalizace využití
využití IDE - nástroj pro impl.
editor zdroj. kódu, kompilátor + debugger
Netbeans, Eclipse, QT, VS
open-source vývoj - zdroj. kód veřejný + modifikovatelný
testování
verifikace
produkt poskytuje funkcionalitu danou specifikací (máme, co jsme chtěli)
jednotkové testy, integrační testy
před validací
využ. dokumentaci, plány, požadavky,...
validace
je funkcionalita dle očekávání zákazníka?
akceptační testy
analýza a návrh
požadavky --> syst. návrh
provoz a údržba
nové požadavky
oprava chyb
změna hw
specifikace
definice omezení a operací (uživatel, inžebýr)
sw proces = strukt. množina aktivit k
*
sw, mnoho různých obecně:
modely vývoje sw
inkrementační - agilní
+
menší cena při změně požadavků, feedback při vývoji, zákazník získá fční sw dřív
-
rychlý vývoj - neefektivní dokumentovat vše, struktura upadá při rozšířeních --> refraktoring (čištění/vylepšování kódu bez změny chování)
postupné přidávání funkcionality - inkrement (komponenty)
specifikace, vývoj, validace - zároveň
inkrement - část funkcionality, od nejvyšší priority, před počátkem vývoje - zmražení požadavků, pak přizpůsobení
prototyp - první inkrementy - další požadavky
plan driven i agilní
reuse-oriented
+
snadná výměna, šetří čas
-
nutná integrace
systematické znovupoužití vyvinutých / outsourcovýcho komponent
plan driven i agilní
proces: analýza komponent, úprava požadavků, návrh s reuse, vývoj a integrace
waterfall
plan-driven: přesná definice procesů a artefaktů, detailní monitoring, validace, cerifikace, dokumentace
+
velké i malé systémy, pokud malé změny
přesně definovaný postup
-
není flexibilní (změny požadavků), důraz na dokumentaci
specifikaca - analýza + design - implementace - verifikace + validace - vývoj + údržba
plan-driven
etapy, neflexibilní
použití: obecné produkty, evlké systémy - koordinace, více míst
Boehmův spirálový model
proces = spirála, ne posloupnost
smyčka = fáze + má sektory
bez specifikace a designu
v praxi ne
--> iterativní vývoj
extrémní programování
RUP
obecný proces, UML
iterace
Specifikace požadavků a jejich typy
někdy nezbytné pro získání kontraktu
requirement engineering
klasifikace + prioritizace
MoSCoW
RUP
specifikace požadavků
text, struktur. text, graf - UML (use case, activity), automaty
nalezení požadavků
co bude sys. dělat
verifikace + validace
systematická analýza
prototypování
testování
první prok při vývoji
požadavky
preciznost (jednoznačné)
kompletnost
konzistence
ověřitelné
reálné
proces, zákazník definuje požadavky + omezení
typy požadavků
funkční
služby - systém poskytuje
reakce na vstupy
co systém dělá
nefunkční
vliv na systém jako celek
nefunkční může generovat funkční
vlastnosti a omezení (spolehlivost, bezpečnost, platformy,...)
verifikovatelné skrz metriku
př.: systém lehko použivatelný, dostupnost,...
Strukturované vs. OO metody analýzy a návrhu SW
OO analýza a návrh
systém = skupina interagujících objektů (funkce, data)
objekt - třída + stav + chování
využívá OO pohledu na systém
diagramy
activity
nodes, flows, connectors, edges
class
třídy, vztahy, vazby, dědičnost, generalizace
use-case
aktéři, požadavky na systém, flow of events
object
instance tříd = objekty, linky
sequence
actors, messages, lifelines, objects
component
komponenety, konektory
deployment
hw komponenty (nodes), sw komponenty (artifacts)
state
package
package, třída, interface, objekt
průběh
požadavky
modelování hranic, aktérů, požadavků
use-case
návrh
z komponent - finální class diagram + component
detailní rozbor use-case pomocí state + interaction
analýza
identifikace tříd, vztahů, dědičnosti, polymorfismu
class
možný převod use-case na activity/interaction
UML diagramy
pojmy
polymorfismus - operace impl. mnoha způsoby
generalizace - podtřídy dědí
závislost - vztah mezi entitami, změna - změna
asociace - vztah mezi třídami
perspektivy
strukturní: class, component, package
interakce: sequence, communication
externí: use case
chování: activity, state
strukturovaná analýza a návrh
specifikace - pomocí hierarchických graf. technik - srozumitelné pro vývojáře i uživatele
diagramy
dataflow
graf. reprezentace syst. jako sítě procesů - manipulují s daty
zobrazuje - vstup/výstup, odkud/kam putují, jak uložena
ERD
systémová data
abstraktní databáze
každý vztah - kardinalita
entity + typy, vztahy + typy, atributy + domény
context
modeluje nejvyšší pohled (hranice, prostředí)
na pořátku vývoje
Event list = seznam podnětů z okolí - reakce
obs: terminátor, data ke zrpac., data ze systému, data uložená, hranice systému
stavový diagram
stavy + akce při přechodech
systém rozdělen na malé, dobře def. aktivity - pořadí + interakce = funkční dekompozice
průběh
dataflow - prvotní
ERD (datový model)
analýza entit + vztahů - logický datový model
dataflow - překreslení podle ERD
dekompozice log. modelu na procedurální jednotky
specifikace detailů každé proced. jednotky
funkčně + datově orientovaný pohled
systém = množina vnořených procesů, které přistupují k datům
pohledy
datově orientovaný
základní datové struktury
objektově orientovaný
množina interagujících objektů - data + oeprace
funkčně orientovaný
systém = množina interagujících funkcí
funkční transformace založ. na procesech propojených s daty
sw analýza
identifikace klíčových procesů, entit, vztahů
druhá fáze sw procesu
iterativní
výsledek: návrh (bez detailů) + dekonpozice + znázornění komunikace
obsahuje
def. kontextu
design architektury
analýza systému
design models
sw inženýrství
zabývá se metodikami a nástroji pro vývoj sw
cíl: návrh, tvorba, údržba programů
klíčové: kvalitní sw při omezeném rozpočtu
sw produkty
generické (př.: prohlížeč)
customizované (př.: IS)
vývoj = alanýza + design + impl.
vývoj
plan-driven (dané etapy, výstupy)
agilní (specif / vývoj / testování - prokládá, rychlý vývoj)
v praxi - prvky z různých modelů
fáze sw produktu
evoluce - impl. požadavků
obsluha - oprava chyb, bez nové funkc.
phase-out - použitelný, bez oprav
validace + verifikace
formální
model checking (systém abstr. do modelu - konečně stavů - alg. důkaz)
dokazování
poloformální
statistická analýza (př.: překladač)
neformální
testování
runtime analýza (při běhu)
simulace
fáze testování
release (testovací tým)
user
development (při vývoji)
unit, component, system