11
HØGSKOLEN I BERGEN Avdeling for ingen iør utdan ning Instit utt for e lektro fag EKSAME I: KLASSE: DATO: Antall sider: Antall oppga er: Hjelpem idler: Tid: Sensor: Faglæ rere: TOE053 Industriell IT 3EB 07.12.2007 forside + 7 sider oppgaver + 3 sider vedlegg 4 Kalkulator, alle typer ElmasrilNavathe: " Fundamentals of Database stems" Ullman: " MySQL - Visual Quickstart Guide" DuBois: " lySQL - The definitive guide ..." Abada: "Programming My QL with Visual C++ 6.0" 9.00 - 14.00 Gerhard Nygaard Adis Hodzic, Jan Martin Johannessen

HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Embed Size (px)

Citation preview

Page 1: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

HØGSKOLEN I BERGENAvde ling for ingen iørutdan ningIns tit utt for elektrofag

EKSAME I:

KLASSE:

DATO:

Antall sider:

Antall oppga er:

Hjelpem idler:

Tid:

Sensor:

Faglærere:

TOE053 Industriell IT

3EB

07.12.2007

forside + 7 sider oppgaver + 3 sider vedlegg

4

Kalkulator, alle typerElmasrilNavathe: " Fundamentals of Database stems"Ullman: " MySQL - Visual Quickstart Guide"DuBois: " lySQL - The defin itive guide ... "Abada: "Programming My QL with Visual C++ 6.0"

9.00 - 14.00

Gerhard Nygaard

Adis Hodzic, Jan Martin Johannessen

Page 2: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Oppgave 1 (20 %)

al Hva er formålet med SOL?

bl Anta at noen har laget en SOL-beskrivelse av system X. Anta videre at vi skalimplemente re systemet ved å bruke C++ og Win32API systemfunksjoner.

i. Hva er det et blokkdiagram forteller til en som skal implementeresystemet?

ii. Hva er det et prosessdiagram forteller til en som skal implemente resystemet?

c) Du har fått i oppdrag å modellere et bankhvelvsystem ved hjelp av SOL.Følgende kraver gitt:

Hvelv låses (låsen er en ekstern enhet) ved å sende et signal (signal "Iaas ')når en dørsensor (også en ekstern enhet) signa liserer at døren ble lukket(signal "lukket'). For å åpne hvelvet trenger man et brukernavn og et passord.

Apn ingsprosedyren er som følger: Et brukernavn (signal "brukernavn", sombæ rer en streng) mottas fra en ekstern enhet - en terminal. Systemet ska lderetter vente på et passord (signal "passord", som mottas fra terminalen , ogsom også bærer med seg en streng). Passordet og brukemavnet evalueres.Hvis begge er gyld ige blir døren åpnet (signal "aapne" sende s til låsen). Riktigpassord må komme maks 60 sekunder etter at "brukernavnt-siqnatet ermottatt. Systemet tillater maks tre passord-forsøk. (Merk at brukernavn tasteskun en gang.)

Hvis systemet detekterer et "ikke vellykket åpningsforsøk" (brukernavnog/eller passord er ugyldig , elle r tiden løper ut), skal systemet sende etalarmsignal (signal "alann", uten noen data) til bankens sikkerhetsavdeling(en ekstern enhet).

For enkelhets skyld antar vi at kun ett bruke rnavn-passord-par eks isterer oger "hardkodel" i systemet som to strengvariab ler (se "Bankhvelv"­prosessdiagram).

Din oppgave: Vedlegg 1 inneholder diagrammer som viser deler aven muligbankhvelvsystemmodell . Du skal gjøre følgende:

I) Systemdiagrammet i vedlegg 1 mangler noen deklarasjoner for atdet skal være komplett. Oppgi de deklarasjoner som må legges til.Hint: Analyser systemdiagrammet og les oppgaveteksten nøye.

Il) Tegn ferdig prosessdiagrammet "Bankhvelv". Ikke glem nødvendigedeklarasjoner.

2

Page 3: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Oppgave 2 (30 %)

a) Navngi tre typer av systemobjekter (foruten "Event"-objekter) som harsynkronisering som primærformål. Navngi også minst to typer avsystemobjek ter som kan brukes som synkroniseringsobje kter, men som ikkehar synkronisering av tråder som primærformåL

b) Forklar hvordan vi bruker et "Event"-objekt og oppgi minst en forskjell mellom"manual reset "- og "autornatic reset---Eve nt'"-objekter. Diskusjonen din skalogså nevne WIN32API-funksjoner vi benytter oss av når vi skal bruke et elle rflere "Event"-objekter.

c) Et "Critical Section"-objekt ligner (virkemess ig) på en annen type avsynkroniseringsobjekter. Navngi den andre synkroniseringsobjekltypen.Fork lar kort om forde ler og ulemper ved å bruke "Critical Sect ion"-objekterframfor den andre objekltypen.

d) I ved legg 2 finner du et SOL-fragment og et programfragment som viser endel aven mulig implementasjon. Du skal skrive C++-kode for funksjonmain ( ) . Koden din skal være i samsvar med SOL-fragmentet (og resten avkoden som allerede er skrevet ). Nødvendige Win32API-deklarasjoner finnerdu i vedlegg 3.

3

Page 4: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Oppgave 3 og .J dreier seg om databasedelen av pensum. Vær snill å begynne på ny tt arknår du begynner å svare på disse oppgavene.

Oppgave 3 (teller 25 % )

[Bakgrunnsstoff hentet fra ww\\ .stato ilhydroxom.)

Bildet viser Kizomba A· feltet utenfor ky sten av Ang Ola

Bakgrunn

StatoilHydro har virksomhet over hele kloden. Produksjonsanlegg o lTshore og på land måkontinuerlig vedlikeholdes og store og små komponenter må skiftes ut, enten ved planlagtvedlikehold eller når uforutsette feil oppstår. For o fTshorean legg finnes det regionalelagre på land som skal dekke dette behovet.

Når komponenter skal leveres offshore brukes vanligvis fo rsyningsskip, men ogsåhelikopter. Når deler skal leveres til anlegg på land brukes Statoilllydros egne biler.offentlig post. distribusjonsfirma osv., alt etter mengde. hvor mye det haster og hva detkoster.

På grunn av fusjonen mellom Statoil og Hydros olje- og gassvirksomhet må det designeset nytt logistikksystem. Dette skal håndte re all forsendelse av komponenter og skal kunnebrukes av alle ansatte. uansett hvor de befinner seg.

Et typisk scenario: Kåre på Troll Acplattforrncn oppdage r at en pakning i en ventil lekker.l ian logger seg på logistikksystemet og bestiller et pakningssett til den aktuelle ventilen.li an krysser av for at dette haster. Tone p lageret på CCB-basen på Ågotnes tar oppbestillingen på skjermen. Il un finner pakningssettet. printer ut en etikett med nødvendiginformasjon, fester etiketten på pakningssettct og legger det i hyllen merket "T roll A ­haster". Seinere blir pakningssettet hentet av en bil som kjører den til Flesland . Sjåførensørger for at forsendelsen kommer med neste helikopter til Troll A. Kåre kan hele tidenfølge med på sin skjenn hvor pakningssettet er og tar i mot det når helikopteret lander ­eIler ser etter det i mottakshyllen.

Page 5: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Vi skal nå konsentrere oss om en database som håndterer og følger opp/ orsefl(lelser avfysiske komponenter mellom lager og anlegg. Du kan se bort fra innkjøp, lagerhold .lagerstyring , sending av bestilli ng til lager, vedlikeholdsplaner, kostnader osv.

Her er noen holdepunkter for de t som er sentralt:

• Vi har fysiske lagre der komponenter leveres fra.• Vi har fysiske produksjonsanlegg (plattformer, rigger. anle gg på land) som mottar

komponenter.• Mellom et lager og et anlegg foregår forsendelser - tenk på det so m pakker.• En forsendel se kan inneholde flere forskjellige kom ponenter av fors kjellig an tall.• Hver forsendelse er knyttet til en ansvarlig person. (Fo r uforutsett vedlikehold er

det typisk den so m oppdager feilen og bestiller komponentene, for planlagtvedlikehold kan det være en leder på land som er ansvarl ig.)

• Hver forsendel se er knyttet til en organisatorisk enhet som er ansvarlig formottaket av den. (Husk at den som bestilte ikke nød vendi gvis er på vakt nårforsendelsen ankommer.)

• Hver forsendelse er merket med all relevant informasjon. (I praksis en storkl ist relapp som er printet ut av den som klargjorde forsendel sen.)

• Det skal være mulig for a lle ansatte til en hver tid å kunne spore og følge enhverforsendelse via logistikksystemet: Hvor er forsendelsen nå? Når er forven tetankomst? Hvilket trans portmiddel kommer den med?

• Visse forsendelser må spesialhåndteres og infonnasjon om dette må følgeforsendelse n: Noe er stort og tungt, noe går len i stykker, noe er giftig, noe erbrannfarlig, noe er eksplosivt , noe utgjø r en milj øtrussel.

Din o ppgave

Din oppgave nå er å designe et databasesystem som kan hånd tere den logistiske prob lem­stillingen som er beskrevet foran:

a) Tegn et ER-diagra m eller EER-d iagram. Angi de viktigste attributtene .l lusk å angi primærnøkler.

b) Gi en komp lett logisk re lasjonsmo de ll (= log ical schcma I relation schema,som beskrevet f.eks. på s l44 i Elmasri/Navathe) for din datamodell. Angidatatype for hvert attributt. Angi primærnøkkel (primary key) medunderstrekin g. Husk at frem mednokler skal være med.

e) Forklar kort hvordan din datamodell. altså ditt svar på spørsmål a) og b).sta rter informasjon om farlige forsendel ser.

Til leggsspørsmål som gjelder hele logistikksystemet:

d) Forklar kort hvordan du tenker deg at logistikksystemet til Statoill-lydro somhelhet må utformes for å:

l. Sikre at informasjon om farl ige forsendelser er mest mulig synligfor alle invo lverte personer.

Il. Sikre at det er enkelt for en ansatt å ta oversikt over status tilforsendelser han/hun venter på.

5

Page 6: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Oppgave 4 (25 %)

Bakgrunn

Det finne flere vakt el kaper som in l Il rer alarmanlegg i boliger. drifter disse oghåndterer situa joncn når en alarm utlc e . l edenfor finner du en ER-m dell for endatabasel ning h t tenkt vak el kap.

I Deteksjo n I N

ER-modell

Forklaring til ER-modellen

Sensor N

nl::l!'O!'Op.rinn

( vB: Modellen er f orenklet iforhold til hm 'om vil "ære reali tisk. Det er for eksempelikke talt hen yn til ukturering eller alarm for eldre og syke. Håndtering og oppfølging avalarmutlo ning er o 'ei terkt forenklet.

• Hv r kunde kan ha flere alarmanl ga. for ek empel el hjemme og et på hy ten.• Hver kunde har el passord de må oppgi på oppfordring der om alannen utlø es

ved el uh Il.• Hvert anlegg har en alannkode gyldigKode om brukeren m ta te for deaktivere

innbrudd alarmen når de går inn i hu et.• Tre typer alarm kan utløses:

o Branno Innbruddo erfall

Disse er representert henh old vis med bokstavene "B", ''1'' og" ., i implementa­sjoncn om er dokumentert neden for.

• Til et alarmanlegg kan det være knyttet flere ensorer av ulik typ :

6

Page 7: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

o Senscrtyper so m utløser brannalann:• Vanne• Røyk• Flamme

o Sen sortyper som utløser innbruddsalarm:• Bevegelse• Knusing av rute• pning av dor/vindu

• A lann kan utløses på disse måtene:o Deteksjon - en sensor gir signalo Innlasting:

• Noen taste r feil alannkode gjentatte ganger• Bruker taster egne koder for overfall ell er brann på

betjeningspanelet

Model len er implementert s lik i ~lySQL v5 .1:

CREATE TASLE kunde (kundeNr int (lO) unsigned NOT NULL AUTO_I NCREMENT ,navn v a r c ha r( 4 S) NOT NULL ,ad r e s s e varchar(4S ) ,mobi l c har (12) ,passord char(2 0),PRIMARY KEY (kunde Nr) ) ;

CREATE TASLE produs ent (prodIO int(lO) unsigned NOT NULL AUTO_INCREMENT ,navn varchar (4S ) ,PRIMARY KEY (p rod I D)) ;

CREATE TASLE anlegg (a n l e gg I D i nt(l O) uns igned NOT NULL AUTO_ INCREMENT,gateadr va rchar( 4S) ,postnr s ma llint (4 ) uns i gne d ze r o f il l NOT NULL,poststed varcha r( 4 S) NOT NULL,tel e f o n char (12 ) NOT NULL,gyldigKode smal lint (4 ) uns igned zerof ill NOT NULL,kundeNr i nt (lO ) unsigned NOT NULL ,prodlO i nt( lO) unsigned ,PRI~ARY KEY (an l e g g I D) ,FOREIGN KEY (p r odI D) REFERENCES p r odusent (p rodID) ,FOREIGN KEY (kund e Nr) REFERENCES kunde (kund e Nr») ;

CREATE TASLE sensor (anl eggIO int (l O) uns igned NOT NULL,s e nsor Nr tiny int (3) uns igned NOT NULL ,a larmType enum ( 'B ', ' I' , 'O' ) NOT NULL,sensorType enum (' røyk ', ' v a rme ' , ' f l a mme' ,

'bevegelse', 'knus i ng ', ' Apning'} NOT NULL,p l a sser ing varcha r( 45) ,prodID i nt( lO) uns i g ne d ,PRI MARY KEY (anl e g g I D, sensor Nr) ,FOREIGN KEY (anl egg ID) REFERENCES anlegg (anlegg I D),FOREI GN KEY (prod ID) REFERENCES produsent (p rodID) ;

7

Page 8: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

CREATE TABLE utlosni ng (anleg g I D i nt (l O) unsig ne d NOT NULL,tidspunkt datetime NOT NULL ,alarmType enum( ' B ' , ' I ', ' O' ) NOT NULL,status c h a r (l) ,t as tet Kode smallint (4 ) u ns igned ze rofi l l ,s e nso rNr ti ny i n t( 3 ) unsigned,PRI MARY KEY (a n l e g g ID , tid s pu nk t) ,FOREI GN KEY (an l e gg I D, sens o r Nr )

REFERENCES senso r (a n l e gg I D, s e nso rNr ) ,FOREIGN KEY (a n l e g g i D) REFERENCES anl e g g (a n l e g g i D» ;

En problemstilling

Vaktsel skapet opplever ofte at alarmer som utløses er falske. Når dette er slått fast blirverd ien i kolonnen sta t u s i tabellen u t losn i ng satt til bokstaven "F". Vaktselskapetmistenker at sensorer fra visse produsenter er upålitelige og trenge r din hjelp til ådokumentere dette.

Din oppgave

Du skal skrive foresporsler (queries) i SQL for hvert av tilfellene nedenfor. Du skal kunskri ve SQL-koden:

a) Vaktselskapet onsker en oversikt over alle anlegg. Denne skal visekundens navn. anleggets adresse, passord og alle relevante te lefonnumre.Listen skal være sortert etter anle ggets telefonnummer.

b) Med utgangspunkt i querien foran. vis hvordan du vil endre den slik atso rteringen blir geografisk - og dermed til nytte når man skal planleggebemanningen.

c) Skri v en query som viser hvor mang e anlegg hver kunde har.d) Skriv en qucry som viser hvor mange sensorer det finnes for hvert an legg .e) I noen tilfeller kommer sensorene fra en anne n produsent en selve

alarmanlegget. Skriv querien som gir oversikt over disse til fell ene.f) Skriv qucrien som gir oversikt over alle falske alarmer som er blitt utlo st

ved deteksjon . Navnet til sensorprodusenten skal være med på listen.g} Etter hvert bli r det mange falske alarmer og listen som querien i f)

produserer blir lang . Skri v den om slik at vi i stedet får vite antall falskealarmer per sensor siste år. Listen skal være so rtert slik at sensorer medhøyest antall falske alarmer vises først. Sensorer med færre enn 10 falskealarmer skal ikke vises.

Tilleg gsporsmål som skal besvares med C++-kode og eventuel le kommentarer:

h) Vi ønsker å legge den nye produsenten "Sensurium" inn i tabellenp r od u s ent. Vis ved et eksempel hvordan koden i et Ce-e-program somhåndterer dette kan se ut.

Tilleggsspørsmål der du må svare i klartekst :

i) Dersom du har oppda get noen svakheter eller uheld ige begrensn inger vedER-modellen eller implementasjonen for alarmsystemet som erdok umentert foran. kan du nå kommentere disse.

8

Page 9: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Vedlegg 1:

System Ban veiv 1(1)

Signa aapne, laas: ~

S· na lukke ;

senserO terrrOl

Qkket] [ Brukernavn, passord ]

,I

Bankhvelv I

[ alarm] [ aapne. laas ]alarrrCh laasCh

"

Bloc k Ban elv

senserOl

sensorS

terrrOl

terrrina!Sr

[ Brukernavn, passord ]

"

1(1)

alarmSr

[ alarm]

Bankhvelv

laasSr

[ aapne, laas ]

Process Bankhvelv 1(1)

"alarrrCh laasOl

ro... bruker Olars ring:ro... bpass Olarstmg:

9

Page 10: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Vedlegg 2:

1( 1)

ttlncllingAdL...--..-_ D

knad: ttlncllngA er enSOL-prosedyre, 0'

li

Process

~ i nc l de <wind ows . h># i nc l ud e < i o s re m># l nc l ude <c time >using name s p ace std ;

HANDLE hende l Traad ;HANDLE e ventTab [2 ] ;

DWORD I API HTr a a d ( LPVOID l pvPa r a m) ; r I

v o i Handli ngA ( l;vold Shutdo~n ( l;

vo l d ma i n ( l{II Ko d e som s ka l skriv e s

DWORD WINAPI HTr a a d (LPVOID l pvPara m) {srand « (u n s i ned ) time ( NULL I I + 10 ) ;.... G",n~ ! "" - ~ r e ":::1: rle •• 0 11 C. :":J :;in ~ ta ll : abs ( r a n d ( l%lO l;". Si,;;. :: . : r ~ ~ ~ h -.. _S l -: ~

cout cc tal l c< endl ;1:: ( t a ll < 3 ) {

Se t Ev e n t (e ventTab [O) ;

e l s e i f ( t a ll > s ) {

SetEv ent (eventTab [ I ]) ;

r e u ro (DWORDl O;

vo "d Han d l ingA ( l {cout cc " h n l i n J A utfo es! " cc endl;

}

10

Page 11: HØGSKOLEN I BERGENhome.hib.no/eksamensoppgaver/ai/2007H/toe053 industriell it... · Kalkulator, alle typer ... DuBois: " lySQL - The definitive guide ..." Abada: "Programming My

Vedlegg 3 :

Utvalgte Win32 funksjon sprototyper. Kommentarer oppgir standardargumentverdier som vi kan bruke (vist kun for noen av argumentene) og noenrelevante returverdier.

HANDLE Cre ateThread (LPSE CURI TY ATTRI BUTES lpThreadAtt r i buc e s ,S IZE_T dw St a c kS i z e ,LPTHREAD_ START_ROUTI NE l pS t a r CAd d r e s s,LPVOID IpPara mete r .DWORD dwCrea t i o n F l ags ,LPDWQRD l pT h r e a d I d

/ , ;;U'.L/ i o

I / l)

/1 I .. ro pe xe e '_i :

l si~ -- - - ------ - --- - ----- -- - -------- - - -- - - - - - - - -- -- - - - - --- ------ - - - - - -- .HANDLE CreateEvent (

LPSECUR I TY_ATTRIBUTES lpEventAttr ibutes . /1 ~l I~ L

BOOL bMa n ua lRese t,BOOL b ln i t i a l S t a te .L PCTSTR l pNa me / I N~LL

l •j o ' !

BDOL Se t Eve nt(HANDLE h Ev e n t

l ;! ~ -------------- - ----- - - - -- - - - - - - - - ---- - - - - - - - --- - - -- ----- - - - - --- - - - . ;vo i d I n iti a li zeCr i t icalSe c tion (

LP CRITl CAL_ S ECTI ON l pC r i t i c a l Se ct i o nl s

void EnterCriticalSect ion (LPCRITICAL_ S ECTI ON lpCrit icalSec t i o n

l ;

void LeaveCrit i c a l Sec t i o n (LPCRIT I CAL_ SECTI ON I pcr it ica lSection

l ;------ -------- --------------------- ------- ------- ------- ----- --- -- ' /

DWORD Wait Fo rS ingleObj ec t (HANDLE hHandle .DWORD d wMil lisecond s

l ;'/ ø e i e ve nr e et: .J1 '; f: ~ 'i i e r : ·:;;'.LT 0'3..I:..':T_') . WI-.l I~EC'.IT

DWORD Wai t ForMult ip leOb jects (DWORD neount •

s :.',1:1-) :' i.:... _~ I: i :l 'J5cb j -:: I:t e rcon s ~ HANDLE · l pHand l e s .

r, ;; i l j":' I;,; :: i 1! I 5 i~ ~ro~ i s e ri n~s ·: ~j ~ ~ ~ e ~ .

BOOL bWa itAl 1 ,DWORD d wMi lli sec onds

l ;D.'. _-:! " :' :-, I:O::- re z u r v-ar c i c r : :_~.• 'l 05J :::::--: - \) -':12' ;:.=-. _--: r ~.T ::::;. ;

. •. :~ 1 7 _ - 1 ~E:·. ;J:"

"