Fakultät für Informatik Arbeitsgruppe Datenbanken

Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung (EPMD)

Organisatorisches

Dozent: Martin Kuhlemann
Übungsleiter: Thomas Thüm, Martin Kuhlemann
Modulbeschreibung: pdf
Univis: Stundenplan

Aktuelles

  • 20.01.2012: Bitte sendet Eure Folien (im Format: pdf, ppt oder odt) bis zum 25.01.2012 per Mail an Martin Kuhlemann und Thomas Thüm.
  • 19.12.2011: Bitte sendet Eure Folien (im Format: pdf, ppt oder odt) bis zum 21.12.2011 per Mail an Martin Kuhlemann und Thomas Thüm.

Lernziele & erworbene Kompetenzen

  • Verständnis von Grenzen traditioneller Programmierparadigmen bzgl. der Entwicklung von Informationssystemen
  • Übersicht über verschiedene Möglichkeiten zur Implementierung von Softwareproduktlinien
  • Kenntnisse über moderne, erweiterte Programmierparadigmen mit Fokus auf die Erstellung maßgeschneiderter Systeme
  • Befähigung zur Bewertung, Auswahl und Anwendung erweiterter Programmiertechniken

Inhalte

  • Einführung in die Problematik maßgeschneiderter Systeme am Beispiel von embedded DBMS.
  • Modellierung und Implementierung von Programmfamilien, Produktlinien und Softwarefabriken.
  • Einführung in Grundkonzepte (u.a. Separation of Concerns, Information Hiding, Modularisierung, Strukturierte Programmierung und Entwurf).
  • Überblick über erweiterte Programmierkonzepte u.a. Komponenten, Frameworks, Design Pattern, Meta-Objekt-Protokolle und Aspekt-orientierte Programmierung, Kollaborationen und Rollen, Metaprogrammierung.

Lehrformen

Vorlesung und vorlesungsbegleitende Übung mit Fragenkatalogen einschließlich einer Projektarbeit zu einem ausgewählten Thema der Vorlesung; selbständiges Bearbeiten der Übungsaufgaben und des ausgewählten Themas als Voraussetzung für die Prüfung. Die Projektarbeit kann in die Endnote mit einfliessen. Details werden in der ersten Vorlesung bekanntgegeben.

Voraussetzung

Vorausgesetzt werden Grundlagen der Softwaretechnik, der Objekt-orientierten Programmierung und Modellierung, und Programmiererfahrung mit Java oder C++.

Vorlesungsfolien

  1. Einführung, Maßgeschneidertes Datenmanagement (13.10.2011), Projekt-Slides
  2. Entwicklungsprozess, Variabilitätsmodellierung (20.10.2011)
  3. Laufzeitvariabilität (27.10.2011)
  4. Versionsverwaltung, Buildsysteme, Präprozessoren (03.11.2011)
  5. Komponenten, Frameworks (10.11.2011)
  6. Feature-orientierte Programmierung (17.11.2011)
  7. Aspekt-orientierte Programmierung (24.11.2011)
  8. Feature-Interaktionen (01.12.2011)
  9. Verbesserte Präprozessoren (08.12.2011)
  10. Gastvorlesung von Danilo Beuche, pure::systems (15.12.2011)
  11. Vorstellung der Projektideen (22.12.2011)
  12. Analyse von Software-Produktlinien (12.01.2012)
  13. Refactoring von SPLs und ihren Produkten, Big Picture (19.01.2012)
  14. Projekt-Präsentationen (26.01.2012) + "Big Picture"

Übungsaufgaben

  1. Software-Produktlinien (24.10.2011)
  2. Variabilitätsmodellierung (31.10.2011)
  3. Design Pattern (07.11.2011)
  4. Keine Übung (14.11.2011)
  5. Klassische Implementierungstechniken (21.11.2011)
  6. Grenzen von OOP (28.11.2011)
  7. Praktische Übung zu FeatureIDE in G29-R144 (05.12.2011)
  8. Feature-Orientierung (12.12.2011)
  9. Aspekt-Orientierung (19.12.2011)
  10. Praktische Übung zu AspectJ in G29-R144 (09.01.2012)
  11. FOP vs. AOP, Feature-Interaktionen (16.01.2012)
  12. Verbesserte Präprozessoren, Anwendung von SPLs (23.01.2012)

Programmieraufgaben

  1. Chat-Implementierung bis zum 06.11.2011
  2. Framework bis zum 27.11.2011
  3. Preprozessor bis zum 18.12.2011
  4. FOP bis zum 08.01.2012
  5. AOP bis zum 22.01.2012
Einreichungen bitte als Zip-Archiv mit dem Namen "vorname-nachname.zip" an den Übungsleiter.

Verschiedenes

Literatur

Kleine Auswahl, genaueres auf den Folien:
[1]
Marko Rosenmüller, Thomas Leich, Sven Apel, and Gunter Saake. Von Mini- über Micro- bis zu Nano-DBMS: Datenhaltung in eingebetteten Systemen. Datenbank Spektrum, 7(20), February 2007.
[ bib | .pdf ]
[2]
Krzysztof Czarnecki and Ulrich Eisenecker. Generative programming: methods, tools, and applications. ACM Press, New York, NY, USA, 2000.
[ bib | http ]
[3]
K. Kang et al. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, Software Engineering Institute, Pittsburgh, PA, USA, November 1990.
[ bib | .pdf ]
[4]
Don Batory. Feature models, grammars, and propositional formulas. In Proc. Int'l Software Product Line Conference (SPLC), pages 7-20, September 2005.
[ bib | .pdf ]
[5]
David L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053-1058, 1972.
[ bib | http ]
[6]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Addison-Wesley Publishing Company, Inc., Reading, Massachusetts, 1994.
[ bib | http ]
[7]
Don Batory, Jacob Neal Sarvela, and Axel Rauschmayer. Scaling step-wise refinement. IEEE Transaction on Software Engineering, 30(6):355-371, 2004.
[ bib | .pdf ]
[8]
Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Publications, 2003.
[ bib | http ]
[9]
Sven Apel, Christian Lengauer, Bernhard Möller, and Christian Kästner. An algebra for features and feature composition. In Proceedings of the 12th International Conference on Algebraic Methodology and Software Technology (AMAST), volume 5140 of Lecture Notes in Computer Science, pages 36-50. Springer-Verlag, July 2008.
[ bib | .pdf ]
[10]
Sven Apel, Christian Kästner, Martin Kuhlemann, and Thomas Leich. Pointcuts, Advice, Refinements, and Collaborations: Similarities, Differences, and Synergies. Innovations in Systems and Software Engineering (ISSE) - A NASA Journal, 3(3-4), 2007.
[ bib | http | .pdf ]
[11]
Sven Apel, Christian Kästner, Martin Kuhlemann, and Thomas Leich. Modularität von Softwarebausteinen: Aspekte versus Merkmale. iX Magazin für Professionelle Informationstechnik, (10):116-122, October 2006.
[ bib | http ]