Utvikling med Genova. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova



Like dokumenter
Utvikling med Genova. Agenda. Hvem er vi? Kursets struktur og forelesere. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Agenda. Hvem er jeg? Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Komme i gang med Genova 8

Utvikling med Genova. Esito. Agenda. Hvem er vi? Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Formål: I denne oppgaven skal du øve deg i å generere og endre GUI prototyper, samt lage database skjema på grunnlag av en UML modell.

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

Modellbasert utvikling

Persistens. Erik Arisholm. Institutt for informatikk Erik Arisholm INF1050-persistens-1

1 Kodegenerering fra Tau Suiten

Pipfrog AS Flere nettbutikker og språk

t Institutt for informatikk Erik Arisholm 13. mai 2009 INF1050-oppsummering-1

AUTOCAD Artikkelserie. Tabeller

INF1050 Systemutvikling

Kom i gang med emedia

4. Dynamisk skjemaer (GUI)

case forts. Generell interaktor Integer- interaktor Domenemodell Eksemplifisering av modellbasert tilnærming til design av brukergrensesnitt

AMS-case forts. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

MMT105 Internettprogrammering Uke 44, høst 2007

Genova810DokDomenemodell

CabinWeb BRUKERDOKUMENTASJON ET SYSTEM UTVIKLET AV DELFI DATA

GJENNOMGANG UKESOPPGAVER 4 USE CASE MODELLERING HELGA NYRUD & KRISTIN BRÆNDEN

UKE 11 UML modellering og use case. Gruppetime INF1055

Kravspesifikasjon med UML use case modellering. Erik Arisholm

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

UML 1. Use case drevet analyse og design Kirsten Ribu

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

INF5120 Oblig 1c4 - Gruppe 19

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

INF1050 Systemutvikling,

CORBA Component Model (CCM)

INF1050 Systemutvikling,

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

Kravhåndtering. Erik Arisholm. Simula Research Laboratory & Institutt for informatikk

Enkel app-programmering med JavaFX og FXML

AUTOCAD Artikkelserie. Fra Color til Named og omvendt

Spesifikasjon av Lag emne

file:///c:/users/michaelp/sites/dkdm/dw5/dreamweaver5_1.html

Integrasjon mot Active Directory i EK 2.37

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Hvordan designe en ER-modell med MS-VISIO

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

Distributed object architecture

AMS-case forts. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

DI-Blankett. Minihefte

Oppgave 1: Multiple choice (20 %)

Use case drevet design med UML

Hei verden Introduksjon Swift PDF

BRUKERDOKUMENTASJON. SMS-kommunikasjon VERSJON 1 ( )

GAB INNSYN... 1 INNSTILLINGER... 1 Database... 1 Søk... 4 GENERELT... 5 Søkeutvalg... 5 GAB menyen... 6 VIS MENYEN... 6 Generelt...

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Forelesning 1: Innledning

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

38. Utskrift - Master Layout

1. Opprette Workspace: Velg File, New Workspace. Angi Workspace name og location (hvor filene skal lagres). Trykk OK

INF1000: Forelesning 7. Konstruktører Static

NB! Endring i undervisningsplanen

Kursdokumentasjon for Dreamweaver

Bakgrunn Innlogging Brukere med tilgang Registrere infeksjoner Registrere antibiotika Registreringer...

Communicate SymWriter: R1 Lage en tavle

>>21 Datamodellering i MySQL Workbench

Beskjed fra Skagestein

Komme igang med App Inventor Introduksjon App Inventor PDF

INF1000: Forelesning 7

ADOBE ILLUSTRATOR. En introduksjon til ADOBE ILLUSTRATOR av Wictor L. Faanes TREIDER DESIGN

Omsetningsdatabasen i Fenistra Eiendom

buildingsmart Norge Guiden

SymWriter: R6 Innstillinger, preferanser og verktøylinjer

5. Brukerveiledning. Experior - rich test editor for FitNesse -

Datamodellering og databaser SQL, del 2

AMS-case. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

Brukerveiledning for SMS fra Outlook

Produktrapport Gruppe 9

Manual for innlegging av spesielt sideinnhold via «backend»

Løsningsforslag matoppskrifter modellering

Model Driven Architecture (MDA) Interpretasjon og kritikk

CORBA Objektmodell (Java RMI)

Dokumentstyring og Maler

HØGSKOLEN I SØR-TRØNDELAG

Use Case-modellering. INF1050: Gjennomgang, uke 04

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

Overvåkning av Telenors Mobile internettportal

MPEG-7. Problemstilling:

UNIVERSITETET I OSLO

Innhold. Innledning Del 1 En vei mot målet

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Fakturabehandling på web

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Eksamen. Objektorientert Programmering IGR 1372

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 12. februar 2019

Åsveien 9, 3475 Sætre Telefon: Mobiltelefon: Faks: E-post:

8 - Rapporter i M-STAS

Manual for bruk av Priseditor

Oppsett «Visma Contacts»

Bachelorprosjekt 2015

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise IMT2243 : Systemutvikling 1

Oppsummering. Thomas Lohne Aanes Thomas Amble

SolidPlant er perfekt for deg som jobber med design av rørsystemer og anlegg, og er kjent med SolidWorks.

Transkript:

Utvikling med Genova Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova 1

Kursets struktur og forelesere Systemutvikling som helhet 1. Systemutvikling: motivasjon... Jo Hannay, Simula & Ifi 2. Systemutviklingsprosessen... Rune Steinberg, Visma Software AS 3. Prosjektledelse og prosjektarbeid... Rune Steinberg, Visma Software AS Kunde/leverandør/bruker-forholdx 4. Kravhåndtering. Erik Arisholm, Simula & Ifi 5. Avtaler & kontrakter... Jørgen Petersen, Promis AS 6. Estimering...... Stein Grimstad, Simula 15. Oppsummering & eksamenstips Erik Arisholm 16. Faglig sosial ettermiddag... Foreleserne og dere! Detaljert undervisingsplan: uio.no/studier/emner/matnat/ifi/inf1050/v09/undervisningsplan.xml 7. Jus & etikk...... Dag W. Schartum, Senter for Rettsinformatikk x Koding, validering og vedlikehold Systemets struktur og design 8. Modellering av krav med use cases Erik Arisholm, Simula & Ifi 9. Objektorientert analyse (2 forel.)... Erik Arisholm, Simula & Ifi 10. Persistens og databaser Erik Arisholm, Simula & Ifi 11. Arkitektur.... Dag Lorås, Visma Software AS 12. Modellbasert utvikling med Genova Esito AS 13. Validering og verifisering (2 forel.)... Lionel Briand, Simula & Ifi 14. Konfigurasjonsstyring.. Hans Christian Benestad, Simula 2

Agenda Hvem er vi? Utviklingsmodell for Genova Kort demonstrasjon av generert system Gjennomgang g av Genovas byggeklosser Rose og Genova Objektseleksjoner i Genova Dialogdesign i Genova Ressursdatabasen på overflaten Produksjon av en ny dialog fra modell til prototype 3

Hvem er vi? Christian Herzog, seniorkonsulent i Esito Knut Sagli, sjefskonsulent i Esito Esito utvikler verktøy og leverer spisskompetanse i prosjekter 4

Esito Esito skal gi kundene lavere kostnader og bedre kvalitet i utvikling og vedlikehold av sine applikasjoner Støtte modelldrevet utvikling (MDU) Lage de beste kodegeneratorer 5 5

Genova tilbyr [Fullt hotell] [Fullt i romkategori] Ønske om reservasjon Finn hotell Velg romkategori «Class» Reservasjon «Attribute» - fradato: Date - id: int - tildato: Date 0..* -reservasjoner 0..* 0..* -romkategori -kunde 1 «Class» kunde::kunde «Attribute» - epost: String Ansatt (from Aktører) «Class» hotell::hotell -hotell «Attribute» 1 - id: int - logo: String - navn: String - sted: String Genova 1 «Class» hotell::romkategori «Attribute» - antallsoveplasser: int - id: int - romkvalitet: ERomkvalitet - sengtype: ESengtype t k d b tt i t Finn romkategori Vis alle hoteller i kjede Vis romov ersikt for hotell dialog:: FinnRomkategori dialog:: VisHotell dialog:: VisRomoversikt Client Service Data access Controller rhooks View Hooks Services Actions Persistence e ORMapping Database Generated code Written code Domain model 6

Genova fra oven Genova Genova Genova UI Designer Service Designer Domain Designer UI mal Modellutsnitt Domenemodell UI-modell Databasemodell Database Servicelogikk Domeneklasser Objekt-Relasjons- Mapping 7

Genova og metode Use case modell Scenarier Navigasjonsmodell Domenemodell Styleguide Dialogmodell Dialogmal Brukergrensesnitt prototype 8

Vi lager et lite system UML-modell Navigasjonsmodell Genova Workspace Synkronisering Setup Ressurser Objektseleksjon Dialogmodell Generering og kjørende kode 9

Detaljert gjennomgang Rose og Genova Objektseleksjoner i Genova Dialogdesign i Genova Ressursdatabasen Kort om kodegenerering 10

Rose og Genova 11

Domenemodellen Domenemodellen lages i Rose og hentes så inn i Genova via NB! Det er ikke mulig å endre domenemodellen i Genova. Endringer gjøres i Rose og synkroniseres inn. 12

Navigasjonsmodellen Navigasjonsmodellen lages i Rose og hentes så inn i Genova via NB! Det er ikke mulig å endre domenemodellen i Genova. Endringer gjøres i Rose og synkroniseres inn. 13

Genova UI-dialogen i Rose - UserInterface Denne teksten blir brukt som standard ledetekst i Genova. For å sikre konsistens mellom forskjellige dialoger bør derfor ledetekster t endres i Rose og ikke i Genova direkte. 14

Genova DB-dialogen i Rose - DataBase Når man skal lage en database, må man angi databaseorienterte verdier som Primary Key, Unique, Not Null osv. For assosiasjoner kan man angi fremmednøkler. 15

Objektseleksjoner (OS) i Genova 16

Lage en objektseleksjon j (OS) En objektseleksjon er et utsnitt av klassemodellen. Den kan inneholde flere røtter. Den første roten skal imidlertid være den primære roten. På bakgrunn av objektseleksjonen Ny objektseleksjon fra kan vi generere kode som gir oss kontekstsensitiv meny et sett av tjenester (bl.a. CRUD tjenester). Ved synkronisering mot Rose lages det automatisk tomme OS er for hver dialog angitt i navigasjonsmodellen. 17

Lage en objektseleksjon (OS) Man må velge målmiljø for en objektseleksjon. Kontekstsensitiv meny gir deg muligheten for å utvide utsnittet av klassemodellen som objektseleksjonen representerer. Ekskluder uønskede attributter fra objektseleksjonen 18

Lage en objektseleksjon (OS) Dobbeltklikk på rollen gir deg egenskapsdialogen til rollen. (Også tilgjengelig via kontekstsensitiv meny) Gir mulighet for å endre navn. Inneholder også nyttig informasjon om rollen Generelt i Genova så gir både kontekstsensitiv meny og dobbeltklikk komponentens egenskapsdialog. 19

Dialogdesign i Genova 20

Lage en dialog En dialogmodell er bygget på en objektseleksjon En dialogmodell er et tre bestående av dialogkomponenter Ved synkronisering mot Rose lages det automatisk tomme dialoger for hver dialog angitt i navigasjonsmodellen 21

Lage en dialog Første gang g en dialog åpnes må følgende velges Informasjonsinnhold Skal være objektseleksjonen med navn lik dialognavn_os. Regler for generering Målmiljø for kodegenerering Vindustype 3 typer: Application window, (Kan endres i ettertid om ønskelig) Document window, DialogBox 22

Lage en dialog 1 2 23 3 3 Jav a kod e

Setting og endring av ledetekster 1. Genova UI.Title i Rose 2. Tekstfelt.Title 3. Tekstfelt.Label.Title Høyeste prioritet å foretrekke 24

Flytting av elementer og angring Ta tak i elementet og trekk det dit du ønsker. Det røde punktet angir hvor det havner. Få elementet i riktig blokk. Dessverre ingen angring. Lagre hver gang du er sikker/fornøyd så langt og lukk dialogen (uten å lagre) når du beveger deg bort fra ønsket resultat. 25

Dialogkomponenter - Generelt Merk: General arkivkortet varierer mhp. komponent, men for de fleste gjelder følgende Navn på dialogelementer, navnestruktur kan settes i Style guide Hver enkeltkomponent er tilordnet en template og style. Container-elementer er i tillegg tilordnet en layout via: Arv (fra komponenten over) eller Manuell spesifikasjon Unngå bruk av disse, bortsett fra ved skjulte blokker 26

Dialogkomponenter - Generelt Egenskaper ved de fleste dialogkomponentene Settes fortrinnsvis via overstyring av layout. I enkelttilfeller er det nødvendig å sette dette på enkeltkomponenter. (For eksempel listblokkelementer) Hvor mange kolonner komponenten skal strekke seg over. 27

Dialogkomponenter - Datafelt Komponent med knytning mot objektseleksjonen Har en av flere mulige representasjoner: Textfield Check Button Radio Group Combo Box (List, Scale, Stepper) Representasjons- avhengige egenskaper 28

Tilordning av attributt og ledetekst Viser alle attributter i objektseleksjonen som enda ikke er brukt i dialogen 2. 1. 29

Ressursdatabasen Layouts 30

Ressursdatabasen i korte trekk Style guide: Når en dialog åpnes for første gang genereres det automatisk en dialogmodell. Datafeltene i denne dialogen baseres på den valgte objektseleksjonen. Den visuelle representasjonen av disse dataene baseres på den valgte style guiden. Template: Navngitt kombinasjon av Style og Layout per komponenttype. Style: Layout: Navngitt kombinasjon av for- og bakgrunns- farge, font, rammetype og størrelse. Navngitt kombinasjon av parametere for utlegg (posisjonering) av komponenter Colors, Fonts og Images angir henholdsvis farge, font og bilder. NB! Ikke noe vi skal endre. Vi skal kun bruke ressursene. 31

Layout generelt En layout gjelder kun for direkte barn av en container. (Den arves ikke nedover i treet. Ønsker man en arvet layout endring må man overstyre hvilken template som brukes.) Layouten satt i Kode2FeltBlokk gjelder kun for de markerte komponentene En blokk i en annen blokk regnes som enkeltkomponent,,på lik linje med f.eks. tekstfelt, med hensyn på ledetekstplassering, utstrekning, justering, osv 32

Layoutressurser Navnet på layoutene er bygget opp slik: DirectionNAlignFlex[No]Border [...] = valgfritt Border = Konstant Direction, N, Align, Flex = variable Vi skal nå se på den visuelle betydningen av disse konstantene og variablene. 33

Layoutressurser DirectionNAlignFlex[No]Border d Direction Line/Column prefiks som betyr linje eller kolonnevis utlegg Label og felt er en enhet Foretrekker Line Line Column 34

Layoutressurser DirectionNAlignFlex[No]Border d N = Antall kolonner i layouten. (De fleste layouter i ressursdatabasen har utlegg av komponenter linjevis.) n=3 n=3 35

Layoutressurser DirectionNAlignFlex[No]Border Align angir justering av felter og ledetekster. Align = Left Centered Justified angir horisontal justering av ledetekster og felter per rad Left Justifie d Centere d 1 kolonne for Ledetekster trukket Ledetekster høyrejustert mot ledetekster, 1 for felt, begge venstrejustert ut mot venstre, felt ut mot høyre midtkolonne, felter venstrejustert fra midten 36

Layoutressurser DirectionNAlignFlex[No]Border Flex er består av tre elementer, de to første angir fleksibilitet, den siste hvor evt. ledig plass havner. Flex = Fixed Streched Spread angir horisontal fleksibilitet Fixed Bredeste element Bredeste element Kolonnene gjøres så brede som sitt største element, plass ut over summen av kolonnene blir til overs Bredeste element 37

Layoutressurser DirectionNAlignFlex[No]Border Flex = Fixed Streched Spread angir horisontal fleksibilitet Streched Bredeste element Bredeste element Kolonnene strekkes og kan bli bredere enn bredeste element, slik at all tilgjengelig plass fylles Bredeste element 38

Layoutressurser DirectionNAlignFlex[No]Border Flex = Fixed Streched Spread angir horisontal fleksibilitet Spread Bredeste element Bredeste element Tar opp all plass, men her legges luften mellom kolonnene Bredeste element 39

Layoutressurser DirectionNAlignFlex[No]Border d Border hvis layouten har en ramme (marg) NoBorder hvis layouten ikke har ramme Border (Med ramme) NoBorder (Uten ramme) 40

Kort om kodegenerering 41

Generering av kildekode Klientmaler Klientfil.java Klientfil.java Klientfil.java Klientgenerat Servicefil.java Servicefil.java Servicefil.java Servicemaler Servicegenerat Dataaccessmaler Generator Domene.java Domene.java Domene.java Mappingfil.hbm.xml Mappingfil.hbm.xml Mappingfil.hbm.xml Dataaccessgenerat Domenemaler Domenegenerat 42

Klassemodell for generert dialogkode Skriv hooks 43

Klassediagram generert servicekode Skriv hooks 44

Applikasjonsarkitektur - Java Generert av Genova Genova rammeverk 3. part rammeverk Generert av Rose Egen kode Do omain model View Controller Actions Hooks ServiceProxy Spring Logic/Actions/ Hooks ServiceProxy Service interface Domain model Service Service Service Persistence Hooks WS/EJB/Pojo Hibernate OR mapping 45 Database