Diplomarbeit aus dem Jahr 1999 im Fachbereich Informatik - Software, Karlsruher Institut für Technologie (KIT) (Informatik, Programmstrukturen und Datenorganisation), Sprache: Deutsch, Abstract: Inhaltsangabe:Einleitung:
Die meisten Artikel zum Thema Zusicherungen, darunter auch fast alle hier angesprochenen, heben die Vorzüge von Zusicherungen als Hilfsmittel beim Programmieren hervor, ohne aber ihre Kernaussage - mit Zusicherungen kann man besser programmieren als ohne - empirisch zu untermauern. Einige Autoren, wie z. B. Rosenblum und McKim, haben selbst viel mit Zusicherungen programmiert, so daß ihre Aussagen durch eigene Erfahrungen gestützt werden. Trotzdem steht ein Experiment, das die Nützlichkeit von Zusicherungen für die Neuentwicklung oder Wartung von Software empirisch mit mehreren Programmierern, die an denselben Problemen und mit denselben Werkzeugen arbeiten, untersucht, noch aus. Das ist der Anlaß für diese Diplomarbeit.
Gang der Untersuchung:
Kapitel 2 beschreibt die beiden Zusicherungswerkzeuge, die in diesem Experiment eingesetzt werden. In Kapitel 3 werden die Hypothesen, der Aufbau des Experiments, die Versuchspersonen und die Aufgaben beschrieben, die ihnen gestellt wurden.
Die Ergebnisse, die aus den protokollierten Daten gewonnen wurden, werden in Kapitel 4 dargestellt, und Kapitel 5 beschließt die Ausarbeitung mit Zusammenfassung und Ausblick.
Im Anhang sind die Aufgabenblätter und komplette Beispiele für interaktive Syntaxkurs-Sitzungen enthalten. Außerdem finden sich dort einige Tabellen mit Daten, die im Experiment gewonnen wurden und Detailinformationen liefern, die im Kapitel 4 nicht erwähnt werden.
Die Programme, die in diesem Experiment von den Versuchspersonen erweitert wurden, die Rohdaten, die dabei gewonnen wurden, und die Perl-Programme für die Auswertung der Daten und zum Training der Versuchspersonen sind nicht in dieser Ausarbeitung enthalten. Sie sind unter verfügbar.
Inhaltsverzeichnis:Inhaltsverzeichnis:
1.Einleitung
1.1Zusicherungen6
1.2Grundidee des Experiments8
1.3Verwandte Arbeiten8
1.3.1Störk: jContract8
1.3.2Leveson, Cha et al.: empirische Studie9
1.3.3Schneider: Concurrent Programming9
1.3.4Luckham et al.: Two-dimensional Pinpointing10
1.3.5McKim: Designing for correctness10
1.4Nützlichkeit eines Experiments10
1.5Gliederung der Ausarbeitung, Rohdaten10
2.Die verwendeten Zusicherungswerkzeuge12
2.1APP12
2.2jContract16
3.Beschreibung des Experiments19
3.1Fragestellung und Hypothesen19
3.2Aufbau des Experiments20
3.2.1Versuchspersonen21
3.2.2Klassifizierung und Vorsortierung der Versuchspersonen21
3.2.3Auswahl der Aufgaben23
3.2.4Teilaufgabe mit Neuentwicklungscharakter26
3.2.5Teilaufgabe mit Wartungscharakter26
3.2.6Reihenfolge der Aufgaben, Ablauf des Experiments27
3.2.7Unterschiede in den C- und Java-Aufgaben28
3.2.8Training der Teilnehmer vor dem Experiment28
3.3Bedrohungen der internen Gültigkeit29
3.4Bedrohungen der externen Gültigkeit32
3.5Technischer Versuchsaufbau32
3.5.1Kooperationsmöglichkeiten32
3.5.2Syntaxkurs und Skripte zum Übersetzen und Testen33
3.5.3Erfaßte Daten35
4.Ergebnisse37
4.1Signifikanztest und Diagramme37
4.1.1Signifikanztest37
4.1.2Der Boxplot37
4.1.3Trendgeraden38
4.2Schwächen von jContract38
4.3Bereitschaft zur Verwendung von Zusicherungen39
4.4Zeitbedarf40
4.4.1Zur Ermittlung der Zeitdaten40
4.4.2Zeitbedarf mit und ohne Zusicherungen42
4.4.3Rückschlüsse aus dem Zeitbedarf48
4.4.4Zusammenhang zwischen Anzahl der Zusicherungen und Zeitbedarf48
4.5Wiederverwendung von Funktionen51
5.Zusammenfassung und Ausblick55
Anhang57
Literaturverzeichnis104
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Die meisten Artikel zum Thema Zusicherungen, darunter auch fast alle hier angesprochenen, heben die Vorzüge von Zusicherungen als Hilfsmittel beim Programmieren hervor, ohne aber ihre Kernaussage - mit Zusicherungen kann man besser programmieren als ohne - empirisch zu untermauern. Einige Autoren, wie z. B. Rosenblum und McKim, haben selbst viel mit Zusicherungen programmiert, so daß ihre Aussagen durch eigene Erfahrungen gestützt werden. Trotzdem steht ein Experiment, das die Nützlichkeit von Zusicherungen für die Neuentwicklung oder Wartung von Software empirisch mit mehreren Programmierern, die an denselben Problemen und mit denselben Werkzeugen arbeiten, untersucht, noch aus. Das ist der Anlaß für diese Diplomarbeit.
Gang der Untersuchung:
Kapitel 2 beschreibt die beiden Zusicherungswerkzeuge, die in diesem Experiment eingesetzt werden. In Kapitel 3 werden die Hypothesen, der Aufbau des Experiments, die Versuchspersonen und die Aufgaben beschrieben, die ihnen gestellt wurden.
Die Ergebnisse, die aus den protokollierten Daten gewonnen wurden, werden in Kapitel 4 dargestellt, und Kapitel 5 beschließt die Ausarbeitung mit Zusammenfassung und Ausblick.
Im Anhang sind die Aufgabenblätter und komplette Beispiele für interaktive Syntaxkurs-Sitzungen enthalten. Außerdem finden sich dort einige Tabellen mit Daten, die im Experiment gewonnen wurden und Detailinformationen liefern, die im Kapitel 4 nicht erwähnt werden.
Die Programme, die in diesem Experiment von den Versuchspersonen erweitert wurden, die Rohdaten, die dabei gewonnen wurden, und die Perl-Programme für die Auswertung der Daten und zum Training der Versuchspersonen sind nicht in dieser Ausarbeitung enthalten. Sie sind unter verfügbar.
Inhaltsverzeichnis:Inhaltsverzeichnis:
1.Einleitung
1.1Zusicherungen6
1.2Grundidee des Experiments8
1.3Verwandte Arbeiten8
1.3.1Störk: jContract8
1.3.2Leveson, Cha et al.: empirische Studie9
1.3.3Schneider: Concurrent Programming9
1.3.4Luckham et al.: Two-dimensional Pinpointing10
1.3.5McKim: Designing for correctness10
1.4Nützlichkeit eines Experiments10
1.5Gliederung der Ausarbeitung, Rohdaten10
2.Die verwendeten Zusicherungswerkzeuge12
2.1APP12
2.2jContract16
3.Beschreibung des Experiments19
3.1Fragestellung und Hypothesen19
3.2Aufbau des Experiments20
3.2.1Versuchspersonen21
3.2.2Klassifizierung und Vorsortierung der Versuchspersonen21
3.2.3Auswahl der Aufgaben23
3.2.4Teilaufgabe mit Neuentwicklungscharakter26
3.2.5Teilaufgabe mit Wartungscharakter26
3.2.6Reihenfolge der Aufgaben, Ablauf des Experiments27
3.2.7Unterschiede in den C- und Java-Aufgaben28
3.2.8Training der Teilnehmer vor dem Experiment28
3.3Bedrohungen der internen Gültigkeit29
3.4Bedrohungen der externen Gültigkeit32
3.5Technischer Versuchsaufbau32
3.5.1Kooperationsmöglichkeiten32
3.5.2Syntaxkurs und Skripte zum Übersetzen und Testen33
3.5.3Erfaßte Daten35
4.Ergebnisse37
4.1Signifikanztest und Diagramme37
4.1.1Signifikanztest37
4.1.2Der Boxplot37
4.1.3Trendgeraden38
4.2Schwächen von jContract38
4.3Bereitschaft zur Verwendung von Zusicherungen39
4.4Zeitbedarf40
4.4.1Zur Ermittlung der Zeitdaten40
4.4.2Zeitbedarf mit und ohne Zusicherungen42
4.4.3Rückschlüsse aus dem Zeitbedarf48
4.4.4Zusammenhang zwischen Anzahl der Zusicherungen und Zeitbedarf48
4.5Wiederverwendung von Funktionen51
5.Zusammenfassung und Ausblick55
Anhang57
Literaturverzeichnis104
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.