Quality

Kvalitet i programvareutvikling
Hva er kvalitet?

Kvalitet defineres av den som skal bruke programvaren. Quality - like beauty - is in the eyes of the beholder

Standard for kvalitet ISO 9000:2000
 * Quality - to hwich extent a collection of inherent properties satisfies the requirements
 * Requirements: needs or expectations that are:
 * Specified (in a document)
 * or usually implied (common practice)
 * or obligatory
 * Requirements may be generated by different interested parties

Kvalitet er subjektivt og tidsavhengig. Kvalitetskravene er ikke alltid uttalt, og andre enn kunden kan ha krav.

Hva skal dekkes av kravspesifikasjonen?
 * Leveres til rett tid
 * Akseptable kostnader
 * Rimelig i bruk (dette punktet må spesifiseres)
 * Miljøvennlig
 * I samsvar med lover og standarder
 * Moro å lage
 * Leverandøren er solid og til å stole på

Strategi for å oppnå kvalitet:
 * Systematisk innsats for å forhindre fiel og mangler
 * Forhindre feil og mangler krever ressurser, men vi mener det koster mer å la være. Det investeres altså i noe som ikke er nødvendig. Ressurser settes "up-front" uten at man kan være sikker på at investeringen er nødvendig.

Hvem har ansvar for kvaliteten?
 * Ledere og utviklere:
 * Alle er ansvarlig for kvaliteten på eget arbeid
 * Ledelsen har et spesielt ansvar for å tilrettelegge for at kvalitet kan oppnås.
 * Oppdragsgiver og bruker-representanter
 * Ansvarlig for å komme med de "rette" kravene og alle kravene
 * Utviklerne har ansvar for å hjelpe oppdragsgiver med å få frem kravene og konsekvensene av kravene
 * Hvis noe går galt - produktansvar
 * Et komplekst legalt og etisk spørsmål

Produktet programvare jmr. F.P. Brooks - The mythical Man-Month
 * It is abstract
 * It is infinitely malleable
 * It is infinitely variable
 * It can be extremely complex
 * And development of software is much more of an intellectual and human intensive process than a production process

Kvalitet for programvare - noen definisjoner
 * Software: IEEE-definition
 * "... the combination of computer programs, procedure, documentation and data necessary to for operating the software system"
 * I henhold til definisjonen:
 * Kvaliteten på produktet er avhengig av mer enn koden
 * Dette må vi ta i betraktning når vi utfører kvalitetssikring under utvikling
 * Software Quality: Pressman, 2000
 * Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected off all professionally developed software
 * I henhold til Pressmann må utviklerne oppfylle:
 * Eksplisitte krav
 * Kvalitetsstandarder det er enighet om (ref. ISO 9000-3, CMMI, utviklingsmodeller etc.)
 * State of teh art professional practices (ref. IEEE ACM Code of Ethics). Denne bør absolutt leses.
 * Software Quality assurance - expanded IEEE definition
 * "...software quality assurance is the systematic planned ste of actions necessary to prvide adequate confidence that the software development process or maintenance process conforms to established functional technical requirements as well as the managerial requirements of keeping to schedule and operating within budget"
 * I henhold til definisjonen må vi...

Oppsummert - kvalitetsdefinisjonen for programvare
 * Ikke koden alene, men alt som er en del av leveransen
 * Dokumentasjon
 * Manuelle rutiner
 * Data
 * Etc.
 * Det er ikke nok å oppfylle krav til produktet, det må stilles krav til den prosessen vi følger (tllitselementer)
 * Valg av utviklingsmodell
 * Spesifikasjonsspråk
 * Kontrollprosedyrer
 * Etc.
 * Vi må også ta i betraktning forvaltningsfasen og tid og kostnader til utvikling og forvaltning