Development with Genova Model driven development of user interfaces and services with Genova Contents Esito and I A development model Genova’s models Showing a generated system Genova’s template language and targets Questions 2 Who am I? Knut Sagli, senior consultant in Esito Contribute as an architect to Genova frameworks 3 Esito Esito shall give their customers better quality and lower cost during their applications life spans from development through maintenance to EOL Support model driven development Make the best code generators 4 Esito history Genova 8.5 Genova 8.3 Genova 6.1 Genova 8.1 Genova 8 Genova 7 5 Systemator 6.2 Systemator 4 Systemator 2.1 2009: G 8.5 jVine/Jouteur 2009: Genova 8.3 XML 2006: G 8.1 Service designer 2005: Esito 2004: Genova 8 new IDE 2000: Genova 7 w/Sysdul 1998: Genova 6 1997: Genera 1996: Windows NT, SOV/SOL 1995: Systemator 5 1992: GUI 1989: Unix 80s: NSB, TAD 1980: Sysdeco 70s: Research Customers 6 What Genova is 7 Genova is a tool for modeling and generating data intensive systems that plan to have a long life through maintenance Genova adds value in all phases of the development life cycle Modeling Languages & Techniques Prototyping Rational Rose Genova Modeling Iterate Enterprise Architect Application components Generate Application database Generated models uc Hotellv edlikehold act Reserv asj on Finn romkategori Ønske om reservasjon class Reserv asj on (from Aktører) Finn hotell «Class» hotell::Hotell «Class» Reserv asj on [Fullt hotell] «Attribute» Velg romkategori - fradato: Date 0..* - id: int - tildato: Date [Fullt i romkategori] dialog:: FinnRomkategori Ansatt -reservasjoner -kunde -hotell «Attribute» 1 - id: int - logo: String - navn: String - sted: String 0..* -romkategori 0..* 1 «Class» hotell::Romkategori 1 [Tilgjengelig rom] «Class» Opprett kunde kunde::Kunde [Ny kunde] [Ingen tilgjengelige rom] [Eksisterende kunde] «Attribute» - epost: String kundenr: int Opprett reserv asj on - navn: String - telefonnr: String Vis alle hoteller i kj ede dialog:: VisHotell Vis romov ersikt for hotell dialog:: VisRomov ersikt «Attribute» - antallSoveplasser: int - id: int - romkvalitet: ERomkvalitet - sengtype: ESengtype - storkunderabatt: int - utgangspris: int «Group» - RomKatMain Genova Mislykket reservasjon Reservert rom Hooks Services Actions Domain model Database Hooks ORMapping 8 Controller View Data access Persistence Service Client Generated code Written code Systems made from models 9 Iteratively developed systems where models are the source of program execution Models are great for communication and document the system at the same time Generate all framework and plumbing code with high level of quality Survive paradigm changes Data intensive systems Data intensive systems operate on the domain data Typically company expert systems Presenting and storing data are the main jobs Administers business rules 10 Genova elements Synchronizing with Enterprise Architect or Rational Rose Domain Designer Service Designer Dialog Designer Generators 11 Dialog Designer Service Designer Domain Designer Genova’s models Genova UI Designer UI template Genova Service Designer Object selection Genova Domain Designer Domain model Database model UI model Domain classes Database XML CRUD 12 Jouteur Object-RelationMapping Outlined development model Use case model Scenarios Navigation model Domain model Style guide Dialog model User interface prototype 13 A short demo of Genova Showing tools and interaction Generating from an existing workspace Making a dialog from scratch Generating the newly created dialog Running the application 14 Application architecture - Java Generated by Genova 3. party framework Written code Domain model Genova framework View Controller Actions Hooks Logic/Actions/ Hooks ServiceProxy ServiceProxy Spring 15 Service Service Service Domain model Service interface Hooks WS/EJB/Pojo Persistence Hibernate OR mapping Database Unit test architecture of Jouteur Unit tests Controller Actions Hooks Service mock Data source Test data files Test environment Domain model Test view Generated by Genova Hand-written code Test tools provided by Genova 16 Making a dialog model 17 Resources 18 High level resources encompass the lower Dialog style guide level resources Template The style guide is a template for dialog Style Layout model generation Color Font Changes to the template propagate throughout the dialog model Swing: Generated dialog code 19 ICEfaces : Generated view code class Generated v iew code «interface» ApplicationView «interface» DialogView «interface» View Model * FacesApplicationBean JSF managed property ListRow AbstractDialogView FacesDialogView FacesDialogBean <DialogName>Const <DialogName>DefaultBean <ListblockName>ListRow <DialogName>DefaultView 20 <DialogName>Bean <DialogName>View ICEfaces : Generated controller code class Generated controller code ApplicationController * «interface» OSRole DialogController * <Obj ectSelectionName>Const <DialogName>DefaultController 21 <DialogName>Controller <RoleName>Role Generated service code 22 Architechture Dialog Designer Java Dialog Model Styleguide JFC/swing Service Designer Java/EJB Object Selection Java/EJB Domain Designer Hibernate Domain Model Database Model Hibernate xml Oracle.sql Oracle 23 Templates Genova Generated code Many different targets Dialog Designer Dialog Report Java/JFC (Swing) Jasper Report C++/MFC Visual Basic Web/Asp Web/Jsp Sysdul/ddf Java/ICEfaces (JSF) Jouteur Service Designer 24 Java/EJB Java2XML Sysdul Sysdul2XML Jouteur Domain Designer Data Access Java Jouteur Hibernate Genova Data Objects Div EJB2 versjoner XmlSchema Sysdul Database Oracle Sybase SQLserver MySQL Derby Mimer XMLSchema Generation Models Generator 26 Template set Code Template example %FILE% data.txt %ITERATE:DialogModel% Dialog: %Name% %ENDITERATE% %ENDFILE% Using the dialog generator The template prints out the name of all dialogs in the application to the specified file, "data.txt“ Directives: %FILE%, %ENDFILE% %ITERATE%, %ENDITERATE% Substitutions: %Name% Text: “Dialog: “ 27 Documentation Genova menu: Help/Documentation Template Parser – describes the language Code generators – describes the iterations and substitution variables 28 Dialog Generator Service Generator Domain Generator Database Generator Installed in %GENOVA8_HOME%\doc The template language 29 Sections Directives Substitution variables and template parameters Expressions/operators Text functions Macros Generator setup Genova in Eclipse 30 Questions Everything clear? Summer job? Working on templates 31