Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Kapittel 24 – Kvalitetssikring og -styring

Liknende presentasjoner


Presentasjon om: "Kapittel 24 – Kvalitetssikring og -styring"— Utskrift av presentasjonen:

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

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

3 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..

4 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.

5 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.

6 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

7 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.

8 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…..

9 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?

10 A. Generisk (1) Ingen formell kvalitetsplan, men vi har en public utviklingsprosess 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.

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

12 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.

13 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.

14 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?

15 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.

16 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).

17 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.

18 Prosessbasert kvalitet

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

20 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.

21 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.

22 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

23 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.

24 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!

25 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. -- Video 4.25 min Quality manual

26 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?

27 A. Generisk (2) Standarder: SQL Standard, OpenGIS Standard, Software Engineering Terminology Standard,

28 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)

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

30 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

31 The software review process
Chapter 24 Quality management

32 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.

33 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.

34 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.

35 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.

36 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?

37 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.

38 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?

39 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

40 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.

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

42 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.

43 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.

44 Prediktor og kontrollmålinger

45 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?

46 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.

47 Relationships between internal and external software

48 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.

49 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.

50 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.

51 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.

52 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.

53 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?

54 A.Generic (4) Målinger/metrikker: Antall bugs i ulike former.
Test coverage

55 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.

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

57 ISO 9001 core processes

58 ISO 9001 and quality management

59 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.

60 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.

61 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.

62 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.

63 Process for produktmåling

64 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.

65 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.

66 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.


Laste ned ppt "Kapittel 24 – Kvalitetssikring og -styring"

Liknende presentasjoner


Annonser fra Google