1 / 33

Effektiv utvikling av enterpriseapplikasjoner med Java / Swing / J2EE

Effektiv utvikling av enterpriseapplikasjoner med Java / Swing / J2EE. Carl-Olav Løvald Sjefskonsulent, Mesan AS E-post: col@mesan.no. Mesan. Ledende i Norge mht MDA-basert J2EE systemutvikling Har 15-20 års bred erfaring fra utvikling av store, virksomhetskritiske systemer.

suzuki
Download Presentation

Effektiv utvikling av enterpriseapplikasjoner med Java / Swing / J2EE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Effektiv utvikling av enterpriseapplikasjoner med Java / Swing / J2EE Carl-Olav Løvald Sjefskonsulent, Mesan ASE-post: col@mesan.no

  2. Mesan • Ledende i Norge mht MDA-basert J2EE systemutvikling • Har 15-20 års bred erfaring fra utvikling av store, virksomhetskritiske systemer. • Sertifisert OptimalJ-partner med Compuware

  3. Agenda • Hva er utfordringen(e)? • Hvordan kan vi møte utfordringen(e) med teknologi? • Generelle egenskaper • Overordnet arkitektur • Swing-arkitektur • Hva med effektivitet, kodekvalitet og vedlikehold? • Forretningsmodellering • Kodegenerering • Live Demo: Vi lager en J2EE/Swing-applikasjon

  4. Hva er utfordringene? • Hvordan tilpasse systemer til endringer i virksomheten? – Time to market • Hvordan skal vi gjøre utviklerne mer effektive? – “Do more with less” • Hvordan kan vi sikre deltagelse for fagpersonell i IT-prosjektene? – ”User involvement” • Hvordan skal vi sikre at Best Practices, standarder og retningslinjer følges? • Hva skjer ved oppgradering til ny basisprogramvare?

  5. Hvordan ønsker vi å jobbe? • Forretningsrettet utvikling • Virksomhetens behov styrer prioritering • Brukere / superbrukere deltar i utviklingsprosessen • Mer fokus på hva vi skal lage enn hvordan • Iterative prosesser • Prototyping • Hyppige leveranser • Frihet til å gjøre endringer • Kortest mulig vei fra ide til synlig produkt / løsning

  6. Hva bør teknologien tilby? • Visuell utvikling • Modeller (som varer hele systemets levetid) • Visuell utvikling av brukergrensesnitt • Grafisk dialogeditor • Enkel kobling mellom data og visning • Muligheter for å vise testdata • Lav teknologisk kompleksitet... eller hjelp til å håndtere teknologisk kompleksitet • Basisfunksjonalitet (CRUD) • Kodegenerering eller funksjonsbiblioteker • Versjonshåndtering av kildekode

  7. Hvordan får vi det til med Java / J2EE / Swing? • Model View Controller • Scope HMVC-implementasjon • Modellbasert utvikling • Utviklingsmiljøet OptimalJ • Kodegenerering • Egenutviklet Swing-generator

  8. Swingapplikasjon Overordnet arkitektur Swing GUI Scope HMVC Model Objects Klient EJB Facade Objects EJB / DAO App Server Database Db Server

  9. SwingklientGenerisk design

  10. Scope HMVC • Open Source prosjekt • (http://scope.sourceforge.net/index.html) • Infrastruktur for å binde modeller til views med full to-veis synkronisering • Hierarkisk Model View Controller (HMVC) • Støtter Servlet, XML/XSLT og SWING • Wrappere til en rekke swing widgets (data binding og validering): • Button, ComboBox, Checkbox, Listbox, Panel, RadioButton, Table, TextField, MenuItem, Label, Password Field, Slider, Textarea... • Støtter integrasjon med IDE • Inneholder kodegenerator og test suite (Junit)

  11. Gevinster med Scope • Enkelt å sette opp databinding mellom view og modell / submodell • To-veis synkronisering med ”Aktive” modeller som kringkaster endringer i state • Innebygget inputvalideringsfunksjonalitet • Eventhandling skilt fra presentasjon • Subkontrollere kan la kontrollmeldinger ”boble” opp til hovedkontroller • Støtte for språktilpasning av ledetekster og meldinger

  12. Scope - virkemåte View Model Widget Selector Widget Selector Widget Selector Widget Selector Selector Control SubModel Selector Controller Selector Selector Selector

  13. Scope - eksempel Modellen: public class ActivemodelModel extends BasicModel { private String name; public final static Selector NAME = Selector.fromString(”name"); public String getName() { return name; } public void setName(String inName) { name = inName; fireModelChange(VALUE_CHANGED, NAME); } } I viewet: STextField t = new STextField(); t.setColumns(20); t.setSelector("name");

  14. Controller Controller Controller View View View Model Model Model Scope - HMVC

  15. Hvordan sikre produktivitet, kodekvalitet og bruk av standarder?

  16. J2EE Kompleksitet • Multi-language • Multi-tier • Multi Channel • Scalability 4GL C/C++ COBOL Java ProduktivitetKompleksitet reduserer produktivitet Productivity Time 90’s 80’s 00’s 70’s

  17. Definere • Overordnet applikasjons- arkitektur • J2EE ekspertise • Teknologistandarder • Utviklingsstandarder • Best practices • Patterns • Code templates • Metoder • Modeller Gjennomsyn og retting • Feilaktig implementert arkitektur • Teknologistandarder ignorert • Avvik fra utviklingsstandarder • Feiltolkning av best practices • Patterns/templates ikke brukt • Modeller laget på nytt (unødig) Utviklingsteam Implementere • Applikatsjons- arkitektur • Teknologi- standarder • Utviklings-standarder • Best practices • Patterns • Code templates • Metoder • Modeller Utviklingsteam Systemarkitekter KunnskapsoverføringSikre bruk av best practices, standarder & retningslinjer

  18. Platform Independent Model Code Model MDA - modelldrevet arkitektur • Fokus på hva man skal løse (mer enn hvordan) • Modeller på forretningsnivå sikrer lang levetid • Forenkler håndtering av kompleks teknologi • PIM • Representerer forretningsfunksjonalitet, egenskaper og relasjoner uten teknologi- detaljer • PSM • Beskriver komponentene i applikasjonen • Genereres fra PIM modellen. • Beskriver teknologispesifikke komponenter (J2EE, .NET, Web Services etc) • Code Model • All kildekode i applikasjonen • Kildekoden genereres fra PSM-modellen • Skriver forretningslogikk i free blocks i kildekoden Platform Specific Model

  19. Teknologi- Transformasjon Platform Independent Model Systemarkitekter Kode- transformasjon Platform Specific Model Code Model KunnskapsoverføringMed MDA Transformasjoner

  20. Effektivitet og Kvalitet • Modellbasert utvikling og kodegenerering • Håndterer repetitiv kodeimplementering • Teknisk design implementeres i kodegeneratoren • Generering bør ha sitt opphav i modeller • Vårt valg : Utviklingsmiljøet OptimalJ (basert på MDA) • Utviklet egen kodegenerator i OptimalJ for generering av Swing-klienter • Swing-klientene baserer seg på persistens-funksjonalitet generert fra OptimalJ

  21. Teknologi- Transformasjon (Java) PIM (MOF) Kode- Transformasjon (TPL / Java) PSM (MOF) Code Model Transformasjoner i OptimalJ • Funksjonalitet for å definere egne • transformasjoner • metamodeller • Funksjonalitet for å lage transformasjoner • Eget scriptspråk for kodegenerering – TPL

  22. Utvikling av nye generatorer Tilpasse eksisterende Full fleksibilitet Mer arbeid ved oppgraderinger Tilby hooks (Joinpoints) Som gir mulighet til å utvide eller overstyre Gir god nok fleksibilitet Enklere ved oppgraderinger My 1st Pattern Baseline Pattern Joinpoint A Joinpoint B My 2nd Pattern Kodegenerering i OptimalJ Tilpasning og nyutvikling

  23. Template Pattern Language – TPLCode snippet [GUARD("ValueObject",wDataClass)] [FREE("Imports")] // Place your imports here... [/FREE] public class [UCF(VALUEOBJECTNAME(wDataClass))] extends BasicModel implements DynamicReadOnly{ private boolean changed; private boolean created; public [UCF(VALUEOBJECTNAME(wDataClass))](){ [SUBVALUEOBJECTINIT(wDataClass)] this.changed = false; this.created = false; } public boolean isChanged(){ boolean returnValue = this.changed; [FREE("isChangedPre")] //Your code here [/FREE] [SUBVALUEOBJECTCHANGED(wDataClass)] [FREE("isChangedPost")] //Your code here [/FREE] return returnValue; } [/GUARD]

  24. Teknologi- Transformasjon Platform Independent Model Kode- transformasjon Platform Specific Model Code Model Kodegenerator - Utviklingsprosess • Utvikle referanse-implementasjon • Definere teknisk design • Implementere løsning • Test og verifiser • Utvikle metamodell og kodegenerator • ( Avgjør behov for metainformasjon ) • ( Implementer metamodell ) • Lag kodegenerering med utgangpunkt i kode fra referanseimpl. • Test kodegenerator på referansemodell

  25. Mesans SWING pattern - Asta • Prosjekt • Stort arkiveringssystem (4+ MNOK) • Erstatter eksisterendeløsning for å oppnå mer fleksibilitet mht • Deployment • Funksjonalitet og struktur • Utfordringer • Komplekse datastrukturer • Rikt brukergrensesnitt – bruk av Java / Swing • Løsning • Persistensmodellen modellert som Domenemodell i OptimalJ • Utviklet kodegenerator for Swing i OptimalJ • Baserte Swing GUI på ”Scope” HMVC-implementasjon, og benyttet persistensfunksjonalitet generert fra OptimalJ

  26. Asta

  27. Asta

  28. Asta

  29. Asta

  30. Demo Vi bygger en SWING/J2EE-applikasjon

  31. Referanser Mesans kunder på MDA og OptimalJ • AtosOrigin • Dagbladet • Stiftelsen Asta i samarbeid med Riksarkivaren • WesternGeco Mesan benyttes som foredrags- og kursholder • Universitet i Oslo (UiO) • ECOOP • JAAO

  32. - når standardsystemerikke er nok Carl-Olav Løvald Sjefskonsulent, Mesan ASE-post: col@mesan.no www.mesan.no

More Related