sustainable software development in an academic setting€¦ · 2 hartwig anzt: sustainable...
TRANSCRIPT
![Page 1: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/1.jpg)
KIT – The Research University in the Helmholtz Association
Hartwig Anzt, Terry Cojean, Thomas Grűtzmacher, Pratik Nayak, Mike TsaiSteinbuch Centre for Computing (SCC)
www.kit.edu
SustainableSoftwareDevelopmentinanAcademicSetting4thInternationalSymposium onResearchandEducationofComputational Science(RECS)University ofTokyo,October1st,2019
Theseslidesareavailableunder:https://hartwiganzt.github.io/slides/SustainableSoftwareDevelopment.pdf
![Page 2: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/2.jpg)
2 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
What we cover today
• Versioningsystems
• Git workflow
• Git hostingsites
• Continuous Integration(CI)
• GitLab runners
• AutomatedTesting
• UnitTestingwithGoogletest
• SoftwareDocumentationwithDoxygen
Tointeractivelyparticipate inthiscourse,youneedaGitLab account.
• Pleasecreateanaccount(chooseyournamecarefully!)• Pleaselogin• https://gitlab.com/
PratikNayakTerryCojean ThomasGrützmacher
TobiasRibizel
Interactivewebinarwiththehelpof
Forcompleteinteractiveparticipation(onLinuxSystems):
apt-get install git cmake g++ gcovr
MikeTsai
![Page 3: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/3.jpg)
3 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
What is a version control system?
Versioncontrolsystemfortrackingchangesincomputerfiles.
![Page 4: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/4.jpg)
4 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
What is a version control system?
• Distributedversioncontrol
• Coordinatesworkbetweenmultipledevelopers
• Whomadewhatchangesandwhen
• Revertbackatanytime
• Localandremoterepos
Versioncontrolsystemfortrackingchangesincomputerfiles.
ü Keepstrackofcodehistory
ü Takes“snapshots”ofyourfiles
ü Youdecidewhentotakeasnapshot bymakinga”commit”
ü Youcanvisitanysnapshotatanytime
![Page 5: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/5.jpg)
5 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Git Versioning System
Ø git init //Initializelocalgit repository
Ø git add*files //Addfile(s)tosnapshot
Ø git status //Checkchangesnotyetinthesnapshot
Ø git commit*files //Takesnapshot (commitchanges)Ø git commit–m‘putacommentonthiscommit’*files
Git CheatSheet:https://www.git-tower.com/blog/git-cheat-sheet/
![Page 6: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/6.jpg)
6 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Git Versioning System
Ø git init //Initializelocalgit repository
Ø git add*files //Addfile(s)tosnapshot
Ø git status //Checkchangesnotyetinthesnapshot
Ø git commit*files //Takesnapshot (commitchanges)Ø git commit–m‘putacommentonthiscommit’*files
LocalRepository
Git CheatSheet:https://www.git-tower.com/blog/git-cheat-sheet/
![Page 7: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/7.jpg)
7 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Git Versioning System
Ø git init //Initializelocalgit repository
Ø git add*files //Addfile(s)tosnapshot
Ø git status //Checkchangesnotyetinthesnapshot
Ø git commit*files //Takesnapshot (commitchanges)Ø git commit–m‘putacommentonthiscommit’*files
Ø git push //Pushlocalsnapshotstoremoterepo
Ø git pull //Getlatestsnapshot fromremoterepo
Ø git clone*path/to/repo //CloneanexistingremoterepositoryRemoteRepository
LocalRepository
Git CheatSheet:https://www.git-tower.com/blog/git-cheat-sheet/
![Page 8: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/8.jpg)
8 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Git Hosting Sites
• GitHub
• GitLab
• Bitbucket
• … https://en.wikipedia.org/wiki/Comparison_of_source-code-hosting_facilities
WemayjustchooseGitLab forthiscourse• Pleasecreateanaccount(chooseyournamecarefully!)• Pleaselogin• https://gitlab.com/
Theyoffertheenvironmentfortheremoterepository.
![Page 9: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/9.jpg)
9 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Git Hands-On
1. WecreateanAccountatGitLab andlogin.
2. IcreateaprojectonGitLab (\[email protected]:hanzt/recs)
3. Iaddafirstsourcefileandmakeitapublicrepository
4. Youallcloneortheproject:
git clone [email protected]:hanzt/recs
5. Youaddyournametothelocalversionofcontributors.txt
6. Youcheckyourchanges:
git diff
7. Youcommityour localchanges:
git commit –m ‘add my name’ contributors.txt
8. Youpushyourlocalchangestotheremoterepository:
git push origin master
9. Youfix”mergeconflicts”….
![Page 10: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/10.jpg)
10 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Continuous Integration (CI)
clone
• Howdoyoufindoutthecodeisbroken?• Howdowefindoutwhowhichcode
integration introducedthebug?• Howcanwemakesureeverythingworks
atanypointintime?
Sometimes,someoneintroducesabugthatbreaksthecode…
![Page 11: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/11.jpg)
11 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Continuous Integration (CI)
Weneedamechanismthatconstantlychecksthefunctionalityofthemaster“branch”.
clone
ContinuousIntegration
• Howdoyoufindoutthecodeisbroken?• Howdowefindoutwhowhichcode
integration introducedthebug?• Howcanwemakesureeverythingworks
atanypointintime?
Sometimes,someoneintroducesabugthatbreaksthecode…
• Setsupapre-definedenvironment;
• Clonestheremoterepositoryonaserver;
• Triestocompileandrunallpre-definedtests;
• Reportstheoutcome;
![Page 12: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/12.jpg)
12 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Continuous Integration on GitLab
• GitLab supportsGitLab runnersasCIfeature.
• Theycanbeconfiguredviaaddingthefile.gitlab-ci.yml
https://docs.gitlab.com/ee/ci/yaml/
• GitLab runneraresetupviawebinterface.
example.gitlab-ci.yml
LoadimageofOS
UpdateOS
Installpackagesneeded:git cmake g++gcovr
Createdirectory
CallCMake
Buildlibrarygcov checksunittestcoverage
![Page 13: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/13.jpg)
13 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Software TestingAutomatedtesting:Thepracticeofwritingcodetotestthecode,andthenrunthosetestsinanautomatedfashion.
ProductionCode TestCode
![Page 14: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/14.jpg)
14 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Integrationtests:Checktheapplicationsfunctionalitywithitsexternaldependencies.
• Givemoreconfidenceincomplexapplication.• Testsunits/classesaswhole.
End-to-Endtests:Checktheapplicationsfunctionalitywithitsexternaldependenciesanduserinput.
• Testcompleteworkflowandapplicationinteraction.• Veryslowandbrittle.
Software TestingAutomatedtesting:Thepracticeofwritingcodetotestthecode,andthenrunthosetestsinanautomatedfashion.
ProductionCode TestCode
Unittests:Checkthefunctionalityandvalidityofeachbuildingblockwithout itsexternaldependencies.
• Trackdownbugs
Many.Easy-to-write.ExecuteFast.
![Page 15: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/15.jpg)
15 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Integrationtests:Checktheapplicationsfunctionalitywithitsexternaldependencies.
• Givemoreconfidenceincomplexapplication.• Testsunits/classesaswhole.
End-to-Endtests:Checktheapplicationsfunctionalitywithitsexternaldependenciesanduserinput.
• Testcompleteworkflowandapplicationinteraction.• Veryslowandbrittle.
Software TestingAutomatedtesting:Thepracticeofwritingcodetotestthecode,andthenrunthosetestsinanautomatedfashion.
ProductionCode TestCode
Unittests:Checkthefunctionalityandvalidityofeachbuildingblockwithout itsexternaldependencies.
• Trackdownbugs
Many.Easy-to-write.ExecuteFast.
Fewer.Dependencies.
![Page 16: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/16.jpg)
16 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Integrationtests:Checktheapplicationsfunctionalitywithitsexternaldependencies.
• Givemoreconfidenceincomplexapplication.• Testsunits/classesaswhole.
End-to-Endtests:Checktheapplicationsfunctionalitywithitsexternaldependenciesanduserinput.
• Testcompleteworkflowandapplicationinteraction.• Veryslowandbrittle.
Software TestingAutomatedtesting:Thepracticeofwritingcodetotestthecode,andthenrunthosetestsinanautomatedfashion.
ProductionCode TestCode
Unittests:Checkthefunctionalityandvalidityofeachbuildingblockwithout itsexternaldependencies.
• Trackdownbugs
Many.Easy-to-write.ExecuteFast.
Few.Complex.
Fewer.Dependencies.
![Page 17: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/17.jpg)
17 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Unit tests with Googletest
• Frameworktofacilitateunittesting.
• https://github.com/google/googletest
Let’sdoanexample.
Muchofthismaterialistakenfrom NikolaosPothitoshttp://cgi.di.uoa.gr/~pothitos/https://github.com/pothitos/gtest-demo-gitlab
![Page 18: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/18.jpg)
18 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
Software Documentation
• Automatedcodedocumentationtool.
• Convertscommentsinsourcecodeintodocumentation.
• HTML-oriented.
• http://www.doxygen.nl/
• https://github.com/doxygen/doxygen.git
Doxygen is the de facto standard tool for generatingdocumentation from annotated C++ sources, but it alsosupports other popular programming languages such as C,Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, andUNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to someextent D.
Example:https://www.dealii.org/current/doxygen/deal.II/classTorusManifold.html
![Page 19: Sustainable Software Development in an Academic Setting€¦ · 2 Hartwig Anzt: Sustainable Software Development in an Academic Setting 10/01/2019 What we cover today • Versioning](https://reader033.vdocument.in/reader033/viewer/2022051810/601754070cb5584b1d7fa393/html5/thumbnails/19.jpg)
19 10/01/2019Hartwig Anzt:SustainableSoftwareDevelopmentinanAcademicSetting
References & Further Reading
https://bssw.io/
• https://www.git-tower.com/blog/git-cheat-sheet/• https://github.com/google/googletest• https://github.com/pothitos/gtest-demo-gitlab• https://docs.gitlab.com/ee/ci/yaml/• http://www.doxygen.nl/
Theseslidesareavailableunder:https://hartwiganzt.github.io/slides/SustainableSoftwareDevelopment.pdf