1. Uppfylla funktionella krav
När ett datasystem konstrueras utgår man ofta från ett användningsfall som beskriver vilken funktionalitet systemet ska ha. Vi kanske har ett användningsfall som beskriver hur en användare ska via sin webbläsare boka rum på ett hotell. Programmering går i allmänhet ut på att skriva kod som realiserar användarfallen, d.v.s. uppfylla de funktionella kraven på systemet.
2. Vad är kvalitet?
Förutom att uppfylla de funktionella kraven kan ett datasystem även ha olika andra egenskaper som lite löst kallas för kvalitativa egenskaper. Bilden nedan visar några kvalitativa egenskaper:
Egenskaperna beskrivs lite kort nedan:
- Tillförlitlighet: Denna egenskap innebär att systemet behåller sin funktionalitet i ovanliga situationer. Ett exempel på tillförlitlighet är att systemet hanterar ovanliga kombinationer av indata utan att beräkna fel. Ett annat exempel kan vara att systemet är stabilt och sällan krashar.
- Säkerhet: Att systemet är säkert innebär att det inte kan avlyssnas eller kontrolleras av obehöriga.
- Prestanda: Att systemet har god prestanda betyder att systemet har svarstider som uppfyller beställarens krav. Skalbarhet är ett annat begrepp som beskriver hur ett systems prestanda påverkas då lasten ökar.
- Flexibilitet: En applikation med hög flexibilitet är lätt att förändra.
Det är viktigt för beställaren att förstå att kvalitet är tidskrävande och mycket svårt.
3. Den osynliga kvaliteten
Kvalitet har också den otrevliga egenskapen att den ofta är osynlig. Man bör ställa sig följande frågor:
- Hur kan beställaren veta att ett system är skalbart innan lasten ökas?
- Hur kan beställaren veta att ett system är flexibelt innan någon stor förändring har genomförts i systemet?
- Hur kan beställaren veta att ett system är säkert innan någon hackare har försökt bryta sig in?
I en försäljningssituation känner beställaren att det är bäst att betala för något som redan från början är lätt att mäta, nämligen funktionalitet. Funktionalitet premieras ofta även av andra parter än beställaren. Chefer ser ofta programmerare som struntar i kvalitet och levererar funktionalitet snabbt som "effektiva". Frånvaro av kvalitet blir däremot ofta tydlig först efter att systemet har satts i produktion. Beställaren blir besviken eftersom han/hon ofta tror att kvalitet är något som kommer på köpet då systemet utvecklas.
4. Flexibilitet
Nu definierar vi flexibilitet:
- Flexibilitet: En applikation med hög flexibilitet är lätt att förändra. Flexibiliteten hos en applikation visar sig först när man försöker förändra den. Om förändring är svårt (=tar lång tid) är applikationen ej flexibel.
Hög flexibilitet är vårt mål.