{"id":7430,"date":"2013-09-02T08:54:18","date_gmt":"2013-09-02T06:54:18","guid":{"rendered":"https:\/\/wpethzprd.ethz.ch\/id\/?p=7430"},"modified":"2013-09-02T08:54:18","modified_gmt":"2013-09-02T06:54:18","slug":"wissenschaftliche-software-entwicklung-was-ist-das","status":"publish","type":"post","link":"https:\/\/blogs.ethz.ch\/id\/2013\/09\/02\/wissenschaftliche-software-entwicklung-was-ist-das\/","title":{"rendered":"Wissenschaftliche Software-Entwicklung &#8211; was ist das?"},"content":{"rendered":"<div>\n<p>Die Gruppe \u00abScientific Software und Data Management\u00bb (SSDM) der Abteilung SIS hat ihren Sitz in Basel am Department Biosystems Science and Engineering (D-BSSE).<!--more--> Sie arbeitet aber f\u00fcr ETH-Kunden in Z\u00fcrich und Basel, sowie \u00a0f\u00fcr Projekte von nationalen Schweizer Forschungsprogrammen und weitere wissenschaftliche Kunden. Die Aufgabe der Gruppe ist die Unterst\u00fctzung des Forschungsprozesses in quantitativen Wissenschaftsfeldern durch die Erstellung, Pflege, Anpassung und Integration von Software-, Datenbank- und Datenmanagement-L\u00f6sungen f\u00fcr aktuelle Anforderungen und Bed\u00fcrfnisse der Forschung. Was das bedeutet, und was den Unterschied zwischen der wissenschaftlichen Softwareentwicklung und der klassischen Softwareentwicklung (z.B. von Gesch\u00e4ftsanwendungen) ausmacht, werde ich im Weiteren veranschaulichen.<\/p>\n<h2>Was das bedeutet<\/h2>\n<\/div>\n<p>Aus der klassischen Softwareentwicklung ist bekannt, dass man zu Beginn eines Projektes nicht alle Details des Gesch\u00e4ftsprozesses kennt und dass sich Anforderungen im Projektverlauf noch einmal \u00e4ndern k\u00f6nnen. Aus solchen Erfahrungen heraus haben sich die \u00abagilen und schlanken Softwareentwicklungsmethoden\u00bb wie Scrum und Kanban entwickelt, die \u00c4nderungen an den Anforderungen und neue Informationen \u00fcber die Software, die man gerade schreibt, nicht als St\u00f6rung betrachten,\u00a0 sondern als Teil der Aufgabe akzeptieren und fest in den Prozess einbauen. Bei Software f\u00fcr Forschungsaufgaben wird dieser Ansatz allerdings wesentlich weiter getrieben als bei klassischen Gesch\u00e4ftsanwendungen und -datenbanken. Die urspr\u00fcngliche Form, wie in der Forschung ausserhalb der Informatik Software entsteht (dazu z\u00e4hle ich hier der Einfachheit halber auch Datenbanken) ist, dass eine Wissenschaftlerin, vielleicht zusammen mit einem Kollegen, im Rahmen eines Forschungsprojektes und zeitgleich dazu eine Sammlung von Computerprogrammen erstellt, um Daten auszuwerten und Messungen und Beobachtungen zu speichern und nach bestimmten Kriterien zu vergleichen, zu filtern und weiterzuverarbeiten. Die Forscherin ist dabei als Softwareentwicklerin ihre eigene Kundin, was ihr viele Freiheiten gibt, ihre Entscheidungen bez\u00fcglich Anforderungen, Priorit\u00e4ten und Zeitplan der Software jederzeit zu \u00e4ndern. Sie ber\u00fccksichtigt dabei f\u00fcr die Weiterentwicklung ihrer Programme jeweils das, was sie zuvor im Projekt \u00fcber ihren Forschungsgegenstand gelernt hat. Vielleicht findet sie heraus, dass sie ihren experimentellen Ansatz \u00e4ndern muss und \u00e4ndert ihre Software entsprechend. Die \u00c4nderungen am Programm sind dann zun\u00e4chst einmal selber experimentell, m\u00fcssen sich erst im Fortgang der Forschungsarbeit als richtig oder falsch erweisen, und werden dann entsprechend angepasst oder verfeinert. Mit anderen Worten: die Software ist ein integraler Bestandteil des Forschungsprozesses. Im Vergleich zu dieser Methode der Softwareentwicklung wirken selbst agile Softwareentwicklungsprozesse schwerf\u00e4llig.<\/p>\n<h2>Was hat das mit den Informatikdiensten zu tun?<\/h2>\n<p>Man k\u00f6nnte sich fragen, was all das mit den Informatikdiensten zu tun hat. Hier kommen zwei neuere Entwicklungen ins Spiel: Zum einen hat die Komplexit\u00e4t und Vielfalt der Programme bei\u00a0 den datengetriebenen Forschungsans\u00e4tzen st\u00e4ndig zugenommen und damit der Aufwand f\u00fcr ihre Erstellung und Pflege. Zum anderen verwenden heute deutlich mehr Forschungsbereiche computergest\u00fctzte Ans\u00e4tze, darunter auch solche, bei denen das Denken in Algorithmen und das Entwickeln von Software nicht zum Methodenkanon der Ausbildung geh\u00f6rt, sondern wo Computermethoden ein weiterer, zus\u00e4tzlicher Methodenbereich sind, den ein Forscher einsetzt. Diese beiden Entwicklungen f\u00fchren zu einem Bedarf nach Spezialisierung und Arbeitsteilung beim Schreiben wissenschaftlicher Software. Ein Teil der Software, die hier entsteht, ist Methodenentwicklung und damit selbst Gegenstand eigener Forschung im Bereich und weiteren Umfeld der Informatik und Computerwissenschaften. Ein grosser Teil der Software allerdings ist nicht an und f\u00fcr sich publikationsw\u00fcrdig und damit als Spezialgebiet f\u00fcr Forscher uninteressant, gleichwohl aber als Teil des Forschungsprozesses notwendige Voraussetzung f\u00fcr den Erfolg. Die Forschenden k\u00f6nnen nicht mehr alle Software, die sie als Teil des Forschungsprozesses brauchen (und die es nicht zu kaufen gibt), selber schreiben und pflegen, sondern brauchen professionelle Unterst\u00fctzung von Softwareentwicklern, die das Umfeld und die Voraussetzungen wissenschaftlicher Softwareentwicklung verstehen und die sich darauf organisatorisch und mental eingestellt haben. Die ETH Z\u00fcrich hat sich entschieden, diese Dienstleistung in der Abteilung SIS der Informatikdienste anzusiedeln und dort generell die IT-Dienstleistungen f\u00fcr die Forschungsunterst\u00fctzung zu b\u00fcndeln.<\/p>\n<h2>Scientific Software und Data Management<\/h2>\n<p>Die Gruppe \u00abScientific Software und Data Management\u00bb (SSDM) besteht aus Softwareentwicklern, die sich darauf spezialisiert haben, im komplexen und sehr dynamischen Forschungsumfeld Software zu schreiben, in enger Abstimmung und Zusammenarbeit mit den Forschenden. (Die hier geschilderten Beispiele stammen tats\u00e4chlich von den organisatorischen Vorl\u00e4ufern von SSDM, C-ISD und SyBIT.) Es kann sehr unterschiedliche Software sein, die da entsteht: Vollst\u00e4ndige Programme, Frameworks oder einzelne Programm-Module, Software zum Management von Daten und Workflows, zur Durchf\u00fchrung spezifischer Analyseschritte, zur Visualisierung von Messergebnissen, zum Abfragen, Filtern und Vergleichen von Resultaten, zur Ansteuerung von Messger\u00e4ten und Robotern, zur Integration von Datenmanagementsystemen,\u00a0 Workflowsystemen, Queuingsystemen von Rechenclustern oder Automationssystemen. Hier sind zwei Beispiele:<\/p>\n<p>1. F\u00fcr ein umfangreiches Forschungsprogramm wird ein System f\u00fcr das Resultatdatenmanagement und -austausch ben\u00f6tigt. Die Anforderungen der einzelnen Projekte des Programmes haben Gemeinsamkeiten, aber auch viele Besonderheiten. Die Gemeinsamkeiten kristallisieren sich erst im Laufe der Zeit klar heraus, die spezifischen Anforderungen m\u00fcssen trotzdem zeitnah abgedeckt werden. SIS schreibt daf\u00fcr in enger Zusammenarbeit mit mehreren Forschungsprojekten ein System, das die unmittelbaren Anforderungen erf\u00fcllt und die vorhersehbaren Unterschiede zwischen den Projekten abdeckt. Das System wird kontinuierlich funktionell erweitert und in Richtung eines Softwareframeworks weiterentwickelt, um Synergien zu nutzen und doppelte Arbeit zu vermeiden. F\u00fcr die Benutzer ist das transparent, denn Synergien sind f\u00fcr sie nicht wesentlich, f\u00fcr die langfristige Wartbarkeit sind sie aber essentiell. Das System erweist sich n\u00e4mlich als deutlich vielseitiger und langlebiger als das urspr\u00fcnglich gedacht war: Labore benutzen es auch ausserhalb des Forschungsprogramms, f\u00fcr das es geschrieben war, wissenschaftliche Facilities an der ETH verwenden es, mehrere mittlere und grosse Firmen setzen es ein und machen Supportvertr\u00e4ge mit der ETH, um von uns Unterst\u00fctzung im Produktiveinsatz und Weiterentwicklungen zu bekommen. Entwickler an anderen Universit\u00e4ten beginnen das Framework als Basis f\u00fcr eigene Entwicklungen zu verwenden, von denen eines seinen Weg zur\u00fcck an die ETH findet.<\/p>\n<p>2. Ein Doktorand schreibt ein komplettes Framework f\u00fcr die flexible Ansteuerung von automatisierten Mikroskopen basierend auf einem bestehenden Open-Source-System, das deutlich flexibler ist als die von den Mikroskopieherstellern gelieferten Softwaresysteme und Messprozesse erlaubt, die die Hersteller nicht vorgesehen haben und deshalb nicht unterst\u00fctzen, obwohl die Hardware sie erlaubt. Der Doktorand hat einige Vorerfahrung in Programmierung und schreibt guten Code. Da es gute Arbeitsbeziehungen zwischen SIS und seinem Lab gibt, holt er sich bei Fragen zur Modularisierung, zur nebenl\u00e4ufigen Programmierung und zur Softwaretechnik (Versionskontrolle, Build-Systeme, kontinuierlicher Integration) Rat und Hilfe bei SIS-Softwareingenieuren. Das System bekommt eine Schnittstelle zum Upload von Mikroskopieaufnahmen in das unter 1. beschriebene Datenmanagentsystem, das in dem Lab verwendet wird. Wir beteiligen uns auf Anfrage an Diskussionen rund um das System, z.B. wie die interne Schnittstelle zu dem zugrundeliegenden Open-Source-Treibern verbessert und vereinfacht werden kann. Der Anlass daf\u00fcr ist, dass die parallele Messung mit mehreren Kameras einen fehleranf\u00e4lligen Hack erfordert, weil das in den Treibern nicht vorgesehen ist. Wir helfen beim Refactoring-Konzept, ein \u00abHiwi\u00bb beginnt mit dem n\u00f6tigen Refactoring des Basissystems, kann es aber nicht abschliessen, aus Zeitgr\u00fcnden und weil ihm die Erfahrung dazu fehlt. Am besten w\u00e4re eine direkte Zusammenarbeit mit den Entwicklern diese Basissystems, aber die sitzen nicht gerade ums Eck, sondern an der University of California in San Francisco. Das Framework, das als \u00abHobby-Projekt\u00bb (im guten Sinn) eines motivierten Doktoranden begonnen hat, findet Anklang bei anderen Forschungsgruppen und eine Departments-Facility f\u00fcr Mikroskopie m\u00f6chte es einsetzen. Wir raten an, das nur zu tun wenn die langfristige Softwarepflege sichergestellt ist, was ein Doktorand nicht leisten kann. Das Department m\u00f6chte wissen, ob wir die Pflege und Weiterentwicklung des Systems \u00fcbernehmen k\u00f6nnen, SIS-Softwareingenieure beginnen, sich in das System tiefer einzuarbeiten&#8230;<\/p>\n<h2>So k\u00f6nnte es ewig weitergehen&#8230;<\/h2>\n<p>Ich k\u00f6nnte viele weitere Beispiele nennen: Fragen von Forschern zur Beschleunigung von Algorithmen, zur Verbesserung der Parallelisierbarkeit (auf Rechenclustern), zur Verbesserung der Robustheit einer 24&#215;7-L\u00f6sung, wenn das Netz zeitweilig ausf\u00e4llt, Anfragen zur Erstellung von Web-Interfaces und Mobile-Interfaces von schon bestehenden Systemen und generell zur Visualisierung von Ergebnissen. Viele davon haben gemein mit den beiden Beispielen oben, dass die Entwicklung solcher Systeme alles andere als vorhersehbar oder planbar ist, dass es klein anf\u00e4ngt und, wenn es Erfolg hat, w\u00e4chst und eine langfristige Pflege erfordert, und dass unabh\u00e4ngig voneinander entwickelte Module auf einmal zusammenarbeiten m\u00fcssen. H\u00e4tte man am Anfang mit Verweis auf das m\u00f6gliche Wachstum auf einem Projektplan oder einem Pflichtenheft bestanden, w\u00e4re das Projekt von Seiten der Forscher beendet gewesen, bevor es begonnen hat. Um in dieser Umgebung erfolgreiche Softwareprojekte machen zu k\u00f6nnen, braucht es vor allem Erfahrung damit, wie Software im Forschungsbereich entsteht und sich entwickelt, und wie Forscher mit Software arbeiten und \u00fcber Software denken. Gegen\u00fcber der Situation, wo eine Forscherin ihre eigene Softwareentwicklerin ist (siehe oben), m\u00fcssen sich nat\u00fcrlich auch die Wissenschaftler umstellen, denn um eine gewisse Koordination kommt man bei einer Zusammenarbeit nicht herum. In erster Linie ist es aber die Serviceabteilung, die sich auf die Forscher einstellen muss und nicht umgekehrt. Einige Leitlinien haben wir in diesem Umfeld gefunden, die sich als n\u00fctzlich herausgestellt haben:<\/p>\n<h2>N\u00fctzliche Leitlinien<\/h2>\n<ol>\n<li>Warte nicht darauf, dass die Anforderungen und Lieferobjekte klar definiert werden, denn das wird nicht passieren. Fange an, mit dem was du weisst, und lasse es wachsen.<\/li>\n<li>Sei dir klar, dass der enge Kontakt mit der Forschungsgruppe von Anfang an eine Erfolgsvoraussetzung ist. Oft startet man ein wissenschaftliches Softwareentwicklungprojekt am besten mit einem Softwareingenieur, der \u00abeingebettet in die Forschungsgruppe\u00bb arbeitet.<\/li>\n<li>Sei bereit, Entwicklungspriorit\u00e4ten von neuen Features und Verbesserungen jederzeit schnell zu \u00e4ndern, ohne aber die l\u00e4ngerfristige Sicht auf Struktur und Wartbarkeit zu verlieren.<\/li>\n<li>F\u00fchre neue Funktionen und Verbesserungen in einem schnellen und kontinuierlichen Prozess ein, in dem Entwickler, Server-Admins und die Forscher als Benutzer eng zusammenarbeiten und direkt miteinander reden. Das verhindert Missverst\u00e4ndnisse und unn\u00f6tige Arbeit.<\/li>\n<li>Sei dir klar dass du erst sp\u00e4ter herausfinden wirst, welche Teile der Software nach einem halben Jahr pass\u00e9 sind und welche in verallgemeinerter Form f\u00fcr viele Jahre unterst\u00fctzt werden m\u00fcssen.<\/li>\n<li>Wo es \u00dcberg\u00e4nge zwischen Phasen der Softwareentwicklung gibt, z.B. zwischen einem Prototypen, einem Testsystem und einem Produktivsystem: mache das unsichtbar f\u00fcr die Forscher, aber habe ein Auge auf die tats\u00e4chliche Benutzung. Die Unterscheidungen sind f\u00fcr sie bedeutungslos, sie werden solange funktional und nicht-funktional iterieren bis sie zufrieden sind und das System dann umstandslos produktiv benutzen, auch wenn gross und\u00a0 in roter Farbe \u00abPrototyp\u00bb draufsteht. Backups von Testsystemen sind daher gar keine schlechte Idee.<\/li>\n<li>Als Leiter eines solchen Software-Projektes, versetze dich in die Sichtweise der Forscher hinein; agiere als Co-PI (\u00abPrincipal Investigator\u00bb) , nicht als Projektmanager.<\/li>\n<\/ol>\n<p>\u00dcber Erfolgs- und Misserfolgsfaktoren von Softwareprojekte im wissenschaftlichen Umfeld findet man in der einschl\u00e4gigen Literatur eher wenig. Das liegt daran, dass die Entwicklung wissenschaftlicher Software im grossen Feld der Softwareentwicklung und gerade auch im Vergleich zur Softwareentwicklung von Gesch\u00e4ftsanwendungen nur einen kleinen Nischenbereich ausmacht. Einen allerdings, der im Kernkompetenzbereich der ETH Z\u00fcrich als forschungsstarker technischer Hochschule liegt.<\/p>\n<h2>Kontakt<\/h2>\n<p>DR. Bernd Rinn, Abteilungsleiter ID Scientific IT Services<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was bedeutet das und was macht den Unterschied zwischen der wissenschaftlichen Softwareentwicklung und der klassischen Softwareentwicklung (z.B. von Gesch\u00e4ftsanwendungen) aus?<\/p>\n","protected":false},"author":838,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,1177,890,898,1178],"tags":[104150,104266,104265,104264],"class_list":["post-7430","post","type-post","status-publish","format-standard","hentry","category-news","category-software-arbeitsplatze","category-speicher","category-support","category-wissenschaftl-rechnen","tag-scientific-it-services","tag-sis","tag-softwareentwicklung","tag-wissenschaftliche-software-entwicklung"],"_links":{"self":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts\/7430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/users\/838"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/comments?post=7430"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/posts\/7430\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/media?parent=7430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/categories?post=7430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ethz.ch\/id\/wp-json\/wp\/v2\/tags?post=7430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}