Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Architektura, design, konstrukce 4. cvičení, A4M33SEP Martin Hasaj

Podobné prezentace


Prezentace na téma: "Architektura, design, konstrukce 4. cvičení, A4M33SEP Martin Hasaj"— Transkript prezentace:

1 Architektura, design, konstrukce 4. cvičení, A4M33SEP Martin Hasaj

2 Program o Úvod –Připomenutí – poslat téma zápočtové práce. o Architektura, Design –Architektura webové aplikace –Design patterns –IoC, AOP … o Konstrukce –Kuchařky, dočasná řešení … o Když zbude čas –Integrace a integrační styly

3 Jak se pozná dobrá architektura

4 Dobrá architektura o Dokáže pojmout nové požadavky o Systém je udržovatelný i po letech v provozu o Není zbytečně komplexní –Je pochopitelná –Je implementovatelná –Je zdokumentovaná :-)

5 Realita o organizace mají typicky stovky aplikací –na každou věc je jedna „nejlepší“ aplikace –různé technologie a dodavatelé aplikací o Conway’s law: “Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”

6 Architektura vs. Design o Zjednodušeně: –Architektura – high-level –Design – detailní Fowler: „Architecture is about the important stuff. Whatever that is …“

7 Architektura, Design o Úroveň: –vývoj jednotlivé aplikace objektově orientované programování design patterns (architektonické) a jejich reálné použití na projektu –integrace aplikací

8 Dobrá rada o Neobjevujte kolo !!!

9 Architektura WEB aplikace Jednoduchá Flexibilní Rozšířitelná Nevýhody: Převolávání vrstev

10 Architektura WEB - složitost o Je vůbec taková složitost potřeba? –Není –Ale rozhodnutí musí být činěno při znalosti důsledků Např. obtížnější rozvoj. o V naprosté většině případů se vyplatí „udělat to pořádně“ –Člověk nikdy neví, co život přinese. o U větších aplikací bývá architektura složitější.

11 Složitější architektura Data Interface DB cluster Terénní pracovníci DispečeřiAdministrátor Autentizační systém Autentizační systém Externí systém Externí systém Externí systém

12 OOP a Design Patterns o objektově orientované programování a design patterns –pokud chci rozumět DP, musím chápat OOP polymorfismus concrete inheritance abstract inheritance interface abstract class overriding delegation composition

13 Design Patterns o návrhové vzory od GoF* ve dvou větách –Program to an interface, not an implementation. –Favor object composition over class inheritance. *) GoF = Gang of Four – viz

14 Design Patterns o kdy má smysl zabývat se návrhovými vzory –člověk zná, rozumí a aktivně používá základy OOP –člověk zná, rozumí a aktivně používá základní triky lowlewel OO Designu (na bázi polymorfismus, interface,overriding) –člověk chápe jaké problémy musí věcně při designu řešit (dekomponovat systém, poskládat systém,...) –člověku nejsou cizí úvahy o předmětu dekompozice –člověk už něco navrh, naprogramoval, opravoval,modifikoval rozvíjel –a HLAVNĚ zpětně prostudoval, pochopil,diskutoval, redesignoval –člověk zjistí, že chápe jaké problémy, proč a jak GoF řeší; –člověk zjistí, že spoustu věcí udělal nějak podobně

15 Vztah lidí k Design Patterns o lidé, kteří znají základy OO a intuitivně od přírody navrhují elegantně, mají dar pro design; –DP padnou na úrodnou půdu, ale řeknou "no jasně" o lidé, kteří po delší či kratší cestě na 1 až n pokusů tomu přijdou na chuť o lidé, kteří přečtou všechny knihy, moc se jim to líbí, nikdy ale elegantně sami nenavrhnou nic co má víc než 5 programů

16 Příklad Desgin Patternu o Návrhový vzor GenericDAO –Oddělení kódu pracujícího s databází (ideálně prostřednictvím ORM) do samostatné vrstvy –Pro každý doménový objekt jeden interface a jeho implementace

17 GenericDAO o GenericDAO –Implementace základních metod –Ideální pokud máme k dispozici generické typy (Java 1.5) o IGenericDAO –Metody společné pro všechny DAO –Typicky obsahuje CRUD operace

18 AOP o Jen další TLA? Buzzword? –Nikoliv. AOP je překvapivě užitečný koncept o AOP = Aspect Oriented Programming o Využití –Logování –Transakce –A mnoho dalšího o Loose code coupling

19 Příklad SPRING

20 IOC aka DI o Další TLA o IoC = Inversion of Control o DI = Dependency Injection o Závislosti definujeme deklarativně o Výhody –Flexibilita –Snadnost změn o Spring, Google Juice, EJB 3, …

21 Čistota, půl parameters = "platnost", type = parameters = "platnost", type = parameters = "platnost", type = parameters = "platnost", type = "date")) = "c_pojisteni") public class CPojisteni extends Konfigurace = FetchType.LAZY, mappedBy = = = = "CPojisteni_policka", condition = = CacheConcurrencyStrategy.READ_ONLY) private SortedSet policka; … }

22 Konstrukce

23 Obsah o Úvod o statická analýza kódu o konvence pro psaní kódu o kuchařky o dočasná řešení

24 Příklad, najdi chybu … Connection con; try { con = getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmd.executeQuery("SELECT jmeno, prijmeni " + "FROM osoby"); while (rs.next()) { Osoba osoba = new Osoba(); osoba.setJmeno( rs.getString("jmeno") ); osoba.setPrijmeni(rs.getString(" prijmeni ") ); osoby.add(osoba); } } catch (Exception e) { … } finally { con.close(); }

25 Překvapivá pointa Connection con; try { con = getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmd.executeQuery("SELECT jmeno, prijmeni " + "FROM osoby"); while (rs.next()) { Osoba osoba = new Osoba(); osoba.setJmeno( rs.getString("jmeno") ); osoba.setPrijmeni(rs.getString(" prijmeni ") ); osoby.add(osoba); } } catch (Exception e) { … } finally { con.close(); } Chybou je boilerplate kód

26 Programovat umíme o Ale důležitá je kvalita –Modularizace –Dodržování konvencí –Komentování … o Jak se zlepšovat –Čtení cizího kódu –Code revisions –Čtení chytrých knížek –Open source contribution

27 Konstrukce o konvence pro psaní kódu –pro Java Sun Code Convention CodeConventions.pdfCodeConventions.pdf Naše sepsané po X revizích kódu –Java Profinit_JavaPrgTechniques.docProfinit_JavaPrgTechniques.doc –DBS Profinit_DbsPrgTechniques.docProfinit_DbsPrgTechniques.doc

28 Konstrukce o kuchařky –v designu jsme vymysleli, že to budeme dělat takhle víme, proč to tak děláme víme, že to má nevýhody ale budeme to dělat takhle a ne jinak –udržovatelnost tedy na to napíšeme kuchařku, podle které to udělá kde kdo –příklad kuchařky pro VC Balíčků IPBPBAL_KucharkaProV&C.doc IPBPBAL_KucharkaProV&C.doc o nedělat „dočasná“ řešení –pak při dodávce koukáte, kam je co nastavené a nechápete

29 Dočasné řešení z praxe private String encPass = „ “ //TODO pouzit silnejsi heslo!!! o Nebo: try { … } catch (Exception e) { e.printStackTrace() // TODO osetrit lepe! }

30 Architektura, Design o Úroveň: –vývoj jednotlivé aplikace objektově orientované programování design patterns (architektonické) a jejich reálné použití na projektu –integrace aplikací

31 Architektura, Design o Úroveň: –vývoj jednotlivé aplikace objektově orientované programování design patterns (architektonické) a jejich reálné použití na projektu –integrace aplikací

32 SCA o statická analýza kódu –najde vám hodně chyb zcela zadarmo –puštěno po létech vývoje na aplikaci Balíčky našlo 955 chyb –příklad Comparison of String parameter using == or != Class defines equals() and uses Object.hashCode() Invocation of toString on an array Method may fail to close database resource Method ignores return value –String dateString = getHeaderField(name); dateString.trim(); –Nástroje – PMD, FindBugs

33 Cvičení o Navrhněte objektový model této učebny.

34 Otázky ???


Stáhnout ppt "Architektura, design, konstrukce 4. cvičení, A4M33SEP Martin Hasaj"

Podobné prezentace


Reklamy Google