Bestand wählen
Merken

# Sustainable Scientific Software Development

Embed Code
Video lizenzieren

#### Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
hi everyone and ceremonies of and I'm a 3rd year phd student at the University of Southampton and I will say a 2017 Fellow of the Software Sustainability Institute and say I'd like to talk to you date today about sustainable scientific software development and so that's not my motivation for wanting to talk about this and said area in my research I model explosions in space and all he won a more technical title it's the effect of including general activity in models of type 1 x 3 best neutron star but basically explosions in
space and say a bit more detail
out and we can see the gets some random stuff of fervent again it changes
the say got some random data and so if we look at this function and we can kind of we can put some constraints on what we think the answer is the answer is gonna change every times we can't check that all the numbers in this array are equal to another array and
but we can check so we know that the impact is between 0 and 1 say we can check that the output is between 0 and sign off on and we can also check that the mean value here is equality around 0 . 2 to 3 and so if we run this then hurray it works so just tested that we got the limits we expect and checked that the average is what we expect and so that's the way we can deal with randomness but in a way that we can do with randomness in arcade and yet
said the simulations and you off from the simulations what we often do is we take something is continuous and we discretize it's we solve it instead of solving it infinitesimally small points we solve on a grid and but this leads to errors in our solution and it means if you make the grid finer fine age you should be getting a more more accurate solution and and this the accuracy of the solution should improve the order of the algorithm that you've used to solve these equations and and if it's not then it's a good indication the or algorithm has not been implemented correctly and if we look at another example of
this so I'm going to use something called the Trapezium will to solve this integral and severe member you might remember from like sectaries collapse and UPC immoral and this way you kind of divide up the area under into go into related to museums and a new some their areas together and say 0 minus so this integral here an honor array of different resolutions that is then iterated about and then I'm going to calculate the error compared to mining solution say or not and then by then he here I'm going in a plot the errors and see what they look like so here so the errors of the b . 7 unlike cottage in this red line here is i've plotted be squared so I know that each of PC-MOS an algorithm which is order H squared accurate and say because my errors have the same slaves as H squared is the really good indication of my algorithm has been implemented correctly and can and say yes
we could also have issues with numerical errors say because we doing floating-point computations and because the China prox makes me exact maps using and non-exact graphs and it the is likely that will get error is building up and say if we use simple equalities in our testing then is probably not gonna work very well say we can do things here and by kind of doing approximate equalities say functions like case and on light will place and for the race again it if you tests and stuff and not so great the need to make sure you run them frequently and to make sure the continues to be well tested and and we can do this by using and tools such as Travis EI and circles CI and and there are many of the cell that is just a couple I quite like for Python and so these continuous integration tools will readily vinyl tests for you and then report back to results which is really great and say here's a little
example for my code say just very simply Miranda a riddle scripts having it what I wanted to see Ron I said I wanted to run these Python convergence and then is run on a
virtual machine for me and it's told me
right at the very end that way paths say really great I can
set up these tests and pretty much forget about them and every time I pitch changes to get up these will be executed that's really great and
say continues integration is really good because you can
out when but occur much sooner than and therefore we can fix them when they occur rather than waiting months down the line and when the parts that likely to be much more entrenched in arcade and say this is important because and biases the danger here and served I said we can pretty much set up the continuous integration and forget about it and but if you're developing your carried a began add new functionality to OK all the time and and outdated has a pretty
much as is this is no tests and because the 10 you and where the OK is correct duty that well compared to old and benchmark and and so this is not great and the and look and the answer is your testimony cover 20 % of your code there is no guarantee the other 80 % is going work an answer tool that we can use to really check that we are testing all of arcade and not just a small fraction of it is and code coverage tools and someone I quite like his kickoff by a and so
here's lkuko by looks like and for my code here and so if we look into the One I functions and we can see
a highlights all the lines and being executed during the tests and it shows me here there's a little branch in my tri-accept block here which has not been executed in testing and this is important because it is such a was probably written for an edge case and mn and edge cases tends be way OK breaks most often say is a really good way for me to find out and what what tests I should write in high should make sure that all of my code is being tested properly setting and it's
a documentation and so we need to make sure that someone else in our field can set up a page and run it without us having to physically sit down next to them and explain it for them and this is a massive barrier if you have me people entering the village and because it means then are going to be up to run might get started on from experience I can say is like quite alienating and the so we may need to make sure we include comprehensive installation instructions not just instructions for a couple of it see the computer systems but instructors will run on standard Linux systems say anyone with the right hardware run OK and we need to make sure he adds to the code itself should be documented so we use sensible function names variable names comments and so we have self-documenting code and so this means that if you got a really complex page people come look at the code itself and understand without having to be 2 pages and pages of documentation and a really good thing in science fairs and is having user guides with examples which demonstrate usage and scissormen I found for my Python creates is really that's really great this is having Jupiter notebooks and say
something that I did when I write like a Lagrange using as a demonstration here and we very Egyptian notebooks which kind of explain what the physics behind the code is and then we then run the period and we show you what results should look like from arcade and and then you can actually use these end with the docks documentations you can use in the Sphinx and to convert this into and money down
and then you can them render it in adults and this is a really great way to kind of build up user guides and with example cases for your users can
so funny distribution say as at the at the beginning you might remember that we need to make sure that our code is still and we can still find in 5 10 20 years time and say offensive to me he could findable was making a difference rules in the 1st place and this is little caveat here understand if you're working in a sensible sensitive environments may for working in and like the medicine industry of something like that then you might have part proprietary information you can't share but if your modeling black holes it for me open a get rich off black code so it doesn't really make sense much sense to me for this code not to be open source and you need to make sure they will always be able to be found say having at DOI and seduced object identifier is a way to provide a common link OK at which point disappear with time and we also need to make sure that we can the produce the runtime environment for arcade and say this is some stuff like making sure that and when people run your care they and have the right libraries and schools on the right versions of the library so the decoding anyone's and he . 70 to make sure that people are aware of that and say an easy way that we can do this and Fry uses by packaging of cage and subtracting Ching and things like docker containers for using corner environments and and things like that and basically your installation should be as painless as possible so it shouldn't be that people have to write lines and lines in the online and they should just be up to like a bright make and everything builds and and also it's really great to try and limit reliance on non open source libraries material this is again crates of barrier new users and so is not really very good practice and also you have no idea that this morning cancels material still going to be there in 5 years time and again so to conclude we need to make sure lock software is future proof and because if it's not future-proof this been Hong scientific that progress and we need to apply the scientific method to software development and Cook competition tational science is the science so we should really treated like this and and code should only be entrusted if they've been demonstrated to be reproducible so anyone can get anyone in your field can go online you collocate instill that when you run it themselves and the use of results and the need to test it to prove to you that any new results they get are actually to be trusted and you should document your page so that people actually understand what it's doing and contend she happen and develop themselves and so if anything I've said here is interested you can I really recommend checking out the southwestern EBT Institute website and because they have those of guides up there and which really as a stuff and a lot more detail b and said thank you and thank
Soundverarbeitung
Informationsmodellierung
Flächeninhalt
Software
Datentyp
t-Test
Softwareentwickler
Explosion <Stochastik>
Drei
Raum-Zeit
Mittelwert
Resultante
Algorithmische Zahlentheorie
Stereometrie
Bit
Umsetzung <Informatik>
Browser
Formale Grammatik
Versionsverwaltung
Computer
Maschinensprache
Kontinuierliche Integration
Computeranimation
Richtung
Arithmetischer Ausdruck
Softwaretest
Einheit <Mathematik>
Maschinensprache
Relativitätstheorie
Kurvenanpassung
Phasenumwandlung
Einflussgröße
Softwaretest
Distributionstheorie
Nichtlinearer Operator
Datentyp
Gebäude <Mathematik>
Ruhmasse
Quellcode
Frequenz
Software
Kollaboration <Informatik>
Datenfeld
Versionsverwaltung
Explosion <Stochastik>
Software Engineering
Message-Passing
Lesen <Datenverarbeitung>
Maschinencode
Web Site
Subtraktion
Decodierung
Wellenpaket
Kontrollstruktur
Physikalismus
Mathematisierung
Algorithmische Zahlentheorie
Open Source
Informationsmodellierung
Datensatz
Arithmetische Folge
Supercomputer
Software
Datentyp
Programmbibliothek
Luenberger-Beobachter
Softwareentwickler
Informatik
Implementierung
Raum-Zeit
Datenmodell
Orbit <Mathematik>
Frequenz
Binder <Informatik>
Elektronische Publikation
Integral
Flächeninhalt
Mereologie
Komponententest
Desintegration <Mathematik>
Gleichungssystem
Maschinensprache
Raum-Zeit
Computeranimation
Homepage
Algorithmus
Dämpfung
Softwaretest
Lineare Regression
Kontrollstruktur
Sinusfunktion
Softwaretest
Dichte <Stochastik>
Kategorie <Mathematik>
Gebäude <Mathematik>
Güte der Anpassung
LIGO <Astronomie>
Störungstheorie
Kontextbezogenes System
Rauschen
Bitrate
Kollaboration <Informatik>
Software
Menge
Einheit <Mathematik>
Ein-Ausgabe
Ordnung <Mathematik>
Gravitationswelle
Fehlermeldung
Zeichenkette
Mathematische Größe
Decodierung
Kontrollstruktur
Mathematisierung
Geräusch
Äquivalenzklasse
Interrupt <Informatik>
Algorithmische Zahlentheorie
Zufallszahlen
Diskrete Simulation
Indexberechnung
Ganze Funktion
Informatik
Algorithmus
Verzweigendes Programm
Zufallsgenerator
Zeichenkette
Summengleichung
Auswahlaxiom
Komplex <Algebra>
Gamecontroller
ICC-Gruppe
Energieerhaltung
Mittelwert
Resultante
Punkt
Versionsverwaltung
NP-hartes Problem
Eins
Font
Einheit <Mathematik>
Fahne <Mathematik>
Maschinensprache
Randomisierung
Hacker
Umwandlungsenthalpie
Lineares Funktional
Nichtlinearer Operator
Parametersystem
Zentrische Streckung
Reihe
Systemaufruf
Ähnlichkeitsgeometrie
Plot <Graphische Darstellung>
Quellcode
Ein-Ausgabe
Frequenz
Systemaufruf
Funktion <Mathematik>
Information
Versionsverwaltung
Message-Passing
Maschinencode
Physikalismus
Interaktives Fernsehen
Zahlenbereich
Gebäude <Mathematik>
Chaotisches System
Physikalische Theorie
Physikalisches System
Mittelwert
Inverser Limes
Softwareentwickler
Lineare Regression
Magnetooptischer Speicher
Physikalisches System
Quick-Sort
Uniforme Struktur
Flächeninhalt
Mereologie
Parametersystem
Mittelwert
Nebenbedingung
Lineares Funktional
Pell-Gleichung
Mathematisierung
Zahlenbereich
Hochdruck
Computeranimation
Sinusfunktion
Zufallszahlen
Differenzkern
Funktion <Mathematik>
Mittelwert
Ein-Ausgabe
Randomisierung
Inverser Limes
Funktion <Mathematik>
Algorithmus
Fehlermeldung
Subtraktion
Punkt
Gleichungssystem
Plot <Graphische Darstellung>
Akkumulator <Informatik>
Teilbarkeit
Computeranimation
Spannweite <Stochastik>
Integral
Softwaretest
Algorithmus
Flächeninhalt
Diskrete Simulation
Plot <Graphische Darstellung>
Indexberechnung
Ordnung <Mathematik>
Simulation
Fehlermeldung
Bildauflösung
Mittelwert
Softwaretest
Resultante
Algorithmus
Lineares Funktional
Explosion <Stochastik>
Approximationstheorie
Konfiguration <Informatik>
Kreisfläche
Kontinuierliche Integration
Zellularer Automat
Maschinensprache
Ungerichteter Graph
Kardinalzahl
Kontinuierliche Integration
Computeranimation
Mapping <Computergraphik>
Softwaretest
Differenzkern
Fahne <Mathematik>
Maschinensprache
Maschinencode
Skript <Programm>
Simulation
Fehlermeldung
Mittelwert
Explosion <Stochastik>
Hash-Algorithmus
Dokumentenserver
Mathematisierung
Bildschirmfenster
Kontinuierliche Integration
Computeranimation
Open Source
Virtuelle Maschine
Physikalisches System
Softwaretest
Maschinensprache
Maschinencode
Softwaretest
Inklusion <Mathematik>
Lineares Funktional
Elektronische Publikation
Web log
Integral
Lesezeichen <Internet>
Mereologie
Ein-Ausgabe
Bildschirmsymbol
Versionsverwaltung
Simulation
Mittelwert
Bruchrechnung
Lineares Funktional
Explosion <Stochastik>
Gebäude <Mathematik>
Maschinensprache
Kontinuierliche Integration
Computeranimation
Softwaretest
COM
Fahne <Mathematik>
Maschinensprache
Maschinencode
Drahtloses lokales Netz
Webforum
Wellenlehre
Maschinensprache
Komplex <Algebra>
Computeranimation
Homepage
Variable
Notebook-Computer
Maschinensprache
Benutzerhandbuch
Kontrollstruktur
Ideal <Mathematik>
Feuchteleitung
Softwaretest
Lineares Funktional
Hardware
Elektronischer Programmführer
Güte der Anpassung
Stichprobe
Verzweigendes Programm
Physikalisches System
p-Block
Variable
Datenfeld
Funktion <Mathematik>
Datenverarbeitungssystem
Standardabweichung
Resultante
Mereologie
Physikalismus
Maschinensprache
Aggregatzustand
Computeranimation
Homepage
RFID
Datensichtgerät
Physikalisches System
Softwaretest
Maschinensprache
Notebook-Computer
Verweildauer
Maschinencode
Konstante
Benutzerhandbuch
Normalvektor
Tabelle <Informatik>
Zustandsgleichung
Tablet PC
Frequenz
Garbentheorie
Funktion <Mathematik>
Notebook-Computer
Term
Resultante
Distributionstheorie
Einfügungsdämpfung
Punkt
Gruppenkeim
Versionsverwaltung
Schreiben <Datenverarbeitung>
Maschinensprache
Statistische Hypothese
Computeranimation
Homepage
Eins
Internetworking
Digital Object Identifier
Maschinensprache
Elektronischer Programmführer
Spielkonsole
Beamer
Feuchteleitung
Softwaretest
Distributionstheorie
Dokumentenserver
Laufzeitsystem
Web Site
Programmierumgebung
Quellcode
Kontextbezogenes System
Software
Generator <Informatik>
Druckverlauf
Datenfeld
Rechter Winkel
Beweistheorie
Identifizierbarkeit
Projektive Ebene
Information
Programmierumgebung
Beweistheorie
Lesen <Datenverarbeitung>
Standardabweichung
Web Site
Subtraktion
Maschinencode
Decodierung
n-Tupel
Kombinatorische Gruppentheorie
Term
Open Source
Informationsmodellierung
Arithmetische Folge
Software
Programmbibliothek
Inverser Limes
Softwareentwickler
Hilfesystem
Schreib-Lese-Kopf
Rechenzeit
Open Source
Schlussregel
Binder <Informatik>
Quick-Sort
Inverser Limes
Office-Paket
Objekt <Kategorie>
Patch <Software>
Digital Object Identifier
Mereologie