Signalgrensesnitt for Trafikanten Pluss Version 05042 2-Apr-05 INF220 Prosjekt i modellering
Trafikanten Plus: Skisse til arkitektur cs TrafficContext Oracle på Ifi users:mobile sm: SM_stat JDBC static:lbase SMSin (2) :GSMSystem () :TrafficPlusControl SMSout sm2: SM_dyn XML http: dynamic:tbase PATS-laben Trafikanten 2-Apr-05 INF220 Prosjekt i modellering 2
PATS-laben: vi bruker kun SMS som snitt Beskrivelsesmessig er det hensiktsmessig å forstå kommunikasjonen i 2 plan Logisk kommunikasjon SMS kommunikasjon SMS kommunikasjonen implementerer den logiske kommunikasjonen dette gjøres ved at SMS-ens tekst gis en spesiell syntaks på output (fra programmet) for å identifisere den som sender på input må teksten parseres for å tolke innholdet SMS kommunikasjonen gjøres vha Én meldingstype: SMSmessage To spesiallagde porttyper (JavaFrame mediatorer) for inn/ut 2-Apr-05 INF220 Prosjekt i modellering 3
Logisk kommunikasjonsprotokoll sd NextVehicle users[øystein]: Mobile nextvehicle(line3sognsvann, øtlfnr) :GSMsystem :TrafficPlusControl øid er en identifikasjon generert av GSMsystemet nextvehicle(line3sognsvann, øid) Line3Sognsvann er info brukeren Øystein gir getpos(øid) givepos(øid, øpos) logiske signalnavn velger dere ref FindNextVehicle(øpos, Line3Sognsvann, øid) sendsms( Line3Sognsvann is 3 minutes away, øid) sms( Line3Sognsvann is 3 minutes away ) 2-Apr-05 INF220 Prosjekt i modellering 4
PATS-sine tjenester Motta SMS fra mobiltelefon; videresendes til program SMS melding sendes til 2034 på et format som inneholder info om hvilken kø denne meldingen skal inn på Programmet vil ta inn melding fra køen over inn-porten Sende SMS til mobiletelefon, originert fra program SMS meldingen sendes fra programmet med et tilsvarende format Spørre om posisjon til en mobiltelefon mobiltelefonen er gitt ved en generert ID som har framkommet når personen sendte en tidligere SMS PATS sender info om posisjon til en mobiltelefon igjen som en SMS i et dertil egnet format 2-Apr-05 INF220 Prosjekt i modellering 5
Statisk database: Oracle på Ifi Implementasjonen av dette går Ragnar og Gerhard igjennom 3.4.2005 Databasen skal tenkes som en tilstandsmaskin denne tilstandsmaskinen skal hente data fra databasen vha JDBC Logisk grensesnitt mot statisk database, dvs. mot tilstandsmaskinen som bestyrer databasen Velg selv signalnavnene, men her er noen forslag: getposition(string holdeplass, Boolean retning) fra programmet pos(string holdeplass, Boolean retning, Real xcoord, Real ycoord) til programmet fra databasen getbusstop(real xcoord, Real ycoord) busstop(real xcoord, Real ycoord, String stoppnavn) 2-Apr-05 INF220 Prosjekt i modellering 6
Utdrag av tabellen 37.txt HPLNR ST NAVN XK YK ---------- -- ---------------------------------------- ---------- ---------- 30442 2 Helsfyr (i Etterstadsletta) 600670 6642999 30447 2 Maskinistskolen 6004 6642753 300643 2 Etterstadgata 60035 6642724 300642 2 Vålerenga 599930 6642603 30064 2 Galgeberg (i Strømsveien) 599657 664249 2-Apr-05 INF220 Prosjekt i modellering 7
http://ngis2.statkart.no/norgesglasset/default.html 2-Apr-05 INF220 Prosjekt i modellering 8
Dynamiske data: direkte fra Trafikanten Vi sender en forespørsel på http: mot Trafikanten/SIS den inneholder navnet på en holdeplass Logisk signal: framkomstmidler(string holdeplass) og vi får tilbake en XML-fil som inneholder en masse informasjon om de framkomstmidler som er i nærheten av nevnte holdeplass denne XML-fila må parseres og tolkes av programmet Logisk signal: dynamiskinfo(string holdeplass, String info) 2-Apr-05 INF220 Prosjekt i modellering 9
Deler av en slik info over XML 2-Apr-05 INF220 Prosjekt i modellering 0
Fra uryddig verden til strukturert database Ragnar Normann og Gerhard Skagestein 3. april 2005 2-Apr-05 INF220 Prosjekt i modellering
Vi ser bare rapportene... Rapport Rapport3 Rapport2 Informasjonssystem Hvordan finne fram til en korrekt relasjonsdatabasestruktur ut fra rapportene? 2-Apr-05 INF220 Prosjekt i modellering 2
Noen rapporter Prosjekt: Alfa Ansatt Avdeling Prosjekttimer 20 Salg 200 0 Salg 75 08 Prod 50 Prosjekt: Beta Budsjett og lønn Avdeling Budsjett Sum lønn Salg 200000 250000 Prod 50000 240000 Øko 00000 300000 Avdeling: Salg Ansatt Skattekommune Priv.tlf 0 024 Ås 64298765 20 Salg 22334466 Avdeling: Prod <kommuneliste> <kommune> <kommunenr>024</kommunenr> <kommunenavn>ås</kommunenavn> </kommune.. </kommuneliste> 2-Apr-05 INF220 Prosjekt i modellering 3
Ulike veier til optimal normalform Virkeligheten (interesseområdet) analyse intuisjon gruppering normalisering elementære utsagn optimal normalform universalrelasjonen 2-Apr-05 INF220 Prosjekt i modellering 4
Veien om universalrelasjonen Rapport Rapport2 Normalisering Konseptualisering? Rapport3 2-Apr-05 INF220 Prosjekt i modellering 5
En unormalisert tabell repeterende gruppe ansatt skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj prosjekt prosj. timer prosj. timer 20 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 Alfa 200 Beta 250 0 024 Ås 64298765 Salg 030 Oslo 22876543 200000 Alfa 75 08 220 025 Frogn 0227 Fet 6323456 240000 300000 Prod Øko 025 Frogn 025 Frogn 64878855 64878855 50000 00000 Alfa Beta 50 00 2-Apr-05 INF220 Prosjekt i modellering 6
Første normalform ansatt prosj. timer skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj 20 Alfa 200 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 20 Beta 250 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 0 08 220 Alfa Alfa Beta 75 50 00 024 Ås 025 Frogn 0227 Fet 64298765 6323456 240000 300000 Salg Prod Øko 030 Oslo 025 Frogn 025 Frogn 22876543 64878855 64878855 200000 50000 00000 2-Apr-05 INF220 Prosjekt i modellering 7
Finne funksjonelle avhengigheter ansatt prosj. timer skatte kommune priv.tlf lønn prosjekt avdeling avd. kommune avd.tlf avd. budsj 20 Alfa 200 030 Oslo 22334466 250000 Salg 030 Oslo 22876543 200000 20 0 Beta Alfa 250 75 030 Oslo 024 Ås 22334466 64298765 250000 Salg Salg 030 Oslo 030 Oslo 22876543 22876543 200000 200000 08 Alfa 50 025 Frogn 240000 Prod 025 Frogn 64878855 50000 220 Beta 00 0227 Fet 6323456 300000 Øko 025 Frogn 64878855 00000 2-Apr-05 INF220 Prosjekt i modellering 8
Boyce-Codd normalform (BCNF): Alle determinanter (venstresider i funksjonelle avhengigheter) skal være gjenstand for entydighetsskranke 2-Apr-05 INF220 Prosjekt i modellering 9
Normalisering til BCNF ansatt 20 0 08 220 Salg Prod Øko skatte kommune 030 Oslo 024 Ås 025 Frogn 0227 Fet avd. kommune 030 Oslo 025 Frogn 025 Frogn priv.tlf 22334466 64298765 6323456 avd.tlf 22876543 64878855 64878855 lønn 250000 240000 300000 avd. budsj 200000 50000 00000 Salg Salg Prod Øko Noen sammenheng mellom ansatt(nr) og avdeling? Dele opp kommuneverdien? Noen skjulte attributter? ansatt 20 20 0 08 220 avdeling avdeling prosjekt Alfa Beta Alfa Alfa Beta prosj. timer 200 250 75 50 00 2-Apr-05 INF220 Prosjekt i modellering 20
Normalisering i tre trinn Til. normalform: Skill ut repeterende grupper A B C D E C D E C D E F G A B F G A C D E Til 2. normalform: Skill ut attributter som er funksjonelt avhengige av en del av identifikatoren sammen med en kopi av denne Til 3. normalform: Skill ut attributter som er funksjonelt avhengige av andre (ikke-nøkkel) attributter sammen med en kopi av disse A C D E A C D C E A B F G A B F B G 2-Apr-05 INF220 Prosjekt i modellering 2
Gå via en datamodell! Rapport Rapport2 Gruppering Konseptualisering Rapport3 2-Apr-05 INF220 Prosjekt i modellering 22
Ogdens trekant Vi ser representasjonene, ikke alltid begrepene Thoughts of Reference Begreper Symbol Lingvistiske elementer representasjoner Referent Fenomener i interesseområdet 2-Apr-05 INF220 Prosjekt i modellering 23
Sammenheng representasjon - begrep Enkel representasjon (ikke informasjonsbærende) Sammensatt representasjon (ikke informasjonsbærende) Informasjonsbærende representasjon Husk: Vi ønsker uforanderlige representasjoner! Let etter begreper i tabelloverskrifter, ledetekster og XML-markeringer Eksempler 2-Apr-05 INF220 Prosjekt i modellering 24
Hva ser vi Ansatte Avdelinger Skattekommuner Privattelefoner, avdelingstelefoner Avdelingsbudsjetter Lønninger Prosjekttimer Begreper? Representasjoner? Roller? 2-Apr-05 INF220 Prosjekt i modellering 25
Hvilke assosiasjoner? eller jakten på de elementære utsagn mange-til-mange-assosiasjoner med assosiasjonsklasse en-til-mange-assosiasjoner funksjonelle avhengigheter Sjekk ved å tolke assosiasjonene som tabeller og fylle inn forekomster! Gir tabellene mening? Stemmer de med rapportene? 2-Apr-05 INF220 Prosjekt i modellering 26
Usynlige begreper Husk at forekomstene i en relasjon er en mengde Foreligger det noe sorteringsbehov? I så fall trenger vi noe å sortere! 2-Apr-05 INF220 Prosjekt i modellering 27
Avdelingsnavn avdelingsnavn {id} 0.. «identifying» Kommune kommunenr2s {id} avd kommune skattekommune Fylke fylkenr {id} Avdeling avdelingsnr {id} Ansatt ansattnr {id} 0.. 0.. avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} lønn priv tlf Prosjekt prosjektnavn{id} Modellen Prosjektdeltakelse prosj timer Varighet #timer {id} 2-Apr-05 INF220 Prosjekt i modellering 28
Skranker? Er det noen relevante skranker som bør legges inn i modellen? 2-Apr-05 INF220 Prosjekt i modellering 29
Og så grupperer vi! 2-Apr-05 INF220 Prosjekt i modellering 30
Avdelingsnavn avdelingsnavn {id} 0.. Avdeling avdelingsnr {id} avdelingsnavn {fk} fylkenr {fk} avdkommune{fk} avdbudsjett{fk} Ansatt ansattnr {id} avdeling{fk} fylkenr {fk} skattekommune{fk} lønn {fk} 0.. 0.. Gruppert modell Kommune «identi- fying» fylkenr {id}{fk} kommunenr2s {id} avd kommune avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} avdtlf{fk} privtlf{fk} 2-Apr-05 INF220 Prosjekt i modellering 3 lønn priv tlf skattekommune Prosjektdeltakelse ansattnr{id}{fk} prosjektnavn {id}{fk} prosjtimer {fk} prosj timer Fylke fylkenr {id} Prosjekt prosjektnavn{id} Varighet #timer {id}
Avdelingsnavn avdelingsnavn {id} 0.. Avdeling avdelingsnr {id} avdelingsnavn {fk} fylkenr {fk} avdkommune {fk} avdbudsjett {fk} Ansatt ansattnr {id} avdeling{fk} fylkenr {fk} skattekommune{fk} lønn {fk} Forenkling 0.. 0.. Kommune «identi- fying» fylkenr {id}{fk} kommunenr2s {id} avd kommune avd budsjett avd tlf Penger #beløp {id} Telefon tlf.nr {id} avdtlf{fk} privtlf{fk} 2-Apr-05 INF220 Prosjekt i modellering 32 lønn priv tlf skattekommune Prosjektdeltakelse ansattnr{id}{fk} prosjektnavn {id}{fk} prosjtimer {fk} prosj timer Fylke fylkenr {id} Noen overraskelser? Prosjekt prosjektnavn{id} Varighet #timer {id}
Hvordan sette opp en databasestruktur med SQL CREATE osv 2-Apr-05 INF220 Prosjekt i modellering 33
Hvordan populere en database med SQL INSERT osv 2-Apr-05 INF220 Prosjekt i modellering 34
Hvordan få tak i en relasjonsdatabase fra Java JBDC-grensesnittet 2-Apr-05 INF220 Prosjekt i modellering 35
SQL i et Java-program Oppkobling mot databasen import java.sql.; import oracle.sql.; import javax.swing.; import oracle.jdbc.driver.; //må lastes ned, classes2.zip class OracleInf050 { public static void main(string args[ ]) throws SQLException { // Last ned Oracle JDBC driveren DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver( )); // Be bruker om brukernavn og passord String brukernavn = JOptionPane.showInputDialog("Brukernavn: "); String passord = JOptionPane.showInputDialog("Passord: "); // Oppkobling mot databasen Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@delphinium.ifi.uio.no:52:ifiora",brukernavn, passord); 2-Apr-05 INF220 Prosjekt i modellering 36
SQL i et Java-program Spørring og utskrift // Lag et SQL-setningsobjekt Statement stmt = conn.createstatement(); // Utfør en spørring ResultSet rset = stmt.executequery("select from Husholdningsavfall"); // Iterer gjennom resultatet og skriv ut noen av attributtene while ( rset.next( ) ) { System.out.print (rset.getstring()); // attributt nr System.out.print (" " + rset.getstring("kommunenavn")); System.out.println (" " + rset.getstring("avfallsmengde")); } System.exit(0); // fordi JOptionPain brukes uten foreldrevindu } } //OracleInf050 2-Apr-05 INF220 Prosjekt i modellering 37
Avdelingsnavn avdelingsnavn {id} 0.. Modellen avd kommune skattekommune Fylke fylkenr {id} Avdeling avdelingsnr {id} Ansatt ansattnr {id} 0.. 0.. avd budsjett avd tlf «identifying» «identifying» Penger #beløp {id} Telefon tlf.nr {id} 2-Apr-05 INF220 Prosjekt i modellering 38 lønn priv tlf Prosjektdeltakelse «identifying» Kommune kommunenr2s {id} prosj timer Prosjekt prosjektnavn{id} Varighet #timer {id}
Objektorientert realisering I Avdeling avdelingsnr avdelingsnavn avdbudsjett <set>:telefon Kommune fylkenr kommunenr2s Ansatt ansattnr <set>:telefon <set>: (prosjektnavn, varighet) skatter_til Denne implementasjonen setter den ansatte i sentrum. I tillegg har vi valgt å beholde Avdeling og Kommune som egne klasser, 2-Apr-05 INF220 Prosjekt i modellering 39
Avdeling avdelingsnr avdelingsnavn avdbudsjett <set>:telefon fylkenr kommunenr2s Objektorientert realisering II Denne realiseringen er velegnet hvis fokus er på prosjektene og hvem som arbeider på dem. Merk at kommunene ikke lenger er egne objekter, dvs. at DBMSet ikke kan kontrollere om kommunenumrene er lovlige Ansatt Ansattnr <set>:telefon skatt_fylkenr skatt_kommunenr2s Prosjektdeltakelse varighet Prosjekt prosjektnavn 2-Apr-05 INF220 Prosjekt i modellering 40
SLUTT 2-Apr-05 INF220 Prosjekt i modellering 4