Funktionen och kapaciteten för ett system specificeras genom en mängd olika metoder, beroende på systemets komplexitet och syftet med specifikationen. Dessa specifikationer är avgörande för design, utveckling, testning och distribution. Här är några viktiga tillvägagångssätt:
1. Funktionella krav: Dessa beskriver * vad * systemet ska göra. De uttrycks ofta som:
* Användningsfall: Beskriv interaktioner mellan användare (eller andra system) och systemet och beskriver en specifik åtgärdssekvens och förväntade resultat.
* Användarhistorier: Kortare, mer informella beskrivningar av funktionalitet ur användarens perspektiv (t.ex. "Som kund vill jag kunna lägga till objekt i min kundvagn så att jag kan köpa dem senare.").
* funktionslistor: En enkel uppräkning av systemets funktioner. Mindre detaljerade än användningsfall men användbara för planering på hög nivå.
* tillståndsdiagram: Visa de olika staterna som ett system kan vara i och hur det övergår mellan dem. Användbart för system med komplex statlig hantering.
* Dataflödesdiagram: Illustrera dataflödet genom systemet.
2. Icke-funktionella krav (eller kvalitetsattribut): Dessa beskriver * hur * systemet ska fungera. De är ofta relaterade till:
* Prestanda: Svarstider, genomströmning, transaktionsfrekvenser, resursanvändning (CPU, minne, nätverk). Uttrycks ofta kvantitativt (t.ex. "Systemet ska svara på användarförfrågningar inom 2 sekunder").
* skalbarhet: Möjlighet att hantera ökande belastning (användare, data, transaktioner). Ofta specificerad när det gäller förväntad tillväxt och systemprestanda under den tillväxten.
* Säkerhet: Skydd mot obehörig åtkomst, dataöverträdelser och andra hot. Definieras genom säkerhetspolicyer och åtkomstkontrollmekanismer.
* Pålitlighet: Frekvens och varaktighet av fel, medeltid mellan fel (MTBF), medeltid till återhämtning (MTTR).
* Tillgänglighet: Procentandel av tiden systemet är i drift.
* Underhållbarhet: Enkel att modifiera och uppdatera systemet.
* Användbarhet: Användarvänlighet för avsedda användare. Mätt ofta genom användartestning och feedback.
* Portabilitet: Möjlighet att köra på olika plattformar och miljöer.
3. Kapacitetskrav: Dessa beskriver systemets förmåga att hantera en viss arbetsbelastning. Detta inkluderar:
* Datavolym: Mängden data som systemet behöver lagra och bearbeta.
* Användarens samtidighet: Antal samtidiga användare som systemet kan stödja.
* Transaktionsnivå: Antal transaktioner som systemet kan behandla per tidsenhet.
* resursgränser: Gränser för CPU, minne, lagring, nätverksbandbredd.
Metoder för att specificera funktionalitet och kapacitet:
* Naturligt språk: Används ofta för höga nivåer, men kan vara tvetydiga.
* Formella specifikationsspråk: Använd exakta matematiska eller logiska notationer för att undvika tvetydighet (t.ex. Z, VDM). Mer rigorös men kräver specialiserad expertis.
* Modelleringsspråk: Använd visuella notationer för att representera systemstruktur och beteende (t.ex. UML). En bra balans mellan precision och förståbarhet.
* Systemkrav Specifikation (SRS) Dokument: Ett formellt dokument som omfattande beskriver alla funktionella och icke-funktionella krav.
Valet av metoder beror på faktorer som projektstorlek, komplexitet, budget och teamets tekniska expertis. Ofta används en kombination av dessa metoder för att skapa en omfattande och tydlig specifikation. Det är avgörande att säkerställa att specifikationerna är entydiga, fullständiga, konsekventa och verifierbara. Spårbarhet mellan krav, design och implementering är också viktigt för effektiv systemutveckling och underhåll.