om kravspesifikasjoner - ntnu · web viewom z. innholdsfortegnelse generelt om z 1 det matematiske...

23
Formelle krav til programvare Om Z.

Upload: others

Post on 13-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Formelle krav til programvare

Om Z.

Page 2: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Innholdsfortegnelse

GENERELT OM Z................................................................................................................................ 1

DET MATEMATISKE GRUNNLAGET..............................................................................................3

MENGDER............................................................................................................................................. 3PREDIKATLOGIKK.................................................................................................................................. 4RELASJONER OG FUNKSJONER................................................................................................................ 6OPERASJONER PÅ RELASJONER OG FUNKSJONER...................................................................................10SEKVENSER......................................................................................................................................... 11NOEN EKSEMPLER............................................................................................................................... 12

REFERANSER..................................................................................................................................... 18

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

I I

Page 3: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

GENERELT OM Z

Z er et formelt system hvor hensikten er å bygge opp en matematisk modell av programvaresystemet. Matematikken som brukes har sitt utgangspunkt i den diskrete matematikken. Videre er typer sentralt. Alle variable som introduseres i en spesifikasjon må være av en bestemt type. I Z er alle typer mengder. Det vil igjen si at medlemmer i en mengde i Z må alle være av samme slag. Man bruker begrepet typet mengde.

Typer gjør det mulig å avdekke visse feil. Et lite eksempel. I et biblitoksystem har man gjerne bøker og lesere. Vi vil buke variable av disse typene. Uten å ta stilling til hvordan disse datatypene vil være representert i detalj, kan vi introdusere dem som gitte mengder. Det gjøres på følgende måte:

[BOK, LESER]

Variabler av typen bok og leser deklareres slik:

EnBok:BOKEnLeser:LESER

Fordi disse er av forskjellig type er det ikke tillatt å blande disse i et uttrykk.

EnBok = Enleser

er ulovlig og slik sjekking kan gjøres automatisk.

Typer gir struktur til en spesifikasjon. Dette er viktig også ved programmering.

Visse typer er implisitte i Z. En av disse er alle hele tall. Denne gitte mengden kalles Z.1

Z {.., , , , , , , ,....}3 2 1 0 1 2 3

Andre viktige typer

N n Z n { : | }0

1 0N n Z n { : | }

1 Z har mange spesielle symboler. Disse finnes ikke på vanlige tekstbehandlere. Dette er en av svakhetene med Z. For å angi spesielle typer, bruker jeg den fonten som ligner mest. Men det er ikke alltid man lykkes like lett.

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

1

Page 4: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Medlemmer av disse mengdene er fremdeles av typen Z. Mengdene N og N1 er submengde av Z.

Spørsmålet dukker nå opp om hva typen til disse mengdene er. De er ikke av typen Z fordi de ikke er heltall. Det er her begrepet potensmengde2 kommer inn. Her bruker vi konstruktøren P. En potensmengde er mengden med alle submengdene som kan lages av en mengde. Medlemmene i potensmengden er selv mengder. Man inkluderer både den tomme mengden og hele mengden i potensmengden.

Eksempler:

XPX

{ , }{ ,{ },{ },{ , }}1 2

1 2 1 2

og

Y PZ Y Z

Et bibliotek er en samling med bøker. Det betyr at typen til bibliotek er potensmengden med alle boksamlinger:

bibliotek PBOK:

Et bibliotek er en mengde, av mange mulige, som inneholder et antall bøker. Denne mengden må være en av mengdene i potensmengden til BOK.

I tillegg til mengde brukes predikatlogikk til å bygge opp spesifikasjoner. Og fordi mengder er så sentralt i Z er også de vanlige operasjoner på mengder en del av det matematiske grunnlaget. Relasjoner og funksjoner er også en del av Z. Spesielle operasjoner på relasjoner og funksjoner er introdusert i Z.

En spesifikasjon i Z vil bestå av både en tekstlig, uformell del og en formell del. For å skille den formelle delen fra den tekstlige brukes såkalte skjema. Her følger et eksempel på et skjema

2 På engelsk brukes begrepet powersett.

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

Navn på skjemaet

Her er en signaturdel hvor elementer i spesifikasjonen introduseres

Her er predikatdelen hvor sammenhenger og beskrankninger uttrykkes formelt.

2

Page 5: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

DET MATEMATISKE GRUNNLAGETInnledningsvis har vi poengtert at de matematiske redskapene i Z er:

Mengdelære

Predikatlogikk

Relasjoner og funksjoner

Vi skal se nærmere på disse redskapene gjennom noen eksempler.

MengderMengder er knyttet til typer. Elementene i en spesifikasjon må være av en type og typer er mengder. Et system for fotball har trolig behov for fotballspillere. Et slikt sett kan være

Fotballspillere == {Flo, Berg, Mini, Johnsen, Grodås, Gill, Jamtfall, Heggem, Rudi, Rekdal, Myggen, Skammelsrud, Solbakken, Solskjær, Strand, Rushfeldt, Brattbakk, Bjørnebye, Kvarme, Strandli, Brattbakk, Aase, …}

Symbolet == kan leses som ”er definert som”.

Denne mengden er så stor at det er upraktisk å definere den ved å liste opp alle medlemmer i mengden. Fotballspillere er nå en type. Vi kan deklarere variabler av denne typen

fotballspiller : Fotballspillere

og variabelen kan brukes i uttrykk

fotballspiller = Mini

mini Fotballspillere

Et landslag vil bestå av spillere. Uten å gå Drillo i næringen så er dette et forslag til et landslag

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

3

Page 6: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

landslaget = {Jamtfall, Heggem, Hoftun, Johnsen, Bjørnebye, Rekdal, Skammelsrud, Solbakken, Solskjær, Flo, Mini}

Hva er nå typen til landslaget? Fordi landslaget er en gruppe med spillere kan ikke typen være Fotballspillere.

Landslaget er en mengde. Det betyr at typen må være en mengde som har mengder som medlemmer. Her kommer begrepet Potensmengde inn. Potensmengden til en mengde er mengden med alle submengder til mengden!! Potensmengden til Fotballspillere består av

PFotballspillere = {Ø, {Flo, Berg, Mini}, {Hotun, Grodås, Gill, Brattbakk}, {Bragstad, Aase, Flo, Berg, Mini, Brattbakk, Myggen},…}

Et av disse submengdene som vi kan danne vil være landslaget. Vi kan gjøre denne deklarasjonen

landslaget : PFotballspillere

Likedan kan vi ønske å trekke frem målvaktene.

målvakter = {Grodås, Gill, Jamtfall}

målvakter : PFotballspillere

Landslaget og målvakter er begge en samling spillere.

PredikatlogikkPredikatlogikk dreier seg om utsagn og deres sannhetsverdi. I Z bruker vi utsagn for å beskrive elementer som inngår i mengder og sammenhenger mellom elementer.

I det foregående kapittel definerte vi mengden Fotballspillere. Denne mengden er så stor at det er uhensiktsmessig å liste opp alle medlemmer når vi definerer mengden. Her kan predikatlogikk hjelpe oss.

Fotballspillere == {folk : FOLK| folk er fotballspillerfolk}

Sagt med ord – fotballspillere er mengden av alle folk som oppfyller kravet til å være fotballspiller. Dette uttrykket er på formen

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

4

Page 7: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Deklarasjon|SkrankePredikat

som sier at alle deklarerte, som tilfredsstiller Skranke også må tilfredsstille Predikat. er den universelle operator. I predikater brukes også den eksistensielle operator, . Vi kan ha uttrykk på formen

Deklarasjon|SkrankePredikat

som sier at det eksisterer noen deklarerte som tilfredsstiller Skranke og Predikat.

Disse er ekvivalente med

Deklarasjon|SkrankePredikat

Deklarasjon|SkrankePredikat

Vi kan også finne følgende form

Deklarasjon|PredikatUttrykk

som f.eks

{n : N | n < 4 n2}

Mengden er dannet ved å se på verdier fra N som er mindre enn fire og kvadrere dem. Det gir denne mengden

{0, 1, 4, 9}

Typen til elementene i mengden er typen til Uttrykk.

Relasjoner og funksjonerSystemer er bygd opp av enkeltelementer. Elementene samspiller. De står ikke alene. Begreper som brukes for å modellere samspillet er relasjoner og funksjoner. Predikatlogikk hører også med. Relasjoner dreier seg om

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

5

Page 8: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

assosiasjoner mellom mengder. I dagliglivet gir vi mening til slike assosiasjoner. I en undervisningssituasjon kan det være samspillet mellom en gruppe lærere og en gruppe studenter. En gruppe mennesker kan tilhøre samme familie. I det første tilfellet assosieres to grupper. I det siste er assosiasjonen mellom medlemmer av samme gruppen.

Mer formelt kan vi definere en relasjon som en submengde til det kartesiske produktet mellom de involverte mengdene. Hvis vi har to mengder A og B blir det kartesiske produktet en mengde som består av par. Hvert par har et element fra A og et fra B. Dette skrives A B. Et eksempel:

A = {1,11}

B = {Jamtfall, Mini}

A B = {(1,Jamtfall), (1,Mini), (11,Jamtfall), (11,Mini)}

A A = {(1,1), (1,11), (11,1), (11,11)}

Ikke alle medlemmer i det kartesiske produkt vil inngå i en relasjon mellom mengdene. Hvis mengden A representerer draktnummer og B fotballspillere, så vil relasjonen draktnummerSpiller være

draktnummerSpiller = {(1,Jamtfall), (11,Mini)}

Typen til draktnummerSpiller er potensmengden til det kartesiske produktet

P(A B)

dette skrives også

A B

Typen til A B blir

P(A B)

= { Ø,{(1,Jamtfall)}, {(1,Mini)}, {(11,Jamtfall)}, {(11,Mini)}, {(1,Jamtfall),(1,Mini)}, {(1,Jamtfall),(11,Jamtfall)}, {(1,Jamtfall),(11,Mini)}, {(1,Mini),(11,Jamtfall)}, {(1,Mini),(11,Mini)}, {(11,jamtfall),(11,Mini)}, {(1,Jamtfall),(1,Mini),(11,Jamtfall)}, {(1,Jamtfall),(1,Mini),(11,Mini)}, {(1,Jamtfall),(11,Jamtfall),(11,Mini)}, {(1,Mini),(11,Jamtfall),(11,Mini)}, {(1,Jamtfall),(1,Mini),(11,Jamtfall),(11,Mini)}}Det er 16 submengder til en mengde med 4 medlemmer. En av disse er draktnummerSpiller. Generelt vil en mengde med n medlemmer ha 2n submengder.

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

6

Page 9: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Det brukes også et annet symbol for å angi par:

1 Jamtfall

Dvs

draktnummerSpiller = {1Jamtfall, 11Mini}

Det eksemplet som er brukt her tilhører en spesiell gruppe relasjoner. Disse kaller man funksjoner. Mens en relasjon generelt er mange-til-mange er funksjoner mange-til-en. I vårt spesielle eksempel har vi faktisk en en-til-en relasjon, hvilket er en enda strengere spesialisering (en spiller, ett nummer). Vi tar noen flere eksempler.

Fotballspillere spiller normalt for en klubb. Hvis vi er interessert i å spesifisere sammenhengen mellom fotballspillere og klubber, kan vi lage funksjonen spillerfor.

Error: Reference source not found viser sammenhengen.

Figur 1

Denne relasjonen er en funksjon. Det er en mange-til-en relasjon. Vi har her tatt med bare et utvalg av spillere og klubber for å beholde oversikten.

spillerfor = = {MiniRosenborg, BrattbakkRosenborg, HoftunRosenborg, MjeldeBrann, ….}

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

MiniBrattbakkHoftunMjeldeLudvigsenBakkeViljugreinStaurvikHalvorsenFloGulbrandsenWestadHeggem

RosenborgBrannLillestrømSogndalStrømsgodsetVikingBodøGlimtTromsøKongsvingerMossVålerengaHaugesundMolde

7

Page 10: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Typen til spillerfor er

fotballspillereklubber == P(fotballspillere klubber)

Vi skal introdusere noen nye begreper. De er knyttet til de to mengdene som inngår i relasjoner og funksjoner. De relasjoner og funksjoner vi stort sett arbeider med er binære, dvs det inngår to sett. Den mengden som er utgangspunktet kaller vi definisjonsmengden og den som er mottaker kaller vi disposisjonsmengden3. Nå vil ikke nødvendigvis alle elementer i definisjonsmengden og disposisjonsmengden inngå i en gitt relasjon selv om det i eksemplet vi nettopp har sett på gjør det. Der består definisjonsmengden av fotballspillere i eliteserien og disposisjonsmengden av eliteserielag. Vi kunne tenke oss å utvide de to mengdene med henholdsvis alle fotballspillere og alle klubber. I en funksjon spillerforeliteserielag ville det inngå delmengder fra definisjonsmengden og disposisjonsmengden. Disse to mengdene kaller vi henholdsvis domene og verdimengde 4 . Det leder til disse definisjoner:

Funksjon Restriksjoner

Navn Symbol domene en-til-en verdimengde

Total funksjon

Partiell funksjon

Total injeksjon

Partiell injeksjon

Total surjeksjon

Partiell surjeksjon

Bijeksjon

Partiell bijeksjon

Endelig partiell funksjon

Endelig partiell injeksjon

= S

S

= S

S

= S

S

= S

S

S

S

JA

JA

JA

JA

JA

T

T

T

T

= T

= T

= T

= T

T

T

Her har vi kalt definisjonsmenden for S og disposisjonsmengden T. I en total funksjon er domenet lik hele definisjonsmengden. I en partiell funksjon er domenet en delmengde av definisjonsmengden. En-til-en funksjoner kalles en injeksjon. Funksjoner hvor verdimengden er lik hele disposisjonsmengden kalles surjeksjoner. Funksjoner som er både injeksjoner og surjeksjoner kalles bijeksjoner. Funksjonene har forskjellige pilsymboler som det er problematisk å gjengi i MS-Word. I neste figur er det illustrert sammenhengen mellom relasjon og de forskjellige funksjoner.

3 På engelsk source og target.4 På engelsk domain og range. På norsk vil man også finne betegnelsene domene og rang. Det er et

problem å finne gode norske oversettelser. I enkelte bøker skilles det heller ikke mellom domene og definisjonsmengde.

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

8

Page 11: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

Operasjoner på relasjoner og funksjonerEttersom relasjoner og funksjoner dreier som om mengder, bruker vi de velkjente mengdeoperatørene som union, snitt osv. I tillegg er det i Z definert en del spesielle operasjoner. Vi skal se på noen av dem. Først restriksjon og subtraksjon. Vi tar utgangspunkt i eksemplet med fotballspillere og klubber. Det kan være interessant å finne ut hvilke klubber et bestemt utvalg spillere spiller for. Et kriterium kan være unge spillere. Vi kunne også tenke oss å inkludere kvinnelige fotballspillere. Da kan det være interessant å plukke ut en relasjon mellom kvinnelige fotballspillere og klubber. Å gjøre en relasjon mindre kalles å legge en restriksjon på relasjonen. F.eks

kvinnerspillerfor == {Aarønes, Kringen, Pettersen} spillerfor

vi står nå igjen med en mindre relasjon som inneholder par hvor det er kvinnelige fotballspillere. Symbolet for restriksjon er en liggende trekant. Det vi har gjort her er en domenerestriksjon. Tilsvarende har vi for verdimengden. La oss tenke oss at vi er interessert i å lage en relasjon hvor det bare inngår Rosenborgspillere.

spillerforRosenborg == spillerfor {Rosenborg}

Denne operasjonen hvor vi legger en restriksjon på verdimengden gir oss en mengde med par hvor Rosenborg utgjør verdimengden. Symbolet er en liggende trekant også her, men den peker motsatt vei. Vi kaller det verdimengderestriksjon.

To operasjoner som fjerner elementer fra en relasjon er domene subtraksjon og verdimengde subtraksjon. Vi kan tenke oss en situasjon hvor spillere legger opp eller slutter av andre grunner. Vi ønsker å sitte igjen med en relasjon hvor de spillerne som er sluttet ikke lenger er med. La oss anta at Hoftun blir profesjonell i utlandet. Det kan vi uttrykke slik

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

Relasjon

Partiell funksjonTotal funksjonInjeksjon

Bijeksjon

Surjeksjon

9

Page 12: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

{Hoftun} spillerfor

Det skjer hvert år at klubber rykker ned en divisjon. Vi må da fjerne disse klubbene fra relasjonen. F.eks

spillerfor {Lyn, Skeid}

Flere relasjoner kan kobles sammen ved at verdimengden til en relasjon er domenet for en annen. Det kalles å komponere relasjoner. Operatøren er et stort semikolon. Et eksempel: Vi kan tenke oss en relasjon mellom klubber og europacup’er:

erIeuropacup == {Rosenborg mesterligaen, Tromsø cupvinner, LillestrømUefacup}

For å finne ut hvilke spillere som spiller i en europacup kan vi kombinere spillerfor og erIeuropacup:

spillereuropacup = spillerfor ; erIeuropacup = {Hoftunmesterligaen, Brattbakkmesterligaen, …}

Relasjonens speilbilde danner vi ved å plukke ut en submengde i domenet og får som resultat den submengden fra verdimengden som disse er paret med. F.eks så kunne vi være interessert i hvilke klubber Hoftun og Mjelde spiller for.

HoftunMjelde = spillerfor { Hoftun, Mjelde} = {Rosenborg, Brann}

Vi skal ta enda en operasjon på funksjoner. Av og til skifter spillere klubb. Det fører ti endringer i en relasjon. Eksempel, Westad går fra BodøGlimt til Brann. For å lage en ny korrekt relasjon mellom spillere og klubber, må vi først fjerne paret hvor Westad assosieres med BodøGlimt og deretter legge til paret som assosierer Westad med Brann. Det er ikke nok å legge til et nytt par. Da har vi ikke lenger en funksjon. Dette kan vi skrive

korrigertSpillerfor == ({Westad} spillerfor) {WestadBrann}

Denne kombinerte operasjonen er det et eget symbol for, . Vi kunne derfor ha skrevet

korrigertSpillerfor == spillerfor {WestadBrann}

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

10

Page 13: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

SekvenserDet siste begrepet vi skal ta for oss er sekvenser. Mens rekkefølgen vi lister elementer i en mengde ikke spiller noen rolle, finnes det situasjoner der den nettopp gjør det. For å modellere det bruker vi begrepet sekvens. Vi kan definere en kø som en sekvens:

drosjekø == {Per, Pål, Espen}

Denne er forskjellig fra køen

matkø == {Espen, Per, Pål}

Hvis de ble oppfattet som mengder ville de to mengdene være like. For å betegne en sekvens hvor rekkefølgen spiller rolle bruker vi derfor et annet symbol.

og

drosjekø matkø

Vi kan se på en sekvens som en funksjon mellom sekvensnummer og elementer

En viktig operasjon på sekvenser er sammenkobling (konkatinering). Den sørger for å stokke om på sekvensnumrene slik at de blir riktige. F.eks

drosjekø matkø =

Noen eksemplerI dette avsnittet skal vi se hvordan vi bygger opp spesifikasjoner i Z ved hjelp av det apparatet som er introdusert i de foregående avsnittene. Vi tar for oss følgende forenklede problemstilling:

Fjernundervisning øker i omfang. Det er derfor behov for et system som kan hjelpe til med å administrere fjernundervisningskurs. Studenter som ønsker å delta i et kurs må melde seg på. Deltakerantallet er begrenset. Når kurset er fulltegnet , blir nye søkere avvist. Det må betales en kursavgift. Når avgiften er betalt, får studenten et passord som gir tilgang til læremateriellet som ligger på nettet. Studentene må få godkjent et antall øvinger for å få gå opp til eksamen. En student behøver ikke gå opp til eksamen. Hvis det nødvendige antall øvinger

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

11

Page 14: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

er godkjent, kan studenten få et kursbevis. Studenter som har bestått eksamen får et vitnemål.

Noen av operasjonene er:

Registrering av studenter. Hvis kurset er fulltegnet eller studenten allerede er registrert gis en melding.

Registrering av godkjent øving. Melding gis hvis øvingen allerede er registrert.

Registrering av betalt kursavgift og tildeling av passord.

Avmelding av student. Melding gis hvis studenten ikke er påmeldt.

Forespørsel om antall godkjente øvinger. Melding gis hvis det ikke er nok godkjente øvinger.

Forespørsel om en gitt student er påmeldt.

Forespørsel om en gitt student har betalt kursavgift.

Vi starter med å introdusere noen gitte mengder. De representerer størrelser variabler som vi vil bruke i programmet, men som vi på dette stadium ikke tar stilling til den detaljerte representasjon. Dette er vanlig i Z. Vi starter med tre gitte mengder:

[STUDENT, PASSORD, ØVING]

Antallet studenter på et kurs er begrenset. Det introduserer vi slik

| maksantall : N1

Det kreves et minimum antall øvinger godkjent for å kunne gå opp til eksamen eller for å få et kursbevis.

| minantall : N

Det vil gis meldinger som respons på operasjoner:

MELDING ::= vellykket

| ikkepåmeldt

| nokøvinger

| ikkenokøvinger

| alleredepåmeldt

| betalt

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

12

Page 15: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

| ikkebetalt

| ikkeplass

Det vil være tre grupper av studenter. De som er påmeldt, de som har betalt kursavgift og de som har levert nok øvinger. Vi kan nå begynne å sette opp noen skjema.

Det er definert tre grupper av studenter. Typen er for alle potensmengden til STUDENT. De som har betalt er en submengde av de som er påmeldt. Det er en betingelse for å få godkjent øvinger at kursavgiften er betalt. Kravet uttrykkes ved at nokgodkjent gjøres til en submengde til betalt. Dette første skjemaet introduserer de variable, deres typer og restriksjonene på dem. At en studenter har fått passord er en funksjon mellom STUDENT og PASSORD. Egentlig er det en partiell injeksjon – en student, ett passord.

Når programmet starter første gang er noen mengder tomme. Det kan vi få frem ved å skrive

Vi har her brukt kortformen av et skjema. Den bruker vi når ting får plass på en linje. Av dette skjema kan vi slutte

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

Kurs

påmeldt : PSTUDENTbetalt :PSTUDENTnokgodkjent : PSTUDENTharpassord : P(STUDENTPASSORD)kursetsØvinger :PØVINGgodkjentØving : P(STUDENT X ØVING)

betalttnokgodkjenpåmeldtbetaltmaksantallpåmeldt

#

13

Page 16: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

kursstart nokgodkjent’ = Ø harpassord’ = Ø

Det siste er et teorem. Et teorem er et uttrykk for noe som er sant med utgangspunkt i det som allerede er spesifisert.

Her følger noen operasjoner:

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

PåmeldingOK

KursenStudent?:STUDENTenMelding!:MELDING

enStudent? påmeldt#påmeldt < maksantallpåmeldt’ = påmeldt {enStudent?}enMelding! = vellykket

14

Page 17: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

InnbetalingOK

KursenStudent? : STUDENTetPassord? : PASSORDenMelding! : MELDING

enStudent? påmeldtenStudent? betaltenStudent? etPassord? harpassordbetalt’ = betalt {enStudent?}harpassord’ = harpassord {enStudent? etPassord?}enMelding! = vellykket

15

Page 18: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

GodkjentØvingOK

KursenStudent? : STUDENTenØving? : ØVINGenMelding! : MELDING

enStudent? betaltenØvingt? kursetsØvingerenStudent? enØving? godkjentØvinggodkjentØving’ = godkjentØving {enStudent? enØving?}enMelding! = vellykket

NokØvingOK

KursenStudent? : STUDENTenMelding! : MELDING

enStudent? betalt#({enStudent?} godkjentØving) minantallnokgodkjent’ = nokgodkjent {enStudent?}enMelding! = nokøvinger

16

Page 19: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

De to siste kan vi kombinere

Her er en operasjon til

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

IkkeNokØvinger

KursenStudent? : STUDENTenMelding! : MELDINGantallØvinger! : N

enStudent? betaltantallØvinger = #({enStudent?} godkjentØving)antallØvinger! < minantallenMelding! = ikkenokøvinger

PåmeldtOK

KursenStudent? : STUDENTenMelding! : MELDING

enStudent? påmeldtenMelding! = vellykket

17

Page 20: Om kravspesifikasjoner - NTNU · Web viewOm Z. Innholdsfortegnelse Generelt om Z 1 Det matematiske grunnlaget 3 Mengder 3 Predikatlogikk 4 Relasjoner og funksjoner 6 Operasjoner på

I disse spesifikasjonene har vi brukt symbolene og . Det første markerer en endring i spesifikasjonsobjektet. Det andre at det ikke er noen endringer.

REFERANSERPotter, Sinclair, Till; An Introduction to Formal Specification and Z, Prentice Hall, 1991, ISBN 0-13-478702-1

Ian Sommerville, Software Engineering, Addison-Wesley, 1995, ISBN 0-201-42765-6

DOCUMENT.DOC © TORE BERG HANSEN - 22.05.2023VERSJON 1.0

18