KIV/ASWI 2007/2008 Návrh: třídy a struktury pro efektivní implementaci



Podobné dokumenty
Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Analýza a Návrh. Analýza

Architektura softwarových systémů

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Architektury informačních systémů

Architektury informačních systémů

(Enterprise) JavaBeans. Lekce 7

Tvorba informačních systémů

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Komponentový návrh SW

Tvorba informačních systémů

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Vývoj informačních systémů. Přehled témat a úkolů

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Vývoj informačních systémů. Přehled témat a úkolů

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Obsah. Zpracoval:

Úvod do principů objektově orientovaného programování

Návrhové vzory OMO, LS 2014/2015

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

TÉMATICKÝ OKRUH Softwarové inženýrství

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Architektury Informačních systémů. Jaroslav Žáček

Softwarové komponenty a Internet

IS pro podporu BOZP na FIT ČVUT

Architektura softwarových systémů

Objekty, třídy, vazby 2006 UOMO 30

MVC (Model-View-Controller)

Architektury Informačních systémů. Jaroslav Žáček

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Common Object Request Broker Architecture

Principy UML. Clear View Training 2005 v2.2 1

Úvod do Web Services

Tvorba informačních systémů

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

TÉMATICKÝ OKRUH Softwarové inženýrství

Spring framework 2.0. Roman Pichlík CZJUG

7 Jazyk UML (Unified Modeling Language)

7.5 Diagram tříd pokročilé techniky

Design systému. Komponentová versus procesní architektura

Databázové a informační systémy

7 Jazyk UML (Unified Modeling Language)

SOAP & REST služby. Rozdíly, architektury, použití

Databázové systémy trocha teorie

Úvod do problematiky vývoje Vývoj informačních systémů

EXTRAKT z mezinárodní normy

6 Objektově-orientovaný vývoj programového vybavení

Tvorba informačních systémů

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Michal Krátký, Miroslav Beneš

Unifikovaný modelovací jazyk UML

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Zpracoval:

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

PA165: Úvod do Java EE. Petr Adámek

3 druhy UML diagramů

Databáze II. 1. přednáška. Helena Palovská

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Základy objektové orientace I. Únor 2010

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Vyřešené teoretické otázky do OOP ( )

7.5 Diagram tříd pokročilé techniky

KIV/PIA 2013 Jan Tichava

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

UML. Unified Modeling Language. Součásti UML

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Objektové programování

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Návrhové vzory pro J2EE

Návrh IS - UML. Jaroslav Žáček

Návrhové vzory pro J2EE. Miroslav Beneš

Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel I

10 Balíčky, grafické znázornění tříd, základy zapozdření

Návrh IS - UML. Jaroslav Žáček

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Tvorba informačních systémů

Vývoj informačních systémů. Obecně o IS

Business Intelligence

Požadavky pro výběrová řízení TerraBus ESB/G2x

Objektově orientované databáze. Miroslav Beneš

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Okruhy z odborných předmětů

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY

Architektura orientovaná na služby Návrh orientovaný na služby. Ing. Petr Weiss. VUT v Brně,, FIT, UIFS

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Ondřej Bothe, Richard Dobiš

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Národní architektonický plán a ostatní metody řízení veřejné správy ČR

11 Návrh programového vybavení

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Transkript:

KIV/ASWI 2007/2008 Návrh: třídy a struktury pro efektivní implementaci

Obsah a cíl této části Jak rozpracovat výsledky analýzy» tak, aby šly jednoznačně implementovat v konkrétním programovacím jazyce a provozní platformě» tak aby implementaci mohlo provádět více lidí, aby byla efektivní (co do výkonu i tvorby) a výsledek byl snadno udržovatelný Dát návod jak poznat rozumný návrh od chybného ASWI 2006/2007 - Návrh implementace 2

Aspekty návrhu Postup návrhu tříd Architektura, konvence Vzory řešení typických situací Jazykové idiomy ASWI 2006/2007 - Návrh implementace 3

Klíčová rozhodnutí před detailním návrhem (jestli vize) (co požadavky) Architektura technologie struktura pravidla, konvence (jak návrh) ASWI 2006/2007 - Návrh implementace 4

Architektura

Architektura systému Klíčové aspekty organizace» jak systém členit hrubé členění na subsystémy a balíky rozhraní a závislosti mezi nimi přiřazení tříd do balíků/subsystémů the highest-level concept of a system in its environment Aspekty prolínající celou implementací (konvence)» jak systém navrhovat jednotný přístup k tvorbě objektů lokalizace ASWI 2006/2007 - Návrh implementace 6

Výběr technologie Postup tvorby návrhu i jeho konečnou podobu ovlivňují/omezují vlastnosti prostředí Programovací jazyk, databáze, knihovny Použití frameworků a hotových komponent Ovlivňující faktory stávající systém efektivita vývoje marketing ASWI 2006/2007 - Návrh implementace 7

Logické členění balíky Motivace: logický objektový model velký Členění pro získání přehledu o systému rozdělení implementace mezi členy týmu Co je balík skupina souvisejících tříd, tvoří organizační celek mapování do jazyka (balík vytváří jmenný prostor) hierarchické vnořování Třídy balíku funkčně příbuzné, v jedné vrstvě aplikace nebo kdekoli ASWI 2006/2007 - Návrh implementace 8

Komunikace mezi balíky ROZHRANÍ ROZHRANÍ ROZHRANÍ ASWI 2006/2007 - Návrh implementace 9

Funkční členění subsystémy Motivace: monolitická aplikace nepraktická Subsystém = skupina souvisejících balíků a/nebo tříd tvořících funkční celek vícenásobně použitelných, volně vázaných částí celků vhodných pro vývoj a údržbu Třídy subsystému funkčně soudržné (lokalita změn) často vázané na jednoho aktéra Třídy mimo stejně silná vazba na více subsystémů zakreslené na úrovni subsystémů horizontální vrstvy vs. vertikální domény (finance, personalistika, řízení, utility, ) ASWI 2006/2007 - Návrh implementace 10

Konvence a politiky Architectural policies obecná pravidla pro návrh v libovolné části aplikace musí dodržovat všichni vývojáři Správa paměti Synchronizace, transakce Defenzivní programování Lokalizace (L10N, I18N) ASWI 2006/2007 - Návrh implementace 11

Jak najít balíky, subsystémy Rozdělení dopředu zřejmé jednoduché a/nebo standardní aplikace vodítko: použití architektonických stylů Na základě objektového modelu nutno vidět všechny třídy a vztahy shluk těsně vázaných tříd = kandidát Na základě případů použití potlačit nepodstatné případy použití pro zbylé zkusit vyjmout klíčovou třídu závislé třídy napomohou řídící objekty ASWI 2006/2007 - Návrh implementace 12

Kdy začít členit do subsystémů Členění ovlivňuje plánování a postup prací Standardní projekty možno odhadnout nebo stanovit předem Menší systémy rozdělení na základě analýzy Velké projekty (analýza trvá dlouho) nahrubo předem rozfázování prací včetně analýzy vodítko: aktéři, znalost struktury fyzického systému, možnosti reuse, vývojové kapacity přesně až během návrhu architektury ASWI 2006/2007 - Návrh implementace 13

Klient-server tlustý klient Základní architektonické styly 3vrstvé a vícevrstvé [BUS96] defines an architectural pattern as: "An architectural pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them." oddělení prezentace, business logiky a datové části dnes standard Vrstvená delegování na podřízené prezentace / řízení / doména / business služby / technická infrastruktura / knihovní třídy / systémové Image from IBM RUP 2005 Concept: Architecture 14

Další architektonické styly SOA (Service-oriented architecture) Pipes and filters ( kolona ) Blackboard Broker Image from http://lists.w3.org/archives/public/www-ws-arch/2003feb/0030.html ASWI 2006/2007 - Návrh implementace 15

Komponentový přístup Dotažení zapouzdření a rozhraní do konce aplikace jako Lego skládačka (teoreticky) Komponenta black-box implementace nedůležitá a nedosažitelná rozhraní rozlišena na poskytovaná a vyžadovaná vazby» provides/exports, requires/imports/depends explicitní specifikace rozhraní a vlastností Technologie» manifest, deployment descriptor CORBA, EJB (částečně), portlety, OSGi IoC containers: Spring, PicoContainer Přístup Inversion of Control (IoC) a Dependency Injection (DI) ASWI 2006/2007 - Návrh implementace 16

UML reprezentace komponent Rozdíl UML1 a UML2 ASWI 2006/2007 - Návrh implementace 17

ORM Objektově relační mapování aplikace chce objekty, perzistentní data chceme v relační DB Ručně: data access objects + relační model třídy (atributy) označené «persistent» tabulky (sloupce) object ID primární klíč 1:1 asociace FK vazba; agregace obrácená FK vazba generalizace sada tabulek s FK, join pro získání potomka Knihovny / rámce pro persistenci Java JDBC, Hibernate PHP PEAR MDB, ADOdb, Scrubs, Metastorage ASWI 2006/2007 - Návrh implementace 18

UML struktura architektury com.foo.nextgen. ui.swing com.foo.nextgen. domain.sales com.foo.nextgen. domain.payments com.foo.util com.foo.nextgen. domain.posruleengine «subsystem» POSRuleEngine POSRuleEngineFacade not a subsystem Pricing «subsystem» Persistence DBFacade «subsystem» Jess ASWI 2006/2007 - Návrh implementace 19

Dokumentace architektury Referenční architektura dokument kostra aplikace Dokument RUP Artifact: Software Architecture Document Modely UML» implementation view (komponenty), logical view (třídy, balíky), process view (interakce, stavový model) ad-hoc diagramy ASWI 2006/2007 - Návrh implementace 20

Třívrstvý model

MVC struktura aplikace 3vrstvá architektura v malém oddělení vrstev, které se nejčastěji mění typicky uživatelské rozhraní Základ: návrhový vzor Model-View-Controller Realizace pomocí tříd/objektů hraniční rozhraní řídící mechanismy datové perzistence údajů + knihovní, systémové ASWI 2006/2007 - Návrh implementace 22

Hraniční třídy Obsahují funkčnost přímo závislou na okolí dialog s uživateli komunikace s externími systémy aktéři přistupují k systému pouze přes hraniční objekty Úlohy hraničních objektů prezentace / čtení informací zapouzdření externích prvků předávání dat od / k interním objektům zpracování informací, jejich uchovávání Podle toho základní atributy a metody ASWI 2006/2007 - Návrh implementace 23

Hledání hraničních tříd Objekty zřejmé z popisu rozhraní v PU specifikace požadavků, znalost systému odraz v prototypu (možno přímo převzít) Alespoň jeden H objekt pro každého aktéra nemusí platit pro abstraktní aktéry Rozbor případů použití vyznačit místa s rozhraním na systém H objekt obsahuje primárně funkčnost závislou na podobě rozhraní (ne zpracování) Obvykle kombinace konsolidace výsledků ASWI 2006/2007 - Návrh implementace 24

Datové (entitní) třídy Zapouzdřují informace uchovávané delší dobu typicky přežívají mezi případy použití Atributy uchovávaná informace, jednoduché i strukturované Metody» samostatně zpracovávaná data separátní objekty funkčnost svázaná s přístupem k informacím životní cyklus objektu, přístup k datům, zpracování dat, složitější přímo související analýzy apod. ASWI 2006/2007 - Návrh implementace 25

Hledání datových objektů Zřejmé z výsledků analýzy často doménové objekty data vstupující do systému Rozbor případů použití vyznačit data používaná při zpracování vyhledat přímo svázané operace zapouzdřit do objektů Úpravy separovat společné vlastnosti dědičnost Realizace v SQL/RDBMS až později ASWI 2006/2007 - Návrh implementace 26

Řídící třídy Řízení aplikace stavové přechody, mechanismy (business rules) funkčnost, která se může změnit nezávisle na datech některé nelze nebo není dobré svázat s hraničními / datovými třídami komplexní kontroly nebo zpracování koordinace více objektů jejich vyčlenění do specielních tříd Vlastnosti řídících tříd obvykle jen pro daný případ použití obvykle poměrně malé, těžiště v několika metodách ASWI 2006/2007 - Návrh implementace 27

Hledání řídících objektů Typicky v rozborech případů použití transakční operace izolování hraničních a datových objektů zajištění komunikace mezi objekty Technika pro začátek jeden případ použití jeden řídící objekt hledat typické chování, přiřadit řídícímu objektu více různých vyrobit potřebné další řídící objekty typické chování nenalezeno řídící objekt zbytečný ASWI 2006/2007 - Návrh implementace 28

Systémové a knihovní třídy Realizace nízkoúrovňových úloh komunikace soubory zobrazování Cíl: reuse (využití již hotového) znalost knihoven namapování hraničních, případně datových tříd ASWI 2006/2007 - Návrh implementace 29

Úvaha o strategiích alokace řízení Hraniční datové řídící objekty každý může obsahovat řídící mechanismy Cíl: minimalizace dopadu, lokalita změn uživatelské / systémové rozhraní reprezentace a předávání informace malá změna požadavků lokální změna implementace Druhy aplikací podle typu řízení výpočetní a řídící systémy, dialogové, kombinované vyvážené ASWI 2006/2007 - Návrh implementace 30

Získávání detailů pro návrh

Metody tříd Cíl: interní funkčnost jednoznačně odvozená od požadované vnější trasovatelnost požadavků (údržba!) Rozbor případů použití zodpovědnost metoda návrh, implementace rozvíjí logický objektový model» jakmile je dost informací (může potřebovat 0..3 iterace)» obvykle Z:M = 1:N ASWI 2006/2007 - Návrh implementace 32

Mechanismy spolupráce tříd Mechanismy = spolupráce více tříd na realizaci funkčnosti ideální stav: zobecnitelné Rámují jednotlivé zodpovědnosti rozbor scénáře případu užití správně identifikovat spouštěcí událost návrh postupu předávání zpráv (zodpovědnosti) využití návrhových vzorů (Listener, Strategy, ) ASWI 2006/2007 - Návrh implementace 33

Vztah PU metody Scénář jednoho PU Realizace případu užití popisuje konkrétní interakci instancí mechanismy generuje metody jejich tříd Soubor scénářů vytváří celkový souhrn chování třídy při vhodném výběru její úlohu rozhraní Výsledek: tvorba/doplňování objektového modelu algoritmy, třídy, metody, parametry ASWI 2006/2007 - Návrh implementace 34

Stavové modely objektů Přechody mezi stavy na základě volání metod podmíněné částmi interního stavu Objekty řízené podněty nezávislost na stavu: volání metod v libovolném pořadí časté pro datové objekty Objekty řízené stavem stav určuje možná volání: pořadí metod tvoří protokol přechody mezi stavy chráněné podmínkami časté pro řídící objekty ASWI 2006/2007 - Návrh implementace 35

Souvislost analýzy struktury a dynamických aspektů Iterativnost = základní vlastnost objektové analýzy a návrhu Objekty pro případy užití jednotnost pojmů jména tříd v popisu instance ve scénářích Případy užití pro objekty nalezení tříd odvození metod definice mechanismů ASWI 2006/2007 - Návrh implementace 36

Nutnost konsolidovat model Z analýzy scénářů pohled na jednu roli třídy některé metody třídy ze souboru scénářů všechny metody třídy potřebné pro realizaci jednotlivých případů použití Výsledek: nekonzistence rozhraní názvy metod, syntaxe volání duplikáty, podobnosti, rozpory v sémantice příčiny: různé scénáře, různí autoři ASWI 2006/2007 - Návrh implementace 37

Úpravy vnitřku tříd Konsolidace syntaxe a sémantiky tříd komplementarita metod (Create Destroy) znalost domény a implementace další atributy a metody snaha o minimalitu, reuse viditelnost vlastností (public, private) Následné zpětné úpravy scénářů ASWI 2006/2007 - Návrh implementace 38

Úpravy celkového chování třídy Role třídy (zodpovědnosti, mechanismy) sady metod, rozhraní diagram tříd, komponent, kompozitů Postup implementačního mechanismu pořadí volání metod, protokol entity s životní cyklem, řídící objekty, akční členy, obvykle stavové modely Dohromady kontrakt třídy důležitá součást specifikace návrhu ASWI 2006/2007 - Návrh implementace 39

Úpravy vztahů a modelu Úpravy objektového modelu vyhledání opakujících se prvků rodičovské třídy vyjasnění vztahů (asociace agregace, c-s, ) nové řídící objekty, nové vztahy mezi třídami ASWI 2006/2007 - Návrh implementace 40

Vzory řešení standardních problémů

Návrhové vzory pro řešení standardních problémů Cíl: rozvinout esenciální model tříd z analýzy systematický přístup k řešení Základní prostředky návrhářská / programátorská zkušenost návrhové vzory GoF patterns, J2EE patterns, jazykové idiomy, jmenné konvence ASWI 2006/2007 - Návrh implementace 42

Multiobjekty, kompozity Cíl: implementovat násobné vazby pracovat se složenými objekty Kolekce flexibilní implementace 1:N vazby přistupovat přes interface, implementační třída dle výkonnosti Composite objekt s (rekurzivní) heterogenní strukturou práce s kompozitem stejná jako s jeho prvky ASWI 2006/2007 - Návrh implementace 43

Tvorba instancí Cíl řízené vytváření instancí (oproti new operátoru) flexibilita Factory vytváří instance jiných tříd obecné rozhraní, konkrétní implementace polymorfní new Factory method getinstance() na třídě zabraňuje vytvářet objekty kýmkoli ASWI 2006/2007 - Návrh implementace 44

Komunikace mezi subsystémy Cíl: zapouzdřit implementaci, poskytnout rozhraní Fasáda jedna třída / rozhraní pro subsystém deleguje na implementační objekty Singleton (Jedináček) globální objekt v čistě objektové implementaci sdílená data, nastavení ASWI 2006/2007 - Návrh implementace 45

Přenos dat mezi MVC objekty Cíl: odstínit vrstvy od implementačně závislých věcí Hraniční řídící asociativní pole value object, Transfer Object, JavaBean jazykový / jmenný idiom Front Controller, Application Controller separování správy událostí a řízení aplikace Session Facade sloučení business logiky do větších celků pro klienty ASWI 2006/2007 - Návrh implementace 46

Přenos dat mezi MVC objekty (2) Řídící datové Business Object reprezentace doménové třídy v implementaci Data Access Object (+ Transfer Object) Factory pro value object odstínění aplikace od databázové vrstvy vzor Observer / Listener reakce na změny dat v jiných částech aplikace ASWI 2006/2007 - Návrh implementace 47

Přístup k externím prvkům Cíl: odstínit business logiku od nízkoúrovňových protokolů zamezit propagaci změn v prostředí Metoda: zapouzdřit do rozhraní Adapter přizpůsobení rozhraní prostředí pro aplikaci mapování dat Proxy přístup ke vzdáleným zařízením / objektům lokální cache, pozdní zápis ASWI 2006/2007 - Návrh implementace 48

Rekapitulace

Návrh: rekapitulace Známe (skoro) všechny detaily implementace rozpracovaná funkčnost vazba na konkrétní technologie vyřešený způsob komunikace na okolní prostředí» zejména způsob uložení persistentních dat struktura aplikace a rozhraní mezi částmi používané konvence a návrhové vzory Co dál naprogramovat co zbývá otestovat, opravit naučte se programovat do rozhraní ASWI 2006/2007 - Návrh implementace 50