Softwareentwicklung in der Wissenschaft

Ähnliche Dokumente
Computerarithmetik ( )

Numerisches Programmieren, Übungen

Technische Informatik - Eine Einführung

Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination. Lehrstuhl für Angewandte Mathematik Wintersemester 2009/

Einführung in die Informatik I

Binärdarstellung von Fliesskommazahlen

1 Mathematische Grundlagen

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik

Lösungen: zu 1. a.) b.) c.)

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

How to do? Projekte - Zeiterfassung

Lernmaterial für die Fernuni Hagen effizient und prüfungsnah

a) Da die Zahlen im IEEE-32Bit-Format dargestellt werden sollen, ist der Bias = 127.

Der Zwei-Quadrate-Satz von Fermat

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

2 Darstellung von Zahlen und Zeichen

Binäre Gleitkommazahlen

Konzepte der Informatik

, WS2012 Übungsgruppen: Mo.,

Grundbegriffe der Informatik

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Institut für Computational Engineering ICE. N ä h e r d ra n a m S ys t e m d e r Te c h n i k d e r Z u ku n f t. w w w. n t b.

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Primzahlen und RSA-Verschlüsselung

Erfahrungen mit Hartz IV- Empfängern

Grundlagen der Informatik

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Übungen zu Informatik 1

Daten verarbeiten. Binärzahlen

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

Zeichen bei Zahlen entschlüsseln

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

«Eine Person ist funktional gesund, wenn sie möglichst kompetent mit einem möglichst gesunden Körper an möglichst normalisierten Lebensbereichen

Das Bayes-Theorem. Christian Neukirchen Gleichwertige Leistungsfeststellung, Juni 2005

Nachkalkulation. Hat sich das Objekt CVO Auxilium hilden im Juni rentiert?

Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

Funktionaler Zusammenhang. Lehrplan Realschule

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Es war einmal... "StudyING: Welten bewegen - Welten gestalten"

Robot Karol für Delphi

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

Wofür braucht man eine Tabellenkalkulation? Das Programm Microsoft Excel gehört in Softwarekategorie der Tabellenkalkulationen.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Grundlagen der Künstlichen Intelligenz

Wann ist eine Software in Medizinprodukte- Aufbereitungsabteilungen ein Medizinprodukt?

7 Rechnen mit Polynomen

3D Visualisierung von UML Umgebungsmodellen

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?

Was versteht man unter Softwaredokumentation?

Objektorientierte Programmierung für Anfänger am Beispiel PHP

R ist freie Software und kann von der Website.

Das System für Ihr Mitarbeitergespräche

GEVITAS Farben-Reaktionstest

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Programmiersprachen und Übersetzer

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Verbesserungsdetails: PTC Mathcad Prime 3.0. Copyright 2013 Parametric Technology Corporation. weiter Infos unter

1. Stellenwerte im Dualsystem

Kleines Handbuch zur Fotogalerie der Pixel AG

Softwareanforderungsanalyse

Formwerk AG. Die Sicherstellung konsistenter Nutzungserlebnisse über den gesamten SW-Produktlebenszyklus durch Human Centered Design.

Einführung in PHP. (mit Aufgaben)

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

VBA-Programmierung: Zusammenfassung

Petri-Netze / Eine Einführung (Teil 2)

Was können Schüler anhand von Primzahltests über Mathematik lernen?

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Statistik II. Statistik II, SS 2001, Seite 1 von 5

Mathematik Akzentfach

Konzentration auf das. Wesentliche.

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Gestaltung wissenschaftlicher Poster

Information Systems Engineering Seminar

Kapitel 3. Codierung von Text (ASCII-Code, Unicode)

Agile Software Development

QM: Prüfen -1- KN

Data Mining: Einige Grundlagen aus der Stochastik

IT-Basics 2. DI Gerhard Fließ

ANSPRECHPARTNER. Film Mathematik statt Rechnen (Quelle: Hochschule Merseburg) Prof. Dr. Axel Kilian Fachbereich Informatik und Kommunikationssysteme

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

FUTURE NETWORK REQUIREMENTS ENGINEERING

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Fragebogen zur Evaluation der Vorlesung und Übungen Computer Grafik, CS231, SS05

4. Die Grundsätze der Dialoggestaltung aus DIN EN ISO

Informatik und Informationstechnik (IT)

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Jan Parthey, Christin Seifert. 22. Mai 2003

Der monatliche Tarif für ein Handy wurde als lineare Funktion der Form f(x) = k x + d modelliert (siehe Grafik).

Transkript:

Softwareentwicklung in der Wissenschaft Eine Einführung Sandra Schröder Department Informatik Arbeitsbereich Wissenschaftliches Rechnen Universität Hamburg 9.12.2010 Seminar: Softwareentwicklung in der Wissenschaft 1 / 47

Gliederung Gliederung 1 Einleitung und Motivation 2 Wissenschaftliche Softwareentwicklung 3 Hardware Was ist wissenschaftliche Softwareentwicklung? Anforderungen Software Design 4 Rechnerarithmetik Maschinenzahlen Vom Stellenwertsystem zur Gleitkommadarstellung Rundung und Rundungsfehler 5 Numerik Fehlerbetrachtungsmechanismen 6 Zusammenfassung 7 Diskussion und Ausblick 2 / 47

Einleitung und Motivation Ausgangssituation Ausgangssituation Grundlage: Naturwissenschaftliche Fragestellung Modellierung in mathematisches Modell mithilfe von Gleichungen Interessiert an der (exakten) Lösung der Gleichungen Unterstützung durch den Rechner Interaktion zwischen Mathematik, Informatik und Naturwissenschaften (MIN) 3 / 47

Einleitung und Motivation MIN - Mathematik, Informatik, Naturwissenschaften Definition MIN Abbildung: Interaktion Mathematik Effektives Strukturieren und logisches Begründen von Erkenntnissen Informatik Darstellung, Speicherung,Übertragung und Verarbeitung von Informationen Naturwissenschaft Erforschung der belebten und auch unbelebten Natur: Beschreiben, Erfassen, Erklärung (wikipedia.de) 4 / 47

Einleitung und Motivation MIN - Mathematik, Informatik, Naturwissenschaften Modellierungs-Schema Abbildung: Abtastung 5 / 47

Wissenschaftliche Software Wissenschaftliche Software - Übersicht Wissenschaftliche Software Was, Warum, Wie? Anforderungen an wissenschaftliche Software Software Design: Planen Schreiben Testen, Debuggen, Tunen Dokumentieren 6 / 47

Wissenschaftliche Software Das Dilemma der wissenschaftlichen Softwareentwicklung Nicht - wissenschaftliche Software ist einfach zu implementieren Ein Durchschnittsprogrammierer würde naturwissenschaftliche Zusammenhänge nicht verstehen Zusammenarbeit der Programmierer und Wissenschaftler Klingt zwar einfach, aber... 7 / 47

Wissenschaftliche Software Kommunikation Abbildung: Kommunikation - [Quelle1] 8 / 47

Wissenschaftliche Software So entwickeln Wissenschaftler ihre eigene Software Abbildung: Softwareentwicklung nach naturwissenschaftlicher Art - [Quelle1] 9 / 47

Wissenschaftliche Software Was ist wissenschaftliche Software? Wissenschaftlich vs. Nicht - wissenschaftlich Wissenschaftlich: Berechnungen komplizierter Gleichungen Unterstützung bei Datenauswertung, Mess-, Steuer - und Regelungstechnik Simulation Nicht - wissenschaftlich: Kontoverwaltung Hotelbuchung Kino - Manager 10 / 47

Wissenschaftliche Software Anforderungen an wissenschaftliche Software Anforderungen an wissenschaftliche Software Zuverlässigkeit Korrektheit Robustheit Genauigkeit Portabilität Effizienz Laufzeit - Effizienz Speicher - Effizienz 11 / 47

Wissenschaftliche Software Anforderungen an wissenschaftliche Software Was ist Zuverlässigkeit? Grad der Wahrscheinlichkeit, mit dem das Programm seine Funktion erfüllt Korrektheit Wenn aus Eingabedaten richtige Ausgabedaten erzeugt werden, dann ist das Programm korrekt Robustheit Grad eines Programmes, mit dem es Fehler erkennt, für den Benutzer verständlich reagiert, aber trotzdem seine Funktionsfähigkeit wahrt Genauigkeit Grad der Übereinstimmung zwischen angezeigtem und exakten Wert 12 / 47

Wissenschaftliche Software Anforderungen an wissenschaftliche Software Portabilität schnelle Entwicklung der Hardware Hardwareunabhängigkeit Softwareunabhängigkeit Anstreben einer hohen Portabilität 13 / 47

Wissenschaftliche Software Anforderungen an wissenschaftliche Software Effizienz Zwei interessante Betrachtungen bei Effizienz: Laufzeit - Effizienz Speicher - Effizienz Effizienz erreichen auf verschiedenen Designebenen: 1 Algorithmen und Datenstrukturen 2 Codeoptimierung 3 Systemsoftware 4 Hardwareumgebung 14 / 47

Wissenschaftliche Software Anforderungen an wissenschaftliche Software Effizienz und Zuverlässigkeit Unzuverlässige effiziente Software ist WERTLOS! Höhere Kosten durch unzuverlässige Software Einzelne, unzuverlässige Programmteile können Entwicklungsaufwand stark erhöhen Effizienz ist notwendig! 15 / 47

Wissenschaftliche Software Software Design Software Design - Das generelle Vorgehen 1 Planung 2 Schreiben 3 Debug 4 Test 5 Profiling Herstellen einer Struktur Bibliotheken Programmiersprache(n) wählen Portabilität sicherstellen GNU - Debugger und Valgrind Hardware: Joint Test Action Group 6 Dokumentation 16 / 47

Wissenschaftliche Software Software Design Profiling Laufzeitverhalten analysieren Performance - Tuning Geschwindigkeit, Speicherausnutzung, Nebenläufigkeit (modern) Es existieren verschiedene Analysetechniken, u.a. Statistische Auswertung Instrumentierung Beispiel: gprof 17 / 47

Wissenschaftliche Software Software Design Last But Not Least: Die Dokumentation Kommentare Testdokumentation Dokumentation der Entwicklung Aufgabenstellung Aufgabenlösung Ablaufplan und Vorgehensmodell Dokumentation der Programmfunktionen für den Benutzer Verwendung des Softwareprodukts mögliche Fehlermeldung und ihre Behandlung 18 / 47

Wissenschaftliche Software Software Design Beispiele für Bibliotheken Builtin C/C++ Bibliothek stdio.h math.h stdlib.h time.h GNU Scientific Library Komplexe Zahlen Arithmetik Vektor und Matrizen Rechnung Interpolation, Differentiation, Integration Schnelle Fouriertransformation Weitere Bibliotheken: Numerical Recipes 19 / 47

Wissenschaftliche Software Software Design Programmiersprachen Highlevel: C FORTRAN C++ Skriptsprachen Perl python shell R Symbolische Sprachen Matlab Maple Mathematica Graphische Sprachen LabView 20 / 47

Wissenschaftliche Software Software Design Compiler 2 Phasen werden durchlaufen: 1 Analysephase Scannen Syntaxanalyse semantische Analyse 2 Synthesephase Zwischencodeerzeugung Programmoptimierung Codegenerierung Beispiel : GNU Compiler Collection 21 / 47

Hardware Hardware - Übersicht Hardware Effizienz auf Hardwareebene Speicherhierarchie und Lokalität 22 / 47

Hardware Effizienz auf Hardwareebene Effizienz ist eine der wichtigsten Anforderungen an wissenschaftliche Software! Wie erreicht man Effizienz auf Hardwareebene? Interessant: Speichereffizienz 23 / 47

Hardware Speicherhierarchie Abbildung: Speicherhierarchie 24 / 47

Rechnerarithmetik Rechnerarithmetik - Übersicht Rechnerarithmetik Maschinenzahlen Exkurs - Stellenwertsysteme Gleitkommazahlen IEEE - Standard Rundung und Rundungsfehler 25 / 47

Rechnerarithmetik Maschinenzahlen Rechnerarithmetik - Maschinenzahlen Motivation: Reelle Zahlen sind im Rechner nicht exakt darstellbar Wissenschaftliche Berechnungen sind aber auf reelle Zahlen angewiesen Darstellung der reellen Zahlen als Maschinenzahlen Definition (Maschinenzahlen) Eine endliche Menge M R heißt die Menge der Maschinenzahlen. 26 / 47

Rechnerarithmetik Exkurs - Wie war das nochmal? Kleiner Exkurs - Wie war das nochmal? Grundlage Gegeben: Menge mit b Symbolen B = {0,1,...,b 1} b ist die Basis/Grundzahl bijektive Zuordnung der Ziffern Ziel: Mit Symbolen beliebig große Zahlen darstellen Wert einer Ziffer wird bestimmt durch ihre Position in der Zahl Stellenwertsystem 27 / 47

Rechnerarithmetik Exkurs - Wie war das nochmal? Die b-adische Entwicklung Für natürliche Zahlen: Definition S i = n i=0 a i b i = a 0 + a 1 b 1 +... + a n b n Für ganze Zahlen: Definition S i = ± n i=0 a i b i = ±(a 0 + a 1 b 1 +... + a n b n ) Für rationale Zahlen: Definition S i = ± n i=0 a i b i ± 1 i= a i b i wobei b die Basis der Zahl und a eine Ziffer aus dem Zeichenvorrat bezeichnet. 28 / 47

Rechnerarithmetik Gleitkommazahlen Und was ist mit reellen Zahlen? Darstellung mit: Vorzeichen Basis Mantisse Exponent Idee: Numerisch reelle Zahlen Gleitkommazahlen Erste Annäherung für eine Darstellung: Z = Vorzeichen Mantisse Basis Exponent 29 / 47

Rechnerarithmetik Gleitkommazahlen Eindeutigkeit Darstellung ist nicht eindeutig, z.b.: 123 10 0 = 12.3 10 1 = 1.23 10 2 =... Normalisierung der Zahl: Definition (Normalisierung) Eine Zahl in der Darstellung ist normiert, wenn gilt: Z = Vorzeichen Mantisse Basis Exponent 1 Mantisse < Basis 30 / 47

Rechnerarithmetik Gleitkommazahlen Der IEEE - Standard Computer verwenden das Binärsystem : Basis b = 2 Genauigkeit von 32 Bit (einfach) Genauigkeit von 64 Bit (doppelt) IEEE 754 ist bekanntestes Gleitkommasystem Mantisse Exponent Single 23 Bit 8 Bit Double 52 Bit 11 Bit Tabelle: IEEE 754 - Standard Mantisse ist normiert Hidden Bit Exponent in Exzess/Bias - Darstellung 31 / 47

Rechnerarithmetik Schlussbetrachtung Schlussbetrachtung Erweiterung der Definition der Maschinenzahlen: Definition (Maschinenzahlen II) Eine reelle Zahl x wird im Computer als Gleitkommazahl float(x) M dargestellt in der Form: float(x) = ( 1) s (0.a 1 a 2...a n ) 2 e,a 1 0,s {0,1} Sie kann als 4 - Tupel beschrieben werden: M(2,n,MIN,MAX) wobei n die Anzahl der Nachkommastellen der Mantisse und MIN und MAX die minimale/maximale darstellbare Zahl bezeichnen. 32 / 47

Rechnerarithmetik Rundung Rundung Definition (Rundung) Rundung ist eine Abbildung rd : R M mit M R, wenn die folgenden Bedingungen rd(m) = m, m M und r s rd(r) rd(s), r,s R 33 / 47

Rechnerarithmetik Rundung Rundungsfehler Runden führt zu Rundungsfehlern absoluter Fehler: rd(x) x relativer Fehler: rd(x) x x Abschätzung für den relativen Fehler (ohne Beweis): rd(x) x x σ := 1 2 b1 t 34 / 47

Rechnerarithmetik Rundung Maschinenepsilon Definition Sei x R. Die kleinste positive Zahl c, die man zu x = 1.0 hinzuaddieren kann, sodass rd(1.0 + c) > 1.0 gilt, heißt Maschinenepsilon ε machine und ist ein Maß für die Rechengenauigkeit. 35 / 47

Numerik Numerik - Übersicht Numerik Was ist Numerik? Fehlerbewertungsmechanismen Kondition Stabilität Konsistenz 36 / 47

Numerik Was ist Numerik? Teilgebiet der Mathematik Approximation Fehlerabschätzung - und Minimierung Algorithmen, ihre Bewertung und Optimierung Berechnung mithilfe des Computers Abbildung: Numerische Integration mit Simpson - [Quelle2] 37 / 47

Numerik Kondition - Stabilität - Konsistenz Fehlerabschätzung Grundlegende Fehlerbewertungsmechanismen: Kondition eines Problems Stabilität eines Algorithmus Konsistenz eines Algorithmus 38 / 47

Numerik Kondition - Stabilität - Konsistenz Kondition eines Problems Wie wirken sich Störungen in den Eingabedaten auf das Resultat unabhängig vom gewählten Algorithmus aus? Gegeben: f : D W mit x D Verfälschtes x : x Verfälschtes f(x) : f( x) Datenfehlereffekt: f(x) f( x) Kondition = Empfindlichkeit der Lösung Gute Kondition Schlechte Kondition 39 / 47

Numerik Kondition - Stabilität - Konsistenz Stabilität eines Algorithmus Stabilität: Wie robust ist ein Algorithmus gegenüber von (kleinen) Störungen in den Eingabedaten? Abschätzen des Fehlers: f( x) f( x) Vorwärtsanalyse Rückwärtsanalyse Kondition und Stabilität hängen miteinander zusammen! Dies lässt sich mathematisch zeigen... 40 / 47

Numerik Kondition - Stabilität - Konsistenz Konsistenz eines Algorithmus Konsistenz: Bearbeitet der Algorithmus tatsächlich das Problem oder ein anderes? Gegeben: Kontinuierliche Problemstellung und dessen exakte Lösung Numerische Lösung Schrittweite Ein Verfahren heißt konsistent, wenn es zu jedem Zeitpunkt eine Fehlerbeschränkung in Abhängigkeit von der gewählten Schrittweite gibt. (aus wikipedia.de/konsistenz) 41 / 47

Zusammenfassung Zusammenfassung Die Informatik unterstützt Wissenschaften große Mengen von Informationen zu strukturieren, zu verarbeiten und aufzubereiten An wissenschaftliche Software gibt es unterschiedliche Anforderungen, wie z.b. Effizienz Verständnis über die Hardwareumgebung kann helfen, Programme effizienter zu gestalten Im Rechner werden reelle Zahlen als Gleitkommazahlen abgespeichert Oft muss gerundet werden, dabei entstehen Rundungsfehler Die Numerik bietet Fehlerbewertungsmechanismen, wie z.b. Kondition, Stabilität und Konsistenz 42 / 47

Diskussion/Fazit und Ausblick Diskussion/Fazit und Ausblick Fazit Insgesamt: Sehr interessantes Thema Schwierig: Über (fast) alle Themen einen Überblick geben, ohne zuviel zu erzählen Numerik ist interessant, in einigen Bereichen jedoch schwer zu verstehen, z.b. die Fehlertheorie Ausblick Hardwareteil ist eher klein ausgefallen Nicht geschafft: Hardware der Rechnerarithmetik - Wie erreicht man Bitgenauigkeit? Evtl. eigenes Seminarthema? Wie kann man die Zusammenarbeit zwischen Durchschnittsprogrammieren und Wissenschaftlern verbessern? Gibt es ein geeignetes Vorgehensmodell? 43 / 47

Danke für Eure Aufmerksamkeit! 44 / 47

Quellen Bücher Suley Oliveira, David Stewart (2006) Writing Scientific Software - A Guide To Good Style Cambridge University Press Thomas Huckle, Stefan Schneider (2002) Numerische Methoden Springer, 2. Auflage Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman Compiler Prinzipen, Techniken und Werkzeuge Pearson Studium, 2. Auflage 45 / 47

Quellen (2) Internetseiten und Paper Helmut G. Katzgraber Scientific Software Engineering In A Nutshell http://arxiv.org/ps cache/arxiv/pdf/0905/0905.1628v2.pdf Zahlendarstellungen http://www.math.tu-berlin.de/coma/skript/skript-i- Java/zahlendarstellungen.pdf Numerische Software http://www.dorn.org/uni/sls/kap05/e00.htm Judith Segal, Chris Morris Developing Scientific Software www.computer.org/csdl 46 / 47

Quellen(3) Bildquellen [Quelle1]: Judith Segal, Chris Morris Developing Scientific Software www.computer.org/csdl [Quelle2]: Simpson-Verfahren http://www.sjmp.de/java/numerisches-integrieren-mit-dem-simpsonverfahren/ 47 / 47