====== Seminar „Softwareentwicklung in der Wissenschaft“ ====== ===== Beschreibung ===== Im Seminar werden wir die Softwareentwicklung in der Wissenschaft diskutieren. Im Detail der Prozess von der wissenschaftlichen Fragestellung über die Modellierung und Programmierung bis hin zur Analyse der Ergebnisse. Hierzu werden Softwareentwicklungs-werkzeuge und Mechanismen vorgestellt und deren Umsetzung in der bestehenden Praxis analysiert. Die Lehrmaterialien sind typischerweise in englischer Sprache. Beachten Sie auch unsere allgemeinen organisatorischen [[:teaching:organisatorische_hinweise:seminar_proseminar#seminare|Hinweise zu Seminaren]]. ===== Zielgruppe ===== Das Seminar eignet sich für Studierende im Bachelortudiengängen mit Bezug zur Informatik sowie Masterstudiengang in den Geowissenschaften. Wir fordern explizit Studierende der angewandten Informatik zur Teilnahme auf beispielsweise Bioinformatik, Wirtschaftsinformatik sowie Geowissenschaftler. Für Studierende der Informatik und Geowissenschaften wird die Anrechnung innerhalb des Studiums problemlos möglich, Studierende anderer Studiengänge müssen die Anrechnung mit dem jeweiligen Prüfungsausschuss klären. Interessierte Zuhörer sind auch herzlich willkommen. ===== Daten der Veranstaltung ===== || Ort || [[http://maps.google.com/maps?q=DKRZ,+Bundesstra%C3%9Fe+45a,+20146+Hamburg&hl=de&cd=2&ei=BUxYS-GvKIuLOKaotbgJ&sig2=Kv8CBjHeXm8lAVC3XxRrIQ&ie=UTF8&view=map&cid=262423906154203330&ved=0CBsQpQY&hq=DKRZ,+Bundesstra%C3%9Fe+45a,+20146+Hamburg&hnear=&z=16&iwloc=A|DKRZ]], Raum 034 || || Zeit || Dienstag 16:15 - 17:45 || || Vorbesprechung || Dienstag 7.4.2015 16:15 || || Mailingliste || [[http://wr.informatik.uni-hamburg.de/listinfo/siw-15|SIW-15]] || ===== Dozenten ===== * [[People:Thomas Ludwig]] * [[People:Hermann Lenhart]] * [[People:Alumni:Julian Kunkel]] ===== Themenliste ===== ==== Theorie ==== Hier werden vertiefende Vorträge zu Einzelaspekten der Softwareentwicklung in der Wissenschaft angeboten, z.B: * Modellierung und Simulation * Leistungsanalyse und Effizienz * Auswahl der Numerik und Algorithmen * Algorithm Engineering (and Software-reliability engineering) * Verifikation, und Validierung: * Assesment of Accuracy and Reliability * Qualität von berechneten Lösungen (floating point Repräsentation), Conditionierung * Computer-assisted Proofs and Self-Validating Methods * General Methods for Implementing Reliable and Correct Software * Design and execution of validation experiments (IV, Roy) * Solution Verification & Fehlerquellen (I, III, Roy) Weitere ausgewählte Artikel zum Thema können auch bearbeitet werden. ==== Wissenschaftliche Praxis ==== Praxis in diversen Projekten: An Hand von Interviews soll die Praxis der Softwareentwicklung beispielhaft evaluiert werden. Im Mittelpunkt der Interviews stehen konkrete Fragen warum eine bestimmte Software entwickelt wird, von wem und wie diese entwickelt. Aufbauend auf den persönlichen Kenntnissen und Fähigkeiten im Bereich der Informatik kann als Ausgangspunkt die Einführungspräsentation, die angebene Literatur und eigene Literaturrecherche dienen. Die von uns ausgewählten Interviewpartner werden über eines (oder mehrere) ihrer Projekte mit euch sprechen, euch evtl. Hintergrundinformation in Form von Papern, Dokumentationen oder Links zur Fragestellung geben. Hieraus sind konkrete und gezielte Fragen zum Projekt und der Softwareentwicklung für das Interview zu erarbeiten. In euren Präsentationen im Seminar stellt ihr die Fragestellung(en) der Interviewpartner, die behandelte Software, den Projektkontext und die hieraus evaluierte SWE in der Praxis vor. Daneben sind projektabhängige und von euren Interessen abhängige Schwerpunkte und Fragestellungen von euch zu erstellen. Als Leitfaden kann das Muster des Fragenkataloges dienen: {{:teaching:siw-fragebogen.pdf|Einführungsfragebogen Softwareentwicklung in der Wissenschaft}} Die Interviewpartner sind von uns ausgesucht und werden euch von uns genannt. Abschließend soll aus den Ausarbeitungen ein Bericht generiert werden. Das LaTeX-Template hierzu wird von uns vorgegeben. ===== Zeitplan und Materialien ===== *** Zeitplan** * 5.5. * 9) Domain-specific languages: Introduction - Fröbel ((Julian Kunkel)) * 2) Testing: Case studies - Jacob ((Hermann Lenhart)) -- {{:teaching:sommersemester_2015:siw-15-jacob-testingcases-druckversion.pdf|Präsentation}},{{:teaching:sommersemester_2015:siw-15-jacob-testingcases-ausarbeitung.pdf|Ausarbeitung}} * 12.5. * 5. Code-refactoring (CS-Theorie + Case-studies) - Schulz ((Julian Kunkel)) -- {{:teaching:sommersemester_2015:siw-15-schulz-coderefactoring-präsentation.pdf|Präsentation}} {{:teaching:sommersemester_2015:siw-15-schulz-coderefactoring-ausarbeitung.pdf|Ausarbeitung}} * ??? - Jung ((Hermann Lenhart)) * 19.5 * 1) Tests & Test-driven development (CS-Theorie) - Bücklers ((Hermann Lenhart)) -- {{teaching:sommersemester_2015:siw15-tests_und_testddrivendevelopment_final.pdf|Präsentation}},{{teaching:sommersemester_2015:siw15-tests_und_testgetriebene_entwicklung-antonia_buecklers.pdf|Ausarbeitung}} * 10) Domain-specific languages: Examples - Gresens ((Julian Kunkel)) -- {{:teaching:sommersemester_2015:siw-15-gresens-dsl.pdf|Präsentation}} {{:teaching:sommersemester_2015:siw-15-gresens-dsl-ausarbeitung.pdf|Ausarbeitung}} * 2.6. * 8) Impact of programming languages on software engineering and performance - Jammer ((Hermann Lenhart)) -- {{:teaching:sommersemester_2015:siw15-jammer-folien.pdf|Präsentation}},{{:teaching:sommersemester_2015:siw-jammer-ausarbeitung.pdf|Ausarbeitung}} * 9.6 * 6) Cloud computing (CS-Theorie) - Arora ((Hermann Lenhart))-- {{:teaching:sommersemester_2015:siw15-aurora-cloud_computing.pdf|Präsentation}},{{:teaching:sommersemester_2015:siw-15-arora-cloudcomputing-ausarbeitung.pdf|Ausarbeitung}} * 16.6 * 3) Agile programmierung (CS-Theorie)- Seidel ((Julian Kunkel)) -- {{:teaching:sommersemester_2015:siw-15-seidel-agileswe-präsentation.pdf|Präsentation}} {{:teaching:sommersemester_2015:siw-15-seidel-agileswe-ausarbeitung.pdf|Ausarbeitung}} * 4) Agile programmierung: Case studies I - Schacht ((Julian Kunkel)) -- {{:teaching:sommersemester_2015:siw-15-schacht-präsentation.pdf|Präsentation}} {{:teaching:sommersemester_2015:siw-15-schacht-ausarbeitung.pdf|Ausarbeitung}} * 23.6 * Interview - Eimer ((Hermann Lenhart)) -- {{teaching:sommersemester_2015:siw15-eimer-dwd-vortrag.pdf|Präsentation}},{{teaching:sommersemester_2015:siw15-eimer-dwd-ausarbeitung.pdf|Ausarbeitung}} * Interview - Peukert ((Hermann Lenhart))-- {{teaching:sommersemester_2015:siw15-seminarvortrag_peukert.pdf|Präsentation}},{{teaching:sommersemester_2015:siw15-interviewbericht_peukert.pdf|Ausarbeitung}} * 30.6. * 11) Product-Line Engineering - Kuberczyk ((Julian Kunkel)) -- {{:teaching:sommersemester_2015:siw-15-kuberczyk-presentation.pdf|Präsentation}} {{teaching:sommersemester_2015:siw-15-kuberczyk-ausarbeitung.pdf|Ausarbeitung}} * 12) Model-driven architecture - Ghadimi Erdmousa ((Julian Kunkel)) * 7.7. * 13) Interview - Santos ((Hermann Lenhart))-- {{teaching:sommersemester_2015:siw15-csantosvff.pdf|Präsentation}},{{teaching:sommersemester_2015:siw15-softwareentwicklung-hausarbeit-csantosvff.pdf|Ausarbeitung}} * 4) Agile programmierung: Case studies II - Zhylkin ((Julian Kunkel)) -- {{teaching:sommersemester_2015:siw-15-zhylklin-agilecasestudies-präsentation.pdf|Präsentation}} {{teaching:sommersemester_2015:siw-15-zhylklin-agilecasestudies-ausarbeitung.pdf|Ausarbeitung}} ***Material** 1) Tests & Test-driven development (CS-Theorie) * [[https://kataloge.uni-hamburg.de/DB=1/PPNSET?PPN=353200638|[Buch] Test-driven development : by example]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1231452|Test driven development and the scientific method]] 2. Testing: Case studies * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6774772|Building CLiiME via Test-Driven Development: A Case Study]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=5999647|Software Testing and Verification in Climate Model Development]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=7017328|Towards Test Driven Development for Computational Science with pFUnit]] 3. Agile programmierung (CS-Theorie) * [[http://agilemanifesto.org/|Agile Manifesto]] * [[http://www.scrumguides.org/|Scrum]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=779100|Extreme Programming]] * [[https://kataloge.uni-hamburg.de/DB=1/PPNSET?PPN=550808647|[Buch] Extreme programming explained : embrace change]] 4. Agile programmierung: Case studies * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6081842|What Do We Know about Scientific Software Development's Agile Practices?]] * [[http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1196317|Exploring XP for scientific research]] * [[http://www.sciencedirect.com/science/article/pii/S1877050910001699|Is Scrum and XP suitable for CSE Development?]] * [[http://arxiv.org/pdf/1409.6600|Limitations of agile programming]] * [[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5492703|Agile software development: Impact on productivity and quality]] 5. Code-refactoring (CS-Theorie + Case-studies) * [[http://lapessc.ime.usp.br/public/papers/14428/paper.pdf|Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study]] * [[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6405324|Move code refactoring with dynamic analysis]] * [[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6975646|Impact of Code Refactoring Using Object-Oriented Methodology on a Scientific Computing Application]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=5999649|Clear Climate Code: Rewriting Legacy Science Software for Clarity]] 6. Cloud computing (CS-Theorie) * [[https://kataloge.uni-hamburg.de/DB=1/PPNSET?PPN=755452658|[Buch] Cloud computing: concepts, technology and architecture]] * [[http://gridbus.csse.unimelb.edu.au/~raj/papers/Cloud-ADE-SPE-2012.pdf|Software architectures and application development environments for Cloud computing]] 7. Cloud computing for HPC: surveys * [[http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5381983|High-Performance Cloud Computing: A View of Scientific Applications]] * [[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6257957|Toward exposing and accessing HPC applications in a SaaS cloud]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=5396290|Scientific Computing in the Cloud]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=4637787|Scientific Cloud Computing: Early Definition and Experience]] * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6045068|Gird or cloud? Survey on scientific computing infrastructure]] 8. Impact of programming languages on software engineering and performance. * [[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4263269|Why Fortran?]] * [[http://pinky.web.srk.fer.hr/java/usporedba.pdf|An empirical comparison of seven programming languages]] * [[http://www.globalsupercomputing.com/people/kemal.ebcioglu/pdf/PPHEC2006-final.pdf|An experiment in measuring the productivity of three parallel programming languages]] * [[http://link.springer.com/chapter/10.1007/978-3-642-30397-5_3|Performance and productivity of new programming languages]] 9. Domain-specific languages: Introduction * [[http://arxiv.org/abs/1409.2378|Design guidelines for domain specific languages]] * [[http://arxiv.org/pdf/1409.6618|Roles in software development using domain specific modeling languages]] 10. Domain-specific languages: Examples * [[http://thomascerqueus.fr/publications/iwccr2013a.pdf|Towards The Deployment of Cloud Applications Using a DSL]] * [[http://www.mmc.geofisica.unam.mx/edp/SC11/src/pdf/papers/tp2.pdf|Liszt: a domain specific language for building portable mesh-based PDE solvers]] * kann noch ergänzt werden 11. Product-Line Engineering * [[http://www.researchgate.net/profile/Andreas_Metzger/publication/262962369_Software_product_line_engineering_and_variability_management_Achievements_and_challenges/links/02e7e5399908b9102c000000.pdf|Software product line engineering and variability management: Achievements and challenges]] * [[http://www.fi.upm.es/catedra-ibmrational/sites/www.fi.upm.es.catedra-ibmrational/files/DiazPerezAlarconGarbajosa-SLR%20on%20APLE_accepted%20manuscript_0.pdf|Agile product line engineering—a systematic literature review]] * [[http://www.voelter.de/data/pub/VoelterVisser-PLEusingDSLs.pdf|http://www.voelter.de/data/pub/VoelterVisser-PLEusingDSLs.pdf|Product line engineering using domain-specific languages]] * [[http://ulir.ul.ie/bitstream/handle/10344/768/2010-oleary-Agile-au.pdf?sequence=3|An agile process model for product derivation in software product line engineering ]] 12. Model-driven architecture * [[http://www.sciencedirect.com/science/article/pii/S0950584912001309|MDD vs. traditional software development: A practitioner’s subjective perspective]] 13. Supporting HPC Software development * [[http://arxiv.org/pdf/1309.1101|Simplifying the development, use and sustainability of HPC software]] * [[http://link.springer.com/chapter/10.1007/978-3-642-32454-3_3|HPC refactoring with hierarchical abstractions to help software evolution]] * [[http://iopscience.iop.org/1742-6596/513/5/052012/pdf/1742-6596_513_5_052012.pdf|Self-service for software development projects and HPC activities]] 14. Brainware vs. Hardware * [[http://www.editlib.org/p/9212/article_9212.pdf|Hardware Versus Brainware: Where Are Technology Dollars Being Invested?]] * [[http://www.ena-hpc.org/2011/talks/bischof-slides.pdf|Brainware for green HPC]] * [[http://link.springer.com/chapter/10.1007/978-3-642-29740-3_23|Enhancing brainware productivity through a performance tuning workflow]] * [[http://www.hpc-hessen.de/fileadmin/user_upload/Group_HPC/download/HiPerCH_April_2013/HiPerCH_07Apr2013-CB_02.pdf|The Importance of Software in High-Performance Computing]] ===== Literaturhinweise ===== * [[http://de.wikipedia.org/wiki/Softwaretechnik|Softwaretechnik in der Wikipedia]] * Scientific Software Engineering in a Nutshell [[http://arxiv.org/abs/0905.1628|Online Dokument]] * Scientific Software Engineering - Basic techniques of creating practical scientific software [[http://www.ita.uni-heidelberg.de/~pmelchior/talks/software_engineering_150410.pdf|PDF Präsentation]] * gitworkflows (Man page) * Versionsmanagement Quellen: [[http://www.nyetwork.org/wiki/SRM.pdf|PDF]] [[http://www.doc.ic.ac.uk/~alw/doc/papers/spe0103.pdf|Paper]] * Release Management in Free Software Projects: Practices and Problems (Springer) * [[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.91.4861&rep=rep1&type=pdf|Quality Practices and Problems in Free Software Projects]] * [[http://cs.ua.edu/~SECSE08/Papers/Segal.pdf|Models of scientific software development]] * Lustige Anekdote [[http://www.kirit.com/Blog:/2007-12-15/Pseudo%20scientific%20Software%20Engineering|Pseudo scientific Software Engineering]] * Software Entwicklung - Kampf der Altlasten [[http://www.heise.de/newsticker/meldung/Software-Entwicklung-Kampf-den-Altlasten-28106.html|HTML]] * [[http://www.amazon.de/Accuracy-Reliability-Scientific-Computing-Environments/dp/0898715849/|Accuracy and Reliability in Scientific Computing]] * Report from the Second International Workshop on Software Engineering for Computational Science and Engineering (SE-CSE 09) * [[http://www.cse.msstate.edu/~carver/Papers/SEN_32_5.pdf|Post-Workshop report for the Third International Workshop on Software Engineering for High Performance Computing Applications (SE-HPC 07)]] * [[http://www.citeulike.org/user/pipitone/article/1926401|A Software Chasm: Software Engineering and Scientific Computing]] * [[http://ls11-www.cs.uni-dortmund.de/lehre/AE/AlgEng_Intro.pdf|Algorithm Engineering]]