Codeanalyse: Unterschied zwischen den Versionen

Aus E-Assessment-Wiki
Wechseln zu:Navigation, Suche
K (Ziele)
(Beschreibung)
Zeile 3: Zeile 3:
  
 
Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen.
 
Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen.
 +
 +
Viele Hochschulen haben zu dem Zweck bereits eigene Lösungen erstellt. Eine Übersicht über solche Systeme und ihre Funktionalität findet sich z.B. bei Deek & McHugh<ref>Fadi P. Deek, James A. McHugh: ''A Survey and Critical Analysis of Tools for Learning Programming'', in: ''Computer Science Education'', Vol. 8, Nr. 2, ISSN: 0899-3408, Routledge, London, 1998 [http://www.tandfonline.com/doi/pdf/10.1076/csed.8.2.130.3820 Artikel als PDF]</ref> oder Schramm<ref>Joachim Schramm: ''Unterstützung von Planung und Design in der Programmierausbildung an Universitäten'', Masterarbeit, TU Clausthal, 2011 [http://hcis.in.tu-clausthal.de/pubs/2011/tuc/unterstuetzung_von_planung_und_design_in_der_programmierausbildung_an_universitaeten.pdf Download als PDF]</ref>.
  
 
== Ziele ==
 
== Ziele ==

Version vom 8. Oktober 2012, 09:09 Uhr

Beschreibung

Viele technische Hochschulen bieten Programmierkurse an. Studierende lernen dort Grundlagen der Programmerstellung, und zwar für Programmiersprachen wie Java, C++, PHP usw. Häufig bestehen solche Kurse aus einer Kombination aus Vorlesung und Übung: während eine Vorlesung notwendige theoretische Grundlagen vermittelt, können die Studierenden diese in den Übungen anwenden und in Programme umsetzen.

Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen.

Viele Hochschulen haben zu dem Zweck bereits eigene Lösungen erstellt. Eine Übersicht über solche Systeme und ihre Funktionalität findet sich z.B. bei Deek & McHugh[1] oder Schramm[2].

Ziele

  • Entlastung der Lehrenden, schnelleres Feedback
  • Untersuchung von Programmquellcodes
  • Automatisierung einfacher Analyseschritte
  • Generelle Überprüfung der Programmqualität
  • Test auf Einhaltung von Programmierrichtlinien

Organisation

  • Lehrender verteilt nach Vorlesung Programmieraufgaben, um Inhalte zu vertiefen
  • Studierende bearbeiten die Aufgaben und erstellen Programme
  • Studierende laden ihre Quellcodes zur automatischen Überprüfung hoch
  • Direktes Feedback, welche Prüfungen erfolgreich waren und was nicht funktionierte
  • Studierende haben noch während des Übungszeitraums Möglichkeit zur Nachbesserung
  • Lehrender erhält Übersicht über Versuche und Erfolg

Recht

Technik

Beispiele

Bewertung

Vorteile

  • Automatischer Abgleich der Lösungen mit erwarteten Ergebnissen
  • Direktes Feedback zur individuellen Lösung

Nachteile

  • Schnittstellen und Verhalten sind eindeutig zu spezifizieren
  • Reaktion auf bestimmte Eingabewerte muss feststehen
  • Zusätzliche Sicherheitsmechanismen sind notwendig - was passiert bei Schadcode oder Endlosschleife?

Kombination mit weiteren Szenarien

Einsetzbar zur Überprüfung von Programmen im Übungsbetrieb, aber auch in Tutorien oder gemeinsamen Lernszenarien.

Literatur

  • Jens Krinke, Maximilian Störzer, Andreas Zeller: Web-basierte Programmierpraktika mit Praktomat, in: Softwaretechnik-Trends, Vol. 22, (3), 2002, Download als PDF
  • Fadi P. Deek, James A. McHugh: A Survey and Critical Analysis of Tools for Learning Programming, in: Computer Science Education, Vol. 8, Nr. 2, ISSN: 0899-3408, Routledge, London, 1998 Artikel als PDF
  • Joachim Schramm: Unterstützung von Planung und Design in der Programmierausbildung an Universitäten, Masterarbeit, TU Clausthal, 2011 Download als PDF