Hoofdstuk 6 Software requirements I N T R O D U C T I E Belangrijk in dit hoofdstuk is het onderscheid tussen functionele en nietfunctionele eisen, en ook het onderscheid tussen gebruikerseisen (user requirements) en systeemeisen (system requirements). Functionele eisen beschrijven de diensten die het systeem aan de gebruiker levert. Niet-functionele eisen zijn randvoorwaarden daaraan, zoals snelheid en betrouwbaarheid. Gebruikerseisen beschrijven welke diensten het systeem de gebruiker verstrekt en aan welke randvoorwaarden het moet voldoen. Deze moeten volledig zijn, maar niet al te gedetailleerd. Ze moeten ook voor niet-technici goed te begrijpen zijn. Ze worden geformuleerd in (eventueel gestructureerde) natuurlijke taal, aangevuld met figuren en diagrammen. Systeemeisen zijn een gedetailleerde uitwerking van de gebruikerseisen. Deze moeten volledig zijn en geen ruimte laten voor misverstanden. Ze worden opgesteld in gestructureerde natuurlijke taal, in een speciale specificatietaal of grafische notatie, of met behulp van een wiskundig formalisme. Een specificatietaal kan ook een wiskundig formalisme zijn. LEERDOELEN Na het bestuderen van dit hoofdstuk wordt verwacht dat u het verschil weet tussen functionele en niet-functionele eisen weet wat domeineisen zijn en hoe die zich verhouden tot functionele en niet-functionele eisen drie soorten niet-functionele eisen kunt noemen en van elke soort ten minste twee voorbeelden kunt geven in een gegeven specificatie functionele en niet-functionele eisen kunt onderscheiden het verschil weet tussen gebruikerseisen, systeemeisen en een ontwerpspecificatie onvolledigheden, dubbelzinnigheden en tegenstrijdigheden herkent in een eenvoudige specificatie in (semi-)natuurlijke taal gebruikerseisen voor een eenvoudig systeem kunt opstellen in gestructureerde natuurlijke taal kunt uitleggen wat wordt verstaan onder specificatie van de benodigde interfaces, en drie typen van deze interfaces kunt noemen weet uit welke onderdelen een specificatiedocument bestaat. OUN 49
Software engineering L E E R K E R N 6.1 Functional and non-functional requirements Domeineisen (domain requirements) worden in paragraaf 6.1.3 (bladzijde 125) besproken. Het gaat hier om extern opgelegde eisen, die voor de gebruiker van het systeem niet direct van belang zijn. De opsomming in het begin van paragraaf 6.1 is ongelukkig, omdat deze wederzijdse uitsluiting suggereert, terwijl domeineisen zowel functioneel als niet-functioneel kunnen zijn. 6.1.2 NON-FUNCTIONAL REQUIREMENTS bladzijde 122 Usability Portability Interoperability Figure 6.3 bevat termen die mogelijk onbekend zijn. Usability is gebruiksvriendelijkheid. Het gaat daarbij bijvoorbeeld om de tijd die het kost om met het systeem om te leren gaan, om hoe goed het gebruikersfouten opvangt en hoe makkelijk het aan te passen is aan de stijl van werken van een individuele gebruiker. Portability is overdraagbaarheid. Een systeem is overdraagbaar wanneer het in verschillende omgevingen kan draaien, dus bijvoorbeeld onder verschillende bedrijfssystemen of op verschillende soorten hardware. Interoperability duidt aan in hoeverre een systeem kan samenwerken met andere systemen. Voorbeelden zijn de mogelijkheid om in een tekstverwerker illustraties te importeren die met een ander pakket gemaakt zijn, of in een programmeertaal code (bijvoorbeeld procedures of klassen) te gebruiken die in een andere taal zijn geschreven. Een bekend voorbeeld van software waaraan om juridische redenen een externe (domein)eis werd gesteld, is LimeWire. Met dit programma kunnen gebruikers muziekbestanden van elkaar kopiëren. De voorganger Napster gebruikte een centrale server om te registreren welke bestanden op een bepaald moment beschikbaar waren; deze centrale registratie werd in een reeks processen voor de meeste muziek onwettig verklaard. De opvolger moest dus zo worden ontworpen dat ook die registratie decentraal verliep. Over de ethische kant hiervan is natuurlijk ook veel te zeggen (en ook veel gezegd). De precieze betekenis van de maatstaven voor betrouwbaarheid uit figure 6.6 vindt u op bladzijde 209 van het tekstboek (figure 9.10). 6.1.3 DOMAIN REQUIREMENTS bladzijden 125-126 Welke (functionele of niet-functionele) eisen nu precies domeineisen genoemd kunnen worden, ligt niet eenduidig vast. We noemden hiervoor al het voorbeeld van LimeWire; de afwezigheid van een centrale server is duidelijk een domeineis. Het voorgeschreven gebruik van een programmeertaal door de klant, omdat die taal standaard is binnen de eigen organisatie is geen domeineis maar een niet-functionele implementatie-eis. Een domeineis geldt dus voor het hele domein, niet voor een enkel bedrijf of project in het domein. 50 OUN
Hoofdstuk 6 Software requirements Het voorbeeld uit figure 6.7 is echter minder duidelijk. Volgens Sommerville is dit een domeineis, maar met even veel recht is deze berekeningswijze helemaal geen eis te noemen, maar gewoon een definitie van de term vertraging. Iedere domeinspecifieke applicatie heeft een lijst van termen met hun betekenissen binnen dat domein. OPGAVE 6.1 Maak exercise 6.3 uit het tekstboek. Het personal identification number is de pincode van de pas. 6.2 User requirements OPGAVE 6.2 Waarom pleit Sommerville voor het gebruik van natuurlijke taal bij user requirements terwijl daar toch zoveel bezwaren aan kleven? bladzijde 128 punt 2 Sommerville noemt de eis dat de maatgeving voor een rooster zowel in centimeters als in inches getoond kan worden, een niet-functionele eis. Dat is onterecht. Het is weliswaar een detail dat mogelijk niet thuis hoort in de gebruikerseisen, maar het betreft een aspect van een geboden dienst en is dus wel degelijk een functionele eis. OPGAVE 6.3 Maak exercise 6.4 uit het tekstboek. 6.3 System requirements OPGAVE 6.4 Wat is de dubbelzinnigheid in Shoes must be worn; dogs must be carried? Z E L F T O E T S 1 Leg uit wat het verschil is tussen gebruikerseisen en systeemeisen. 2 Maak exercise 6.7 uit het tekstboek. 3 Een bedrijf ontwikkelt een nieuw soort polshorloge, dat ook bij de overgang van een tijdzone de juiste tijd blijft aangeven. Enkele eisen aan dit systeem zijn de volgende. 1 Het horloge past de getoonde tijd en datum zelf aan bij het overschrijden van tijdzones en zo nodig ook bij het overschrijden van landsgrenzen (in verband met eventueel hanteren van een verschil tussen zomer- en wintertijd). 2 De nauwkeurigheid van de plaatsbepaling is dezelfde als die van GPS, namelijk met een mogelijke afwijking van ongeveer 30 meter. 3 Het horloge maakt gebruik van GPS om vast te stellen waar het zich bevindt. 4 Het beschikt zelf over de nodige gegevens om deze positie om te zetten in een tijdzone. OUN 51
Software engineering 5 Het horloge heeft een levensduur van ongeveer vijf jaar. 6 De benodigde software wordt ontwikkeld in Java, in overeenstemming met bedrijfspolitiek. a Welke van deze eisen zijn functioneel en welke zijn niet-functioneel? b Van welk type zijn de niet-functionele eisen? 4 a Wat wordt in dit hoofdstuk verstaan onder specificatie van de benodigde interfaces? b Welke drie soorten van dergelijke interfaces kent u? c Bij het schrijven van Java-programma s maakt u veelvuldig gebruik van bestaande klassen. Van welk type zijn de interfaces van deze bestaande componenten en hoe zijn ze gedefinieerd? 5 a Welke partijen die betrokken zijn bij de ontwikkeling van software, gebruiken het eisendocument en voor welk doel? b Noem tenminste zes onderdelen van een dergelijk document. 52 OUN
Hoofdstuk 6 Software requirements T E R U G K O P P E L I N G 1 Uitwerking van de opgaven 6.1 Solution 6.3 Ambiguities and omissions include: Can a customer buy several tickets for the same destination together or must they be bought one at a time? Can customers cancel a request if a mistake has been made? How should the system respond if an invalid card is input? What happens if customers try to put their card in before selecting a destination (as they would in ATM machines)? Must the user press the start button again if they wish to buy another ticket to a different destination? Should the system only sell tickets between the station where the machine is situated and direct connections or should it include all possible destinations? Als we uitgaan van de Nederlandse situatie, is er in elk geval nog één onduidelijkheid, namelijk welke kaartsoorten er gekocht kunnen worden (alleen enkele reis en retour, of ook railrunners, fietskaarten, weekendretours en dergelijke; alleen tweede klas of ook eerste klas, met of zonder korting). 6.2 Gebruikerseisen zijn onder meer bedoeld voor eindgebruikers en managers van de klantorganisatie. Daarvan kan niet verwacht worden dat ze een formele specificatie kunnen lezen. 6.3 Een mogelijke uitwerking is de volgende (deze specificatie is gebaseerd op de werking van de NS-kaartautomaten met touch-screen). Op de website van de NS vinden we (2008) de volgende informatie voor reizigers: Uitleg bij de kaartautomaat met aanraakscherm Door het volgen van onderstaande stappen, bemachtigt u binnen een minuut een kaartje bij de snelle kaartautomaat met aanraakscherm. Hieronder vindt u een korte uitleg over het gebruik van de kaartautomaat met aanraakscherm. U maakt uw keuze door de bestemming of kaartsoort op het scherm aan te raken. In 3 stappen heeft u de beschikking over het door u gewenste kaartje: 1. Raak uw keuze op het scherm aan. 2. Voer PINpas of Chipknip in 3. Pak kaartje / kaartjes uit bakje. Nader uitgewerkt: 1. U kiest voor Enkele reis, Dagretour, 5-Retourkaart, Weekendretour of Railrunner. Als u opteert voor Overige kaartjes (linksonder in de hoek) verschijnen de kaartsoorten: Dagkaarten, Treintaxi, Maandkaarten, ICE Toeslag en Overgangsbewijzen 2-1 op uw scherm. U kunt ook een kaartje kopen bij deze kaartautomaat naar populaire bestemmingen in België / Luxemburg / Frankrijk en Duitsland. OUN 53
Software engineering Voor de kaartsoorten Enkele reis, Dagretour, Weekendretour, 5-Retourkaart en Maandtrajectkaarten geldt dat u onderstaande stappen dient te doorlopen. 2. Raak de eerste letter aan van uw bestemming en kies nog een tweede letter als dit wordt aangegeven. 3. Kies uw bestemming door deze aan te raken op het scherm. 4. Maak een keuze uit eerste of tweede klas (met uitzondering van Jeugdmaandtrajectkaart ) 5. Kies Vol tarief of Met korting (met uitzondering van Maandtrajectkaarten ) 6. Kies reisdatum (vandaag of zonder datum). 7. Kies hoeveel kaartjes u wilt (met een maximum van vier kaartjes - met uitzondering van Maandkaarten ). 8. Kies hoe u wilt betalen (snel en veilig met PINpas of Chipknip). 9. Voer uw betaalpas in een volg de instructies op het betaalschermpje. 10. Neem uw kaartje(s) uit het bakje. Heeft u op het scherm gekozen voor de kaartsoort Dagkaart fiets, Dagkaart hond, ICE Toeslag, Railrunner of Treintaxi dan doorloopt u de stappen: 6 tot en met 10. Heeft u op het scherm gekozen voor de kaartsoort Overgangsbewijzen 2-1 : - keuzedag 60+, dan doorloopt u de stappen: 7 tot en met 10 - dagkaart, dan doorloopt u de stappen: 5 tot en met 10 - enkele reis of retour, dan doorloopt u de stappen: 2 tot en met 10 Heeft u op het scherm gekozen voor één van de overige Dagkaarten dan doorloopt u de stappen: 4 tot en met 10. (Bron: http://www.ns.nl, 2008) Uitwerking van de specificatie: 1 Kaartautomaat voor de spoorwegen 1.1 Het systeem verkoopt de meest courante kaartsoorten voor alle bestemmingen binnen Nederland; de klant betaalt met een pinpas. 1.2 Een geslaagde kaartverkoop verloopt als volgt: 1 De klant start de transactie door een kaartsoort te kiezen. 2 De klant selecteert een bestemming. 3 De klant selecteert een klasse (eerste of tweede klas). 4 De klant geeft aan of gereisd wordt met korting. 5 De klant kiest de reisdatum. 6 De klant kiest het aantal kaartjes. 7 De klant kiest de betalingswijze. 8 De klant voert een pas in. 9 De klant voert een pincode in. 10 De klant bevestigt de opdracht, en neemt de pas uit. 11 Het kaartje wordt gedrukt en uitgegeven. 1.3 Tot en met stap 8 kan de klant de transactie op ieder moment onderbreken door een foutknop in te drukken; het systeem keert dan terug naar de begintoestand. 1.4 Als de klant tijdens de eerste vijf stappen gedurende dertig seconden geen invoer geeft, wordt de transactie onderbroken en keert het systeem terug naar de begintoestand. 1.5 Als de klant een ongeldige pas invoert, wordt dit gemeld, wordt de klant gemaand de pas terug te nemen en keert het systeem terug naar de begintoestand. 1.6 Als de klant een ongeldige pincode invoert, krijgt deze twee keer de gelegenheid om dit te herstellen. Bij een derde foutieve invoer wordt de pas ingenomen. Het systeem meldt dat de pas is ingenomen wegens driemaal invoeren van een foute pincode en keert terug naar de begintoestand. Voor de andere kaartsoorten (zie na punt 10 van de NS-tekst) kunnen alternatieve specificaties opgesteld worden. 54 OUN
Hoofdstuk 6 Software requirements 6.4 De formulering laat in het midden wat nu precies de verplichting is. Men moet altijd schoenen aan hebben, maar men hoeft niet altijd een hond bij zich te hebben! 2 Uitwerking van de zelftoets 1 Zie bladzijde 118 van het tekstboek. 2 Solution 6.7 There are many possibilities here. Some suggestions are shown in Table 6.1. TABLE 6.1 Non-functional requirements Non-functional Description Examples requirement Performance Performance requirements The system must process at set out limits to the least 150 transactions per performance expected of the second. system. These may be expressed in different ways The maximum response time depending on the type for any user request should be of system e.g. number of 2 seconds. transactions processed per second, response time to user requests, etc. Implementation Defines specific standards or The system design must be methods which must be used developed using an objectin the development process oriented approach based on the for the system. UML process. The system must be implemented in C++, Version 3.0. Usability Defines requirements which All operations which are relate to the usability of the potentially destructive must system by end-users. include an undo facility which allows users to reverse their action. (This is an example of a functional requirement which is associated with a non-functional requirement) potentially All operations which are destructive must be highlighted in red in the system user interface. Safety Safety requirements are The system must be certified concerned with the overall according to Health and Safety safe operation of the system. Regulations XYZ 123. 3 a Eisen 1, 3 en 4 zijn functionele eisen; de andere eisen zijn nietfunctioneel. b Eisen 2 en 5 zijn producteisen. Eis 2 is een performance-eis. Eis 5 past niet goed in de classificatie van figure 6.3; dat komt omdat het beschouwde horloge een volledig systeem is dat uit meer dan software bestaat. Eis 6 is een implementatie-eis. OUN 55
Software engineering 4 a Het gaat hier om de interfaces van bestaande systemen waar het nieuw te bouwen systeem mee samen moet werken, en dus niet om gebruikersinterfaces. b Zie bladzijde 135 van het tekstboek. c Dit zijn procedurele interfaces; ze zijn gespecificeerd in de APIspecificaties. 5 a Zie figure 6.16 op bladzijde 137 van het tekstboek. b Zie bladzijde 139 van het tekstboek. 56 OUN