wprowadzenie do jakości oprogramowania

25
Wprowadzenie do Wprowadzenie do jakości Oprogramowania jakości Oprogramowania Jarosław Kuchta Jarosław Kuchta Dokumentacja i Jakość Dokumentacja i Jakość Oprogramowania Oprogramowania ttp://www.eti.pg.gda.pl/katedry/kask/pracownicy/Jaroslaw.Kuchta/DJO [email protected]

Upload: wray

Post on 03-Feb-2016

70 views

Category:

Documents


0 download

DESCRIPTION

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wprowadzenie do jakości Oprogramowania. http://www.eti.pg.gda.pl/katedry/kask/pracownicy/Jaroslaw.Kuchta/DJO. [email protected]. Znaczenie jakości systemów informatycznych. Systemy bankowe Systemy medyczne Systemy projektowe - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Wprowadzenie do jakości Oprogramowania

Wprowadzenie do Wprowadzenie do jakości jakości

OprogramowaniaOprogramowania

Jarosław KuchtaJarosław KuchtaDokumentacja i Jakość Dokumentacja i Jakość

OprogramowaniaOprogramowania

http://www.eti.pg.gda.pl/katedry/kask/pracownicy/Jaroslaw.Kuchta/DJO

[email protected]

Page 2: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

2Wprowadzenie do jakości oprogramowania

Znaczenie jakości Znaczenie jakości systemów systemów

informatycznychinformatycznych Systemy bankoweSystemy bankowe Systemy medyczneSystemy medyczne Systemy projektoweSystemy projektowe Sterowanie ruchem (lotniczy, kolejowy, drogowy)Sterowanie ruchem (lotniczy, kolejowy, drogowy) Systemy energetyczneSystemy energetyczne Samochody (zapłon, hamulce, sterowanie)Samochody (zapłon, hamulce, sterowanie) TelefonyTelefony Sprzęt AGDSprzęt AGD ......

Page 3: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

3Wprowadzenie do jakości oprogramowania

Statystyka projektówStatystyka projektów

0%

10%

20%

30%

40%

50%

60%

1994 1996 1998 2002 2002 2004

Zakończonych sukcesem

Z przekroczeniembudżetu/harmonogramu

Zakończonychniepowodzeniem

Page 4: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

4Wprowadzenie do jakości oprogramowania

Skala problemuSkala problemu średni roczny koszt błędów (USA)średni roczny koszt błędów (USA)

ok. 60 mld USDok. 60 mld USD 0,6% PKB0,6% PKB 50% użytkownicy, 50% dostawcy 50% użytkownicy, 50% dostawcy

oprogramowaniaoprogramowania 1/3 błędów można by uniknąć1/3 błędów można by uniknąć złożoność oprogramowania – 10złożoność oprogramowania – 1066 linii kodu linii kodu 80% kosztów opracowania – na 80% kosztów opracowania – na

wykrywanie i usuwanie błędówwykrywanie i usuwanie błędów

Page 5: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

5Wprowadzenie do jakości oprogramowania

Przykłady skutków Przykłady skutków błędówbłędów

1962 – zboczenie z kursu rakiety nośnej sondy kosmicznej 1962 – zboczenie z kursu rakiety nośnej sondy kosmicznej Mariner IMariner I

1982 – eksplozja gazociągu transsyberyjskiego1982 – eksplozja gazociągu transsyberyjskiego 1985-87 – przedawkowania przy terapii radiologicznej aparatem 1985-87 – przedawkowania przy terapii radiologicznej aparatem

THERAC-25 – USA, KanadaTHERAC-25 – USA, Kanada 1988 – pierwsze zarażenie komputerów w Berkeley przez robaka 1988 – pierwsze zarażenie komputerów w Berkeley przez robaka

internetowegointernetowego 1988-96 – brak bezpieczeństwa w systemie Kerberos1988-96 – brak bezpieczeństwa w systemie Kerberos 1990 – łańcuchowe załamanie komunikacji sieciowej AT&T1990 – łańcuchowe załamanie komunikacji sieciowej AT&T 1993 – błąd dzielenia Intel Pentium1993 – błąd dzielenia Intel Pentium 1995/96 – błąd w komunikacie „ping”1995/96 – błąd w komunikacie „ping” 1996 – katastrofa rakiety Ariane 51996 – katastrofa rakiety Ariane 5 1998 – awaria nowojorskiej giełdy towarowej (NYMEX)1998 – awaria nowojorskiej giełdy towarowej (NYMEX) 1999 – katastrofa sondy marsjańskiej Mars Orbiter1999 – katastrofa sondy marsjańskiej Mars Orbiter 2000 – przedawkowania w National Cancer Institute, Panama City2000 – przedawkowania w National Cancer Institute, Panama City 2000 – problem roku 20002000 – problem roku 2000

Page 6: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

6Wprowadzenie do jakości oprogramowania

Co to jest jakość?Co to jest jakość? Stopień w jakim system, komponent lub Stopień w jakim system, komponent lub

proces /obiekt spełnia wyspecyfikowane proces /obiekt spełnia wyspecyfikowane wymagania wymagania 

Stopień w jakim system, komponent lub Stopień w jakim system, komponent lub proces /obiekt spełnia oczekiwania klienta proces /obiekt spełnia oczekiwania klienta lub użytkownikalub użytkownika

    IEEE Std. 610 - 1990IEEE Std. 610 - 1990

Page 7: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

7Wprowadzenie do jakości oprogramowania

Wymagania Wymagania systemowesystemowe

Wymagania systemowe

funkcjonalne niezawodnościowe

funkcje

interfejsy

zasoby

platformy

dostępność

ochrona przed intruzami

gotowość obsługi

czas reakcji

porządek zdarzeń

czasowe

czas oczekiwania

H.Krawczyk

Page 8: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

8Wprowadzenie do jakości oprogramowania

Wymagania a atrybutyWymagania a atrybuty

WymaganiaWymagania Atrybuty Atrybuty jakościjakości

funkcjonalnefunkcjonalne funkcjonalnośćfunkcjonalność

czasoweczasowe wydajnośćwydajnośćniezawodnościowniezawodnościow

ee wiarygodnośćwiarygodność

ograniczeniaograniczenia elastycznośćelastyczność

Page 9: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

9Wprowadzenie do jakości oprogramowania

„„Drzewo” jakościDrzewo” jakościJakość

Funkcjonalność Wydajność Wiarygodność Satysfakcja Elastyczność

Kompletnośćfunkcjonalna

Złożoność

Adekwatność

Spójność

Łatwość śledzenia

Łatwość testowania

Efektywnośćwykonania

Wydajnośćinterakcji

Stabilność

Skalowalność

Niezawodność

Odpornośćna błędy

Bezpieczeństwo

Ochrona

Łatwość testowania

Łatwośćużycia

Zrozumiałość

Łatwośćnauki

Produktywność

Akceptowalność

Przenośność

Modyfikowalność

Konfigurowalność

Łatwość testowania

Page 10: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

10Wprowadzenie do jakości oprogramowania

FunkcjonalnośćFunkcjonalność Funkcjonalność (Funkcjonalność (FunctionalityFunctionality) – dopasowanie ) – dopasowanie

systemu do potrzeb funkcjonalnychsystemu do potrzeb funkcjonalnych Kompletność funkcjonalna (Kompletność funkcjonalna (Functional completnessFunctional completness) – stopień ) – stopień

pokrycia wymaganych funkcjipokrycia wymaganych funkcji Złożoność (Złożoność (ComplexityComplexity) – stopień skomplikowania systemu i ) – stopień skomplikowania systemu i

jego elementówjego elementów Adekwatność (Adekwatność (AdequacyAdequacy) – stopień dopasowania ) – stopień dopasowania

wykonywanych funkcji do ich specyfikacjiwykonywanych funkcji do ich specyfikacji Spójność (Spójność (IntegrityIntegrity) – stopień dopasowania poszczególnych ) – stopień dopasowania poszczególnych

elementów systemu do siebieelementów systemu do siebie Łatwość śledzenia (Łatwość śledzenia (TraceabilityTraceability) – łatwość orientowania się w ) – łatwość orientowania się w

sposobie działania systemusposobie działania systemu Łatwość testowania (Łatwość testowania (TestabilityTestability) – łatwość sprawdzenia ) – łatwość sprawdzenia

poprawności działania systemupoprawności działania systemu

Page 11: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

11Wprowadzenie do jakości oprogramowania

WydajnośćWydajność Wydajność (Wydajność (PerformancePerformance) – zbiór cech ) – zbiór cech

związanych z osiągami systemuzwiązanych z osiągami systemu Efektywność wykonania (Efektywność wykonania (Execution efficiencyExecution efficiency) – szybkość ) – szybkość

działania systemudziałania systemu Wydajność interakcji (Wydajność interakcji (Interaction performanceInteraction performance) – szybkość ) – szybkość

komunikacji z użytkownikiemkomunikacji z użytkownikiem Stabilność (Stabilność (StabilityStability) – odporność systemu na zmiany ) – odporność systemu na zmiany

środowiska (platformy programistycznej, systemu środowiska (platformy programistycznej, systemu operacyjnego, zmiennych środowiskowych)operacyjnego, zmiennych środowiskowych)

Skalowalność (Skalowalność (ScalabilityScalability) – podatność systemu na zmianę ) – podatność systemu na zmianę (zwiększenie) wymagań ilościowych(zwiększenie) wymagań ilościowych

Page 12: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

12Wprowadzenie do jakości oprogramowania

WiarygodnośćWiarygodność Wiarygodność (Wiarygodność (DependabilityDependability) - stopień ) - stopień

zaufania do systemuzaufania do systemu Niezawodność (Niezawodność (ReliabilityReliability) - określa, czy system nie upadnie i ) - określa, czy system nie upadnie i

można korzystać z jego usług można korzystać z jego usług Odporność na błędy (Odporność na błędy (Error-toleranceError-tolerance) - stopień tolerancji ) - stopień tolerancji

błędów; błędów; Bezpieczeństwo (Bezpieczeństwo (SafetySafety) - stopień zapobiegania szkodom, jakie ) - stopień zapobiegania szkodom, jakie

system może wyrządzić w otoczeniusystem może wyrządzić w otoczeniu Ochrona (Ochrona (SecuritySecurity) - stopień kontroli dostępu do systemu) - stopień kontroli dostępu do systemu Łatwość testowania (Łatwość testowania (TestabilityTestability) - zdolność do wykrywania i ) - zdolność do wykrywania i

identyfikacji błędów w systemieidentyfikacji błędów w systemie

Page 13: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

13Wprowadzenie do jakości oprogramowania

SatysfakcjaSatysfakcja Satysfakcja (Satysfakcja (SatisfactionSatisfaction) – zespół cech ) – zespół cech

określających stopień zadowolenia określających stopień zadowolenia użytkownikaużytkownika Łatwość użycia (Łatwość użycia (Ease of useEase of use) – łatwość obsługi produktu) – łatwość obsługi produktu Zrozumiałość (Zrozumiałość (UnderstandabilityUnderstandability) – łatwość zrozumienia ) – łatwość zrozumienia

produktu wynikająca z zastosowanych konwencji jego opisuproduktu wynikająca z zastosowanych konwencji jego opisu Łatwość nauki (Łatwość nauki (LearnabilityLearnability) – nakład pracy wymagany do ) – nakład pracy wymagany do

zdobycia umiejętności posługiwania się produktemzdobycia umiejętności posługiwania się produktem Produktywność (Produktywność (ProductivityProductivity) – stopień wspomagania zadań ) – stopień wspomagania zadań

użytkownika przez systemużytkownika przez system Akceptowalność (Akceptowalność (AcceptanceAcceptance) – stopień akceptacji przez ) – stopień akceptacji przez

użytkownikaużytkownika

Page 14: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

14Wprowadzenie do jakości oprogramowania

ElastycznośćElastyczność Elastyczność (Elastyczność (FlexibilityFlexibility) – umiejętność ) – umiejętność

dopasowania się systemu do dopasowania się systemu do zachodzących zmianzachodzących zmian Przenośność (Przenośność (PortabilityPortability) – łatwość przystosowania systemu ) – łatwość przystosowania systemu

do nowego środowiska lub rozszerzenia środowiskado nowego środowiska lub rozszerzenia środowiska Modyfikowalność (Modyfikowalność (ModifiabilityModifiability) – łatwość wprowadzania ) – łatwość wprowadzania

zmian w funkcjach systemuzmian w funkcjach systemu Konfigurowalność (Konfigurowalność (ConfigurabilityConfigurability) – łatwość dostosowania ) – łatwość dostosowania

systemu do potrzeb użytkownika bez konieczności zmian jego systemu do potrzeb użytkownika bez konieczności zmian jego funkcjifunkcji

Łatwość testowania (Łatwość testowania (Ease of testingEase of testing) – łatwość projektowania i ) – łatwość projektowania i wykonywania testówwykonywania testów

Page 15: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

15Wprowadzenie do jakości oprogramowania

Wagi atrybutów w Wagi atrybutów w różnych klasach różnych klasach

aplikacji (1)aplikacji (1)Klasy aplikacjiKlasy aplikacji

SpecjalistycznSpecjalistycznee InternetoweInternetowe Czasu Czasu

rzeczywistegorzeczywistegoWiarygodność 0,3 0,5 1

Bezpieczeństwo 0,5 0 1

Niezawodność 1 0,5 1

Ochrona 0 1 1

Odporność na błędy 0,5 0,6 1

Łatwość testowana 1 0,9 1

Page 16: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

16Wprowadzenie do jakości oprogramowania

Wagi atrybutów w Wagi atrybutów w różnych klasach różnych klasach

aplikacji (2)aplikacji (2)Klasy aplikacjiKlasy aplikacji

SpecjalistycznSpecjalistycznee InternetoweInternetowe Czasu Czasu

rzeczywistegorzeczywistego

Satysfakcja 0,3 0,9 0,6

Łatwość użycia 0,7 1 0,8

Zrozumiałość 0,7 1 0,2

Łatwość nauki 0,3 1 0,6

Produktywność 1 0,8 1

Akceptowalność 0,6 0,7 0,5

Page 17: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

17Wprowadzenie do jakości oprogramowania

Wagi atrybutów w Wagi atrybutów w różnych klasach różnych klasach

aplikacji (3)aplikacji (3)Klasy aplikacjiKlasy aplikacji

SpecjalistycznSpecjalistycznee InternetoweInternetowe Czasu Czasu

rzeczywistegorzeczywistegoFunkcjonalność 0,8 0,8 0,9

Kompletność funkcjonalna 1 0,6 1

Złożoność 0,5 0,8 0,9

Adekwatność 1 1 1

Spćjność 0,7 1 1

Łatwość śledzenia 0,6 0,4 0,5

Page 18: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

18Wprowadzenie do jakości oprogramowania

Wagi atrybutów w Wagi atrybutów w różnych klasach różnych klasach

aplikacji (4)aplikacji (4)Klasy aplikacjiKlasy aplikacji

SpecjalistycznSpecjalistycznee InternetoweInternetowe Czasu Czasu

rzeczywistegorzeczywistegoElastyczność 0,3 1 0,3

Przenośność 0,1 1 0,2Modyfikowalno

ść 0,3 1 0,2

Konfigurowalność 0,7 0,9 0,7

Łatwość testowania 0,2 1 1

Page 19: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

19Wprowadzenie do jakości oprogramowania

Wagi atrybutów w Wagi atrybutów w różnych klasach różnych klasach

aplikacji (5)aplikacji (5)Klasy aplikacjiKlasy aplikacji

SpecjalistycznSpecjalistycznee InternetoweInternetowe Czasu Czasu

rzeczywistegorzeczywistego

Wydajność 0,2 0,8 0,4

Skalowalność 0,1 1 0

Stabilność 0,1 1 0

Wydajność interakcji 0,4 0,8 0,5

Efektywność wykonania 0,2 0,4 1

Page 20: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

20Wprowadzenie do jakości oprogramowania

Atrybuty a metrykiAtrybuty a metrykiJakość

Funkcjonalność Wydajność Wiarygodność Satysfakcja Elastyczność

Kompletnośćfunkcjonalna

Złożoność

Adekwatność

Spójność

Łatwość śledzenia

Łatwość testowania

Atrybuty – cechy jakościowe produktu, świadczą o jego wartości dla użytkownika

Metryki – cechy ilościowe, określają sposób oceny poszczególnych atrybutów

Page 21: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

21Wprowadzenie do jakości oprogramowania

Wyznaczenie Wyznaczenie atrybutówatrybutów

Jakość

Funkcjonalność Wydajność Wiarygodność Satysfakcja Elastyczność

Kompletnośćfunkcjonalna

Złożoność

Adekwatność

Spójność

Łatwość śledzenia

Łatwość testowania

Mj – metryka [0 – 1]

wj – waga metryki ?

Ai – atrybut [0 – 1]

j

jjj

i w

wMA

Page 22: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

22Wprowadzenie do jakości oprogramowania

Metryki a miaryMetryki a miary

Kompletność funkcjonalna =Liczba zrealizowanych funkcji

Liczba wymaganych funkcji

Metryka – to co się mierzy Miara – jak się mierzy

[0 – 1][%]

[MFLOPS][KLOC]

?

Page 23: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

23Wprowadzenie do jakości oprogramowania

Miary a pomiaryMiary a pomiary

Miara

0,95

0,94

0,99

0,92

1

ekspert1

ekspert2

ekspert3

ekspert4

ekspert5

AVG0,96

?

Czy 0,96 to dużo, czy mało?

Page 24: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

24Wprowadzenie do jakości oprogramowania

Podsumowanie Podsumowanie problemów z oceną problemów z oceną

jakościjakości Jakość jest pojęciem złożonymJakość jest pojęciem złożonym Pomiar jest często subiektywnyPomiar jest często subiektywny Często brak punktu odniesieniaCzęsto brak punktu odniesienia Problem z normalizacją wyniku pomiaruProblem z normalizacją wyniku pomiaru Wagi mogą być arbitralnie ustaloneWagi mogą być arbitralnie ustalone Problem z oceną wynikuProblem z oceną wyniku

Page 25: Wprowadzenie do jakości Oprogramowania

Dokumentacja i Jakość Oprogramowania

25Wprowadzenie do jakości oprogramowania

LiteraturaLiteratura http://http://www.nist.govwww.nist.gov//public_affairspublic_affairs//releasesreleases/n02-10.htm/n02-10.htm (2002) (2002) http://http://www.galorath.comwww.galorath.com//wpwp//

software-project-failure-costs-billions-better-estimasoftware-project-failure-costs-billions-better-estimation-planning-cantion-planning-can--help.phphelp.php Norton Fenton: Norton Fenton: Software MetricsSoftware Metrics, , Chapman Hall, 1998.Chapman Hall, 1998.

John L. Hennesy & David Patterson: John L. Hennesy & David Patterson: Computer Computer Architecture a quantitative approachArchitecture a quantitative approach. Morgan . Morgan Kaufmann Publishers, Inc, 1996Kaufmann Publishers, Inc, 1996

Pressman R.S., Pressman R.S., Software engineering. A Software engineering. A practitioner’s approachpractitioner’s approach, McGraw-Hill, International , McGraw-Hill, International Edition, 1992Edition, 1992

Górski J. et al., Górski J. et al., Inżynieria oprogramowania w Inżynieria oprogramowania w projekcie informatycznymprojekcie informatycznym, wyd. Mikom, Warszawa, , wyd. Mikom, Warszawa, 20002000