Softwarequalität Gabriele Taentzer Philipps-Universität Marburg Sommersemester 2016
Organisation der LV Umfang: 6 SWS, 9 ECTS Punkte Veranstalter: Gabriele Taentzer, Stefan John Kontakt: taentzer@mathematik.uni-marburg.de, Raum 05 D 13, Tel: 21532 sjohn@mathematik.uni-marburg.de, Raum: 05 D 12, Tel: 21511 Termine: VL: Mi 10.15 11.45 h, Seminarraum XV VL: Mi 12.15 13.45 h, Seminarraum XV UE: Mi 14.15 15.45 h, Seminarraum XV Taentzer Softwarequalität 2016 2
Organisation der LV Aufbaumodul in Bachelor-Informatik Voraussetzung: Praktische Informatik 1 und 2 Einführung in die Softwaretechnik und SW-Praktikum Scheinkriterien: Übungsaufgaben 1 Kurzvortrag (ca. 20 min) Abschlussklausur / mündliche Prüfung Homepage der LV: www.uni-marburg.de/fb12/swt Lehre Softwarequalität Kopien der Folien, Literaturhinweise, Übungen, ILIAS-Plattform Taentzer Softwarequalität 2016 3
Lehrveranstaltungsstil Konzeptvermittlung in der Vorlesung anhand von Folien und weiteren Beispielen Folienkopien sind in ILIAS verfügbar Beispiele häufig an der Tafel Viel Diskussion und Übung Literatur häufig in Englisch Online verfügbar Zwischenfragen und Kommentare während der Vorlesung sind grundsätzlich erwünscht. Taentzer Softwarequalität 2016 4
Lernziele Verständnis von Softwarequalität und -qualitätsmanagement Verständnis für die Möglichkeiten und Grenzen einzelner Methoden und Techniken zur Messung und zur Verbesserung von Softwarequalität Einarbeitung in spezifische Aspekte der Softwarequalität und Vorstellung dieser Grundverständnis für die in der LV vorgestellten Werkzeuge durch Übungen und Kurzvorträge vertieft Taentzer Softwarequalität 2016 5
Inhalt Einführung in das Thema Softwarequalität Softwarequalitätsmanagement Syntaktische Verfahren Softwaremetriken Entwicklungsrichtlinien Bad Code Smell und Refactoring Design Patterns und Antipatterns Semantische Verfahren Testverfahren und Profiling Validations- und Verifikationstechniken Zusammenfassung und Ausblick Taentzer Softwarequalität 2016 6
Softwarequalität: Einführung 13. April 2016
Überblick Warum ist Softwarequalität wichtig? Was ist Softwarequalität? Wie erreicht man Softwarequalität? Taentzer Softwarequalität 2016 8
Taentzer Softwarequalität 2016 9
Taentzer Softwarequalität 2016 10
Taentzer Softwarequalität 2016 11
Taentzer Softwarequalität 2016 12
Taentzer Softwarequalität 2016 13
Taentzer Softwarequalität 2016 14
Was ist Softwarequalität? Ergonomie Erlernbarkeit Korrektheit Zuverlässigkeit Sicherheit Installierbarkeit Performanz Wiederverwendbarkeit anforderungsgerecht Testbarkeit Taentzer Softwarequalität 2016 15
Qualitätsmerkmale für Software Funktionalität: Korrektheit, Angemessenheit, Interoperabilität, Ordnungsmäßigkeit, Sicherheit Zuverlässigkeit: Reife, Fehlertoleranz, Wiederherstellbarkeit Benutzbarkeit: Verständlichkeit, Bedienbarkeit, Erlernbarkeit, Robustheit Effizienz: Wirtschaftlichkeit, Zeitverhalten, Verbrauchsverhalten Wartungsfreundlichkeit: Analysierbarkeit, Änderbarkeit, Stabilität, Testbarkeit Übertragbarkeit: Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit Taentzer Softwarequalität 2016 16
Der Nachfolger: ISO 25010 Taentzer Softwarequalität 2016 17
Ist Softwarequalität gleich Softwarequalität? Was ist das Werteverständnis der beteiligten Personen? Qualitätsanforderungen können sich gegenseitig widersprechen. Qualitätsanforderungen sind abhängig von der Art der Software abhängig von den Kundenwerten abhängig von den Qualitätsvorstellungen der Entwickler abhängig vom Entwicklungsprozess Taentzer Softwarequalität 2016 18
Korrektheit Beispiel: Qualität von eingebetteten Systemen Korrektheit, Korrektheit, Zuverlässigkeit Fehlertoleranz Keine Eingabe darf das System zum Absturz bringen. Effizienz Kleine Speicher Übertragbarkeit Viele Varianten Wartungsfreundlichkeit Kompromiss mit Effizienz www4.cs.fau.de mindstorms.lego.com Taentzer Softwarequalität 2016 19
Beispiel: Mobile Anwendungen Funktionalität Korrektheit Angemessenheit Sicherheit Zuverlässigkeit Fehlertoleranz Benutzbarkeit kleine Bildschirme viele Gerätetypen Effizienz bzgl. Energie und Netz Wartungsfreundlichkeit apple.com samsung.com Taentzer Softwarequalität 2016 20
Beispiel: Textverarbeitungssoftware Funktionalität Korrektheit Angemessenheit Zuverlässigkeit Reife Fehlertoleranz Benutzbarkeit Leichte Erlernbarkeit verschiedene Benutzertypen viel Funktionalität Wartungsfreundlichkeit Langlebige Software openoffice.org Taentzer Softwarequalität 2016 21
Wegweiser zur Qualitätssicherung Höchste Priorität: Korrektheit /Fehlertoleranz Wie prüft man die Korrektheit/Fehlertoleranz einer Software? Auch häufig genannt: Wartbarkeit und Übertragbarkeit Wann ist Software gut wartbar? Wann lässt sie sich gut auf andere Umgebungen übertragen? Angemessenheit (bzgl. der Anforderungen): Wann sind Anforderungen gut spezifiziert? Wie prüft man, ob die Software ihren Anforderungen entspricht? Benutzbarkeit: Wann ist eine Software gut benutzbar? Wie kann man Benutzbarkeit systematisch prüfen? Taentzer Softwarequalität 2016 22
Wie sieht es mit der Codequalität aus? Taentzer Softwarequalität 2016 23
Verfahren zur Qualitätsmessung Definition von Qualitätsmanagementprozessen quantitative Messungen: Softwaremetriken Überprüfung syntaktischer Muster: Entwicklungsrichtlinien Entwurfsmuster und Softwarearchitekturen Beispiele und Gegenbeispiele: Testverfahren und Profiling Überprüfung semantischer Eigenschaften: Validation, Verifikation Taentzer Softwarequalität 2016 24
Kurzvorträge Eclipse-Plugin Checkstyle (Metriken und Smells) Eclipse-Plugin PMD (Metriken und Smells) Eclipse User Interface Guidelines Eclipse-Refactoring-Tool Sonargraph-Explorer (Statische Code-Analysen) Eclipse-Plugin: EclEmma (Java Code Coverage) Mockito: Mock-Objekte für Unit-Tests von Java-Programmen Guidelines für testbaren Code (http://misko.hevery.com/code-reviewers-guide) Eclipse-Plugin Selenium (Testen von graphischen Oberflächen) Java Mission Control (Oracle) (Performanzanalyse) Java Pathfinder (Verifikation von Java-Code) Taentzer Softwarequalität 2016 25
Zusammenfassung Software ist häufig fehlerhaft, manchmal mit fatalen Folgen. Der Begriff Softwarequalität umfasst viele verschiedene Aspekte. Je nach Art des Softwaresystems variiert die Priorität einzelner Qualitätsaspekte. Es gibt viele Ansätze, die Softwarequalität zu verbessern. Wir konzentrieren uns auf die Verbesserung des Softwaresystems und nicht des Entwicklungsprozesses. Wir betrachten Standardtechniken, um Softwarequalität zu messen und zu verbessern. Nächste Woche: Softwarequalitätsmanagement Taentzer Softwarequalität 2016 26