Seminar "Komplexität und Software" im WS 2002/2003


Zielgruppe

Studierende im Studiengang Informatik, Hauptstudium


Inhalt

Komplexität ist nicht ohne Grund ein Modewort: Immer komplexere technische und soziale Systeme entstehen, und die wissenschaftliche Erforschung der Komplexität hat in den letzten 50 Jahren stark an Bedeutung gewonnen.

Im Alltag bezeichnen wir Systeme als komplex, die wir nicht oder nur mit großem Aufwand verstehen.

Verständlichkeit ist ein wichtiges Qualitätsmerkmal von Dokumenten und technischen Systemen: Verständliche Dokumente sind fehlerärmer und übermitteln die Botschaft des Autors effektiver. Verständliche technische Systeme haben weniger unvorhergesehene Wirkungen, sind besser wartbar und erweiterbar.

Ziel des Seminars ist es, mehr Klarheit darüber zu gewinnen, was Software leicht oder schwer verständlich macht. Dazu wird zunächst untersucht, was "Verstehen" bedeutet. Dann werden einige Systeme betrachtet, an denen sich der Zusammenhang zwischen Systemstruktur und Verständlichkeit besonders gut studieren lässt. Auf dieser Grundlage werden schließlich Ansätze zur Bewertung und Verbesserung der Verständlichkeit von Software diskutiert.

Allgemeine Lernziele:

Spezielle Lernziele:
Allgemeine Hinweise
Termine
Datum Thema Vortragender
28.11.2002  (1.) Systeme, emergente Eigenschaften, ungeordnete und organisierte Komplexität (Folien). Andreas Noack
05.12.2002 (2.) Induktives und deduktives Verstehen, Phänomenologie und Reduktion (Folien). Jan Kühl
19.12.2002 (3.) Induktives Verstehen ist Kompression. Shannon-Information, Algorithmische Komplexität, und der Kompromiss zwischen Wissen und Ignoranz (Folien). Thomas Bischoff
16.01.2003 (4.) Deduktives Verstehen erfordert Dekomposition: "The Architecture of Complexity". Andreas Noack
23.01.2003 (5.) Gehirne und Ameisenkolonien: Beschreibungsebenen und die Schwierigkeit, zwischen ihnen Brücken zu bauen (Folien). Frank Karstan
30.01.2003 (10.-12.) Messtheorie, Klassische Software-Komplexitätsmaße, Komplexität objektorientierter Software (Folien). Robert Neumann
06.02.2003 (14.) Prinzipien für verständliche SW: strukturierte und OO-Programmierung, ADTs: "Modularization by Information Hiding" (Folien). Parnas (Video)


Themen

Zu jedem der folgenden Themen wird es eine zusätzliche Seite bzw. eine Besprechung mit dem Vortragenden geben, um das Thema zu präzisieren und auf weiteres Material hinzuweisen.

  1. Systeme, emergente Eigenschaften, ungeordnete und organisierte Komplexität. [1] (chapter 3), [2]

Verstehen

  1. Induktives und deduktives Verstehen, Phänomenologie und Reduktion. [3], [4] (chapter 8, 9)
  2. Induktives Verstehen ist Kompression. Shannon-Information, Algorithmische Komplexität, und der Kompromiss zwischen Wissen und Ignoranz. [5]
  3. Deduktives Verstehen erfordert Dekomposition. [6]

Komplexe Systeme

  1. Gehirne und Ameisenkolonien: Beschreibungsebenen und die Schwierigkeit, zwischen ihnen Brücken zu bauen. [7] (chapter 10, ... Ant Fugue, chapter 11)
  2. The Game of Life: Vorhersagbarkeit in Systemen mit einfachen, lokalen Regeln. [8], [9]
  3. Boolesche Netzwerke: Abhängigkeit der Vorhersagbarkeit von der Struktur des Netzwerks. [10]
  4. Particle Swarm Optimization: Abhängigkeit der Dynamik von der Struktur sozialer Netzwerke. [11] (chapter 7)
  5. Die Struktur wirklicher Systeme: Small Worlds und Scale-Free Networks. [12] (chapter 3), [13]

Software-Komplexität messen

  1. Messtheorie: Modelle, Relationen, Skalen. [14] (chapter 3, 4), [15] (chapter 2)
  2. Klassische Software-Komplexitätsmaße: Größe und Aufwand, Halstead's software science, McCabe's cyclomatic number. [14] (ch. 5), [15] (ch. 7)
  3. Komplexität objektorientierter Software: Größe, Kopplung, Kohäsion. [14] (chapter 6)
  4. Kognitive Software-Komplexität: die Schwierigkeit, Software zu verstehen. [16], [17]

Mit Komplexität umgehen

  1. Prinzipien für verständliche SW: strukturierte und OO-Programmierung, ADTs. [18], [19], [20]
  2. Verstehen von Software-Systemen durch den Einsatz von Mess- und Visualisierungswerkzeugen. [21]

Literatur:

[1] Ludwig von Bertalanffy. General Systems Theory. George Braziller, New York, 1968.
[2] Warren Weaver. Science and complexity. American Scientist, 36:536–544, 1948.
[3] Philip W. Anderson. More is different. Science, 177:393–396, 1972.
[4] Murray Gell-Mann. The Quark and the Jaguar. W. H. Freeman and Company, New York, 1994.
[5] Murray Gell-Mann and Seth Lloyd. Information measures, effective complexity, and total information. Complexity,2(1):44–52, 1996.
[6] Herbert A. Simon. The architecture of complexity. In Proc. American Philosophical Society, volume106, pages 467–482, 1962.
[7] Douglas R. Hofstadter. Gödel, Escher, Bach: an Eternal Golden Braid. Basic Books, New York, 1979.
[8] Martin Gardner. The fantastic combinations of John Conway’s new solitaire game "life". Scientic American,223(4):120–123, 1970.
[9] Elwyn R. Berlekamp, John H. Conway, and Richard K. Guy. Gewinnen: Strategien für mathematische Spiele, Band 4. Vieweg, Braunschweig, 1985.
[10] Stuart A. Kauffman. Requirements for evolvability in complex systems: Orderly dynamics and frozen components.Physica D, 42:135–152, 1990.
[11] James Kennedy and Russell C. Eberhart. Swarm Intelligence. Academic Press, San Diego, CA, 2001.
[12] Duncan J. Watts. Small Worlds. Princeton University Press, Princeton, NJ, 1999.
[13] Albert-Laszlo Barabasi and Reka Albert. Emergence of scaling in random networks. Science, 286:509–512, 1999.
[14] Brian Henderson-Sellers: Object-Oriented Metrics: Measures of Complexity. Prentice Hall, ISBN 0132398729, 1995.
[15] Norman E. Fenton, Shari Lawrence Pfleeger. Software Metrics: A Rigorous & Practical Approach. International Thomson Computer Press, London, 1996.
[16] George A. Miller: The Magical Number Seven, Plus or Minus Two. The Psychological Review, volume 63, pages 81–97, 1956.
[17] B. Shneiderman and R. Mayer. Syntactic/semantic interactions in programmer behavior. Computer and Information Sciences, 8(3):219–238, 1979.
[18] David L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, 15(12):1053–1058, 1972.
[19] David L. Parnas, Paul C. Clements and David M. Weiss. The Modular Structure of Complex Systems. In Proc. Software Engineering, pages 408–419, 1984.
[20] Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall, Upper Saddle River (NJ), 1997.
[21] Claus Lewerentz, Frank Simon and Frank Steinbrückner. CrocoCosmos. In Proc. Graph Drawing 2001. LNCS 2265, pages 446-447, Springer, 2002.


Author: Dirk Beyer