Kapittel 24 – Kvalitetssikring og -styring

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Litt mer om PRIMTALL.
Teknologi for et bedre samfunn 1 Asbjørn Følstad, SINTEF Det Digitale Trøndelag (DDT) Brukervennlig digitalisering av offentlig sektor.
Hvem skal oppdra selgerne?
Kontrollstrukturer (Kapittel 3)
7. Fysisk arbeidsmiljø Jeg er fornøyd med den ergonomiske utformingen av arbeidsplassen min Jeg er fornøyd med inneklimaet på arbeidsplassen.
1 Arbeidssted, bruk av fasiliteter og - mengde 5.
Elementer av en utviklingsprosess
Målinger generelt •I et moderne samfunn brukes målinger i mange ulike sammenhenger •Eksempler: –Sammenligne priser, lønninger –Høyde: størrelse på klær.
Universell utforming Kirsten Ribu HiO Evaluering av datasystemer Analyse av systemegenskaper Kirsten Ribu
Smidig forvaltning – En pragmatisk tilnærming
 Galls lov og erstatningsprosjekter Johannes Brodwall Chief scientist, Steria.
Ronny Klæboe Transportøkonomisk institutt
NRKs Profilundersøkelse NRK Analyse. Om undersøkelsen • NRK Analyse har siden 1995 gjennomført en undersøkelse av profilen eller omdømmet til NRK.
Arkitekter skal skape verdi Espen Berger TANDBERG.
© PROGRAM UTVIKLING as Vellykkede prosjekter leverer hyppig Johannes Brodwall, Steria Chief Scientist, Utvikler, Arkitekt, Sertifisert ScrumMaster.
Kapittel 14 Simulering.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
Oppgave gjennomgang Kap. 3 og 4.
1 Oppgave gjennomgang Kap Oppgaver -Kap 12: 1, 2, 3, 5, 7, 8, 11, 18, 19.
EVALUERING AV PRODUKTER, PROSESSER OG RESSURSER. Gruppe 4 Remi Karlsen Stian Rostad Ivar Bonsaksen Jonas Lepsøy Per Øyvind Solhaug Andreas Tønnesen.
Gruppe 9 Design evaluering og validering.
Grunnleggende testteori
Kvalitetssikring av analyser til forskningsbruk
Prototyping In 140 Sommerville kap. 8. Mål Forstå hensikten med prototyping i forskjellige utviklingsprosjekt Forstå forskjellen mellom evolusjonær og.
1 KravprosessenKravprosessen Noen sentral punkter.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 31.8 Kapittel 3: Grunnlag for programmering i Visual Basic.
Kap 06 Diskrete stokastiske variable
Human Factors (HF) i kontrollrom - En revisjonsmetode 2003
Tidligere eksamensspørsmål
Men hva mener de som har klart det? Børge Haugset (NTNU&SINTEF)
Når ble pragmatisk slukt av Smidig ? Joachim Haagen Skeie, Smidig 2011.
Svein Ivar Kristiansen
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
Improving Products Gruppe Presenteres av : Hege-Kristin Johansen Herman Kolås Marianne Ates Marit Finden Jonas Lillevold André Johansen Tom.
Automated Testing Tool & When to Stop Testing
Object Oriented Measurement
Klare mål for kvalitets- og miljøarbeidet Nye utfordringer krever nye tanker: Skal vi sertifisere oss? Rica Nidelven Hotel Trondheim, 26. – 27.januar.
Klinisk skjema nyrebiopsiregisteret
Tema: Test First Positivist: Det som ikke kan måles, eksisterer ikke! Reduserer sjanser for defekter! Gir en oppdatert ”TODO-liste” Gir trygghet til å.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Nordisk statistikerkonferanse København 13. august 2010 Jan Byfuglien
PARLAY/OSA Referanser: Referanser Foredraget er i all hovedsak basert på to artikler. Disse kan finnes på:
PoP-korn Studie av utviklingsprosessen i Norsk vareproduserende industri Resultater fra en spørreundersøkelsen i Norsk industri Richard Hilmes, Trondheim,
1 Oppgave gjennomgang Kap. 1 og 2. 2 Oppgaver -Kap 1: 5, 6, 7, 10, 12, 16, 22 og 25 -Kap 2: 2, 6, 10, 12, 13, 14 og 20.
N O R P R O F F Quality Management SAMARBEIDSPARTNER FOR
Maintenance problems - Measuring Maintenance characteristics Software Engineering Gruppe 2 Carl-Erik Herheim Leendert Wienhofen Thomas Julsen Kjartan Haugen.
Planning and controlling a project Content: Results from Reflection for action The project settings and objectives Project Management Project Planning.
Objektorientert utforming In 140 Sommerville kap. 12.
1 GeoPortal – Rammeverk Introduksjon. 2 Teknisk rammeverk - Interoperabilitet Interoperabilitet evne til å kommunisere, kjøre programmer, eller overføre.
Kapittel 8: Programvaretesting
Kapittel 3 – Smidig programvareutvikling
Modellering og diagrammer Jesper Tørresø DAB1 E september 2007.
What is a good text? And how do we get pupils to write them?
Kapittel 16 – Gjenbruk av programvare Utvikling med gjenbruk
Geografiske informasjonssystemer (GIS) SGO1910 & SGO4930 Vår 2004 Foreleser: Karen O’Brien Seminarleder: Gunnar Berglund
1 Utvikling av kritiske systemer Kort sammendrag Kap. 1 og 2.
Linked Data 2: Hvordan KoG31 Uke 8, 2013.
The Thompson Schools Improvement Project Process Improvement Training Slides (Current State Slides Only) October 2009.
Primary French Presentation 10 Colours L.I. C’est de quelle couleur?
Revisjon i Skolen.  Each Party shall ensure that:  1. the training and assessment of seafarers, as required under the Convention, are administered,
NUAS Programme for Leaders in Administration. Mål for møtet Avklare hva innholdet i presentasjonen skal være Se på sammenheng mellom de forskjellige bidrag,
Fra innovasjonsstrategiens ordbok
Digital bestillingsprosess for Armering, direkte fra modell
Eksempel fra Nevrologisk avdeling
Økonomiske forutsetninger
Projections of the disease burden
Hva er XP ? Ikke ekstrem, men heller meget forsiktig
Welcome to an ALLIN (ALLEMED) workshop!
How to evaluate effects of inspections on the quality of care?
Utskrift av presentasjonen:

Kapittel 24 – Kvalitetssikring og -styring Carl-Fredrik Sørensen

Innhold Programvarekvalitet (prosjekt, produkt, organisasjon) Programvarestandarder (produkt, prosess) Reviews og inspeksjoner (dokumenter, kode, fremdrift, standarder) Programvaremålinger og metrikker (eks. #feil, pålitelighet)

Kvalitetsstyring av programvare Forsikre at man oppnår det påkrevde nivå av kvalitet på et programvareprodukt. Tre viktige områder: Organisasjonsnivå – etablere et rammeverk av organisatoriske prosesser og standarder som vil lede til høykvalitets programvare. Prosjektnivå – utførelse av spesifikke kvalitetsprosesser og sjekke om at planlagte prosesser har blitt fulgt. Prosjektnivå – etablere en kvalitetsplan for et prosjekt. Kvalitetsplanen setter kvalitetsmål for prosjektet og definerer hvilke prosesser og standarder som skal bli benyttet..

Aktiviteter i kvalitetsstyring Kvalitetsstyring sørger for en uavhengig sjekk av utviklingsprosessen for programvare. Prosessen for kvalitetsstyring sjekker prosjektleveransene for å forsikre at de er konsistent med organisatoriske standarder og mål. Kvalitetsteamet bør være uavhengig av utviklingsteamet. Gir større sjanse for objektivitet og mulighet til å rapportere om kvalitet uten påvirkning av problemstillinger i programvareutviklingen.

Quality management and software development kvalitetsstyring programvareutvikling Software quality management Concerned with ensuring that the required level of quality is achieved in a software product. Three principal concerns: At the organizational level, quality management is concerned with establishing a framework of organizational processes and standards that will lead to high-quality software. At the project level, quality management involves the application of specific quality processes and checking that these planned processes have been followed. At the project level, quality management is also concerned with establishing a quality plan for a project. The quality plan should set out the quality goals for the project and define what processes and standards are to be used. Quality management activities Quality management provides an independent check on the software development process. The quality management process checks the project deliverables to ensure that they are consistent with organizational standards and goals The quality team should be independent from the development team so that they can take an objective view of the software. This allows them to report on software quality without being influenced by software development issues. Software quality management is concerned with ensuring that software has a low number of defects and that it reaches the required standards of maintainability, reliability, portability and so on. SQM includes defining standards for processes and products and establishing processes to check that these standards have been followed. Software standards are important for quality assurance as they represent an identification of ‘best practice’. Quality management procedures may be documented in an organizational quality manual, based on the generic model for a quality manual suggested in the ISO 9001 standard.

Kvalitetsstyring oppsummert Kvalitetstyringsprosess Bestemme standarder Bestemme om bruk av reviews/inspeksjoner Bestemme om målinger Bestemme om hvilke komponenter som skal måles Implementere i prosjekter

Kvalitetsplanlegging En kvalitetsplan beskriver de ønskede produktkvaliteter og hvordan disse blir vurdert, og definerer de mest viktige kvalitetsattributtene. Kvalitetsplanen bør definere prosessen for kvalitetsvurdering. Bør beskrive hvilke organisatoriske standarder som skal benyttes og, hvis nødvendig, definere nye.

Kvalitetsplan Struktur: Bør være korte og konsise dokumenter Produkt introduksjon; Produkt planer; Prosessbeskrivelse; Kvalitetsmål; Risikoer og risikostyring. Bør være korte og konsise dokumenter Ingen leser lange…..

Spørsmål til industrien Har du et eksempel på en kvalitetsplan? Hvilke viktige programvarestandarder benytter dere? Utfører dere reviews og/eller inspeksjoner? Hvilke er de viktigste målinger og metrikker benyttet I din organisasjon?

A. Generisk (1) Ingen formell kvalitetsplan, men vi har en public utviklingsprosess http://dev.mysql.com/doc/mysql-development-cycle/en/feature-development.html som nevner hvordan QA / Testing inngår i den overordnede prosessen. When a feature has been implemented, it undergoes a code review. When the code review is done, the feature tree is handed over to QA (quality assurance). QA tests the feature, the implementer fixes bugs, and QA eventually "signs off" the feature.

B. Skreddersøm (1) Kvalitetsplan: Vi har ingen som vi kan dele. I hvert fall ikke på kort varsel. (Vi skriver dem for kunder.)

Omfang av kvalitetsstyring Spesielt viktig for store, komplekse systemer, virksomhetskritiske systemer og systemer som krever høy pålitelighet. Kvalitetsdokumentasjon måler fremdrift og støtter kontinuitet i utviklingen etterhvert som utviklingsteamet endres. I mindre systemer kreves mindre dokumentasjon og bør heller fokusere på å etablere en kvalitetskultur.

Programvarekvalitet Kvalitet betyr helt enkelt at produktet skal møte sin spesifikasjon. Problematisk for programvaresystemer Forskjell/potensiell inkonsistens mellom kvalitetskrav fra kunde (efficiency, reliability, etc.) og kvalitetskrav for utvikler (maintainability, reusability, etc.); Krav kan være vanskelig å spesifisere presist; Inkonsistente og ukomplette spesifikasjoner. Fokus kan være “passende for formålet” i stedet for å være i overenstemmelse med spesifikasjonen.

Programvare som er passende for formålet Har programmings- og dokumentasjonsstandarder blitt fulgt i utviklingsprosessen? Har programvaren blitt testet ordentlig? Er programvaren tilstrekkelig pålitelig til å bli tatt i bruk? Er ytelse akseptabel for normal bruk? Er programvaren brukbar? Er programvaren velstrukturert og forståelig?

Kvalitetsattributter i programvare Safety Understandability Portability Security Testability Usability Reliability Adaptability Reusability Resilience Modularity Efficiency Robustness Complexity Learnability Foreslått av Bohem i 1978 It is not possible for any system to be optimized for all of these attributes – for example, improving robustness may lead to loss of performance. The quality plan should therefore define the most important quality attributes for the software that is being developed. The plan should also include a definition of the quality assessment process, an agreed way of assessing whether some quality, such as maintainability or robustness, is present in the product.

Kvalitetskonflikter Ikke mulig å optimalisere for alle attributter – f.eks. Forbedret robusthet kan medføre tap i ytelse. Kvalitetsplanen bør definere de viktigste kvalitetsattributtene for hva som skal utvikles. Planen bør inneholde en definisjon av vurderingsprosessen, en avstemt måte å måle om kvaliteter er innebygd i produktet (f.eks. vedlikeholdbarhet eller robusthet).

Prosess- og produktkvalitet Kvaliteten på et utviklet produkt er påvirket av kvaliteteten på produkasjonsprosessen. Viktig i programvareutvikling siden noen produktkvalitetet er vanskelig å vurdere. Veldig kompleks og dårlig forstått relasjon mellom programvareprosesser og produktkvalitet. Bruk av individuelle ferdigheter og erfaring er spesielt viktig i programvareutvikling; Eksterne faktorer som nyhetsverdi (innovasjon) på applikasjonen eller behov for akselerert utvikling kan svekke produktkvaliteten.

Prosessbasert kvalitet

Kapittel 24 – Kvalitetssikring Standarder Carl-Fredrik Sørensen 4.April 2014

Programvarestandarder Standarder definerer de påkrevde attributter i et produkt eller prosess. Standard kan være internasjonale, nasjonale, organisatoriske eller prosjektstandarder. Produktstandarder definerer karakteristikker som alle programvarekomponentene skal fremvise, f.eks. en felles programmeringsstil. Prosess-standarder definerer hvordan utviklingsprosessen skal bli gjennomført. They play an important role in quality management.

Hvorfor er standarder viktige? Innkapsling av “best practice” – unngå repetisjon av tidligere feil. Rammeverk for å definere hva kvalitet betyr i en gitt setting, dvs. en organisasjons syn på kvalitet. Gir mulighet for kontinuitet – nye medarbeidere kan forstå organisasjonen ved å forstå hvilke standarder som benyttes.

Produkt- og prosess-standarder Produkt standarder Prosess standarder Design review form Design review conduct Requirements document structure Submission of new code for system building Method header format Version release process Java programming style Project plan approval process Project plan format Change control process Change request form Test recording process

Problem med standarder Blir ikke oppfattet som relevant eller oppdatert. Involverer for mye byråkrati og skjemaer. Mye manuelt arbeid med vedlikehold av dokumentasjon assosiert med standardene dersom de ikke er støttet av gode verktøy.

Utvikling av standarder Involvere praktikere i utviklingen. Ingeniører bør forstå den underliggende årsaken til en standard. Regelmessig revidere standarder og deres bruk for unngå at de blir utdaterte og mister kredibilitet blant praktikerne. Detaljerte standarder bør ha spesialisert verktøystøtte Urimelig mye kontorarbeid er den viktigste klagen mot standarder. Web-baserte skjemaer er ikke godt nok!

ISO 9001 standardrammeverk International sett av standarder som kan bli brukt til å utvikle kvalitetssystemer. ISO 9001, den mest generell av standardene, er rettet mot organisasjoner som designer, utvikler og vedlikeholder produkter, inkludert programvare. ISO 9001 benyttes for å utvikle standarder rettet mot programvare. Generelle kvalitetsprinsipper Generelle kvalitetsprosesser Beskriver organisatoriske standarder og prosedyrer som bør defineres. Disse dokumenteres i en kvalitetsmanual for organisasjonen. http://youtu.be/G8x7JgRAsXQ -- Video 4.25 min Quality manual

Spørsmål til industrien Har du et eksempel på en kvalitetsplan? Hvilke viktige programvarestandarder benytter dere? Utfører dere reviews og/eller inspeksjoner? Hvilke er de viktigste målinger og metrikker benyttet I din organisasjon?

A. Generisk (2) Standarder: SQL Standard, OpenGIS Standard, Software Engineering Terminology Standard, http://en.wikipedia.org/wiki/SQL http://www.opengeospatial.org/standards http://standards.ieee.org/findstds/standard/610.12-1990.html

B. Skreddersøm (2) Standards: http://www.iso.org ISO/IEC 9126 for kvalitetsattributter IEEE 829 for testplaner og testrapporter (Interne “standarder” for hvordan vi kjører forskjellige tester.) (I tillegg til drøssevis av tekniske standarder) http://www.iso.org http://standards.ieee.org/

Kapittel 24 – Kvalitetssikring Reviews/revisjoner og inspeksjoner Carl-Fredrik Sørensen 4.April 2014

Revisjoner og inspeksjoner En gruppe undersøker grundig deler eller alt i en prosess eller system inkludert dokumentasjon for finne potensielle problemer. Kode, design, spesifikasjoner, testplaner, standarder, etc., kan all bli revidert. Programvare eller dokumenter kan bli ‘godkjent’ ved en revisjon. Dette betyr godkjennelse fra ledelse for å flytte til neste steg i utviklingen. Forskjellige typer revisjoner med forskjellig formål Inspeksjoner for å fjerne feil (produkt); Revisjoner for fremdriftsmåling (produkt og prosess); Kvalitetsrevisjoner (produkt og standarder). Reviews of the software process deliverables involve a team of people who check that quality standards are being followed. In a program inspection or peer review, a small team systematically checks the code. They read the code in detail and look for possible errors and omissions

The software review process Chapter 24 Quality management

Revisjoner og smidige metoder Normalt uformell prosess. Scrum : Reviewmøte etter hver iterasjon/spring med diskusjon om kvalitet. XP: Par-programmering med konstante undersøkelser av annen person. XP er avhengig av at enkeltpersoner tar initativet til forbedring og refaktorering av kode. Smidige fremgangsmåter er normalt ikke standarddrevet, dermed lite fokus på overholdelse.

Programinspeksjoner Fagfellerevisjon med mål om å finne uregelmessigheter og feil. Krever ikke systemkjøring, kan bli bruk før implementering. Kan bli gjort på alle artefakter i et prosjekt/system (krav, design, konfigurasjonsdata, testdata, etc.). En effektiv teknikk for oppdage feil i programmer.

Inspeksjon: sjekklister Sjekklister for vanlige feil bør benyttes for utføring. Sjekklister for feil er avhengig av programmeringsspråk og reflekterer karakteristiske feil som er vanlige. Generelt: ‘svakere' typesjekking gir større sjekkliste. Eksempler: Initialisering, navngivning på konstanter og programelementer, terminering av løkker og rekursive funksjoner, grenser på statiske datastrukturer (tabeller), etc.

En inspeksjonssjekkliste (1) Fault class Inspection check Data faults Are all program variables initialized before their values are used? Have all constants been named? Should the upper bound of arrays be equal to the size of the array or Size -1? If character strings are used, is a delimiter explicitly assigned? Is there any possibility of buffer overflow? Control faults For each conditional statement, is the condition correct? Is each loop certain to terminate? Are compound statements correctly bracketed? In case statements, are all possible cases accounted for? If a break is required after each case in case statements, has it been included? Input/output faults Are all input variables used? Are all output variables assigned a value before they are output? Can unexpected inputs cause corruption? Inspection checklists Checklist of common errors should be used to drive the inspection. Error checklists are programming language dependent and reflect the characteristic errors that are likely to arise in the language. In general, the 'weaker' the type checking, the larger the checklist. Examples: Initialisation, Constant naming, loop termination, array bounds, etc.

En inspeksjonssjekkliste (2) Fault class Inspection check Interface faults Do all function and method calls have the correct number of parameters? Do formal and actual parameter types match? Are the parameters in the right order? If components access shared memory, do they have the same model of the shared memory structure? Storage management faults If a linked structure is modified, have all links been correctly reassigned? If dynamic storage is used, has space been allocated correctly? Is space explicitly deallocated after it is no longer required? Exception management faults Have all possible error conditions been taken into account?

Smidige metoder og inspeksjoner Smidige metoder benytter sjelden formelle revisjonsprosesser. Baserer seg på samarbeid om kodesjekk og uformelle retningslinjer. F.eks. ‘sjekk før sjekk-inn’, dvs egensjekk av egen kode. XP-brukere argumenter for at par-programmering er en effektiv erstatning for inspeksjon pga. at inspeksjon skjer kontinuerlig.

Spørsmål til industrien Har du et eksempel på en kvalitetsplan? Hvilke viktige programvarestandarder benytter dere? Utfører dere reviews og/eller inspeksjoner? Hvilke er de viktigste målinger og metrikker benyttet I din organisasjon?

A. Generisk (3) Reviews/Inspections: Formal code review (=inspeksjon) 2 personer leser kode linje for linje Stiller spørsmål Sjekker både logikk og standard Forsetter til de er enige Vi bruker http://www.reviewboard.org/

B. Skreddersøm (3) Reviews/inspeksjon Ingenting som læreboka vil være enig i at er en formell inspeksjon. Vi bruker reviews som en integrert del av utviklingsprosessen. I det ene prosjektet jeg er på nå så reviewer vi først grensesnittet, deretter (når det er ferdig implementert) reviewer vi kildekoden og til slutt testene.

Kapittel 24 – Kvalitetssikring Metrikker Carl-Fredrik Sørensen 4.April 2014

Målinger og metrikker i programvare Målinger benyttes til å utlede en numerisk verdi for et attributt ifht. programvareprodukt eller prosess. Gir mulighet for objektive sammenligninger mellom teknikker og prosesser. Noen bedrifter har innført målingsprogrammer, men de fleste gjør ikke systematisk bruk av målinger. Få etablerte standarder på dette området. Software measurement can be used to gather data about software and software processes. Product quality metrics are particularly useful for highlighting anomalous components that may have quality problems.

Programvaremetrikk Enhver type måling som relateres til et programvaresystem, prosess eller relatert dokumentasjon Antall kodelinjer i et program, antall persondager for utvikle en komponent osv. Muliggjør kvantifisering av programvare og programvareprosesser. Kan benyttes til prediksjon av produktattributter eller å kontroller programvareprosessen. Produktmetrikker kan bli brukt for generelle prediksjoner eller for identifisere uregelmessige komponenter.

Prediktor og kontrollmålinger

Bruk av målinger For å tilordne verdi til kvalitetsattributter for et system Kan måle og aggregere karakteristikker på komponenter for å vurdere systemkvalitet, f.eks. vedlikeholdbarhet. For å identifisere komponenter som har dårlig kvalitet Finne karakteristikker som avviker fra normalen, f.eks. høyest kompleksitet. Større sannsynlighet for feil når komplekst. Hvorfor?

Antakelser om metrikker En programvareegenskap kan bli målt. Eksisterer en relasjon mellom hva som kan måles og hva man ønsker å vite. Kan bare måle interne attributter, men er ofte mer interessert i eksterne programvareattributter. Relasjonen har blitt formalisert og validert. Kan være vanskelig å relatere hva som kan bli målt med ønskede eksterne kvalitetsattributter.

Relationships between internal and external software

Problemer med målinger i industrien Umulig å kvantifisere avkastning på investering i et metrikkprogram. Ingen standarder for programvaremetrikk eller standardiserte prosesser for måling og analyse. Programvareprosesser er ikke standardiserte og ofte dårlig definert og kontrollert. Mest innsats på kodebaserte metrikker og plandrevne utviklingsprosesser. I dag mye utvikling med konfigurering, f.eks. ERP eller bruk av COTS. Målinger gir tilleggskostnader til prosesser.

Produktmetrikker En kvalitetsmetrikk bør være en predikor for produktkvalitet. Klasser av produktmetrikker Dynamiske metrikker innsamlet gjennom målinger av et kjørende program; Statiske metrikker innsamlet gjennom målinger gjort fra systemrepresentasjoner; (kode+dokumentasjon) Dynamiske metrikker hjelper å måle effektivitet og funksjonsstabilitet Statiske metrikker hjelper å måle kompleksitet, forståbarhet og vedlikeholdbarhet.

Dynamiske og statiske metrikker Dynamiske metrikker er nært relatert til kvalitetsattributter for programvare Ganske lett å måle responstid (ytelsesattributt) eller antall feilsituasjoner (funksjonsstabilitetsattributt). Statiske metrikker har en indirekte relasjon med kvalitetsattributter Må prøve å utlede relasjon mellom slike metrikker og egenskaper som kompleksitet, forståbarhet og vedlikeholdbarhet.

Statiske programvare metrikker Software metric Description Fan-in/Fan-out Fan-in is a measure of the number of functions or methods that call another function or method (say X). Fan-out is the number of functions that are called by function X. A high value for fan-in means that X is tightly coupled to the rest of the design and changes to X will have extensive knock-on effects. A high value for fan-out suggests that the overall complexity of X may be high because of the complexity of the control logic needed to coordinate the called components. Length of code This is a measure of the size of a program. Generally, the larger the size of the code of a component, the more complex and error-prone that component is likely to be. Length of code has been shown to be one of the most reliable metrics for predicting error-proneness in components.

Statiske programvare metrikker Software metric Description Cyclomatic complexity This is a measure of the control complexity of a program. This control complexity may be related to program understandability. I discuss cyclomatic complexity in Chapter 8. Length of identifiers This is a measure of the average length of identifiers (names for variables, classes, methods, etc.) in a program. The longer the identifiers, the more likely they are to be meaningful and hence the more understandable the program. Depth of conditional nesting This is a measure of the depth of nesting of if-statements in a program. Deeply nested if-statements are hard to understand and potentially error-prone. Fog index This is a measure of the average length of words and sentences in documents. The higher the value of a document’s Fog index, the more difficult the document is to understand.

Spørsmål til industrien Har du et eksempel på en kvalitetsplan? Hvilke viktige programvarestandarder benytter dere? Utfører dere reviews og/eller inspeksjoner? Hvilke er de viktigste målinger og metrikker benyttet I din organisasjon?

A.Generic (4) Målinger/metrikker: Antall bugs i ulike former. Test coverage http://c2.com/cgi/wiki?CodeCoverageTools

B. Skreddersøm (4) Målinger/metrikker Kvalitet: Antall bugs i ulike former, Compliance til kodestandarder, dekning av enhets- og integrasjonstester, dekning av krav, hvor mye av testene som er kjørt, kompleksitet, hvor mange kommentarer det er, hvor mye av koden som er duplikater, ytelse: svartider, throughput. Organisasjon: Faktureringsgrad, tid gjenstående på prosjektet, ferdigstillelsesgrad, ansatttilfredshet, sykefravær, mange økonomiske, etc., etc.

Kapittel 24 – Mer om kvalitetssikring Carl-Fredrik Sørensen 4.April 2014

ISO 9001 core processes

ISO 9001 and quality management

ISO 9001 certification Quality standards and procedures should be documented in an organisational quality manual. An external body may certify that an organisation’s quality manual conforms to ISO 9000 standards. Some customers require suppliers to be ISO 9000 certified although the need for flexibility here is increasingly recognised.

The CK object-oriented metrics suite Description Weighted methods per class (WMC) This is the number of methods in each class, weighted by the complexity of each method. Therefore, a simple method may have a complexity of 1, and a large and complex method a much higher value. The larger the value for this metric, the more complex the object class. Complex objects are more likely to be difficult to understand. They may not be logically cohesive, so cannot be reused effectively as superclasses in an inheritance tree. Depth of inheritance tree (DIT) This represents the number of discrete levels in the inheritance tree where subclasses inherit attributes and operations (methods) from superclasses. The deeper the inheritance tree, the more complex the design. Many object classes may have to be understood to understand the object classes at the leaves of the tree. Number of children (NOC) This is a measure of the number of immediate subclasses in a class. It measures the breadth of a class hierarchy, whereas DIT measures its depth. A high value for NOC may indicate greater reuse. It may mean that more effort should be made in validating base classes because of the number of subclasses that depend on them.

The CK object-oriented metrics suite Description Coupling between object classes (CBO) Classes are coupled when methods in one class use methods or instance variables defined in a different class. CBO is a measure of how much coupling exists. A high value for CBO means that classes are highly dependent, and therefore it is more likely that changing one class will affect other classes in the program. Response for a class (RFC) RFC is a measure of the number of methods that could potentially be executed in response to a message received by an object of that class. Again, RFC is related to complexity. The higher the value for RFC, the more complex a class and hence the more likely it is that it will include errors. Lack of cohesion in methods (LCOM) LCOM is calculated by considering pairs of methods in a class. LCOM is the difference between the number of method pairs without shared attributes and the number of method pairs with shared attributes. The value of this metric has been widely debated and it exists in several variations. It is not clear if it really adds any additional, useful information over and above that provided by other metrics.

Analyse av programvarekomponenter System component can be analyzed separately using a range of metrics. The values of these metrics may then compared for different components and, perhaps, with historical measurement data collected on previous projects. Anomalous measurements, which deviate significantly from the norm, may imply that there are problems with the quality of these components.

Process for produktmåling

Målingsoverraskelser Reducing the number of faults in a program leads to an increased number of help desk calls The program is now thought of as more reliable and so has a wider more diverse market. The percentage of users who call the help desk may have decreased but the total may increase; A more reliable system is used in a different way from a system where users work around the faults. This leads to more help desk calls.

Key points Software quality management is concerned with ensuring that software has a low number of defects and that it reaches the required standards of maintainability, reliability, portability and so on. SQM includes defining standards for processes and products and establishing processes to check that these standards have been followed. Software standards are important for quality assurance as they represent an identification of ‘best practice’. Quality management procedures may be documented in an organizational quality manual, based on the generic model for a quality manual suggested in the ISO 9001 standard.

Key points Reviews of the software process deliverables involve a team of people who check that quality standards are being followed. In a program inspection or peer review, a small team systematically checks the code. They read the code in detail and look for possible errors and omissions Software measurement can be used to gather data about software and software processes. Product quality metrics are particularly useful for highlighting anomalous components that may have quality problems.