Requirements Engineering/het werk/werkstuk/2008-9/Groep 04 NMR spectroscopie

Uit Werkplaats
Ga naar: navigatie, zoeken

 






Proton NMR spectroscopie



Werkstuk Requirements Engineering


Eamonn Cassidy, Rob Thijssen, Niek Wolfkamp, Iris Trepels



Onderwijsinstituut voor Informatica en Informatiekunde

Radboud Universiteit Nijmegen







version 18 februari 2022



Page Break




Introduction

Op de universiteit dient er voor onderzoeks- en onderwijsdoeleinden gebruik gemaakt te worden van een spectroscoop. Dit is een apparaat dat vrij duur is om aan te schaffen en het gebruik hiervan kan aanzienlijk veel tijd in beslag nemen. Hier komt nog bij dat studenten vanalles kapot kunnen maken, omdat zij onbekend zijn met de daadwerkelijke spectroscoop. Nu is het geval dat er steeds meer studenten zijn die moeten leren werken met een spectrometer. Vanwege bovengenoemde factoren bij het gebruik van een spectroscoop zou het niet efficiënt en tevens niet haalbaar zijn om elke student hiermee te laten werken. Daarom is er een simulator van een spectroscoop gemaakt. Dit prototype van de simulator heeft als doel om de werking van de echte spectroscoop zo goed mogelijk na te bootsen.


Behalve studenten zullen ook docenten, wetenschappers en beheerders gebruik maken van deze simulator, welke overigens web-based zal zijn. Het prototype is echter nog niet toereikend en daarom is het doel om een nieuwe simulator te ontwerpen. Deze moet naast het voldoen aan de eisen van alle belanghebbenden ook realistisch werken. Een experiment zal dus de tijd in beslag nemen zoals dat ook bij de echte spectrometer gaat, ditzelfde geldt op het gebied van kosten. De uiteindelijke simulator zal qua werking en gebruik identiek moeten zijn aan een echte spectrometer.


Hier zullen wij allereerst het probleem uitvoerig analyseren en definiëren via problem statement, mission, vision, value. Vervolgens gaan wij in op het verloop van het project, statement of work, risk analysis. Hierna volgen de requirements, o.a. in beschrijvingen maar ook in een model.


Problem statement

Het probleem is dat er veel studenten zijn, die allemaal op een kostbare machine moeten werken om overweg te kunnen met een spectroscoop. Behalve het kostenaspect, speelt ook het tijdsaspect mee: studenten gebruiken tijd om te oefenen, die gebruikt kan worden voor echt onderzoek. Om dat de studenten direct uit een theorievak worden geconfronteerd met een echte situatie doen zij soms "domme" dingen, en de docent heeft daar geen zicht op.

Omdat er geen groot budget is, en omdat de stakeholders op zoek zijn naar een "open" software project, moet er een geheel nieuw computerprogramma komen om de deze studenten te laten oefenen met een gesimuleerde spectroscoop.

Case analysis

Gebruikers

  • Studenten:

De groep studenten is de grootste groep gebruikers. Deze groep heeft echter ook de minste rechten. De studenten kunnen monsters aanmaken, experimenten uitvoeren, tests analyseren en hun resultaten opslaan. Dit alles is echter in een realistische tijdssetting, en afhankelijk van een vooraf ingesteld budget. Verder kunnen ze hun eigen resultaten en monsters verwijderen.

  • Docenten:

De groep docenten heeft een aantal meer rechten dan de groep studenten, en is ook kleiner. De docenten kunnen moleculen aanmaken, monsters aanmaken, monsters toewijzen aan studenten, budget instellen en wijzigen, studenten en groepen aanmaken en aanpassen en de resultaten van studenten bijhouden.

  • Wetenschappers:

De wetenschappers kunnen het systeem gebruiken voor een snelle analyse, in plaats van een daadwerkelijk (duur) experiment uit te voeren. De wetenschappers kunnen moleculen en monsters aanmaken, experimenten uitvoeren, tests analyseren en resultaten opslaan. Dit is echter zonder budgettaire en tijdsgerelateerde beperkingen.

  • Beheerders:

De beheerders zijn de mensen die alle gegevens van gebruikers en groepen kunnen aanpassen. Zij kunnen gebruikers aanmaken en/of verwijderen, groepen aanmaken, aanpassen en verwijderen, en de database wijzigen.


Stakeholder analysis

Stakeholderlist:

  • Executive sponsor:
    • Dirk van der Linden: Projectleider, sponsor
    • LCJM Peters: Collega van Dirk op scheikundig gebied
    • Dr. Marco Tessari: Docent
    • Erik Arends: Collega van Dirk op natuurkundig gebied

Mission and vision statement

Mission: De voornaamste missie van het project is om de requirements van een Proton NMR spectroscoop - simulator op te stellen. Deze simulator heeft als doel om ervoor te zorgen dat studenten ervaring op kunnen doen en kunnen leren over hoe ze met een spectrometer moeten werken. Hiervoor is een simulator nodig omdat een daadwerkelijke spectrometer erg duur is, en de universiteit er maar een beperkt aantal in haar bezit heeft. Het programma moet ook te gebruiken zijn voor onderzoekers, zonder de tijds- en budget beperkingen die voor studenten wel gelden.

Vision: Het eindproduct zal bestaan uit requirements die een complete beschrijving geven voor het uitprogrammeren van een simulator. De visie van wat deze simulator zal worden is dat het een computerprogramma dat de interactie tussen de gebruiker en de spectrometer simuleert. Er moet een monster geprepareerd kunnen worden door de docent die de studenten dan moeten kunnen analyseren. Zij moeten de instellingen voor de spectrometer kunnen instellen en aanpassen. Vervolgens moet er uit de database voor het monster in kwestie, en de gekozen instellingen, een spectrum berekend worden. De docent moet stap voor stap kunnen zien wat de student allemaal gedaan heeft en wat de resultaten van deze student waren. Er moet ook een bericht naar de docent gestuurd worden als de student “domme” dingen doet met het programma. Onderzoekers moeten ook met deze simulator kunnen werken, zonder dat ze beperkt worden door de “realistische” beperkingen die voor de studenten gelden.

Values: De leden zullen proberen met een oog voor aandacht deze requirements op te stellen. Echter, er is een grote beperking in de hoeveelheid tijd die beschikbaar is voor het project. Daarom zullen er regelmatig keuzes genomen moeten worden mbt wel of niet uitmodelleren van bepaalde functionaliteit. De leden hanteren dus ook een prioriteitsprincipe, de basisfunctionaliteit wordt verkozen boven mooie franjes van minder nut.

Statement of work

  • Facade iteratie: 27 oktober 9:00 uur
  • Filled iteratie: 3 december 9:00 uur
  • Focused iteratie: 5 januari 9:00 uur
Deliverable facade iteratie Status filled iteratie Status focused iteratie Status
Introduction Preliminary version V Preliminary version V Complete V
Problem statement As good as possible V As good as possible V Complete V
Stakeholder analysis As good as possible V As good as possible V Complete X
Mission-vision-values Complete V Complete V Complete V
Statement of work Complete, and up-to-date V Complete, and up-to-date V Complete, and up-to-date V
Risk analysis Complete, and up-to-date V Complete, and up-to-date V Complete, and up-to-date V
Use case survery As good as possible V Nearly complete V Complete V
Use case diagram(s) As good as possible V Nearly complete V Complete V
Integrated UC diagram Complete (though preliminary) V Complete V Complete V
Use cases Not yet! - "Filled" level V Complete ~
Scenarios Not yet! - Several for each UC V Complete ("focused" level) V
Domain models Not yet! - Partially complete V Complete V
Integrated domain model Not yet! - Partially complete V Complete V
Business rules catalogue Not yet! - Partially complete V Complete V
Non-functional requirements Notes V Partially complete V Complete V
Terminological definitions Notes V Partially complete V Complete V
Executive sponsor viewpoint Complete (integrated in M-V-V!) V Complete (integrated in M-V-V!) V Complete (integrated in M-V-V!) V
Use case tests Notes V As good as possible V Complete V
Business process definitions If available / relevant - If relevant X If relevant X
GUI metaphors / storyboards If relevant - If relevant X If relevant X
  • V = afgerond
  • X = nog niet aan begonnen
  • ~ = mee bezig
  • - = nog niet nodig

Risk analysis

# Category Risk Solution needed by Status Days lost Expectancy factor Risk factor
01 Teamprobleem Ziek teamlid meteen 1~5 75% 3.5
02 Teamprobleem Teamlid mist vergadering meteen 1 dag 100% 1
03 Teamprobleem Teamlid stopt met het vak meteen ~10 dagen 10% 1
04 Opdrachtgeverprobleem Executive sponsor verandert van gedachten meteen 5~10 10% 1
05 Opdrachtgeverprobleem (Gedeelte van) usecases worden afgekeurd 2 dagen Twee maal 2~5 dagen 20% 1
06 Materiaalprobleem PC loopt vast meteen 0.5 50% 0.5
07 Materiaalprobleem Wiki onbereikbaar 1 dag meerdere malen gebeurd 1 5% 0.05

Requirements

Use cases

Use case survey

# Name Description Initiating actor
01 Beheren gebruikers In deze Use Case worden alle mogelijkheden beschreven voor het beheer van de gebruikers, dus het aanmaken/verwijderen van gebruikers, het indelen in groepen en het toekennen van rechten. Beheerder, Docent
02 Creëren monster In deze Use Case worden alle mogelijkheden beschreven voor het aanmaken en/of verwijderen van de monsters. Wetenschapper, Docent, Student
03 FID signaal genereren In deze use-case laat de gebruiker aan de hand van instellingen een FID signaal genereren. Student, Docent, Beheerder, Beheerder
04 Fourier Transformatie In deze use-case laat de gebruiker aan de hand van een eerder opgeslagen FID signaal een Fourier transformatie uitvoeren. Student, Docent, Beheerder, Beheerder
05 Opgave opstellen Hier wordt beschreven hoe (de docent) een opgave maakt in het systeem en kan uittesten met het systeem. Docent
06 Molecuul beheer Hier wordt beschreven hoe moleculen kunnen worden toegevoegd, gewijzigd en verwijderd. Wetenschapper, Docent, Beheerder
07 Monster beheer Hier wordt beschreven hoe monsters kunnen worden gewijzigd en verwijderd. Wetenschapper, Student, Docent, Beheerder

Integrated use case diagram

Use Case Diagram.jpg

Individual use cases

01 Beheren gebruikers

Use Case: Beheren gebruikers
Iteration: Focused 0.1
Summary: In deze Use Case worden alle mogelijkheden beschreven voor het beheer van de gebruikers,

dus het aanmaken/verwijderen van gebruikers, het indelen in groepen en het toekennen van rechten.

Basic Course of Events:

Gebruiker wijzigt eigenschappen van een gebruiker:

  1. Systeem vraagt gebruiker van welke gebruiker hij de eigenschappen wil bewerken of dat hij een nieuwe gebruiker wil toevoegen.
  2. Gebruiker selecteert de gewenste gebruiker.
  3. Systeem vraagt gebruiker of hij deze eigenschappen wil wijzigen of verwijderen.
  4. Gebruiker selecteert wijzigen.
  5. Systeem geeft de eigenschappen van de betreffende gebruiker weer.
  6. Gebruiker wijzigt de eigenschappen.
  7. Gebruiker geeft aan om de eigenschappen op te slaan.
  8. Systeem controleert de eigenschappen.
  9. Systeem vraagt om bevestiging
  10. Gebruiker geeft aan zeker te weten om de eigenschappen van de betreffende gebruiker op te willen slaan.
  11. Systeem slaat alle eigenschappen op.
Alternative Paths:

Gebruiker voegt een gebruiker toe:

  1. Systeem vraagt gebruiker van welke gebruiker hij de eigenschappen wil bewerken of dat hij een nieuwe gebruiker wil toevoegen.
  2. Gebruiker geeft aan dat hij een nieuwe gebruiker wil toevoegen.
  3. Systeem vraagt eigenschappen van de toe te voegen gebruiker.
  4. Gebruiker voert de eigenschappen in.
  5. Gebruiker geeft aan om de eigenschappen op te slaan.
  6. Systeem controleert de eigenschappen.
  7. Systeem vraagt om bevestiging.
  8. Gebruiker geeft aan zeker te weten om de betreffende gebruiker toe te voegen.
  9. Systeem slaat alle eigenschappen op

Gebruiker verwijdert een gebruiker:

  1. Vanaf stap 3 in BcoE.
  2. Gebruiker selecteert verwijderen.
  3. Systeem vraagt welke gebruiker hij wil verwijderen.
  4. Gebruiker geeft aan welke gebruiker hij wil verwijderen.
  5. Systeem vraagt om bevestiging.
  6. Gebruiker geeft aan zeker te weten dat hij de betreffende gebruiker wil verwijderen.
  7. Systeem verwijderd de betreffende gebruiker.

Gebruiker voert onjuiste eigenschappen in voor een gebruiker:

  1. Vanaf stap 8 in BcoE.
  2. Systeem constateert dat de eigenschappen onjuist zijn
Exception Paths:
Extension Points:
Triggers:

De gebruiker triggert door middel van het gaan beheren (wijzigen/verwijderen/toevoegen) van een gebruiker

Assumptions:
  • Er staan altijd gebruikers in de database (tenminste 1 beheerder).
  • Het systeem herkent onjuiste eigenschappen
Preconditions:
  • De gebruiker is gemachtigd/ingelogd om de bewerkingen uit te voeren.
Postconditions:
  • Eigenschappen van gebruiker gewijzigd
  • Gebruiker toegevoegd
  • Gebruiker verwijderd
Related Business Rules:

Gebruikers mogen geen onjuiste eigenschappen invoeren.

Author:

Niek Wolfkamp

Date:

27-12-2008

ORM:

Beheren gebruikers orm.jpg

UC Diagram:

UCgebruikers beheren.jpg

02 Creëren monster

Use Case: Creëren monster
Iteration: Focused 0.1
Summary: In deze use-case maakt een gebruiker een monster aan.
Basic Course of Events:
  1. De gebruiker geeft een naam op voor het monster
  2. Systeem geeft lijst met oplosmiddelen in de database weer
  3. Gebruiker kiest oplosmiddel en klikt op verder gaan
  4. Systeem geeft lijst met scheikundige stoffen in de database weer
  5. Gebruiker kiest de scheikundige stoffen
  6. Systeem controleert samenstelling op domme fouten
  7. Systeem berekent kosten van het monster
  8. Gebruiker bevestigt dat hij het monster wil opslaan
  9. Systeem slaat monster en kosten op
Alternative Paths:


  1. Gebruiker kiest alleen een oplosmiddel (blanco)
  2. Systeem gaat verder met BCoE vanaf het berekenen van kosten


Exception Paths:


Extension Points:

De usecase is uit te breiden door het te koppelen aan een "toevoegen aan database" functie.

Triggers:

De gebruiker triggert door te klikken op "monster aanmaken".

Assumptions:

De gebruiker is geauthorizeerd om monsters aan te maken. In het geval van studenten, moeten zij voldoende balans hebben om het monster te kunnen betalen.

Preconditions:

Er staan oplosmiddelen en scheikundige stoffen in de database.

Postconditions:

Een geldig monster staat opgeslagen, bestaande uit samenstelling van het monster(oplosmiddel, scheikundige stoffen, naam) en kosten.

Related Business Rules:
  • Studenten mogen geen domme monsters maken
  • Een monster bevat precies een oplosmiddel
  • Een monster bevat geen of meerdere scheikundige stoffen
  • Een monster heeft precies een unieke naam
  • Elk element (in een molecuul) heeft precies een lading
Author:

Rob Thijssen

Date:

3-1-2009

ORM:

Creeren monster.png

UC Diagram:

UCcreeren monster.jpg

03 FID signaal genereren

Use Case: FID signaal genereren
Iteration: Focused 0.1
Summary: In deze use-case laat de gebruiker aan de hand van instellingen een FID signaal genereren.
Basic Course of Events:
  1. Systeem begint met loggen van de invoer van de gebruiker.
  2. Systeem vraagt gebruiker waardes voor de instellingen in te voeren.
  3. Gebruiker voert waardes in.
  4. Gebruiker geeft aan een FID signaal te willen genereren.
  5. Systeem berekent of het genereren mogelijk is aan de hand van financiële beperkingen
  6. Systeem controleert of ingevoerde waardes correct zijn.
  7. Systeem geeft voortgangsscherm genereren.
  8. Systeem geeft aan klaar te zijn, en toont gegenereerd FID signaal.
  9. Gebruiker slaat FID signaal op.
  10. Systeem slaat log op.
Alternative Paths:
  1. Vanaf stap 5 in BcoE.
  2. Systeem constateert dat het genereren niet mogelijk is vanwege ontoereikende financiën.
  3. Systeem slaat log op.


  1. Vanaf stap 6 in BcoE.
  2. Systeem constateert dat het genereren niet mogelijk is vanwege ‘domme’ waardes.
  3. Systeem slaat log op.


  1. Vanaf stap 8 in BcoE.
  2. Systeem slaat log op.
Exception Paths:
Extension Points:
Triggers:
  • De gebruiker triggert door aan te geven een FID signaal te willen generen.
Assumptions:
  • De gebruiker weet wat de instellingen moeten zijn.
  • Het systeem weet wat ‘domme’ waardes zijn.
Preconditions: De gebruiker is ingelogd.
Postconditions: Afhankelijk van de gekozen stappen:
  • Een opgeslagen FID signaal
  • De invoer van de gebruiker staat in de log van desbetreffende gebruiker.
Related Business Rules:
  • Schaal van waardes voor de instellingen (minimum en maximum).
  • Student heeft beperkte financiën.
  • Wetenschapper, docent en beheerder hebben onbeperkte financiën.
Author: Niek Wolfkamp
Date: 29-12-2008
ORM: ORMfid signaal genereren.jpg
UC Diagram: UCfid signaal genereren.jpg

04 Fourier Transformatie

Use Case: Fourier Transformatie
Iteration: Focused 0.1
Summary: In deze use-case laat de gebruiker aan de hand van een eerder opgeslagen FID signaal een Fourier transformatie uitvoeren.
Basic Course of Events:
  1. Systeem begint met loggen van de invoer van de gebruiker.
  2. Systeem vraagt gebruiker waardes voor de instellingen in te voeren.
  3. Gebruiker voert waardes in.
  4. Gebruiker geeft aan transformatie uit te willen voeren.
  5. Systeem controleert of ingevoerde waardes correct zijn.
  6. Systeem geeft voortgangsscherm transformatie.
  7. Systeem geeft aan klaar te zijn en toont gegenereerde spectrum.
  8. Gebruiker slaat spectrum op.
  9. Systeem slaat log op.
Alternative Paths:
  1. Vanaf stap 7 in BcoE.
  2. Systeem slaat log op.
Exception Paths:
  1. Systeem begint met loggen van de invoer van de gebruiker.
  2. Systeem vraagt gebruiker waardes in te voeren voor instellingen.
  3. Gebruiker vult verkeerde waardes in.
  4. Gebruiker geeft aan transformatie uit te willen uitvoeren.
  5. Systeem berekent of meting mogelijk is aan de hand van geldige waardes.
  6. Systeem geeft foutmelding.
  7. Systeem slaat log op.
Extension Points:
Triggers:
  • De gebruiker triggert door aan te geven een Fourier Transformatie te willen maken.
Assumptions: De gebruiker weet wat de instellingen moeten zijn.
Preconditions:
  • De gebruiker is ingelogd.
  • De gebruiker heeft een FID signaal beschikbaar.
Postconditions: Afhankelijk van de gekozen stappen:
  • Een al dan niet opgeslagen spectrum.
  • De invoer van de gebruiker staat in de log van desbetreffende gebruiker.
Related Business Rules:
  • Schaal van waardes voor de instellingen (minimum en maximum).
Author: Eamonn Cassidy
Date: 29-12-2008
ORM: ORM fourier.jpg
UC Diagram: UCfourier transformatie.jpg

05 Opgave opstellen

Use Case: Opgave opstellen
Iteration: Filled 0.1
Summary: In deze use-case wordt beschreven hoe het maken van een opdracht voor de student in zijn werk gaat.
Basic Course of Events:
  1. Het systeem vraagt de gebruiker een monster uit te kiezen uit de database.
  2. Gebruiker kiest monster uit de database.
  3. Systeem vraagt de gebruiker of er nog meer monsters gebruikt moeten worden.
  4. Gebruiker geeft aan dat er geen andere monsters gebruikt worden.
  5. Systeem vraagt de gebruiker om studenten toe te wijzen aan het monster, of om zelf in te delen.
  6. Gebruiker geeft aan de verdeling door het systeem te laten doen
  7. Systeem vraagt de gebruiker om deelnemerslijst.
  8. Gebruiker geeft aan welke gebruikers de opdracht moeten maken.
  9. Systeem verdeelt de opdracht.
Alternative Paths:
  1. Het systeem vraagt de gebruiker een monster uit te kiezen uit de database.
  2. Gebruiker kiest monster uit de database.
  3. Systeem vraagt de gebruiker of er nog meer monsters gebruikt moeten worden.
  4. Gebruiker geeft aan dat er nog een ander monsters gebruikt wordt.


Vanaf stap 5 in BcoE.

  1. Gebruiker geeft aan de verdeling te doen.
  2. Systeem vraagt de gebruiker om deelnemerslijst.
  3. Gebruiker geeft aan welke gebruikers de opdracht moeten maken.
  4. Systeem vraagt de gebruiker om aan te geven welke student welke opdracht doet.
  5. Gebruiker geeft de opdrachten in.
Exception Paths:
Extension Points:
Triggers:
  • De gebruiker geeft aan een opdracht te willen opstellen.
Assumptions:
Preconditions:
  • De gebruiker dient ingelogd te zijn op het systeem als Docent.
Postconditions:
  • De opdracht is verdeeld over een groep studenten.
Related Business Rules:
Author: Eamonn Cassidy
Date: 29-11-2008
ORM: ORM Opgave maken.jpg
UC Diagram: UCopgave opstellen.jpg

06 Molecuul beheer

Use Case: Molecuul beheer
Iteration: Focused 0.1
Summary: In deze use case wordt beschreven hoe moleculen aangemaakt, bewerkt en verwijderd kunnen worden.
Basic Course of Events:

Gebruiker maakt molecuul aan:

  1. De gebruiker geeft aan een molecuul te willen aanmaken.
  2. Gebruiker geeft de naam van het molecuul.
  3. Gebruiker voert de gegevens van het molecuul in.
  4. Gebruiker geeft aan het molecuul op te willen slaan.
  5. Systeem vraagt om bevestiging.
  6. Gebruiker bevestigt.
  7. Systeem slaat molecuul op.
Alternative Paths:

Gebruiker bewerkt molecuul:

  1. Gebruiker geeft aan een molecuul te willen bewerken.
  2. Gebruiker selecteert het te bewerken molecuul.
  3. Gebruiker wijzigt de eigenschappen van het molecuul.
  4. Gebruiker geeft aan de wijzigingen op te willen slaan.
  5. Systeem vraagt om bevestiging.
  6. Gebruiker bevestigt.
  7. Systeem slaat wijzigingen op.


Gebruiker verwijdert molecuul:

  1. Gebruiker geeft aan een molecuul te willen verwijderen.
  2. Gebruiker selecteert het te verwijderen molecuul.
  3. Systeem vraagt om bevestiging.
  4. Gebruiker bevestigt.
  5. Systeem verwijdert molecuul.
Exception Paths:
Extension Points:
Triggers:

De gebruiker triggert door aan te geven dat hij/zij een moleculen wil beheren.

Assumptions:
Preconditions:

De gebruiker heeft zichzelf geauthenticeerd als beheerder, docent, of wetenschapper.

Postconditions:
  • Gebruiker maakt molecuul aan: er is een molecuul aangemaakt.
  • Gebruiker wijzigt molecuul: er is een molecuul gewijzigd.
  • Gebruiker verwijdert molecuul: er is een molecuul verwijderd.
Related Business Rules:
Author:

Iris Trepels

Date:

27-12-2008

ORM:

ORM MolecuulBeheer.jpg

UC Diagram:

UCmolecuul beheer.jpg

07 Monster beheer

Use Case: Monster beheer
Iteration: Focused 0.1
Summary: In deze use case wordt beschreven hoe monsters bewerkt en verwijderd kunnen worden.
Basic Course of Events:

Gebruiker wijzigt monster:

  1. Gebruiker geeft aan een monster te willen wijzigen.
  2. Gebruiker selecteert het te wijzigen monster.
  3. Gebruiker wijzigt de eigenschappen van het monster.
  4. Gebruiker geeft aan de wijzigingen op te willen slaan.
  5. Systeem vraagt om bevestiging.
  6. Gebruiker bevestigt
  7. Systeem controleert samenstelling op domme fouten.
  8. Systeem berekent de kosten van het monster.
  9. Systeem slaat de wijzigingen en de kosten op.
Alternative Paths:

Gebruiker verwijdert monster:

  1. Gebruiker geeft aan een monster te willen verwijderen.
  2. Gebruiker selecteert het te verwijderen monster.
  3. Systeem vraagt om een bevestiging.
  4. Gebruiker bevestigt.
  5. Systeem verwijdert monster.
Exception Paths:

Gebruiker voert "domme" instellingen in:

  1. Gebruiker geeft aan een monster te willen wijzigen.
  2. Gebruiker selecteert het te wijzigen monster.
  3. Gebruiker geeft "domme" eigenschappen.
  4. Gebruiker geeft aan de wijzigingen op te willen slaan.
  5. Systeem vraagt om bevestiging.
  6. Gebruiker bevestigt.
  7. Systeem controleert samenstelling op domme fouten.
  8. Systeem geeft foutmelding.
  9. Systeem keert terug naar punt 3.
Extension Points:
Triggers:

De gebruiker triggert door aan te geven dat hij/zij een monster wil bewerken.

Assumptions:

Het systeem weet wat "domme" instellingen zijn.

Preconditions:
  • Er staan oplosmiddelen, moluculen en monsters in de database.
  • Gebruiker heeft zich geauthenticeerd als student, docent, wetenschapper, of beheerder.
Postconditions:
  • Gebruiker wijzigt monster: er is een monster gewijzigd.
  • Gebruiker verwijdert monster: er is een monster verwijderd.
Related Business Rules:

Gebruikers mogen geen domme monsters maken.

Author:

Iris Trepels

Date:

27-12-2008

ORM:

ORM MonsterBeheer.jpg

UC Diagram:

UCmonster beheer.jpg

Integrated domain model

IDM.png

Scenarios

Individual scenarios

01 Beheren gebruikers

  • Basic Course of Events:

Piet wil als docent de gegevens van een student op het systeem wijzigen. Hij krijgt van het systeem de vraag of hij eigenschappen van een gebruiker wil bewerken, of dat hij een nieuwe gebruiker wil toevoegen. Piet selecteert de gebruiker 'Jan'. Het systeem vraagt dan aan Piet of hij deze gebruiker wil wijzigen of verwijderen. Piet kiest voor wijzigen. Het systeem geeft dan de eigenschappen van gebruiker 'Jan 'weer. Piet wijzigt de gegevens van de geselecteerde gebruiker 'Jan'. Piet kiest dan voor het opslaan van de eigenschappen. Het systeem controleert deze nieuwe eigenschappen. Het syteem vraagt daarna om een bevestiging. Piet weet het zeker, en bevestigd. Systeem slaat alle eigenschappen op.

  • Alternative path 1:

Piet wil als docent een student toevoegen op het systeem. Hij krijgt van het systeem de vraag of hij eigenschappen van een gebruiker wil bewerken, of dat hij een nieuwe gebruiker wil toevoegen. Piet selecteert dat hij een gebruiker wil toevoegen. Het systeem vraagt of hij de juiste eigenschappen van de toe te voegen gebruiker in wil voeren. Piet voert deze in. Piet geeft dan aan dat hij deze eigenschappen op wil slaan. Het systeem vraagt om een bevestiging. Piet weet het zeker en dit geeft hij dus ook aan. Het systeem slaat de eigenschappen op. Systeem gaat weer naar het de vraag of Piet de eigenschappen van een gebruiker wil bewerken, of dat hij een nieuwe gebruiker wil toevoegen.

  • Alternative path 2:

Piet wil als docent een student op het systeem verwijderen. Hij krijgt van het systeem de vraag of hij eigenschappen van een gebruiker wil bewerken, of dat hij een nieuwe gebruiker wil toevoegen. Piet selecteert de gebruiker 'Jan'. Het systeem vraagt dan aan Piet of hij deze gebruiker 'Jan' wil wijzigen of verwijderen. Piet kiest voor verwijderen. Het systeem vraagt om een bevestiging. Piet weet het zeker, en bevestigd. Systeem verwijderd de gebruiker 'Jan'.

  • Alternative path 3:

Piet wil als docent de gegevens van een student op het systeem wijzigen. Hij krijgt van het systeem de vraag of hij eigenschappen van een gebruiker wil bewerken, of dat hij een nieuwe gebruiker wil toevoegen. Piet selecteert de gebruiker 'Jan'. Het systeem vraagt dan aan Piet of hij deze gebruiker wil wijzigen of verwijderen. Piet kiest voor wijzigen. Het systeem geeft dan de eigenschappen van gebruiker 'Jan 'weer. Piet wijzigt de gegevens van de geselecteerde gebruiker 'Jan'. Piet kiest dan voor het opslaan van de eigenschappen. Het systeem controleert deze nieuwe eigenschappen en constateert dat Piet onjuiste gegevens heeft ingevuld bij de eigenschappen.

  • Use case test

Het systeem begeleidt de gebruiker zodanig, dat afwijken van het standaard/alternatieve pad niet mogelijk is in mijn ogen. De use case zou dus moeten voldoen.

02 Creëren Monster

  • Basic course of events:

Piet gaat naar het gedeelte voor het aanmaken van een monster, en noemt het monster "Frankenstein". Het systeem vraagt Piet welke oplossing (uit de database) hij wil gebruiken. Piet kiest HCl. Vervolgens vraagt het systeem aan Piet een of meerdere scheikundige stoffen te kiezen uit de database. Piet kiest FeO2 en C2H6. Het systeem controleert of Piet geen 'domme' keuzes heeft gemaakt. Piet bevestigd zijn keuze. Hierna berekent het systeem de kosten van zijn keuzes, dit komt uit op 35euro. Het gemaakte monster wordt samen met de kosten door het systeem opgeslagen.

  • Alternative Paths

Piet gaat naar het gedeelte voor het aanmaken van een monster. Het systeem vraagt Piet welke oplossing (uit de database) hij wil gebruiken. Piet kiest alcohol. Piet slaat daarna het kiezen van scheikundige stoffen over. Piet bevestigd dat hij het monster wil bewaren. Het systeem slaat het monster op.

  • Use case test

De Use Case zit goed in elkaar, alleen het laatste punt waarbij het alternatief 'in de database zetten' is zal nog verder uitgewerkt moeten worden en hoe het systeem daar precies interactie over heeft met de gebruiker.

03 FID signaal genereren

  • Basic course of events:

De gebruiker Piet wil een FID signaal genereren. Het systeem begint met het loggen van de invoer van Piet. Systeem vraagt Piet om de instellingen voor het te genereren FID signaal. Piet voert de waardes in en geeft aan dat hiermee een FID signaal gegenereert moet worden. SYsteem controleert of de financien van gebruiker Piet voldoende zijn om het FID signaal te kunnen genereren. Vervolgens controleert het systeem of de door Piet ingevoerde waardes correct zijn. Systeem is bezig met het genereren van het FID signaal en toont een voortgangsscherm. Systeem heeft het FID signaal gegenereerd en toont dit aan Piet. Piet slaat het FID signaal op. Systeem slaat log met alle door Piet ingevoerde waardes op.

  • Alternative path 1:

De gebruiker Piet wil een FID signaal genereren. Het systeem begint met het loggen van de invoer van Piet. Systeem vraagt Piet om de instellingen voor het te genereren FID signaal. Piet voert de waardes in en geeft aan dat hiermee een FID signaal gegenereert moet worden. SYsteem controleert of de financien van gebruiker Piet toereikend zijn om het FID signaal te kunnen genereren. Systeem constateert dat de financiele middelen van Piet ontoereikend zijn. Systeem slaat log met alle door Piet ingevoerde waardes op.

  • Alternative path 2:

De gebruiker Piet wil een FID signaal genereren. Het systeem begint met het loggen van de invoer van Piet. Systeem vraagt Piet om de instellingen voor het te genereren FID signaal. Piet voert de waardes in en geeft aan dat hiermee een FID signaal gegenereert moet worden. SYsteem controleert of de financien van gebruiker Piet voldoende zijn om het FID signaal te kunnen genereren. Vervolgens controleert het systeem of de door Piet ingevoerde waardes correct zijn. Systeem constateert dat de waardes die Piet heeft ingevoerd niet correct zijn, dus het genereren van het FID signaal is niet mogelijk vanwege deze 'domme' waardes.

  • Alternative path 3:

De gebruiker Piet wil een FID signaal genereren. Het systeem begint met het loggen van de invoer van Piet. Systeem vraagt Piet om de instellingen voor het te genereren FID signaal. Piet voert de waardes in en geeft aan dat hiermee een FID signaal gegenereert moet worden. SYsteem controleert of de financien van gebruiker Piet voldoende zijn om het FID signaal te kunnen genereren. Vervolgens controleert het systeem of de door Piet ingevoerde waardes correct zijn. Systeem is bezig met het genereren van het FID signaal en toont een voortgangsscherm. Systeem heeft het FID signaal gegenereerd en toont dit aan Piet. Systeem slaat log met alle door Piet ingevoerde waardes op.

  • Use case test

Deze use case zit goed in elkaar. Het basic course of events, en de paths zorgen dat de mogelijkheden beschreven zijn en de gebruiker wordt goed begeleid door het systeem .

04 Fourier Transformatie

  • Basic course of events:

Henk is ingelogd op het systeem, en heeft een FID signaal beschikbaar. Henk geeft aan dat hij een Fourier transformatie wil uitvoeren. Het systeem begint met het loggen van de invoer van Henk. Het systeem vraagt Henk dan om de waardes voor de instellingen in te voeren. Henk voert voor het Fourier number het getal 3 in, voor de vertical scale 50, voor de exponential multiplication 3, voor de axis=hz 2000, voor de axis=ppm ook 2000, voor de vertical scale FID 30000 en voor de line broadening 3/at. Het systeem controleert of deze waardes correct zijn, en dat zijn ze. Het systeem geeft dan het voortgangsscherm dat hoort bij de transformatie, en geeft daarna aan dat het klaar is met de transformatie, en toont het gegenereerde spectrum. Henk slaat dit spectrum op. Het systeem slaat daarna de log op van alles wat Henk gedaan heeft.

  • Alternative path 1:

Henk doorloopt dezelfde stappen als in de BCoE, maar slaat het spectrum aan het eind niet op. Het systeem slaat wel de log op van alles wat Henk gedaan heeft.

  • Exception path 1:

Henk is ingelogd op het systeem, en heeft een FID signaal beschikbaar. Henk geeft aan dat hij een Fourier transformatie wil uitvoeren. Het systeem begint met het loggen van de invoer van Henk. Het systeem vraagt Henk dan om de waardes voor de instellingen in te voeren. Henk voert voor het Fourier number het getal 3 in, voor de vertical scale 45, voor de exponential multiplication 3, voor de axis=hz 2000, voor de axis=ppm ook 2000, voor de vertical scale FID 50000 en voor de line broadening 3/at. Het systeem controleert of deze waardes correct zijn, en geeft aan dat de vertical scale niet klopt. Het systeem slaat daarna de log op van alles wat Henk gedaan heeft.

  • Use case test

Mijns inziens geen mogelijkheden om af te wijken van de aangegeven paden.

05 Opgave opstellen

  • Basic course of events:

Docent Klaassen gaat naar het gedeelte "Opgave maken". Het systeem vraagt hem een moster uit de database te kiezen. Hij kiest het een monster. Het systeem vraagt of er nog meer monsters gebruikt moeten worden. Docent Klaassen geeft aan dat er geen andere mosters gebruikt worden. Het systeem vraagt of hij de monsters willekeurig moet toewijzen, of dat de gebruiker ze zelf wil toewijzen. De docent geeft aan dat het systeem ze moet toewijzen. Het systeem vraagt om de deelnemers aan wie een monster toebedeeld moet worden. De docent voert deze deelnemers in. Het systeem verdeelt de monsters, en slaat ze op.

  • Alternative path 1:

Docent Klaassen gaat naar het gedeelte "Opgave maken". Het systeem vraagt hem een moster uit de database te kiezen. Hij kiest het een monster. Het systeem vraagt of er nog meer monsters gebruikt moeten worden. Docent Klaassen geeft aan dat er nog andere monsters gebruikt moeten worden. Het systeem vraagt hem een moster uit de database te kiezen.

  • Alternative path 2:

Docent Klaassen gaat naar het gedeelte "Opgave maken". Het systeem vraagt hem een moster uit de database te kiezen. Hij kiest het een monster. Het systeem vraagt of er nog meer monsters gebruikt moeten worden. Docent Klaassen geeft aan dat er geen andere mosters gebruikt worden. Het systeem vraagt of hij de monsters willekeurig moet toewijzen, of dat de gebruiker ze zelf wil toewijzen. De docent geeft aan dat hij ze zelf wil toewijzen. Het systeem vraagt om de deelnemers aan wie een monster toebedeeld moet worden. De docent voert deze deelnemers in. Het systeem vraagt de docent om aan te geven welke deelnemer welk monster krijgt. De docent voert dit in. Het systeem slaat de opdrachten op.

  • Use case test

De use case voldoet, er is geen mogelijkheid om van de basic course of events en paths af te wijken daar de gebruiker goed wordt begeleid door het systeem.

06 Molecuul beheer

  • Basic course of events:

Jan geeft aan het programma aan dat hij naar de molecuuleditor wil. Het systeem vraagt of hij een molecuul wil aanmaken, wijzigen, of verwijderen. Jan maakt een molecuul aan, met de naam water. Hij voert in dat het bestaat uit 2H+ protonen, en een O2 ion. Hij geeft aan het molecuul op te willen slaat, het systeem vraagt om een bevestiging, Jan bevestigt, het systeem slaat het molecuul op.

  • Alternative path 1:

Jan geeft aan het programma aan dat hij naar de molecuuleditor wil. Het systeem vraagt of hij een molecuul wil aanmaken, wijzigen, of verwijderen. Jan geeft aan dat hij een molecuul wil wijzigen. Hij klikt op het molecuul met de naam water. Hij geeft aan dat er 3H+ protonen moeten zijn, ipv 2. Hij geeft aan het molecuul op te willen slaat, het systeem vraagt om een bevestiging, Jan bevestigt, het systeem slaat het molecuul op.

  • Alternative path 2:

Jan geeft aan het programma aan dat hij naar de molecuuleditor wil. Jan geeft aan dat hij wil verwijderen. Jan klikt op het molecuul met de naam water. Het systeem vraagt om een bevestiging. Jan bevestigt, en het systeem verwijdert het molecuul.

  • Use case test

Er is weinig ruimte om een fout te laten optreden. Het systeem begeleidt de gebruiker zodanig, dat afwijken van het standaard/alternatieve pad bijna niet mogelijk is. Mogelijk is het verstandig nog wel een beperking op de naam te kunnen doorvoeren. Zo zijn dubbele namen/ moleculen te voorkomen.

07 Monster beheer

  • Basic course of events:

Jan start het monsterbeheer door op het icoon van monster ontwerper te klikken. Hij geeft aan een monster te willen wijzigen en selecteert het monster met de naam Monster1. Het systeem geeft de eigenschappen van het monster weer, het bestaat uit suikermoleculen in oplosmiddel water. Jan wijzigt het oplosmiddel naar hexaan. Hij geeft aan het monster op te willen slaan en het systeem vraagt om een bevestiging. Jan bevestigt en het systeem slaat het monster op.

  • Alternative path:

Jan start het monsterbeheer door op het icoon van monster ontwerper te klikken. Hij geeft aan een monster te willen verwijderen en selecteert het monster met de naam Monster1. Het systeem vraagt om een bevestiging. Jan bevestigt en het systeem verwijdert het monster.

  • Exception path:

Jan start het monsterbeheer door naar de monster ontwerper te gaan. Hij geeft aan een monster te willen wijzigen en selecteert het monster met de naam Monster1. Het systeem geeft de eigenschappen van het monster weer, het bestaat uit suiker en water. Jan wijzigt deze met “domme” waarden, hij voert NaOH in het oplosmiddel HCl. Hij geeft aan het monster op te willen slaan en het systeem vraagt om een bevestiging. Het systeem herkent dat Jan “domme” waarden heeft ingevoerd en geeft een foutmelding. Vervolgens geeft het systeem de oorspronkelijke waarden van het monster weer.

  • Use case test

De use case laat geen ruimte van afwijken van het pad. Er is nog geen formele definitie wat domme fouten zijn, deze moet nog worden vastgesteld door de stakeholders. Voor het correct functioneren van deze use case is dit echter nog wel nodig.

Non-functional Requirements

  • Archiveerbaarheid: gebruikersgegevens moeten in een archief kunnen worden gestopt.
  • Authenticatie: de verschillende gebruikers zullen zichzelf moeten identificeren aan het systeem.
  • Configureerbaarheid: De moleculendatabase moet worden kunnen gevuld
  • Verspreidbaarheid: het systeem moet uiteindelijk zonder kosten op verschillende computers kunnen worden geinstalleerd.
  • Onderhoudbaarheid: een administrator moet alle gegevens kunnen wijzigen.
  • Authenticiteit: de simulatie moet zo nauw mogelijk overeenkomen met de werkelijkheid.
  • Schaalbaarheid: er moeten veel proeven mogelijk zijn met het systeem.
  • Gebruikbaarheid: studenten die slechts theorie hebben gevolgd zullen het systeem moeten kunnen gebruiken.

Addendum

Business Rules Catalogue

  • Studenten mogen geen domme instellingen gebruiken, zonder dat de docent op de hoogte word gesteld.
  • Systeem herkent 'domme'/onjuiste waardes/instellingen.
  • Systeem heeft schaal van waardes voor de instellingen (minimum en maximum).
  • Student heeft beperkte financiën en mag alleen experimenteren als de financiële middelen toereikend zijn.
  • Wetenschapper, docent en beheerder hebben onbeperkte financiën.
  • Alleen docent kan een opgave opstellen.
  • Docent, beheerder en wetenschapper mogen moleculen beheren.
  • Gebruiker mag lid zijn van maximaal 1 groep (dus van docenten, wetenschappers, beheerder of studenten)
  • Beheerder kan alle gebruikers verwijderen en wijzigen.
  • Docent kan alleen gebruikers uit groep Student verwijderen en wijzigen.
  • Een gebruiker heeft slechts een uniek wachtwoord, en precies een unieke gebruikersnaam.
  • Een scheikundige stof bestaat uit een of meerdere elementen.
  • Een monster bestaat minimaal uit een oplosmiddel
  • Een monster heeft maximaal een oplosmiddel
  • Elk element (in een molecuul) heeft precies een lading
  • Een molecuul bestaat uit een of meer elementen
  • Een molecuul heeft precies een naam
  • Een element heeft precies een lading

Terminological Definitions

  • Monster: Een samenstelling van een oplosmiddel met een of meer scheikundige stoffen.
  • Molecuul: Verschillende elementen in een verbinding
  • Proton: Positief geladen deeltje
  • Ion: Negatief geladen deeltje
  • Database: verzamelnaam voor de opslagruimte
  • Scheikundige stof: Verzamelnaam voor een element (Cl2) of een molecuul (C2H5OH).
  • FID signaal: Het signaal dat gegenereerd wordt bij meting met de NMR-spectrometer.
  • Fourier Transformatie: zet een FID signaal om in een aantal frequenties met bijbehorende sterktes.
  • Domme instellingen: verzamelnaam voor instellingen die worden gezien als voor de hand liggend fout.


Waardes voor genereren FID signaal:

  • pw (pulse width): Duur van RF straling periode (in microseconden). Typische waarde voor een 90 graden puls: 6-10 microseconden bij de hoogste toegestane stralingsintensitieit.
  • tpwr (transmitter power): Intensiteit van de RF straling (geen dimensie) Typische waarde is: 60 (de hoogste toegestane intensiteit). Laagste intensiteit komt overeen met tpwr=0.
  • d1: Duur van voorbereiding periode (in seconden). Typische waarde 1 – 3 seconden.
  • sw (spectral width): Spectrale Breedte (in Hz). Typische waarde voor protonen: 10 ppm. D.w.z. dat bij een proton absorptie frequentie van 100 MHz, is sw ca. 1000 Hz enzovoort.
  • at (acquisition time): Duur van acquisitie (in seconden). Typische waarde 0.050 – 0.5. Hoe langer het NMR signaal wordt gemeten (i.e. hoe groter at) hoe hoger de resolutie van het NMR spectrum is.
  • np (number of points): Aantal gemeten punten van de FID. De waarde van sw, at en np zijn aan elkaar verbonden: at = 0.5*np/sw
  • tof (transmitter offset): Centrum van het spectrum (in Hz). De frequentie van de RF straling kan met een zeer hoge nauwkeurigheid door de parameter tof ingesteld worden. De default waarde van tof is 0.0.
  • nt (number of transients): Aantal scans te meten. De signaal-ruis verhouding is recht-evenredig met de vierkantsvoortel van nt. vgain Vergrotingsfactor van het NMR signaal (logaritmisch, geen dimensie). Typisch waarde: 20 – 40. Bij hoge concentraties moet vaak een veel lagere gain (0) gebruikt worden.


Waardes voor maken Fourier Transformatie, en daarmee spectrum:

  • em (exponential multiplication): Command voor exponentiele vermenigvuldiging van het NMR signaal zodat de intensiteit van de laatste punten van de FID ongeveer nul is.
  • lb (line broadening): Afnameconstante van de exponentiele functie (em)
  • fn (fourier number): Aantal punten van FID voor fourier transformatie (geen dimensie) Als fn groter dan np/2 is (e.g. de normale situatie), er worden fn – np/2 puntent met intensiteit gelijk aan nul aan het einde van de FID toegevogd. Het effect van fn is een verbetering van de digitale resolutie van het NMR spectrum.
  • vs (vertical scale): De waarde van vs is afhankelijk van de concentratie. Gebuik ds om het spectrum met de nieuwe ingestelde verticale schaal weer te geven.
  • vf (vertical scale FID): De waarde van vf is afhankelijk van de concentratie. Limieten: 1 – 32767. Gebuik df om de FID met de nieuwe ingestelde verticale schaal weer te geven.
  • axis=hz: Stel de horizontale as in op frequentie-eenheden (hz). Gebruik ds om het spectrum met de nieuwe ingestelde eenheid weer te geven.
  • axis=ppm: Stel de horizontale as in op chemical shift-eenheden (ppm) Gebruik ds om het spectrum met de nieuwe ingestelde eenheid weer te geven.