logo of the SSW institute
Institut für Systemsoftware
Johannes Kepler Universität Linz
Fachbereich Informatik
logo of the Cristian Doppler Research Association
Christian Doppler Labor
Automated Software Engineering

Home

General
Staff
Contact
Partners
Alumni

Research
Areas
Projects
Papers
Books
Reports

Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad

Misc
Library
Seminars
Gallery
Links
Search

Webmaster


logo of the Johannes Kepler University (JKU)

Seminar: Softwareentwicklung (Programmierstil)


338.176 02 Mössenböck Block; Vorbespr. 4.10. 14:30, BA 9907



Thema

Programmieren kann bald einmal jemand. Gute Programme zu schreiben, die lesbar, wartbar und robust sind, ist jedoch eine Kunst, die nur wenige beherrschen. Leider wird guter Programmierstil zu wenig gelehrt. Dieses Seminar hat zum Ziel, die Literatur zum Thema Programmierstil aufzuarbeiten und Kriterien für guten und schlechten Stil kritisch zu beleuchten.

Termine

Fr. 6.12. 13:45 - 17:00, HS 14
  • Prünner: Codierungsstandards
  • Lehner: Style Guidelines für Java und .NET
  • Wind: Kommentierung und Dokumentation
Sa. 7.12. 8:30 - 11:45, HS 14
  • Priewasser: Effizienz
  • Mähr: Java Performance Tuning
  • Zeilinger: Robustheit
  • Holzmann: Metriken
Fr. 13.12. 13:45 - 17:00, HS 14
  • Schmidauer: Modularisierung
  • Grininger: Methoden- und Schnittstellen-Design
  • Haindl: Objektorientiertes Design
  • Schiestl: Portabilität
Fr. 10.01. 13:00 - 17:00, K 112 A
  • Forstinger: Dokumentierungswerkzeuge
  • Stelzmüller: Refactoring
  • Mansky: Design-Fallstudien
  • Schneeberger: Best Practice Management

Seminararbeiten

Kurt Prünner Codierungsstandards Folien Seminararbeit
Klaus Lehner Style Guides für Java und .NET Folien Seminararbeit
Markus Wind Kommentierung und Dokumentation Folien Seminararbeit
Friedrich Priewasser Effizienz Folien Seminararbeit
Bernhard Mähr Java Performance Tuning Folien Seminararbeit
Christian Zeilinger Robustheit Folien Seminararbeit
Clemens Holzmann Metriken Folien Seminararbeit
Helmut Schmidauer Modularisierung Folien Seminararbeit
Hubert Grininger Methoden- und Schnittstellen-Design Folien Seminararbeit
Clemens Haindl Objektorientiertes Design Folien Seminararbeit
Christine Schiestl Portabilität Folien Seminararbeit
Severin Forstinger Dokumentierungswerkzeuge Folien Seminararbeit
Klemens Stelzmüller Refactoring Folien Seminararbeit
Christian Mansky Design-Fallstudien Folien Seminararbeit
Arnold Schneeberger Best Practice Management Folien Seminararbeit

Ablauf

Jeder Teilnehmer hat ein Thema zugewiesen bekommen und arbeitet sich darin ein. Die angegebene Literatur dient als Ausgangspunkt. Weitere Literatursuche in Zeitschriften (z.B. IEEE Software, IEEE Transactions on Software Engineering, IEEE Computer, Communications of the ACM) und am Internet ist erwünscht.

Jeder Teilnehmer erstellt einen schriftlichen Seminarbericht und hält einen Vortrag im Rahmen des Seminars. Der Vortrag soll 35-40 Minuten (ca. 15 Folien) dauern. Im Anschluß daran findet eine Diskussion statt. Der schriftliche Seminarbericht soll etwa 10 Seiten lang sein und in HTML abgefaßt sein. Sparen Sie nicht mit Beispielen und Bildern. Abgabeschluß für den Seminarbericht ist der 31. Jänner 2003.

Die Anwesenheit an allen Seminarterminen ist Pflicht. Die Note wird aus dem Vortrag, dem Seminarbericht und der Beteiligung an der Diskussion ermittelt.

Seminarthemen

Freitag, 6.12.2002

Codierungsstandards
Stichworte: Namensgebung (z.B. Hungarian, Camel, Pascal casing), Einrückungen, Klammerung, allgemeine Stilkriterien, ohne Kommentierung
Literatur:
- [KePi99] Kap. 1, Appendix
- [McCo93] Kap.9 (Naming), Kap.8 (Datenstrukturen), Kap.18(Einrückungen), Kap.32(allg.)
- [Robi01] pp.442-447

Style Guidelines für Java und .NET
Literatur:
- http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
- http://developer.netscape.com/docs/technote/java/codestyle.html
- http://geosoft.no/javastyle.html
- http://www.ambysoft.com/javaCodingStandards.pdf
- http://www.ontko.com/java/java_coding_standards.html
- http://www.javaranch.com/style.jsp
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp

Kommentierung und Dokumentation
Literatur:
- [KePi99] Kap. 1.6
- [McCo93] Kap.19
- [HuTh00] Kap.44
- [Bent88] Kap.10, Kap.11

Dokumentierungswerkzeuge
Stichworte: javadoc, XML-Kommentare in C#, doc++, ...
- [Robi01] pp.137-141
- http://java.sun.com/j2se/javadoc/
- http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
- http://docpp.sourceforge.net/ (doc++)


Samstag, 7.12.

Effizienz
Stichworte: Profiling, Tuning, Speicherplatz, Überschlagsrechnungen
Literatur:
- [Bent00] Kap 6-10
- [Bent88] Kap.1, Kap.7
- [Carg92] Kap.7
- [KePi99] Kap. 7
- [McCo93] Kap.28, Kap.29

Java Performance Tuning
Literatur:
- [Shir00]

Robustheit
Stichworte: Defensives Programmieren, Assertionen, Pre-/Postconditions, Hilfsdrucke, Regressionstests, Self-describing data
Literatur:
- [KePi99] Kap. 6
- [HuTh00] Kap.21-25
- [Bent00] Kap.4, Kap.5
- [Bent88] Kap.4
- http://www.lfc.edu/~hummel/talks/2002/defensive-programming_files/frame.htm

Metriken
Stichworte: Komplexitätsmaße, Stilmetriken, objektorientierte Metriken
Literatur:
- [Rech86]
- [McCo93] Kap.20, Kap.22.4
- [Wall01] Kap.1.3
- http://www.eiffel.com/doc/manuals/technology/bmarticles/computer/metrics/page.html
- http://www.mmsindia.com/JStyle/docs/jstyleguide.html


Freitag, 13.12.

Modularisierung
Stichworte: Zerlegungskriterien, Architekturkriterien, Designmethoden
Literatur:
- [McCo93] Kap. 6 (Modularisierung), Kap. 7 (Designmethoden)
- [HuTh00] Kap. 8-11 (Kriterien guter Architektur)
- [BlPo93] Kap.3.4.3 (Modularisierung)

Methoden- und Schnittstellen-Design
Literatur:
- [KePi99] Kap. 4
- [HuTh00] Kap.26
- [McCo93] Kap. 5

Objektorientiertes Design
Literatur:
- [Carg92] Kap. 1-6
- [Pree96]

Portabilität
Literatur:
- [KePi99] Kap. 8
- http://www.mozilla.org/hacking/portable-cpp.html
- http://developer.java.sun.com/developer/technicalArticles/J2EE/build/index.html
- http://www.csee.wvu.edu/~jdm/research/portability/home.html


Freitag, 10.1.

Refactoring
Literatur:
- [Fowl99]

Design-Fallstudien
Literatur:
- [KePi99] Kap. 3
- [Bent00] Kap.8

Best Practice Management
Literatur:
- [McCo93] Kap.22
- [Beck00] (Extreme Programming)

Literatur

Die folgenden Bücher liegen im Sekretariat der Abteilung Systemsoftware auf. Die Bücher können nicht entlehnt werden. Bitte kopieren Sie die nötigen Kapitel.

Es lohnt sich, mehr als nur diejenigen Bücher zu lesen, die für das eigene Seminarthema erforderlich sind. Auch die Anschaffung des einen oder anderen Buches ist sicher keine Fehlinvestition.

[Beck00]Kent Beck: Extreme programming explained. Addison Wesley, 2000
[Bent00]Jon Bentley: Programming Pearls, 2nd edition, Addison Wesley 2000
[Bent88]Jon Bentley: More Programming Pearls. Addison Wesley, 1988
[BlPo93]Günther Blaschek, Gustav Pomberger: Software-Engineering. Hanser, 1993
[Carg92]Tom Cargill: C++ Programming Style. Addison Wesley, 1992
[Fowl99]Martin Fowler: Refactoring -- Improving the design of existing code. Addison Wesley, 1999
[HuTh00]Andrew Hunt, David Thomas: The Pragmatic Programmer. Addison Wesley, 2000
[KePi99]Brian W. Kernighan, Rob Pike: The Practice of Programming, Addison Wesley, 1999
[McCo93]Steve McConnell: Code Complete, Microsoft Press, 1993
[Pree96]Wolfgang Pree: Framework Patterns. SIGS Publications, 1996
[Rech86]Peter Rechenberg: Ein neues Maß für die softwaretechnische Komplexität von Programmen. Informatik Forschung und Entwicklung (1986) 1: 26-37
[Robi01]Simon Robinson et al.: Professional C#. Wrox, 2001
[Shir00]Jack Shirazi: Java Performance Tuning. O'Reilly, 2000.
[Wall01]Ernest Wallmüller: Software-Qualitätsmanagement in der Praxis. Hanser, 2001