Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ss2021:03:index

03. Infrastruktur

Themen
Warum ist Infrastruktur wichtig?
Kosten-Nutzen-Abwägung
Übersicht über die nachfolgend behandelte Infrastruktur
Weitere Arten von Infrastruktur
Folien
PDF
Glossar
PDF
Video
MP4


Webcast

Hinweis: Der Webcast wurde mit Tiny Webcasts for Lecture(r)s erstellt.

Zentrale Aspekte

  • Eine minimale Infrastruktur ist zwingende Voraussetzung zur
    Erfüllung der Kriterien für Auswertungssoftware.
  • Infrastruktur kann die Softwareentwicklung vereinfachen,
    disziplinieren und strukturieren.
  • Klare Abläufe sorgen für Konsistenz und Routine und erleichtern die Nutzung.
  • Nur eine funktionierende und möglichst einfach bedienbare Infrastruktur
    wird auch regelmäßig genutzt werden.
  • Entscheidend ist nicht der Einsatz konkreter Produkte,
    sondern der Werkzeuge als solcher.

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.

  • Welche Argumente lassen sich für die Verwendung von Infrastruktur anbringen, trotz des initial höheren Aufwandes beim Einsatz der entsprechenden Werkzeuge?
  • Worauf sollte bei der Auswahl von Infrastruktur und der Festschreibung entsprechender Abläufe unbedingt geachtet werden?
  • Welche Aspekte von Infrastruktur sollten bei keinem Projekt,und sei es auch noch so klein, fehlen?
  • Welche Aspekte einer „weichen“ Infrastruktur versprechen eine deutliche Steugerung der Qualität und Produktivität? Überlegen Sie, wie sich diese Aspekte im Kontext eines Arbeitskreises umsetzen ließen.

Bausteine einer Infrastruktur

In der Vorlesung werden/wurden sechs Aspekte von Infrastruktur angesprochen: Versionsverwaltung, Versionsnummern, externe Dokumentation, Bugverwaltung, Editoren/IDEs, Lizenzen.

Sollte ich für mich beantworten, welche Lösungen ich für die jeweiligen Aspekte verwenden würde oder verwende, käme wohl die folgende Liste dabei heraus. Da die verwendete Infrastruktur teilweise von der gewählten Programmiersprache abhängt, ist auch diese hier mit angegeben.

Aspekt Lösung
Programmiersprache Python 3.x
Versionsverwaltung git mit Gitea als Web-Frontend
Versionsnummern SemVer
externe Dokumentation DokuWiki; alternativ: Sphinx
Bugverwaltung extern: Bugzilla; alternativ: Gitea
Editoren/IDEs PyCharm
Lizenzen GPL, BSD

Wichtig: Das ist eine mitunter sehr persönliche Wahl, außerdem werde ich sie an dieser Stelle nicht begründen. Jeder sollte sich gut überlegen, welche Wahl er selbst trifft. Ggf. kann man sich sonst auch noch „unterwegs“ umentscheiden, auch wenn das mühsam werden kann.

Editoren bzw. IDEs sind nicht nur eine Frage des persönlichen Geschmacks, sondern auch der verwendeten Programmiersprache. Wer MATLAB verwendet, wird (fast) nicht sinnvoll um den mitgelieferten Editor herumkommen. Für Python ist PyCharm eine echte Empfehlung, und die kostenlose Variante genügt vollkommen für die Zwecke wissenschaftlicher Programmierung. Ansonsten ist Eclipse immer eine interessante Option.

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Projektmanagement

Auch wenn Projektmanagement über die in der Vorlesung besprochene Infrastruktur hinausgeht, lassen sich viele Aspekte, die hier unter Infrastruktur zusammengefasst werden, in diesen Kontext einbetten.

Ein „Klassiker“ zum Projektmanagement ist der Bericht von Frederick Brooks aus seiner Zeit bei IBM, wo er für die Entwicklung des Betriebssystems für die ersten IBM-Mainframes (OS/360) verantwortlich war. Das Buch ist gut geschrieben und beinhaltet in seiner Ausgabe von 1995 zusätzlich u.a. noch seinen ebenfalls berühmten (und lesenswerten) Essay „No Silver Bullet—Essence and Accident in Software Engineering“.

Die Erkenntnis, dass Programmierung und Softwareentwicklung ganz wesentlich auch eine soziale Komponente durch die notwendige enge Interaktion der Entwickler hat, trug gemeinsam mit der Unzufriedenheit mit den starren Regeln formalen Projektmanagements zur Entstehung des „Agile Manifesto“ bei [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey]. Diese Aspekte wurden aber auch vorher schon ausführlich in der Literatur beschrieben [Brooks, 1995Brooks, Frederick P. (1995): The Mythical Man Month, Addison Wesley Longman, Boston, DeMarco, 2013DeMarco, Tom; Lister, Timothy (2013): Peopleware. Productive Projects and Teams, Addison-Wesley, Upper Saddle River, NJ, Weinberg, 1998Weinberg, Gerald M. (1998): The Psychology of Computer Programming. Silver Anniversary Edition, Dorset House Publishing, New York, NY, Constantine, 2001Constantine, Larry L. (2001): The Peopleware Papers. Notes on the Human Side of Software, Yourdon Press, Upper Saddle River, NJ].

  • Brooks, Frederick P. (1995): The Mythical Man Month, Addison Wesley Longman, Boston
  • Constantine, Larry L. (2001): The Peopleware Papers. Notes on the Human Side of Software, Yourdon Press, Upper Saddle River, NJ
  • DeMarco, Tom; Lister, Timothy (2013): Peopleware. Productive Projects and Teams, Addison-Wesley, Upper Saddle River, NJ
  • Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey
  • Weinberg, Gerald M. (1998): The Psychology of Computer Programming. Silver Anniversary Edition, Dorset House Publishing, New York, NY

Infrastruktur

In ihrem Buch „Effective Computation in Physics“ [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol] gehen Scopatz und Huff insbesondere in der zweiten Hälfte in größerem Detail auf einen großen Teil der Infrastruktur ein, der in diesem Kapitel erwähnt wurde. Darüber hinaus gibt es eine Reihe von Artikeln in Fachzeitschriften, die sich allgemeinverständlich der Bedeutung von Infrastruktur für die Entwicklung von Software im naturwissenschaftlichen Bereich widmen [Osborne, 2014Osborne, James M.; Bernabeu, Miguel O.; Bruna, Maria; Calderhead, Ben; Cooper, Jonathan; Dalchau, Neil; Dunn, Sara-Jane; Fletcher, Alexander G.; Freeman, Robin; Groen, Derek; Knapp, Bernhard; McInerny, Greg J.; Mirams, Gary R.; Pitt-Francis, Joe; Sengupta, Biswa; Wright, David W.; Yates, Christian A.; Gavaghan, David J.; Emmott, Stephen; Deane, Charlotte (2014): Ten simple rules for effective computational research, PLoS Computational Biology 10:e1003506, Sandve, 2013Sandve, Geir Kjetil; Nekrutenko, Anton; Taylor, James; Hovig, Eivind (2013): Ten simple rules for reproducible computational research, PLoS Computational Biology 9:e1003285, Wilson, 2006Wilson, Greg (2006): Software carpentry. Getting scientists to write better code by making them more productive, Computing in Science & Engineering 8:66-69].

  • Osborne, James M.; Bernabeu, Miguel O.; Bruna, Maria; Calderhead, Ben; Cooper, Jonathan; Dalchau, Neil; Dunn, Sara-Jane; Fletcher, Alexander G.; Freeman, Robin; Groen, Derek; Knapp, Bernhard; McInerny, Greg J.; Mirams, Gary R.; Pitt-Francis, Joe; Sengupta, Biswa; Wright, David W.; Yates, Christian A.; Gavaghan, David J.; Emmott, Stephen; Deane, Charlotte (2014): Ten simple rules for effective computational research, PLoS Computational Biology 10:e1003506
  • Sandve, Geir Kjetil; Nekrutenko, Anton; Taylor, James; Hovig, Eivind (2013): Ten simple rules for reproducible computational research, PLoS Computational Biology 9:e1003285
  • Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol
  • Wilson, Greg (2006): Software carpentry. Getting scientists to write better code by making them more productive, Computing in Science & Engineering 8:66-69
de/lehre/programmierkonzepte/ss2021/03/index.txt · Zuletzt geändert: 2021/04/20 19:53 von till