INF-2120 Våren 2006 Øystein Haugen med hjelp fra Gerhard Skagestein og Ragnar Normann Version 060118 25-Jan-06 INF2120 Prosjekt i modellering 1
Oversikt over denne forelesninga Hva er INF-2120? Personene bak INF-2120 Oversikt over INF-2120 våren 2006 Eclipse Modellering versus programmering UML verktøy Implementasjon og testing Prosjektoppgaven Bruk av web Er dette kurset lett? UML 2.0 fra en insider 25-Jan-06 INF2120 Prosjekt i modellering 2
Hva er INF2120? Et prosjekt-kurs dvs. det er prosjektarbeidet som er i sentrum det er bestått / ikke bestått basert på obligatoriske oppgaver og tilhørende oppfølging Et kurs der prosessen og produktet begge er viktige og hvor læringen skal følge av ønsket om å gjøre prosessen og produktet best mulig Et kurs der produktet er større enn det dere har vært borti tidligere sannsynligvis Size matters! Et modellerings-kurs med implementasjon og testing 25-Jan-06 INF2120 Prosjekt i modellering 3
Personene bak INF2120 Våren 2005 Øystein Haugen (førsteamanuensis) ansvarlig for kurset spesialist på modelleringsspråk og utviklingsmetodikk særlig mhp. sanntidssystemer Gerhard Skagestein (førsteamanuensis) foreleser i og forfatteren av læreboka til INF1050 spesialist på metode (og datamodellering) Ragnar Normann (amanuensis) foreleser i INF3100 spesialist på datamodellering 25-Jan-06 INF2120 Prosjekt i modellering 4
INF2120 en bit av IT-virkeligheten Den ferdige programvaren vil ha mer enn noen få linjer java-kode Oppdragsgiverne har ikke fasiten på det som skal lages! De verktøyene man skal bruke er ikke helt perfekte men det blir jo aldri programvare uansett Den plattformen man skal anvende, er litt ny og ukjent De folkene man skal jobbe sammen med, er ikke bare ens nærmeste venner uenighet er like vanlig som enighet Det ferdige produktet skal faktisk valideres ved testing Man skal evalueres av likemenn 25-Jan-06 INF2120 Prosjekt i modellering 5
Oversikt over INF2120 Våren 2006 Plattform: Eclipse et rammeverk for utvikling av verktøy og andre produkter som går på Windows og på Unix/Linux Modellering versus programmering Vi ønsker å vise litt om likheter og forskjeller UML verktøy IBM Rational Software Modeler som du også kan få tilgang til for å kjøre på egen PC Implementasjon Å få noe til å rulle rundt er gøy Prosjektoppgaven Et overvåkningssystem basert på posisjonering av mobiltelefon 25-Jan-06 INF2120 Prosjekt i modellering 6
Eclipse Se mer på eclipse.org Et rammeverk for programmering Open source av basis Verktøyer som er til salgs bygges på basisen Støttes kraftig av IBM teknisk ved å sette mye folk på utvalgte prosjekter innen Eclipse Brukes av mange pga. den åpne basisen universiteter små firmaer Her på Ifi har Eclipse vært brukt på INF2120, INF5120 og INF5150 i alle fall 25-Jan-06 INF2120 Prosjekt i modellering 7
Modellering og programmering forskjellig? Modellering og programmering har store likhetspunkter og likere og likere blir disse begrepene Tradisjonelt har modellering ofte resultert i beskrivelser som ikke er eksekverbare men det er ikke lenger alltid tilfelle Modellering er oftest forbundet med høyere abstraksjonsnivå kraftigere primitiver mer oversikt enn detaljer Modellering er ofte beskrevet gjennom grafiske språk men det er mer sedvane enn nødvendighet Verktøy for modellering er gjerne ganske dyre men det kan også programmeringsomgivelser være 25-Jan-06 INF2120 Prosjekt i modellering 8
Slik ser vi språkverdenen! Hoare CSP Hoare-logic Milner CCS Jones VDM Norwegian Computing Center SIMULA (Nygaard, Dahl) FORTRAN COBOL Algol Pascal ER-model C Broy/Stølen Focus LOTOS (ISO) SDL-88 SDL-92 (ITU) Microsoft Windows Xerox PARC SmallTalk (Kay) OOA(Yourdon) Objectory (Jacobsson) Booch Apple MacIntosh OMT (Rumbaugh) Bell Labs C++ OODB SQL Corba SDL-2000 (ITU) ROOM MSC-92 (ITU) (Objectime) UML 1.x (Rational/OMG) Sun JAVA MSC-2000 (ITU) EJB Web services UML 2.0 (OMG) 25-Jan-06 INF2120 Prosjekt i modellering 9
The founding fathers Hoare CSP Hoare-logic Milner CCS Jones VDM Norwegian Computing Center SIMULA (Nygaard, Dahl) FORTRAN COBOL Algol Pascal ER-model C SDL-88 Conceptual base of OO: Classes LOTOS with (ISO) Inheritance, Polymorphism (virtual), Co-routines Garbage Collection Broy/Stølen Focus SDL-92 (ITU) Microsoft Windows Xerox PARC SmallTalk (Kay) OOA(Yourdon) Objectory (Jacobsson) Booch Apple MacIntosh OMT (Rumbaugh) Bell Labs C++ OODB SQL Corba SDL-2000 (ITU) ROOM MSC-92 (ITU) (Objectime) UML 1.x (Rational/OMG) Sun JAVA MSC-2000 (ITU) UML 2.0 (OMG) EJB Web services 25-Jan-06 INF2120 Prosjekt i modellering 10
Making OO Popular and Commercial Hoare CSP Hoare-logic Milner CCS Jones VDM Norwegian Computing Center SIMULA (Nygaard, Dahl) FORTRAN COBOL Effective Algol programming Pascal and ER-model Efficient programs: C Explicit memory control Experimental programming: Runtime checks SDL-88 Graphical in/out Broy/Stølen Focus LOTOS (ISO) SDL-92 (ITU) Microsoft Windows Xerox PARC SmallTalk (Kay) OOA(Yourdon) Objectory (Jacobsson) Booch Apple MacIntosh OMT (Rumbaugh) Bell Labs C++ OODB SQL Corba SDL-2000 (ITU) ROOM MSC-92 (ITU) (Objectime) UML 1.x (Rational/OMG) Sun JAVA MSC-2000 (ITU) EJB Web services UML 2.0 (OMG) 25-Jan-06 INF2120 Prosjekt i modellering 11
The Three Amigos Hoare CSP Hoare-logic Milner CCS Jones VDM Visual Language Analysis phase Standardization Norwegian Computing Center SIMULA (Nygaard, Dahl) FORTRAN COBOL Algol Pascal ER-model C Broy/Stølen Focus LOTOS (ISO) SDL-88 SDL-92 (ITU) Microsoft Windows Xerox PARC SmallTalk (Kay) OOA(Yourdon) Objectory (Jacobsson) Booch Apple MacIntosh OMT (Rumbaugh) Bell Labs C++ OODB SQL Corba SDL-2000 (ITU) ROOM MSC-92 (ITU) (Objectime) UML 1.x (Rational/OMG) Sun JAVA MSC-2000 (ITU) UML 2.0 (OMG) EJB Web services 25-Jan-06 INF2120 Prosjekt i modellering 12
Influences on UML 2.0 Hoare CSP Hoare-logic Milner CCS Jones VDM Class diagrams, Use Cases Norwegian Computing Center SIMULA (Nygaard, Dahl) FORTRAN COBOL Algol Pascal ER-model C SDL-88 Internal LOTOS structure (ISO) (Parts and Ports) Improved State Machines Broy/Stølen Focus SDL-92 (ITU) Microsoft Windows Xerox PARC SmallTalk (Kay) OOA(Yourdon) Objectory (Jacobsson) Booch Apple MacIntosh OMT (Rumbaugh) Bell Labs C++ OODB SQL Corba SDL-2000 (ITU) ROOM MSC-92 (ITU) (Objectime) UML 1.x (Rational/OMG) Sun JAVA MSC-2000 (ITU) Structured Sequence Diagrams UML 2.0 (OMG) 25-Jan-06 INF2120 Prosjekt i modellering 13 EJB Web services Improved Components
I INF2120 skal vi benytte UML 2.0 Hvorfor UML 2.0? fordi det inneholder begreper som er hensiktsmessige hvilke det er, kommer på neste slide fordi det er det nyeste modelleringsspråket på markedet og dere studenter blir helt oppdaterte fordi IFI-folk har førstehånds kunnskap om språket og har vært med å utvikle det Hvorfor holder ikke UML 1.x fordi viktige begreper manglet fordi noen av begrepene som var der, var dårlig definert fordi UML 1.x er historie om kort tid Er UML 2.0 det eneste fornuftige valg? Hva gjør Microsoft? 25-Jan-06 INF2120 Prosjekt i modellering 14
Modelleringsbegreper... som du finner i UML 2.0, men ikke i Java use cases associations connectors state machines with triggers and signals, as well as states of various kinds sequence diagrams as well as communication diagrams, and interaction overview diagrams constraints som en del av språket 25-Jan-06 INF2120 Prosjekt i modellering 15
UML verktøy Det finnes mange UML verktøysleverandører IBM Rational, Telelogic, i-logix, Poseidon, Softeam, NoMagic, KennedyCarter,... Det finnes ikke mange komplette UML 2.0 verktøy Se liste på http://www.uml.org/ Vi har vært beta-user av IBM Rational Software Architect og meldt inn 35 feil/mangler bare på sekvensdiagramdelen IBM Rational Software Architect/Modeler går på Eclipse IBM Rational har alltid vært markedsleder på UML IBM Rational Software Modeler er ikke så godt som det burde være 25-Jan-06 INF2120 Prosjekt i modellering 16
Verktøykassa i INF2120 Eclipse med plugin SeDi som er en editor for sekvensdiagrammer IBM Rational Software Modeler et relativt komplett verktøy for redigering har model repository RSM plugin for UML to JavaFrame Transformation oversetter fra et system av tilstandsmaskiner JavaFrame et Java rammeverk - et kjøretidssystem for tilstandsmaskiner SMSPorts et bibliotek med UML og Java for SMS sending og mottak og posisjonering Oracle database 25-Jan-06 INF2120 Prosjekt i modellering 17
Implementasjon og testing Gangen i modelleringen er i INF2120 Spesifikasjon av produktets oppførsel gjennom UML sekvensdiagrammer Design av systemet ved tilstandsmaskiner og datamodeller Implementasjon via direkte kodegenerering til JavaFrame Validering av designen gjennom manuell modelsjekking testing mot implementasjonen 25-Jan-06 INF2120 Prosjekt i modellering 18
Prosjektoppgaven 1 Alle prosjektgruppene får samme oppgave Det lages ny oppgave hvert år. Det er 3 delleveranser Spesifikasjon Design Implementasjon/Validering/Test Gruppene skal evaluere hverandre kursledelsen vil også evaluere prosjektene Alle delleveranser skal presenteres og kritiseres offentlig Prosjektgruppestørrelse gruppene settes opp med 4-5 personer om en gruppe blir på 2 personer pga. frafall, fusjoneres den 25-Jan-06 INF2120 Prosjekt i modellering 19
Prosjektoppgaven 2 Prosjektgruppesammensetning: Studentene velger selv øvelsesgruppe (av 2 mulige) Prosjektgruppene trekkes tilfeldig Krav til delleveransene Leveransen er ett pdf-dokument (Adobe Acrobat) som skal inneholde beskrivelser med diagrammer og tekst én zip-fil med modellene Leveransen presenteres ved en presentasjon med videokanon enten fra pdf-fil eller fra Powerpoint Kritikken leveres muntlig, men leveres deretter skriftlig på mail 25-Jan-06 INF2120 Prosjekt i modellering 20
Prosjektoppgaven 3 Ved delleveranse 1 skal gruppe 2 evaluere gruppe 1 osv. Direkte etter gruppe 1 sin presentasjon, vil gruppe 2 stille kritiske spørsmål som skaper en diskusjon med gruppe 1 Gruppe 2 sender sine kommentarer til Gruppe 1 på mail i etterkant (med Cc til hjelpelærer og foreleser) Så gir hjelpelærer og foreleser sine vurderinger Foreleser gir så en tentativ karakter som altså er uformell og ikke teller såsant den er en ståkarakter Noen enkeltstudenter blir plukket ut til å presentere for foreleser Dette er en sikkerhetsventil for å unngå gratispassasjerer Ved dellev. 2 snur vi evalueringen slik at gruppe 1 evaluerer gruppe 1 Ved dellev. 1 og 2 gjøres gjennomgangen i øvelsesgruppene Ved delleveranse 3 gjøres demo etc. i plenum Deltakelse på gjennomgangene er obligatorisk! 25-Jan-06 INF2120 Prosjekt i modellering 21
Prosjektoppgaven 4 Krav til den enkelte student Han/hun skal delta i prosjektgruppe Han/hun skal delta på lik linje med de andre i gruppa uansett om vedkommende er deltidsstudent Han/hun skal kunne alle detaljer i den felles besvarelse slik at vedkommende skal kunne eksamineres i dette av kursledelsen Han/hun skal trekke seg om han/hun ikke kan fylle disse kravene Krav til den enkelte prosjektgruppe Prosjektgruppene skal sette opp sin egen organisering Prosjektgruppene velger 1 kontaktperson som er ansvarlig for all kommunikasjon med kursledelsen Prosjektgruppene skal motta veiledning av gruppelærer Delleveransen skal leveres på tid! Utsettelser gis IKKE. 25-Jan-06 INF2120 Prosjekt i modellering 22
Prosjektoppgaven 5 Hva er juks? Det er juks hvis deler av en prosjektoppgave er tilnærmet identisk med en annen gruppes uten at det redegjøres for evt. samarbeid mellom grupper på enkeltproblemer Det er lov å samtale mellom gruppene, men jobb selvstendig! Det er juks hvis deler av en besvarelse er tilnærmet identisk med resultater funnet på Internett uten at det er referert til opprinnelsen Det er lov å finne løsninger på Internett, men ikke å la være å referere Prosjektgruppa skal i alle høve forstå alt hva de har levert! Det er juks å være gratispassasjer Studenter som ikke gjør sin del av prosjektoppgaven kan strykes individuelt 25-Jan-06 INF2120 Prosjekt i modellering 23
Prosjektoppgaven 6 JegSerDeg et privat overvåkningssystem Basaltjeneste: Man registrerer seg ved en dertil egnet SMS til PATS-laben Systemet posisjonerer personene jevnlig Man kan se hvor personene er på GoogleEarth Denne basale tjenesten har jeg modellert allerede den fungerer som eksempel og gis ut slik at dere kan eksperimentere med den om dere vil det 25-Jan-06 INF2120 Prosjekt i modellering 24
Den basale tjenesten 25-Jan-06 INF2120 Prosjekt i modellering 25
Prosjektoppgaven 7 Tjenester: Forbedret basaltjeneste Man kan også melde seg av (:-) Man kan melde seg temporært av og på posisjoneringstjenesten Buddy lists I stedet for at det er 1 haug med registrerte personer, defineres buddylister Hot-spots Legger til en tjeneste som heter hotspot. Ved hotspot-tjenesten legger man til navn på steder, slik at kjente punkter blir identifisert. Varsling hotspots En spesiell samling hotspots kan være de man vil bli varslet om man er i nærheten av. Et naturlig tilfelle av slike hotspots, er fartsbokser. 25-Jan-06 INF2120 Prosjekt i modellering 26
Prosjektoppgaven 8 Kan vi få dette til å virke på ordentlig? Vi har tilgang på et eksperimentelt tele-opplegg som gjør det mulig å få utført flere vanlige og uvanlige teletjenester fra våre datamaskiner Vi benyttet dette opplegget i INF5150 fra høsten 2004 og INF2120 våren 2005 Det dreier seg om PATS Program for Advanced Telecom Services www.pats.no Vi kommer til å benytte motta SMS i et program sende SMS til mobiltelefon posisjonere mobiltelefoner (veldig grovt) virker bare mot mobiltelefoner med Telenor abonnement 25-Jan-06 INF2120 Prosjekt i modellering 27
Bruk av Web og e-mail i INF2120 Vi kommer til å bruke Web i dette kurset på standard måte Forelesningsplanen er sentral den kan bli endret underveis pga. uforutsette hendelser Forelesningenes foiler legges ut i pdf-format forhåpentligvis i forkant Viktig informasjon skal forefinnes på Web Viktige meldinger sendes ut på kursets e-mail liste 25-Jan-06 INF2120 Prosjekt i modellering 28
Er dette kurset lett? Vi håper dette kurset først og fremst er inspirerende morsomt lærerikt nyttig... og da kan man ikke regne med det er lett Vi tror det blir mye arbeid en del tukkel og heft med verktøy etc. som ikke virker helt ikke helt glattslikka (bl.a. fordi det alltid er et nytt prosjekt) Vi ønsker kontinuerlig tilbakeføring på alle plan! 25-Jan-06 INF2120 Prosjekt i modellering 29
Litteratur Pensum Det er intet pensum det er ingen krav til å kunne annet enn det som skal til for å gjøre prosjektet vellykket Støttelitteratur: Skagestein, G., Systemutvikling - fra kjernen og ut, fra skallet og inn. 2005, Kristiansand: Høyskoleforlaget AS. 486 sider (ISBN 8276346715) Rumbaugh, J., I. Jacobson, and G. Booch, Unified Modeling Language Reference Manual, The (2nd Edition). ADDISON- WESLEY OBJECT TECHNOLOGY SERIES. 2004: Pearson Education. 736 sider (ISBN 0321245628) Haugen, Ø., B. Møller-Pedersen, and T. Weigert, Structural Modeling with UML 2.0, in UML for Real, L. Lavagno, G. Martin, and B. Selic, Editors. 2003, Kluwer Academic Publishers: Boston. p. 53-76. 25-Jan-06 INF2120 Prosjekt i modellering 30
UML 2.0 et superkort innblikk litt om hva UML 2.0 er til forskjell fra UML 1.x 25-Jan-06 INF2120 Prosjekt i modellering 31
Class Diagram ACSystem Console class aggregation Authorizer 1 1 AccessPoint * controls 1 1 1..2 1 controls governsaccess * Panel Door * 1 access AccessZone * * User * * multiplicity role association navigability 25-Jan-06 INF2120 Prosjekt i modellering 32
Class Diagrams generalization generalization User Supervisor NewUser 25-Jan-06 INF2120 Prosjekt i modellering 33
Composite structure of Collaboration property (part) ACContext 0..* :User 1..* :Supervisor :ACSystem 0..* :NewUser connector 25-Jan-06 INF2120 Prosjekt i modellering 34
Composite Structure of Class class ACSystem outp inp e 0..100 ap: AccessPoint 1..5 c: Console e inp outp d v v unlock, lock isopen, isclosed :Authorizer Information flow Port Connector Property 25-Jan-06 INF2120 Prosjekt i modellering 35
Interaction Diagram Sequence Diagram sd GivePIN Lifeline Interaction :User :ACSystem msg("give your PIN!") Digit Digit Digit message Digit 25-Jan-06 INF2120 Prosjekt i modellering 36
Sequence Diagram with structure sd EstablishAccess(String txt) Interaction Use :User :ACSystem ref AC_EstablishAccess(txt) Idle Decomposition Cardid Combined Fragment ref loop(0,3) GivePIN msg("try again!") Continuation Combined Fragment alt ref GivePIN msg(txt) PIN NOK PIN OK 25-Jan-06 INF2120 Prosjekt i modellering 37
Interaction Overview Diagram sd OverviewDiagram lifelines User, ACSystem ref EstablishAccess("IllegalPIN") Interaction Use sd User AC System CardOut Interaction [PINok] sd User Mesg("Please Enter)" AC System ref OpenDoor 25-Jan-06 INF2120 Prosjekt i modellering 38
State Machines goldenentry entry point sm GivePIN send(code(cid,pin)) send(msg("give your PIN!")); n=0 enterdigit [n==4] digit/ send(code(cid,pin)) waitcommand [n<4]digit/ n++ givepin/send(msg("pin:")) Cardout exit sm Panel NoCard Cardid(cid) exit point goldcard(cid,pin) substatemachine H goldenentry OneCard: GivePIN exit msg(t)/send(msg(t)) 25-Jan-06 INF2120 Prosjekt i modellering 39
Activity Diagrams Provide Required Part Standards Engineer Design Engineer [part found] [async] [async] Clarify Requirements Expert part search [part not found] Assign standards engineer Review Requirements Specify part mod workflow Schedule part mod workflow [reschedule] [OK] Review Schedule [cancel] [async] [async] Execute part mod workflow [accept] Research production possibility [reject] Provide addt l part mod info 25-Jan-06 INF2120 Prosjekt i modellering 40
What are the improvements? More unified conceptual base Composite structures of properties used in Classes, Collaborations and (indirectly) Interactions More unified semantics higher precision (?) Improved expressiveness Executable UML is not far away code generation (complete) simulation validation test generation 25-Jan-06 INF2120 Prosjekt i modellering 41
What are the shortcomings? There is no concrete syntax for the actions this means that it is awkward to make standard examples one needs to apply either a subset of programming language or a proprietory action language Metamodeling is not the best way to describe languages experience shows that not even experts can do it right There is no common formal semantics for the behavior there is, however, a common execution model There are too many semantic variation points such that nobody really knows what the meaning is Use Cases should be better integrated with the rest it is very much a standalone part of the language The Instance Model could be improved in fact it should be harmonized with the rest The language is too big to have effective competition and the tools may not be good enough 25-Jan-06 INF2120 Prosjekt i modellering 42