|
Vyučující
|
-
Mouček Roman, doc. Ing. Ph.D.
|
|
Obsah předmětu
|
1. Obsah pojmu architektura software, význam architektury, vztah architektury a kvalitativních charakteristik software. 2. Výchozí principy: Modularita software, skrývání informace, open/closed, kontrakt, význam rozhraní modulu, koncept softwarových komponent. Realizace v monolitických, modulárních, komponentových jazycích/prostředcích. Vícenásobná použitelnost modulů (reuse), návrh s ohledem na ni. 3. Závislosti mezi moduly, principy vyhledání závislostí (dependency lookup) a vkládání závislostí (dependency injection). Příklady realizace v konkrétních technologiích. 4. Vazby a komunikace mezi moduly a jejich abstrakce, koncept konektoru. Typy konektorů pro komunikaci a pro integraci modulů; příklady realizace. 5. Architektonické styly (n-tier, stream/pipe, blackboard, monolit, component, service-oriented, cloud), příklady aplikací. 6. Podrobnosti o vícevrstvých a servisně-orientovaných architekturách. Produktové řady, variabilita software na úrovni architektury. 7. Způsoby dokumentace architektury -- UML, ADL (Architecture Description Languages), různé pohledy na architekturu, ad-hoc diagramy. Dokumentace API. Standardy v oblasti softwarových architektur. 8. Vztah architektury a disciplín v rámci vývoje software. Získání a analýza požadavků na architekturu, role architektury při návrhu a ověřování kvality software. Význam pro integraci, provoz a údržbu systémů. Přístup k tvorbě architektury v různých modelech vývoje software (sekvenční, řízený riziky, agilní). Role architekta v softwarovém týmu. 9. Postupy tvorby software a nástroje pro řízení vývoje s vazbou na architekturu (konfigurační řízení, správa sestavení). Ověření kvality architektury, výkonové apod. testování, přístup "executable architecture". 10. Analýza architektury software, metriky a kvalitativní charakteristiky architektur (výkonnost, spolehlivost, udržovatelnost). Nástroje pro analýzu, měření a vizualizace architektur software. Výběr architektury vzhledem k účelu software, design tradeoffs. 11. Vývoj software řízený návrhem (MDA, Model Driven Architectures), význam a použití modelů, PIM a PSM úrovně návrhu. 12. Prostor pro zvanou přednášku -- příklady z praxe / technologie pro efektivní návrh software / aktuální výzkum v oboru.
|
|
Studijní aktivity a metody výuky
|
Přednáška s aktivizací, Projektová výuka, Demonstrace dovedností, Studium metodou řešení problémů, Samostatná práce studentů, Samostudium literatury, Přednáška, Přednáška s demonstrací, Cvičení
- Příprava na zkoušku [10-60]
- 20 hodin za semestr
- Projekt individuální [40]
- 20 hodin za semestr
- Příprava prezentace (referátu) [3-8]
- 5 hodin za semestr
- Kontaktní výuka
- 40 hodin za semestr
- Projekt týmový [20-60 / počet studentů]
- 75 hodin za semestr
|
| Předpoklady |
|---|
| Odborné znalosti |
|---|
| rozumět principům objektově orientovaného programování |
| orientovat se v principech návrhu a implementace webových aplikací |
| rozumět principům architektury softwarových aplikací |
| orientovat se v základech UML |
| popsat základní postupy vývoje software |
| Odborné dovednosti |
|---|
| vytvářet počítačové programy v objektově orientovaném jazyce (např. C++ / Java / .NET) |
| vytvářet webové aplikace s využitím webových technologií (např. Spring MVC, .NET WPF) |
| vytvářet moderní aplikace s využitím základních návrhových vzorů (např. MVC, MVVM) |
| posuzovat a používat vhodný postup při vývoji software |
| Obecné způsobilosti |
|---|
| mgr. studium: používají své odborné znalosti, odborné dovednosti a obecné způsobilosti alespoň v jednom cizím jazyce, |
| mgr. studium: dle rámcového zadání a přidělených zdrojů koordinují činnost týmu, nesou odpovědnost za jeho výsledky, |
| Výsledky učení |
|---|
| Odborné znalosti |
|---|
| popsat různé druhy architektur softwarových systémů a orientovat se v nich |
| rozumět principům modularity a skrývání informace |
| popsat a interpretovat architektonické návrhy software grafickými notacemi, zejména s použitím UML |
| vysvětlit kritéria vhodnosti a kvality návrhu rozsáhlého softwarového systému |
| vysvětlit jak se lze orientovat se i v rozsáhlém programu a analyzovat jeho vlastnosti |
| Odborné dovednosti |
|---|
| porozumět architektuře rozsáhlých softwarových systémů |
| navrhnout architekturu rozsáhlého softwarového systému s využitím modelů a grafických notací |
| posoudit kvalitu a vhodnost architektonického návrhu rozsáhlého softwarového systému |
| použít vhodné technologie při vytváření rozsáhlých softwarových celků |
| aktivně používat moderní technologie a nástroje pro vývoj rozsáhlých programových systémů |
| Obecné způsobilosti |
|---|
| mgr. studium: dle vyvíjejících se souvislostí a dostupných zdrojů vymezí zadání pro odborné činnosti, koordinují je a nesou konečnou odpovědnost za jejich výsledky, |
| dokáží zodpovědně pracovat jako členové, případně vedoucí, menšího odborného týmu, a srozumitelně shrnout názory ostatních členů týmu |
| Vyučovací metody |
|---|
| Odborné znalosti |
|---|
| Projektová výuka, |
| Přednáška s aktivizací studentů, |
| Samostudium, |
| Přednáška založená na výkladu, |
| Přednáška s demonstrací, |
| Odborné dovednosti |
|---|
| Cvičení (praktické činnosti), |
| Demonstrace dovedností, |
| Samostatná práce studentů, |
| Řešení problémů, |
| Obecné způsobilosti |
|---|
| Přednáška s aktivizací studentů, |
| Hodnotící metody |
|---|
| Odborné znalosti |
|---|
| Kombinovaná zkouška, |
| Test, |
| Skupinová prezentace, |
| Odborné dovednosti |
|---|
| Demonstrace dovedností (praktická činnost), |
| Individuální prezentace, |
| Výstupní projekt, |
| Skupinová prezentace, |
| Obecné způsobilosti |
|---|
| Skupinová prezentace, |
| Demonstrace dovedností (praktická činnost), |
|
Doporučená literatura
|
-
Bass, Len; et al. Software Architecture in Practice. 3rd Edition. Addison-Wesley, 2012. ISBN 978-0321815736.
-
Clements, Paul. Documenting Software Architectures: Views and Beyond. 2nd Edition. Addison-Wesley, 2010. ISBN 978-0321552686.
-
Fairbanks, George. Just Enough Software Architecture: A Risk-Driven Approach. Marshall and Brainerd, 2010. ISBN 978-0984618101.
-
Gamma; et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. ISBN 978-0201633610.
-
Gomaa, Hassan. Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures. Cambridge Univeristy Press, 2011. ISBN 978-0521764148.
-
Taylor; et al. Software Architecture: Foundations, Theory, and Practice. Wiley, 2009. ISBN 978-0470167748.
|