Wprowadzenie do jakości Oprogramowania
description
Transcript of 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
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 ......
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
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
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
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
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
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ść
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
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
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
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
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
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
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
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
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
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
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
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
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
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]
?
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?
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
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