Development with Genova

30
Development with Genova Model driven development of user interfaces and services with Genova

description

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. Who am I?. Knut Sagli, senior consultant in Esito - PowerPoint PPT Presentation

Transcript of Development with Genova

Page 1: Development with Genova

Development with GenovaModel driven development of user

interfaces and services with Genova

Page 2: Development with Genova

Contents Esito and I A development model Genova’s models Showing a generated system Genova’s template language and targets Questions

2

Page 3: Development with Genova

Who am I? Knut Sagli, senior consultant in

Esito Contribute as an architect to

Genova frameworks

3

Page 4: Development with Genova

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

Esito

4

Page 5: Development with Genova

Systemator 2.1

Esito history

Genova 6.1

Genova 7

2009: G 8.5 jVine/Jouteur

2009: Genova 8.3 XML2006: G 8.1

Service designer

2005: Esito2004: Genova 8 new

IDE2000: Genova 7

w/Sysdul1998: Genova 61997: Genera1996: Windows NT, SOV/SOL1995: Systemator 51992: GUI1989: Unix80s: NSB, TAD1980: Sysdeco70s: Research

Systemator 4Systemator 6.2

Genova 8Genova 8.1

Genova 8.3

Genova 8.5

5

Page 6: Development with Genova

Customers

6

Page 7: Development with Genova

What Genova is 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

Applicationcomponents

Prototyping

Generate

ModelingLanguages & Techniques

Applicationdatabase

RationalRose

IterateEnterpriseArchitect

Genova

7

Page 8: Development with Genova

Generated modelsact Reserv asjon

Ønske om reservasjon

Finn hotell

Velg romkategori

Opprett kunde

Opprettreserv asjon

Reservert romMislykket reservasjon

[Ingen tilgjengelige rom]

[Ful lt hotell]

[Ful lt i romkategori ]

[Ti lgjengel ig rom]

[Eksisterende kunde][Ny kunde]

Client

Cont

rolle

r

Hooks

Actions Services

Hooks

Service

ORM

appi

ng

Pers

isten

ce

Data access

Domain model

View

Data

base

uc Hotellv edlikehold

dialog::VisRomov ersikt

dialog::VisHotell

dialog::FinnRomkategoriAnsatt

(from Aktører)

Finn romkategori

Vis alle hoteller i kjede

Vis romov ersikt

for hotell

class Reserv asjon

«Class»Reserv asjon

«Attribute»- fradato: Date- id: int- ti ldato: Date

«Class»hotell::Hotell

«Attribute»- id: int- logo: String- navn: String- sted: String

«Class»hotell::Romkategori

«Attribute»- antallSoveplasser: int- id: int- romkvalitet: ERomkvalitet- sengtype: ESengtype- storkunderabatt: int- utgangspris: int

«Group»- RomKatMain

«Class»kunde::Kunde

«Attribute»- epost: String- kundenr: int- navn: String- telefonnr: String

-kunde 1

-reservasjoner 0..* 0..*-romkategori

1

0..*

-hotell

1

Genova

Written code

Generated code8

Page 9: Development with Genova

Systems made from models 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

9

Page 10: Development with Genova

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

Page 11: Development with Genova

Genova elements Synchronizing with Enterprise

Architect or Rational Rose Domain Designer Service Designer Dialog Designer Generators

Dialog Designer

Domain DesignerService Designer

11

Page 12: Development with Genova

Genova’s models

UI Designer

Object selection

Service Designer Domain Designer

UI template

UI model

Domain model

Database model

Domain classes

Object-Relation-Mapping

CRUD

Database

Genova Genova Genova

XML

Jouteur

12

Page 13: Development with Genova

Outlined development modelUse case model

Scenarios

Domain model

Dialog model

User interface prototype

Style guideNavigation model

13

Page 14: Development with Genova

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

Page 15: Development with Genova

Application architecture - JavaGenerated by GenovaGenova framework3. party framework

Written code

ViewController

SpringServiceProxy

HooksActions ServiceProxy

Logic/Actions/Hooks

WS/EJB/PojoDo

mai

n m

odel

Service interface

Hibernate

Database

ORmapping

Persistence

Serv

iceSe

rvice

Serv

ice HooksDo

mai

n m

odel

15

Page 16: Development with Genova

Unit test architecture of Jouteur

Test viewController

Dom

ain

mod

el

Data sourceService mock

HooksActions

Test

env

ironm

ent

Test datafiles

Unit tests Generated by GenovaHand-written code

Test tools provided by Genova

16

Page 17: Development with Genova

Making a dialog model

17

Page 18: Development with Genova

Resources High level resources

encompass the lower level resources

The style guide is a template for dialog model generation

Changes to the template propagate throughout the dialog model

FontColor

LayoutStyle

TemplateDialog style guide

18

Page 19: Development with Genova

Swing: Generated dialog code

19

Page 20: Development with Genova

ICEfaces : Generated view code

class Generated v iew code

<DialogName>Const

«interface»DialogView

<DialogName>DefaultView

<DialogName>View

«interface»ViewModel

FacesDialogBean

<DialogName>DefaultBean

<DialogName>Bean

«interface»ApplicationView

FacesApplicationBean

JSF managed property

AbstractDialogView

FacesDialogView

ListRow

<ListblockName>ListRow

*

20

Page 21: Development with Genova

ICEfaces : Generated controller code

class Generated controller code

ApplicationController

<ObjectSelectionName>Const

DialogController

<DialogName>DefaultController

<DialogName>Controller

«interface»OSRole

<RoleName>Role

*

*

21

Page 22: Development with Genova

Generated service code

22

Page 23: Development with Genova

Architechture

Dialog Designer

Service Designer

Domain Designer

JFC/swing

Java/EJB

Hibernate

Hibernatexml

Java

Java/EJB

Templates Generated code

Dialog ModelStyleguide

Object Selection

Domain ModelDatabase Model Oracle.sql

Oracle

Genova

23

Page 24: Development with Genova

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 Java/EJB Java2XML Sysdul Sysdul2XML Jouteur

Domain Designer Java Jouteur

Data Access Hibernate Genova Data Objects Div EJB2 versjoner XmlSchema Sysdul

Database Oracle Sybase SQLserver MySQL Derby Mimer XMLSchema

24

Page 25: Development with Genova

Generation

Generator

Models

Template set

Code

26

Page 26: Development with Genova

Template example%FILE% data.txt %ITERATE:DialogM

odel% 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

Page 27: Development with Genova

Documentation Genova menu: Help/Documentation

Template Parser – describes the language

Code generators – describes the iterations and substitution variables

Dialog Generator Service Generator Domain Generator Database Generator

Installed in %GENOVA8_HOME%\doc

28

Page 28: Development with Genova

The template language Sections Directives Substitution variables and template

parameters Expressions/operators Text functions Macros Generator setup

29

Page 29: Development with Genova

Genova in Eclipse

30

Page 30: Development with Genova

Questions Everything clear? Summer job?

Working on templates

31