Startseite
Vorlesungen
Automotive SE
Softwarearchitektur
IT-Projekte
Abschlussarbeiten
Publikationen
Programmkomitees
Werdegang
MAENAD
Kontakt
Impressum
Sitemap
English

Softwarearchitektur

 

Newsfeed zur Veranstaltung Newsfeed Softwarearchitektur

Link zur Moodleseite der Veranstaltung.

Den Eintrag dieser Vorlesung im Modulhandbuch finden Sie hier.

Die wichtige Literatur zur Veranstaltung finden Sie im elektronischen Semesterapparat. Um den Semesterapparat auch von zu Hause aus nutzen zu können, ist eine Einrichtung des VPN nötig.
Eine Einleitung dazu finden Sie hier.

 

Ort und Zeitpunkt


Vorlesung: Dienstag 09:45-11:15, Raum W307

 

Die Übungen finden regulär im Laborraum (Q205) statt, außer in der Vorlesung oder im Newsfeed wird etwas anderes angekündigt.

Übung Gruppe 1: Dienstag 08:00-09:30, Raum Q305 (Seminarraum), Q205 (Laborraum)
Übung Gruppe 2: Dienstag 11:30-13:00, Raum Q305 (Seminarraum), Q205 (Laborraum)

 

Terminplan


19.03.2013: Einführung

26.03.2013: Prinzipien zur Bewältigung der Komplexität, Modularität

02.04.2013: vorlesungsfrei (Ostern)

09.04.2013: Objektorientierung

16.04.2013: Objektorientierung

23.04.2013: Clean Code

30.04.2013: Clean Code

07.05.2013: Erweiterungen des OO Paradigmas

14.05.2013: Architekturbeschreibung

21.05.2013: vorlesungsfrei (Pfingsten)

28.05.2013: Patterns Einführung, Architekturmuster, Programming Idioms

04.06.2013: Design Patterns

11.06.2013: Design Patterns

18.06.2013: Design Patterns

25.06.2013: Gastvorlesung?

02.07.2013: Wiederholung

 

Vorlesungsunterlagen


Die Kapitel des Textskriptes werden über das OSO System zur Verfügung gestellt. Bitte lassen Sie sich diese Kapitel nicht als Ringbindung aushändigen, sondern als lose Blattsammlung: Dies spart (Ihr) Geld und Sie haben außerdem den Vorteil, dass Sie die einzelnen Kapitel sukzessive in einem Ordner abheften können.

Alle weiteren Materialien der Veranstaltung werden über Moodle zur Verfügung gestellt.

 

Leistungsnachweis


Klausur (90 Minuten) am Semesterende. Zugelassene Materialien: 3 Seiten (DIN A4) selbstverfasste Notizen.

Stoff: Vorlesung und Übungen, Artikel zu ausgewählten Themen (werden im Laufe der Vorlesung angekündigt)

Nach § 7 (5) der Studien- und Prüfungsordnung für den Bachelorstudiengang Informatik kann an der Prüfung nur teilnehmen, wer "den praktischen Teil des praktischen Studiensemesters absolviert hat und dies durch das Zeugnis der Ausbildungsstelle nachgewiesen hat".

 

Programmierkenntnisse


Bitte beachten Sie, dass Java die zentrale Programmiersprache dieses Kurses ist. Sie können einführende Hinweise zu Java in dem von meinem Kollegen Michael Kipp an der Hochschule Aachen verfassten Java Notbuch finden; einen sehr lesenswerten Einstig in Java bietet die Head-First Reihe; alternativ dazu können Sie auch das Buch Programmieren lernen mit Java konsultieren. Auch C++ wird in diesem Kurs eine Rolle spielen. Ein gutes Buch zu dem Thema hat Ralf Schneeweiß verfasst: Moderne C++ Programmierung: Klassen, Templates, Design Patterns. Auch JavaScript Kenntnisse benötigen Sie für den Kurs; dazu kann ich Ihnen dieses Buch empfehlen: JavaScript: The Good Parts. Auf Deutsch ist das Buch JavaScript: Einführung, Programmierung und Referenz zu empfehlen.

 

Literatur


Bitte denken Sie daran: Die wichtige Literatur zur Veranstaltung finden Sie im elektronischen Semesterapparat. Dennoch gebe ich hier einen Überblick über wichtige Veröffentlichungen zum Thema mit jeweils kurzen Bemerkungen.

 

EINFÜHRUNG

  • David Lorge Parnas: "Software aspects of strategic defense systems", Communications of the ACM, Volume 28, Issue 12, ACM New York, NY, USA, December 1985. pp. 1326–1335.
    • Nachdem sich Parnas aus dem US-amerikanischen Panel on Computing in Support of Battle Management zurückgezogen hat, veröffentliche ACM die acht kurzen Essays, die Parnas mit seinem Kündigungsschreiben eingereicht hatte. In diesen Essays entwirft Parnas ein pessimistisches Bild der Softwareentwicklung. Themen der Essays sind: 1. Die fundamentalen technologischen Unterschiede zwischen dem Software Engineering und anderen Ingenieurdisziplinen und warum Software unzuverlässig ist. 2. Die Eigenschaften der vorgeschlagenen strategischen Verteidigungssoftware, die der Grund dafür sind, dass sie unerschwinglich ist. 3. Warum die Techniken, die typischerweise genutzt werden, um Militärsoftware zu entwickeln, der Aufgabe nicht angemessen sind. 4. Die Natur der Software Engineering Forschung und warum deren denkbare Verbesserungen nicht ausreichen werden, um wirklich zuverlässige Verteidigungssoftware zu entwickeln. 5. Warum er nicht davon ausgeht, dass die Forschung im Bereich der Künstlichen Intelligenz helfen wird, zuverlässige Militärsoftware hervorzubringen. 6. Warum er nicht davon ausgeht, dass die Forschung im Bereich der automatischen Programmierung (Parnas meint damit im Wesentlichen die Programmierung in einer höheren Programmiersprache) die substantiellen Verbesserungen hervorbringen wird, die benötigt werden. 7. Warum uns die Programmverifikation (mathematische Beweise der Korrektheit) keine zuverlässige strategische Verteidigungssoftware geben kann. 8. Warum militärische Forschungsfinanzierung von Software und anderen Bereichen der Informatik ineffizient und ineffektiv ist.
  • Frederick P. Brooks, Jr.: "No Silver Bullet Essence and Accidents of Software Engineering", Computer, Volume 20, Issue 4, IEEE Computer Society Press Los Alamitos, CA, USA, April 1987. pp. 10–19.
    • Ein anregend geschriebenes Papier über die inhärente und zufällige Komplexität der Software. Brooks entwirft, ähnlich wie Parnas zwei Jahre zuvor, ein eher pessimistisches Bild der Softwareentwicklung, indem er argumentiert, dass die Komplexität der Softwareentwicklung inhärent ist und dass bisherige Techniken wenig Wirkung an dieser Komplexität gezeigt hätten.
  • David Harel: "Biting the Silver Bullet: Toward a Brighter Future for System Development", Computer, Volume 25, Issue 1, IEEE Computer Society Press Los Alamitos, CA, USA, January 1992. pp. 8–20.
    • Harel (der Erfinder der Statecharts) antwortet auf die beiden entmutigenden Papiere von Parnas (1985) und Brooks (1987) und äußert sich über das Potential des Software Engineering. Während er den meisten spezifischen Punkten der beiden Papiere zustimmt, beleuchtet er die hellen Seiten des Software Engineering. Dabei geht er insbesondere auf aktuelle Entwicklungen der letzten Jahre ein, die noch zu jung oder unreif waren, um Parnas oder Brooks beeinflusst zu haben. Insgesamt kommt er damit zu einem sehr viel positiveren Bild des Stands und der Zukunft des Software Engineering.

UML-WIEDERHOLUNG

  • Rupp, Chris: UML 2 glasklar : Praxiswissen für die UML-Modellierung / Chris Rupp ; Stefan Queins. -
    4., aktualisierte und erw. Aufl. - München : Hanser, 2012. - XX, 560 S.
    ISBN 978-3-446-43057-0 - ISBN 978-3-446-43197-3 - ISBN 3-446-43057-1
    • Das Buch gibt einen sehr guten Überblick über die Details der UML.

SOFTWAREARCHITEKTUR ALLGEMEIN

  • Balzert, Helmut: Lehrbuch der Software-Technik / Helmut Balzert. - Heidelberg [u.a.] : Spektrum, Akad. Verl. - (Lehrbücher der Informatik) 1. Basiskonzepte und requirements engineering. - 3. Aufl. - 2009.
    • Ein sehr gutes Buch als Einführung ins Software Engineering und als Wiederholung einiger Aspekte der UML. Wir befassen uns in dieser Veranstaltung mit Software Engineering Prinzipien, die Sie auf den Seiten 25-51 besprochen finden.
  • Bass, Len: Software architecture in practice / Len Bass, Paul Clements, Rick Kazman. - 2nd ed. - Boston: Addison-Wesley, SEI series in software engineering, 2003.
    • Dieses Buch bietet eine umfassende Einführung in die Softwarearchitektur und kann als Ergänzung und Vertiefung zu unserer Veranstaltung gelesen werden. Themen, die wir in der Veranstaltung nicht abdecken, sind die Analyse von Architekturen (ab Seite 261) und systematische Wiederverwendung durch Software-Produktlinien, falls Sie sich nicht im Wahlthema dafür entscheiden (ab Seite 351).
  • Clements, Paul: Documenting software architectures: views and beyond / Paul Clements ... [u.a.]. - 2nd ed. - Upper Saddle River, N.J. : Addison-Wesley, SEI series in software engineering, 2011.
    • Das systematischste Buch zum Thema Dokumentation von Softwarearchitekturen. Die einzelnen Kapitel können einzeln gelesen und verstanden werden; wenn Sie sich für die Fragen interessieren, warum Dokumentation von Softwarearchitektur notwendig ist, was die Dokumentation leisten kann und wie Sie die Dokumentation sinnvoll einsetzen, dann kann ich Ihnen dieses Buch empfehlen. Es kann als Vertiefung zu unserer Veranstaltung herangezogen werden. Wir decken wesentliche Teile des Buches ab. Leseempfehlungen: Seite xxi (Warum ein Vogelflügel als Cover gewählt wurde), Seite 148 (Einführung und Begriffe), Seite 5564 (Modulsicht), Seite 123153 (Komponenten und Konnektoren), Seite 431ff (UML Wiederholung), Seite 473ff (Kurzeinführung AADL), Seite 491ff (Glossar).
  • Perry, Dewayne A.: Foundations for the Study of Software Architecture / Dewayne A. Perry ; Alexander L. Wolf In: ACM SIGSOFT software engineering notes / Association for Computing Machinery / Special Interest Group on Software Engineering. - New York, NY : ACM
    • Band 17, Heft 4, Okt. 1992. - S. 40–52.
      • Ein lesenswertes Papier als Einstieg in die Softwarearchitektur, da leicht
        nachvollziehbare Analogieschlüsse zu Hardwarearchitektur, Netzwerkarchitektur und
        Gebäudearchitektur gezogen werden.

MODULARITÄT

  • Alexander, Christopher: Notes on the synthesis of form / Christopher Alexander. - 4. print -
    Cambridge, Mass. [u.a.] : Harvard Univ. Pr., 1968. - 216 S.
    • Das Buch, geschrieben von einem Gebäudearchitekten, der der Vater der Entwurfsmuster ist, gibt einen immer noch aktuellen Überblick zu Überlegungen der Kongruenz zwischen Entwurf und Form.
  • Baldwin, Carliss Y.: Design rules / Carliss Y. Baldwin and Kim B. Clark. - Cambridge, Mass. [u.a.] : MIT Press 1. The power of modularity. - 2000.
    • Dieses Buch widmet sich vollständig dem Thema Modularität und beleuchtet diesen Aspekt aus unterschiedlichen Blickwinkeln. Spannend für uns sind die Seiten 63–83, wo Modularität definiert und die Handhabung von Kohärenz und loser Kopplung am Beispiel der Design Structure Matrix und der Task Structure Matrix eingeführt wird. Seite 123–146 führt die modularen Operatoren ein.
  • Parnas, David Lorge: On the Criteria to be used in Decomposing Systems into Modules / D. L. Parnas
    In: Communications of the ACM / Association for Computing Machinery. - [New York, NY] : ACM
    Band 15, Heft 12, Dez. 1972. - S. 1053-1058.
    • David M. Weiss (auf Seite 143) schreibt über dieses Papier: "What makes a paper revolutionary? Is it the breadth and depth of the new ideas it presents? Is it the cogency of the arguments? [...] Most important, is it the paper's ability to change the way its readers think about the world? This paper does all of the above. [...] it sparkles with ideas that are cogent and relevant and, incidentally, that are continually being rediscovered. [...]
      Idea: A module is a work assignment. Before this paper, many programmers considered, and many still do, that a module is a set of routines that are related in some way, usually vaguely specified. [...] Dave says that a module is an assignment of responsibility and that every module is characterized by its knowledge of a design decision that it hides from all others. [...]
      Idea: At runtime, one might not be able to distinguish what criteria were used to decompose the system into modules. [...] When we make a decision becomes nearly as important as what decision we make. [...] Aspect-oriented programming, a current vogue in programming technique, appears to be a rediscovery of the use of binding time in creating modular designs. [...]"
      Dem habe ich nichts hinzuzufügen.

OBJEKTORIENTIERUNG

  • Martin, Robert C.: The Liskov Substitution Principle / R. C. Martin
    In: The C++ report : the international authority on C++ development. - New York, NY : SIGS Publ.
    Band 8, March 1996
    ISSN: 1040-6042
    Volltext online über www.obejctmentor.com ; zuletzt geprüft am 05.04.2012
  • Martin, Robert C.: The Open-Closed Principle / R. C. Martin
    In: The C++ report : the international authority on C++ development. - New York, NY : SIGS Publ.
    Band 8, Jan. 1996
    ISSN: 1040-6042
    Volltext online über www.obejctmentor.com ; zuletzt geprüft am 05.04.2012

JAVA

  • Bloch, Joshua: Effective Java : "Revised and updated for Java SE 6"--Cover / Joshua Bloch. -
    2nd ed. - Upper Saddle River, N.J. : Addison-Wesley, 2008. - XXI, 346 S. - (Java series) (Safari Books Online)
    ISBN 978-0-13-715002-1 - ISBN 0-13-715002-4
  • Martin, Robert C.: Clean code : a handbook of agile software craftsmanship / Robert C. Martin; [with] Michael C. Feathers ; Timothy R. Ottinger;
    Jeffrey J. Langr ; Brett L. Schuchert ; James W. Grenning ; Kevin Dean Wampler. - Upper Saddle River, N.J. :
    Prentice Hall, 2009. - XXIX, 431 S. - (Safari Books Online)
    ISBN 978-0-13-608323-8 - ISBN 0-13-608323-4

JAVASCRIPT

  • Koch, Stefan: JavaScript : Einführung, Programmierung und Referenz / Stefan Koch. -
    6., aktualisierte und erw. Aufl. - Heidelberg: dpunkt-verl., 2011. - XX, 455 S. : Kt. - (iX-Edition)
    ISBN 978-3-89864-731-1
  • Crockford, Douglas: JavaScript : the good parts. - Includes index / Douglas Crockford. - 1st ed. -
    Sebastopol, Calif. : O'Reilly Media, 2008. - XIII, 153 S. - (Safari Books Online)
    ISBN 978-0-596-51774-8 - ISBN 0-596-51774-2
  • Stefanov, Stoyan: JavaScript patterns : Includes index / Stoyan Stefanov. - Sebastopol, Calif. : O'Reilly, 2010. - XVI, 216 S.
    ISBN 978-0-596-80675-0

C++

  • Meyers, Scott: Effective C++ : 55 specific ways to improve your programs and designs. - Includes index / Scott Meyers. - 3rd ed. -
    Upper Saddle River, NJ : Addison-Wesley, 2005. - XX, 297 S.
    ISBN 0-321-33487-6
  • Coplien, James O.: Advanced C++ programming styles and idioms / James O. Coplien. -
    Repr. with corr. - Reading, Mass. u.a. : Addison-Wesley, 1992. - XXIV, 520 S.
    ISBN 0-201-54855-0
  • Schneeweiß, Ralf: Moderne C++-Programmierung : Klassen, Templates, Design Patterns / Ralf Schneeweiß. -
    Berlin [u.a.] : Springer, 2006. - (Xpert.press)
    ISBN 3-540-22281-2 - ISBN 978-3-540-22281-1 - ISBN 978-3-540-45954-5

KOMPONENTENORIENTIERUNG

  • Szyperski, Clemens: Component software : beyond object-oriented programming / Clemens Szyperski. -
    1. publ. in Great Britain. - Harlow [u.a.] : Addison-Wesley, 1999. - XVIII, 411 S. : Ill.
    ISBN 0-201-17888-5

ASPEKTORIENTIERUNG

FEATURE-ORIENTED PROGRAMMING

  • Apel, Sven: An Overview of Feature-Oriented Software Development / Sven Apel ; Christian Kästner
    In: Journal of object technology : JOT / ETH Zürich, Department of Computer Science. - Zürich
    Band 8, Heft 5, Juli 2009. - S. 49-84
    ISSN: 1660-1769
  • Batory, Don: Scaling Step-Wise Refinement / Don Batory; Jacob Neal Sarvela; Axel Rauschmayer
    In: IEEE transactions on software engineering : a publ. of the IEEE Computer Society. - New York, NY [u.a.] : IEEE
    Band 30, Heft 6, June 2004. - S. 355-371
    ISSN: 0098-5589

ARCHITEKTURBESCHREIBUNG

  • Aldrich, Jonathan: ArchJava: Connecting Software Architecture to Implementation / Jonathan Aldrich ; Craig Chambers ; David Notkin
    In: Proceedings of the 24th International Conference on Software Engineering. - Orlando, Florida, USA, 2002.- S. 187-197
  • Allen, Robert: A Formal Basis For Architectural Connection / Robert Allen and David Garlan
    In: ACM transactions on software engineering and methodology: TOSEM / Association for Computing Machinery. - New York, NY : ACM Press
    Band 6, Heft 3, Juli 1997 . - S. 213-249
    ISSN: 1049-331X
  • Booch, Grady: The unified modeling language user guide / Grady Booch, James Rumbaugh, Ivar Jacobson. - 2. ed.
    - Upper Saddle River, NJ : Addison-Wesley, 2005. - XVIII, 475 S. - (Addison-Wesley object technology series)
    ISBN 0-321-26797-4 - ISBN 978-0-321-26797-9
  • Hofmeister, Christine: Describing Software Architecture wih UML / [Christine] Hofmeister; [Robert] L. Nord; [Dilip] Soni
    In: Proceedings of the First Working IFIP Conference on Software Architecture. - Boston [u.a.] : Kluwer, 1999. - S. 145-160
  • Kompanek, Andrew: Modeling a System with Acme / A. Kompanek
    Online verfügbar unter http://www.cs.cmu.edu/~acme/docs/index.html, zuletzt geprüft am 05.04.2012
  • Kruchten, Philippe: Architectural Blueprints - The 4+1 View Model of Software Architecture / Philippe Kruchten
    In: IEEE software / publ. by the IEEE Computer Society. - Los Alamitos, Calif. : Soc.
    Band 12, Heft 6, 1995 . - S. 42-50
    ISSN: 1937-4194 - ISSN: 0740-7459

ARCHITEKTURMUSTER, ENTWURFSMUSTER

  • D. Alur, J. Crupi and D. Malks: “Core J2EE Patterns: Best Practices and Design Strategies”, Prentice Hall Sun Microsystems Press, 2001.
  • P. Avgeriou, Uwe Zdun: “Architectural Patterns Revisited - A Pattern Language”, EuroPLoP, 2005.
  • Beck, Kent : Industrial Experience with Design Patterns / Kent Beck; Ron Crocker;
    Gerard Meszaros; John Vlissides; James O. Coplien; Lutz Dominick; Frances Paulisch
    In: Proceedings of the 18th international conference on Software engineering : March 25 - 29, 1996, Berlin, Germany.
    - Los Alamitos, Calif. [u.a.] : IEEE Computer Soc. Press, 1996. - S. 103-114
  • Brügge, Bernd: Objektorientierte Softwaretechnik: Mit UML, Entwurfsmustern und Java / Bernd Brügge.- 2. Auflage. - München : Pearson Studium, 2004. - (Informatik)
    ISBN 978-3-8273-7082-2
  • Buschmann, Frank: Pattern-orientierte Softwarearchitektur : ein Pattern-System / Frank Buschmann; Regine Meunier; Hans Rohnert; Peter Sommerlad; Michael Stal. - 1., korrigierter Nachdr. - München [u.a.] Addison-Wesley, 2000. - XIV, 451 S. - (Professionelle Softwareentwicklung) ISBN 3-8273-1282-5
  • J. Coplien: “C++ Idioms”, EuroPLoP, 1998. http://users.rcn.com/jcoplien/Patterns/C++Idioms/EuroPLoP98.html
  • Freeman, Eric: Entwurfsmuster von Kopf bis Fuß : [ein Buch zum Mitmachen und Verstehen] / Eric Freeman ; Elisabeth Freeman.
    Mit Kathy Sierra ; Bert Bates. Dt. Übers. von Lars Schulten und Elke Buchholz. -
    1. Aufl. ; 4. korrigierter Nachdr. - Beijing [u.a.] : O'Reilly, 2008/c2006. - XXXIV, 638 S.
    ISBN 3-89721-421-0 - ISBN 978-3-89721-421-7
  • Gamma, Erich: Design patterns : elements of reusable object-oriented software / Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides. - 11. print. - Reading, Mass. [u.a.] : Addison-Wesley, 1997. -
    XV, 395 S. : Ill., graph. Darst. - (Addison-Wesley professional computing series)
    ISBN 0-201-63361-2
  • Riehle, Dirk: Understanding and Using Patterns in Software Development / Dirk Riehle and Heinz Züllighoven
    In: Theory and practice of object systems / New York, NY [u.a.] : Wiley
    Band 2, Heft 1, 1996. - S. 3-13
    ISSN: 1096-9942
  • Tesanovic, Aleksandra: What is a pattern? / Aleksandra Tesanovic. - IDA, Linköpings University, 2001. - 13 S.
  • Online Material zu Patterns

DOMAIN-SPECIFIC LANGUAGES

  • Fowler, Martin: Domain-specific languages / Martin Fowler. -
    Upper Saddle River, NJ [u.a.] : Addison-Wesley, 2011. - XXVIII, 597 S. : graph. Darst. -
    (The Addison-Wesley signature series)
    ISBN 0-321-71294-3 - ISBN 978-0-321-71294-3