Statische Codeanalyse mit Polyspace: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „==Einleitung== '''Statische Code-Analyse''' oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe forma…“)
 
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 37: Zeile 37:


==Verwendetes Tool==
==Verwendetes Tool==
* Matlab Polyspace
* [http://de.mathworks.com/products/polyspace/?refresh=true Mathworks Polyspace]
 


==Mögliche Fragen==
==Mögliche Fragen==
Zeile 47: Zeile 46:
* Wie ist der Ablauf einer statischen Codeanalyse?
* Wie ist der Ablauf einer statischen Codeanalyse?
* Gibt es ein kostenloses Tool, was dasselbe kann?
* Gibt es ein kostenloses Tool, was dasselbe kann?
== Literatur ==
# Bommer,C.; Spindler, M., Barr, V.: ''Softwarewartung – Grundlagen, Management und Wartungstechniken.'' Heidelberg: dpunkt.verlag, 1. Auflage 2008. ISBN 978-3-89864-482-2
# Liggesmeyer, P.: Software-Qualität: ''Testen, Analysieren und Verifizieren von Software.'' Heidelberg:  Spektrum, Akad. Verl., 2 Auflage 2009, ISBN 978-3827420565, S. 270 ff.
# Spillner, A.; Linz, T.: ''Basiswissen Softwaretest.'' Heidelberg: dpunkt.verlag, 4 Auflage 2010. ISBN 978-3898646420, S. 98 ff.
# Sneed, H.; Seidl, R.; Baumgartner, M.: ''Software in Zahlen - Die Vermessung von Applikationen.'' München: Carl Hanser Verlag, 1. Auflage 2010. ISBN 978-3-446-42175-2.


== Weiterführende Links==
== Weiterführende Links==
# Ch. Bommer, M. Spindler, V. Barr: Softwarewartung – Grundlagen, Management und Wartungstechniken. dpunkt.verlag, Heidelberg 2008, ISBN 3-89864-482-0.
* [http://de.mathworks.com/products/polyspace/?refresh=true Mathworks Polyspace]
# P. Liggesmeyer: Software-Qualität: Testen, Analysieren und Verifizieren von Software. 2 Auflage. Spektrum, Akad. Verl., Heidelberg 2009, ISBN 978-3827420565, S. 270.
* http://www.qa-systems.de/produkte/qa-c.html
# A. Spillner und T. Linz: Basiswissen Softwaretest. 4 Auflage. dpunkt.verlag, Heidelberg 2010, ISBN 978-3898646420, S. 98.
* [http://www.misra.org.uk/ Motor Industry Software Reliability Association (MISRA)]
# Harry Sneed, Richard Seidl, Manfred Baumgartner: Software in Zahlen - Die Vermessung von Applikationen. 1. Auflage. Carl Hanser Verlag, 2010, ISBN 978-3-446-42175-2.
* [http://www.qa-systems.de/produkte/cantata.html QA-Systems Cantata]
# http://www.qa-systems.de/produkte/qa-c.html
* [http://en.gasq.org/ Global Association for Software Quality]
# [http://www.misra.org.uk/ Motor Industry Software Reliability Association (MISRA)]
* [https://www.asqf.de/ Arbeitskreis Software-Qualität und Fortbildung]
# [http://www.qa-systems.de/produkte/cantata.html QA-Systems Cantata]
* [https://www.isqi.org/ International Software Quality Institute]
# Peter Liggesmeyer, Software-Qualität, Heidelberg: Spektrum-Verlag 2002
* [http://www.ebusiness-akademie.de/expertenwissen/7_software-engineering-und-software-qualitaet-in-open-source-projekten.htm Software-Engineering und Software-Qualität in Open-Source Projekten (Creative Commons Lizenz)]
# [http://en.gasq.org/ Global Association for Software Quality]
* [http://www.iqnite-conferences.com/iqnite-de/index.aspx iqnite - Die Konferenz für Software-Qualitätsmanagement und -Testen]
# [https://www.asqf.de/ Arbeitskreis Software-Qualität und Fortbildung]
 
# [https://www.isqi.org/ International Software Quality Institute]
# [http://www.ebusiness-akademie.de/expertenwissen/7_software-engineering-und-software-qualitaet-in-open-source-projekten.htm Software-Engineering und Software-Qualität in Open-Source Projekten (Creative Commons Lizenz)]
# [http://www.iqnite-conferences.com/iqnite-de/index.aspx iqnite - Die Konferenz für Software-Qualitätsmanagement und -Testen]
# [http://de.mathworks.com/products/polyspace/?refresh=true Mathworks Polyspace]






----
----
→ zurück zum Hauptartikel: [[Seminar_SDE_WS_18/19|Seminar SDE WS 18/19]]
<!--
→ zurück zum Hauptartikel: [[Seminar_SDE_WS_19/20|Seminar SDE WS 19/20]]
-->
→ zurück zum Hauptartikel: [[Seminar_SDE_WS_20/21|Seminar SDE WS 23/24]]

Aktuelle Version vom 19. März 2024, 09:19 Uhr

Einleitung

Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. Die Methodik gehört zu den falsifizierenden Verfahren, d. h. es wird die Anwesenheit von Fehlern bestimmt.

In Anlehnung an das klassische Programm Lint wird der Vorgang auch als linten (englisch linting) bezeichnet.

Neben dem gewissenhaften Studium von Quelltext durch Entwickler ist es möglich, viele inhaltliche Fehler werkzeuggestützt oder automatisch zu erkennen. Die Bandbreite reicht von der Sicherstellung von einfachen Coding-Standards (z. B. ein return-Statement pro Funktion) über die Prüfung von Typumwandlungen und Bereichsgrenzen über die Suche nach bestimmten Arten von Speicherlecks bis hin zur technischen Verifikation von Quelltext.

Einfache Analysen sind häufig bereits im Compiler (Übersetzer) einer Programmiersprache integriert, z. B. die Prüfung auf Initialisierung einer Variablen. Darüber hinaus gibt es Methoden, die den Programmierstil auf Ästhetik und Pragmatik prüfen, nämlich die stilistischen Methoden. Allerdings werden häufig nur Warnmeldungen angezeigt, die ignoriert werden können. Bei sogenannten Profilern wird zusätzlicher Objektcode generiert, welcher Aussagen über Codeabdeckung und Codefrequentierung generiert. Echte statische Analysierer gibt es nur wenige.

Automatisierte Codereview-Software vereinfacht die Aufgabe der Durchsicht großer Programmteile durch systematische Überprüfungen auf angreifbare Stellen wie:

  • Race Conditions
  • Formatstring-Angriffe
  • Pufferüberläufe
  • Speicherlecks


Aufgrund einer nach wie vor nicht unerheblichen Anzahl an falsch erkannten, nur vermeintlichen Schwächen im Quellcode ist eine vollautomatische Korrektur durch die Werkzeuge zur statischen Code-Analyse bis zum heutigen Tag nicht Usus.

Dynamische Software-Testverfahren sind bestimmte Prüfmethoden um beim Softwaretest Fehler in Software aufzudecken.

Während bei statischen Verfahren die zu testende Software nicht ausgeführt wird, setzen dynamische Verfahren die Ausführbarkeit der Software voraus. Grundprinzip der dynamischen Verfahren ist die Ausführung der zu testenden Software mit systematisch festgelegten Eingabedaten (Testfälle). Für jeden Testfall werden zu den Eingabedaten auch die erwarteten Ausgabedaten angegeben. Die vom Testlauf erzeugten Ausgabedaten werden mit den jeweils erwarteten Daten verglichen. Bei Abweichungen liegt ein Fehler vor.

Wesentliche Aufgabe der einzelnen Verfahren ist die Bestimmung geeigneter Testfälle für den Test der Software.

Ihre Aufgaben

  • Motivieren Sie das Gebiet der statischen Codeanalyse.
  • Einführung in die Qualitätssicherung durch statische Software-Testverfahren.
  • Stellen Sie die in der Literatur gängigen Verfahren vor.
  • Ordnen Sie vor diesem Hintergrund MATLAB Polyspace ein.
  • Einführung in die Software mit praktischen Beispielen.
  • Live-Vorführung von MATLAB Polyspace (Lizenzen sind an der HSHL vorhanden)
  • Beschreiben Sie den Funktionsumfang der Software anhand praktischer Beispiele.

Kür-Aufgabe

Machen Sie doch eine Umfrage unter Ihren Kommilitonen (Semester 1-7) welche Firmen welche statische Software Testverfahren einsetzen und warum. Das wäre aber schon das ++ hinter der 1.

Verwendetes Tool

Mögliche Fragen

  • Wozu braucht man eine statische Codeanalyse?
  • Wie funktioniert eine statische Codeanalyse?
  • Was bedeutet MISRA?
  • Wie dokumiert man die Ergebnisse?
  • Wie ist der Ablauf einer statischen Codeanalyse?
  • Gibt es ein kostenloses Tool, was dasselbe kann?

Literatur

  1. Bommer,C.; Spindler, M., Barr, V.: Softwarewartung – Grundlagen, Management und Wartungstechniken. Heidelberg: dpunkt.verlag, 1. Auflage 2008. ISBN 978-3-89864-482-2
  2. Liggesmeyer, P.: Software-Qualität: Testen, Analysieren und Verifizieren von Software. Heidelberg: Spektrum, Akad. Verl., 2 Auflage 2009, ISBN 978-3827420565, S. 270 ff.
  3. Spillner, A.; Linz, T.: Basiswissen Softwaretest. Heidelberg: dpunkt.verlag, 4 Auflage 2010. ISBN 978-3898646420, S. 98 ff.
  4. Sneed, H.; Seidl, R.; Baumgartner, M.: Software in Zahlen - Die Vermessung von Applikationen. München: Carl Hanser Verlag, 1. Auflage 2010. ISBN 978-3-446-42175-2.

Weiterführende Links




→ zurück zum Hauptartikel: Seminar SDE WS 23/24