Software development with continuous integration · 2012-11-01 · Software development with...

19
Technische Universität München Forschungseinrichtung Satellitengeodäsie 1 Martin Ettl Software development with continuous integration Alexander Neidhardt (FESG) [email protected] Martin Ettl (FESG/MPIfR) [email protected]

Transcript of Software development with continuous integration · 2012-11-01 · Software development with...

Page 1: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie1Martin Ettl

Software development with continuous integration

Alexander Neidhardt (FESG)[email protected]

Martin Ettl (FESG/MPIfR)[email protected]

Page 2: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie2Martin Ettl

A critical view on scientific software

Tendency to become complex and unstructured Highly specialized for dedicated purposes (e.g. PhD-thesis) Undocumented, unreadable, not maintainable code Error-prone, not well tested, not optimized realizations Written in different computer languages

A survey of nearly 2000 researchers showed how coding has become important part of researchers toolkit: 38 % spend at least one fifth of their time developing

software But only 47 % have a good understanding of software

testingInformation taken from: Nature 467, 775-777 (2010) | doi:10.1038/467775a

Page 3: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie3Martin Ettl

General rules to improve quality

Use a software version-control system (cvs, svn, git, …) Put source code, raw data files, parameters and other

primary material into it to record what you did, and when.

Write testable software: Build large code from smaller, easily testable modules.

Test the software: Collect tests and automate the testing.

Encourage sharing the software: Others will use your software on different machines for

maybe different purpose. This normally reveals hidden bugs.

Tips to make scientific software more robust:

Information taken from: Nature 467, 775-777 (2010) | doi:10.1038/467775a

Page 4: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie4Martin Ettl

Scientific software

- Reduction to a few software languages (C/C++,Perl)- Style guide with coding layout and coding policies- Usage of automated code formatting tool- Use of documentation generation- Automated code tests and inspections (standardized Makefiles)- Write a unit-test for each change - Test on several platforms and architectures with multiple compilers- Activate all possible compiler -W flags and reduce warnings- Version controlled software development- Update and commit changes every day to version control system- Offering of tested, open source toolboxes (e-RemoteCtrl, SysMon)

The principles we follow in software development:

SLR VLBI SysMon

Page 5: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie5Martin Ettl

Scientific Software

The Continuous Integration software development method

Page 6: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie6Martin Ettl

nightlybuild

staticanalysis

docgenerator

beautifierrun

unittests

The Continuous Integration software development principle

Page 7: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie7Martin Ettl

The Continuous Integration software development method

- Static program analysis (cppcheck)- Spell check of program and text files (codespell)- Extracting of development information (StatSVN)- Find non-reentrant functions in code (nsiqcppstyle)- Find security problems (flawfinder)- Detect common printf/scanf format errors (pscan)- Generate developer documentation (doxygen)- Detect redundant files in the repository (own development)

C/C++

Candidate under evaluation:

Static analysis: splint,

Dynamic analysis: clang (address sanity checker)

Usage of open-source tools:

Page 8: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie8Martin Ettl

Continuous Integration as a supporting service

Page 9: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie9Martin Ettl

The Continuous Integration software development method- Current project state overview -

Page 10: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie10Martin Ettl

The Continuous Integration software development method

Page 11: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie11Martin Ettl

The Continuous Integration software development method

Page 12: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie12Martin Ettl

The Continuous Integration software development method

Page 13: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie13Martin Ettl

The Continuous Integration software development method

Page 14: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie14Martin Ettl

Doxygen

The Continuous Integration software development method

Page 15: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie15Martin Ettl

The Continuous Integration software development method- unit-testing -

Page 16: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie16Martin Ettl

The Continuous Integration software development method- unit-testing -

Page 17: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie17Martin Ettl

Experience

Page 18: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie18Martin Ettl

Experience

e-RemoteCtrl

Wettzell Toolbox

Do not miss our e-RemoteCtrl demonstration at lunchtime today!

Page 19: Software development with continuous integration · 2012-11-01 · Software development with continuous integration Alexander Neidhardt (FESG) neidhardt@fs.wettzell.de Martin Ettl

Technische Universität München

Alexander Neidhardt Forschungseinrichtung Satellitengeodäsie19Martin Ettl

Thank you

The service is also available for your software.http://www.econtrol-software.de

Geodetic Observatory Wettzell during Cont11