Komponentový návrh SW -...

25
Komponentový návrh SW

Transcript of Komponentový návrh SW -...

Page 1: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Komponentový návrh SW

Page 2: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Komponentový návrh SW

• Komponenty jsou kompletně specifikované pomocí interface

• Jejich funkčnost je nezávislá na programovacím jazyku a mohou být integrované do toho samého systému

• Poskytují velké množství standartních služeb, tak aby další vývoj byl co nejvíc minimalizovaný

• Mnoho standartů podporující komponenty: EJB, COM, .NET, CORBA CCM

• V praxi těžko proveditelné aby např. .NET a J2EE spolupracovali dohromady

• => proto komponenta jako služba (SOA)

Page 3: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Charakteristiky komponent

• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace, nasazení)

• Independent - mělo by být možné sloučit a nasadit komponentu bez nutnosti dalších komponent

• Composable - interakce přes interface, externí přístup k informacím o sobě samém

• Deployable - operuje jako samostatná entita • Documented – musí být plně dokumentovaná

Page 4: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Komponenta jako service povider

• Komponenta je nezávislá funkční entita, nemusí být kompilovaná před tím, než je použitá

• Všechny služby komponenty jsou nabízené prostřednictvím interface a všechny interakce jsou prováděné pomocí interface

• Interface je realizované pomocí parametrizovaných operací a vnitřní stav není nikdy dostupný

Page 5: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Charakteristiky komponent

Komponenty mají 2 interfacy: • Provides - služby nabízené komponentou (API) • Requires – služby, které musí být poskytnuté jinými

komponentami • Komponenty jako služba jsou samostatné entity ->

nemají required interface

Page 6: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Modely komponent

• Komponentový model je definice standartů pro implementaci komponenty, dokumentaci a nasazení

• INTERFACES - Model specifikuje jak mají být definované interfacy a elementy, které mají být součásti definice interface

• USAGE – vzhledem k tomu, že komponenty budou distribuované a přístup vzdálený – musejí mít unikátní název, definice poskytovaných služeb

• DEPLOYMENT – specifikace jak mají být komponenty nasazené tak, aby byly nezávislé entity

Page 7: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Middleware

• Model komponent je základem pro middleware, který dodává veškerý support pro běh. Implementace komponentového modelu poskytuje: – Služby dané platformy, které umožňují komponentám

komunikovat

– Podpůrné služby využíváné různými komponentami

• Komponenty jsou nasazované v tzv.containeru – to je množina interface

Page 8: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

CBSE procesy

Hlavní rozdělení:

• Vývoj pro znovupoužití (for reuse) – vývoj komponent nebo služeb, které budou znovupoužité jinými systémy

• Vývoj s znovupoužitím (with reuse) – vývoj nových aplikací s využitím existujících komponent a služeb

Page 9: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

CBSE pro znovu-použití

• Vývoj komponent • Komponenty pro specifické prostředí musejí

být většinou zoobecněné, aby mohli být znovu-použíté

• Komponenty jsou znovu-použitelné většinou tehdy, když jsou asociované s nějakým stabilním business objektem

• Čím více je interface obecné, tím více se může znovupoužít, ale tím hůř je také použitelné

Page 10: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Změny pro znovupoužití

• Odstranit metody, které se příliš týkají dané aplikace

• Změnit názvy a udělat je více obecné • Přidat metody, které rozšíří pokrytí jednotlivých

použití • Udělat konzistentní řešení vyjímek • Přidat konfigurační rozhranní pro nastavení

komponenty • Integrovat vyžadované komponenty tak, aby se

zredukovali závislosti

Page 11: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Řešení výjimek

• Komponenta by neměla zpracovávat výjimky sama, protože každá aplikace může mít jiné požadavky na jejich řešení

• Raději definovat jaké vyjímky mohou nastat a ty publikovat

• V praxi je potřeba najít rozumný kompromis, aby interface nebylo moc komplikované

Page 12: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Komponenty z původních systemů

• Existující systémy, které řeší nějaký problém nemusejí být nutně přepracovány, ale pokud dobře fungují mohou být využity jako komponenta

• Využití wraperu a implementování provides a requires interface

• => ušetření nákladů

Page 13: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Znovu-použitelné komponenty

• Vývoj -> dražší • Mohou být větší, než specifická komponenta a také mohou

spotřebovat více výpočetního času

Správa komponent: • Předem je potřeba se rozhodnou, zda komponenta má být

ve formě služby nebo raději jako „balíček“ • Udržovat informace o použití komponenty a jejích verzích • Certifikace komponent (někdo jiný, než vývojář ověří

kvalitu)

Page 14: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

CBSE s znovu-použitím

• Snaží se nalézt a integrovat znovupoužitelné komponenty • Většinou hlédá kompromis mezi ideálním splněním

požadavků a službami nabízenými komponentami

Kroky: • Obecné požadavky • Hledání komponent a úprava požadavků podle dostupné

funkcionality • Znovu hledání, jestli neexistují lepší komponenty splňující

upravené požadavky • • „Spojování“ komponent tak aby vytvořili požadovaný

systém

Page 15: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Identifikace vhodných komponent

• Důvěryhodnost – důvěryhodný dodavatel

• Požadavky

• Validace – specifikace komponenty nemusí být dostatečná

– Nechtěná funkcionalita

– Proto je potřeba vytvořit několik test case pro danou komponentu

Page 16: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Typy kompozice komponent

• Sekvenční – komponenty pracují sekvenčeně – využíváme provides interface každé komponenty

• Hierarchická – jedna komponenta volá služby jiné – využíváme requires interface

• Doplňková – interfacy několika komponent jsou spojeny a je vytvořená nová komponenta – využíváme provides i requires

Page 17: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Nekompatibilní interface

• Parametry - operace mají stejný název, ale jiné parametry

• Operace – názvy operací v propojovaných interface jsou různé

• Nekompletnost operací – provides interface jedné komponenty je podmnožinou requires interface jiné

Problém nekompatibility zkoušíme vyřešit tak, že se

pokusíme sladit jednotlivé interface komponent - adaptér

Page 18: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

SOA – Service oriented architecture

Web services: • Poskytovatel web.služby má možnost vyvinout

specializované služby a ty nabízet různým uživatelům a organizacím

• Podstata je v nezávislosti aplikace a web.služby

SOA • Distribuované systémy, kde komponenty jsou samostatné

služby • Služby mohou pracovat na různých platformách u různých

providerů • Pro komunikaci slouží standartní protokoly

Page 19: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

SOA – Service oriented architecture

Page 20: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Výhody SOA

• Služby mohou být provozovaní lokálně nebo outsourcované externím providerům

• Služby jsou nezávislé na program.jazyku

• Je možné využít vyvinuté systémy a udělat z nich WS - $$$

• a další …

Page 21: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Důležité standardy SOA

• SOAP (Simple Object Access Protokol) – Standard pro výměnu zpráv, který podporuje komunikaci služeb

• WSDL (Web Service Definition Language) – Standard pro definovaní interface služeb a jejich bindování

• WS-BPEL (WS-Business Process Execution Language) – Standard pro workflow jazyky používaný pro kompozici služeb

Page 22: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

WSDL

• Které operace jsou poskytovány, formát jejich zpráv

• Přístup k službě – mapování abstraktního interface na konkrétní protokol

• Kde se služba nachází, URI (Unified resource identifier)

Page 23: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

RESTful web services

• Současné standardy pro web.služby jsou kritizované pro tězkopádnost

• • REST (Representational State Transfer) je arch. styl založený na přenosu reprezentace zdrojů ze serveru na klienta

• GET, PUT, POST, DELETE

• Jednoduší než SOAP/WSDL, jediný standard je HTTP

Page 24: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Nalezení kandidáta na WS

• Je služba asociována s jednou logickou entitou, která je používaná ve více business procesech?

• Je úkol v rámci organizace vykonáván více lidmi?

• Je služba nezávislá?

• Udržuje služba svůj stav? Vyžaduje databázi?

• Může být služba využívaná mimo organizaci?

• Mají uživatelé služby různé nefunkční požadavky?

Page 25: Komponentový návrh SW - ecom.ef.jcu.czecom.ef.jcu.cz/web2/download/teorie/12_komponentovy_navrh_sw.pdf• Standardized - musejí dodržovat standart (metadata, interfaces, dokumentace,

Problémy testování WS

• Externí služby mohou být modifikovány providerem -> nevalidní testy

• Ne-funkční chování služby se může lišit podle zátěže

• Pokud se platí za využití služby – testování může být drahé