Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
mgr-szz:in-pos:6-pos [2019/06/10 10:26] lachmanfrantisek sw architektury |
mgr-szz:in-pos:6-pos [2019/06/14 12:10] lachmanfrantisek |
||
---|---|---|---|
Řádek 20: | Řádek 20: | ||
</box> | </box> | ||
- | |||
- | === Analytické vzory === | ||
- | |||
- | Existují i vzory využitelné při fázi analýzy. Seznam kategorií od M. Fowlera: | ||
- | |||
- | * **Accountability** | ||
- | * Party | ||
- | * Organization Hierarchies | ||
- | * Organization Structure | ||
- | * Accountability | ||
- | * Organization Structure | ||
- | * Accountability Knowledge Level | ||
- | * Party Type Generalization | ||
- | * Hierarchic Accountability | ||
- | * Operating Scopes | ||
- | * Post | ||
- | * **Observations and Measurements** | ||
- | * Quantity | ||
- | * Conversion Ratio | ||
- | * Compound Units | ||
- | * Measurement | ||
- | * Observation | ||
- | * Subtyping Observation Concepts | ||
- | * Protocol | ||
- | * **Observations for Corporate Finance** | ||
- | * Enterprise Segment | ||
- | * Measurement Protocol | ||
- | * Range | ||
- | * Phenomenon with Range | ||
- | * **Referring to Objects** | ||
- | * Name | ||
- | * Identification Scheme | ||
- | * Object Merge | ||
- | * Object Equivalence | ||
- | * **Inventory and Accounting** | ||
- | * **Planning** | ||
- | * **Trading** | ||
- | * **Derivative Contracts** | ||
- | * **Trading Packages** | ||
Řádek 178: | Řádek 139: | ||
</box> | </box> | ||
+ | |||
+ | |||
+ | === Analytické vzory === | ||
+ | |||
+ | Existují i vzory využitelné při fázi analýzy. Seznam kategorií od M. Fowlera: | ||
+ | |||
+ | * **Accountability** | ||
+ | * Party | ||
+ | * Organization Hierarchies | ||
+ | * Organization Structure | ||
+ | * Accountability | ||
+ | * Organization Structure | ||
+ | * Accountability Knowledge Level | ||
+ | * Party Type Generalization | ||
+ | * Hierarchic Accountability | ||
+ | * Operating Scopes | ||
+ | * Post | ||
+ | * **Observations and Measurements** | ||
+ | * Quantity | ||
+ | * Conversion Ratio | ||
+ | * Compound Units | ||
+ | * Measurement | ||
+ | * Observation | ||
+ | * Subtyping Observation Concepts | ||
+ | * Protocol | ||
+ | * **Observations for Corporate Finance** | ||
+ | * Enterprise Segment | ||
+ | * Measurement Protocol | ||
+ | * Range | ||
+ | * Phenomenon with Range | ||
+ | * **Referring to Objects** | ||
+ | * Name | ||
+ | * Identification Scheme | ||
+ | * Object Merge | ||
+ | * Object Equivalence | ||
+ | * **Inventory and Accounting** | ||
+ | * **Planning** | ||
+ | * **Trading** | ||
+ | * **Derivative Contracts** | ||
+ | * **Trading Packages** | ||
Řádek 264: | Řádek 265: | ||
</box> | </box> | ||
- | ==== Rozhraní komponent, signatury a omezující podmínky služeb, OCL ==== | + | ==== Rozhraní komponent ==== |
- | ==== Komponentové systémy a modely, kvalitativní aspekty služeb (QoS) ==== | + | * **Komponenta** |
+ | * = Spustitelná jednotka běžící v běhovém prostředí (middleware). | ||
+ | * = Zaměnitelná část systému, která žádá a poskytuje určitou sadu operací. | ||
+ | * Tvořena mnoha objekty/třídami. | ||
+ | * Nepřímá komunikace přes rozhraní (konektory). | ||
+ | * Dobře definovaná komplexní rozhraní. | ||
+ | * black-box/gray-box | ||
+ | * Vyvíjeny nezávisle na ostatních komponentách. | ||
+ | |||
+ | * **Rozhraní (interface)** | ||
+ | * Kolekce operací, která specifikují požadované, nebo poskytované služby komponenty. | ||
+ | |||
+ | * **Port** | ||
+ | * Komunikační bod komponenty specifikovaný rozhraním. | ||
+ | * Spojeny vzájemně konektorem. | ||
+ | |||
+ | ==== Komponentové systémy a modely ==== | ||
+ | |||
+ | * Komponentové modely | ||
+ | * = komponentové standardy | ||
+ | * definují specifickou reprezentaci, interakci a kompozici SW komponent | ||
+ | * Příklady komerčních řešení: | ||
+ | * CCM/CORBA, EJB/J2EE, Microsoft's COM+/.NET | ||
+ | * Akademické modely: | ||
+ | * Fractal, KobrA, PCM, SOFA, DArwin, Wright, Koala, ACME | ||
+ | * Rozdíly: | ||
+ | * komponenta | ||
+ | * run-time x design-time jednotka | ||
+ | * dynamická x statická jednotka | ||
+ | * stateful x stateless | ||
+ | * rozhraní | ||
+ | * signatury x protokoly | ||
+ | * synchronní x asynchronní | ||
+ | * hierarchie | ||
+ | * flat x hierarchical | ||
+ | * assembling | ||
+ | * simple x multiple | ||
+ | |||
+ | * Komponentové frameworky | ||
+ | * = komponentový middleware | ||
+ | * = běhové prostředí | ||
+ | * Umožňují běh komponent v rámci daného standardu. | ||
+ | * Příklady: | ||
+ | * J2EE: JBoss, Glassfish | ||
+ | * Web Portals (JSR portlets): Liferay, WebSphere Portal | ||
+ | |||
+ | ==== Signatury a omezující podmínky služeb, OCL ==== | ||
+ | |||
+ | Požadavky na rozhraní: | ||
+ | * poskytuje kontact s vnějším světem | ||
+ | * je tvořeno signaturami operací (input/output parametry) | ||
+ | * dobrá dokumentace (včetně kontraktu) | ||
+ | * jednoduchá dostupnost | ||
+ | * specifikace kontraktu (podmínky užití) | ||
+ | |||
+ | |||
+ | <box 90% red|Kontrakt> | ||
+ | Dohoda mezi dvěma subjekty akceptující podmínky, na kterých je možné užívat práva. | ||
+ | </box> | ||
+ | |||
+ | === OO kontrakt === | ||
+ | |||
+ | * sdílení předpokladů o třídách, komponentách, systémech | ||
+ | * přesná specifikace rozhraní | ||
+ | * popis služeb, které jsou poskytovány za určitých podmínek | ||
+ | |||
+ | * 3 typy podmínek: | ||
+ | * **Invarianty** = predikát, který musí být vždy platný. | ||
+ | * **Preconditions** = Musí být platné před spuštěním operace. | ||
+ | * **PostConditions** = Musí platit po dokončení operace. | ||
+ | |||
+ | * Podmínky lze modelovat různými způsoby: | ||
+ | * běžným jazykem | ||
+ | * matematická notace | ||
+ | * Object Constraint Language (OCL) | ||
+ | |||
+ | * Viditelnost operací a atributů | ||
+ | * public: + | ||
+ | * dostupné z libovolného externího kódu | ||
+ | * private: - | ||
+ | * dostupné ze samotné třídy | ||
+ | * protected: # | ||
+ | * dostupné z třídy a jejích dědiců | ||
+ | * package: ~ | ||
+ | * dostupné z tříd v rámci balíku | ||
+ | |||
+ | |||
+ | === OCL === | ||
+ | |||
+ | Object Constraint Language | ||
+ | * OMG standard | ||
+ | * ➕ umožňuje lepší dokumentaci | ||
+ | * ➕ přesnost (má formální sémantiku) | ||
+ | * ➕ OO | ||
+ | * ➕ komunikace bez nedorozumnění | ||
+ | |||
+ | Využití: | ||
+ | * invarianty tříd a typů | ||
+ | * pre-/post-conditions operací | ||
+ | * navigace napříč ukazateli mezi objekty | ||
+ | * podpora operací nad kolekcemi | ||
+ | * testovací specifikace a požadavky | ||
+ | |||
+ | Syntax | ||
+ | * silně typovaný, deklarativní jazyk | ||
+ | * každý klasifikát z UML se stává OCL typem | ||
+ | * předdefinuje základní typy a kolekce | ||
+ | |||
+ | <box 90% blue|Invariants> | ||
+ | syntax: | ||
+ | context <classifier> | ||
+ | inv [<constraint name>]: | ||
+ | <Boolean OCL expression> | ||
+ | </box> | ||
+ | |||
+ | <box 90% blue|Preconditions/Postconditions> | ||
+ | syntax: | ||
+ | |||
+ | context <classifier>::<operation> (<parameters>) | ||
+ | pre|post [<constraint name>]: | ||
+ | <Boolean OCL expression> | ||
+ | </box> | ||
+ | |||
+ | === IDL === | ||
+ | |||
+ | * = Interface Description Language | ||
+ | * = Interface Definition Language | ||
+ | * Specifikační jazyk pro popis rozhraní komponent nezávisle na programovacím jazyce. | ||
+ | * Nejedná se o programovací jazyk. | ||
+ | * Systémy postavené nad IDL: | ||
+ | * CORBA | ||
+ | * WSDL pro Web Services | ||
+ | * Mozilla's XPCOM | ||
+ | * Facebook's Thrift | ||
+ | |||
+ | <box 90% blue|WSDL> | ||
+ | Web services Description Language | ||
+ | * postaven nad XML | ||
+ | * popisuje rozhraní pro Web Services | ||
+ | * vzájemně převoditelné s IDL | ||
+ | </box> | ||
+ | |||
+ | ==== Kvalitativní aspekty služeb (QoS) ==== | ||
+ | |||
+ | SW požadavky: | ||
+ | |||
+ | * **Functional** | ||
+ | * definuje funkcionalitu systému a jeho komponent | ||
+ | * specifikuje chování mezi vstupem a výstupem | ||
+ | * **Non-functional** | ||
+ | * klade omezení a kriteria na implementaci | ||
+ | |||
+ | |||
+ | Kvalitativní aspekty SW architektur: | ||
+ | |||
+ | * **Performance** | ||
+ | * propustnost | ||
+ | * čas odezvy | ||
+ | * efektivnost využití zdrojů | ||
+ | * **Reliability** | ||
+ | * běh bez pádů | ||
+ | * dostupnost | ||
+ | * robustnost | ||
+ | * schopnost obnovy | ||
+ | * **Security** | ||
+ | * integrita | ||
+ | * důvěrnost | ||
+ | * dostupnost | ||
+ | * **Scalability** | ||
+ | * výkon | ||
+ | * paralelní komunikace | ||
+ | * škálování dat | ||
+ | * **Maintainability** | ||
+ | * změnitelnost | ||
+ | * upravitelnost | ||
+ | |||
+ | |||
+ | Taktiky zlepšení: | ||
+ | |||
+ | * Performance | ||
+ | * minimalizace počtu adaptérů a wrapperů (redukce zdrojů pro jeden požadavek) | ||
+ | * zmenšit komunikace zajišťenou rozhraním (více rozhraní pro stejnou funkcionalitu) | ||
+ | * separace dat od výpočtu (lepší optimalizace dat/algoritmů) | ||
+ | * nahrazení synchronní komunikace za asynchronní | ||
+ | * přesunutí často komunikujících komponent blíže k sobě | ||
+ | * Reliability | ||
+ | * kontrola externích závislostí | ||
+ | * zvěřejnění stavu komponent a definice invariantů | ||
+ | * chybové řízené | ||
+ | * zamezit vzniku single-point-of-failure | ||
+ | * health-state kontroly systému | ||
+ | * systém záloh a obnov | ||
+ | * Scalability | ||
+ | * jednoduchá, jasně definovaná rozhraní | ||
+ | * distribuované zdroje dat | ||
+ | * zjistit vhodná data pro replikace | ||
+ | * použití paralelního zpracování na vhodných místech | ||
+ | * zamezit bottleneck místům | ||
+ | * změnit přímé závislosti na nepřímé (např. synchronní volání za asynchronní) | ||
+ | * Maintainability | ||
+ | * rozdělení zodpovědnosti/Sloučení zodpovědnosti (jasná lokalizace zodpovědných částí) | ||
+ | * odebrání kódu řešící interakce (ne funkcionalitu) vně komponent do konektorů | ||
+ | * odebrání kódu řešící funkcionalitu z konektorů do komponent | ||
+ | * malé a kompaktní komponenty | ||
+ | * izolace dat od výpočtu (menší dopad změny jednoho, či druhého) | ||
+ | * odebrat zbytečné závislosti | ||
+ | * hierarchická architektura (umožňuje vhled na systém z různou abstrakcí) | ||
+ | |||
+ | |||
+ | <box 90% red|Service Level Agreement (SLA)> | ||
+ | Definuje společné pochopení pro služby, priority, zodpovědnosti, garance a záruky. | ||
+ | </box> | ||
==== Objektové metody vývoje softwaru, RUP ==== | ==== Objektové metody vývoje softwaru, RUP ==== | ||
+ | |||
+ | viz: http://statnice.dqd.cz/mgr-szz:in-gra:21-gra#oo_modely | ||
+ | |||
===== Zdroje ===== | ===== Zdroje ===== | ||
* slidy pa103 (jaro 2019) | * slidy pa103 (jaro 2019) |