Tool Development Process and
Software Engineering
Supun Kamburugamuve
NSF Site Visit, CIB, Bloomington, IN
April 25, 2019
• Software
▪ https://github.com/IU-nanoBio
▪ Links to all projects
• Website
▪ https://nanohub.org/groups/nanobio
• Contact us
▪ iunanobio@googlegroups.com
Overview
Software Development Cycle
1. Use of Open Source Software Development
Guidelines
2. Market Research and Requirements Analysis
3. Tool Design
4. Quality Assurance (Testing, Validation)
5. Software Development
6. Tool Deployment
7. Tool Maintenance
8. Community Development
9. Tool Selection and Monitoring
10. Documentation
Software Development
• Follows the GitHub open source development model
▪ GitHub issues
▪ GitHub releases
▪ GitHub pull request (review then commit)
• Documentation on GitHub & nanoHUB
• Expand internal developer meetings to include users
▪ Create meetups
Nano Micro Macro DIPY/Odyssey/Fury Harp
Pull request
model
Yes Yes Yes Yes No
Unit tests In development In development In development Yes Yes
Validation tests In development In development In development Yes Yes
Functionality
testing / front end
Yes Yes Yes Yes N/A
UIs Rappture / Jupyter Jupyter / Rapture / Python
C++
Jupyter Python N/A, will be Python
Coding standards Yes Yes Yes Yes Yes
Public Forum
URL / Email
nanoHUB forums Gitter nanoHUB “Questions” and
physicell-users google
group
neuroimaging@python.org harp-users@googlegroups.c
om
Public Releases Github releases Github releases GitHub releases Github releases, Anaconda Github Releases
Languages C++, Python C++ C++, Python Python Java / C++ / Python in
development
Tools MPI, OpenMP, Machine
Learning
LLVM, LAPACK, SUNDIALS OpenMP VTK/GLSL Intel DAAL, MPI
Continuous
Builds
Yes WIll be added Yes (for most apps) Yes Yes
Documentation Available in Github and
nanoHub
Yes Yes Yes Yes
Development
method
Uses GitHub model Uses GitHub model Uses GitHub model Uses Github model Uses Github model
Software Engineering Practices
Quality Assurance
• Dedicated engineer for UI and functionality testing
▪ A detailed checklist on test points
▪ Cycle through the checklist each week
▪ Reports issues through GitHub
• Unit tests and integration tests are in development
▪ Will be integrated to Travis builds
In the past two months QA reported
11 issues and 7 of them are fixed
Deployment of Tools
• nanoHUB tools and underlying software frameworks are on
different development cycles
• Rapid releases at initial stages for nanoHUB tools
▪ Tools are small compared to back-end software
▪ We expect tools will move to longer release cycles as they mature
• e.g., PhysiCell cancer-immune model
▪ 4 Releases from February 2019
• Some back-end tools moving to a quick release cycle
xml2jupyter Tool (discussed in Macro slides)
• Provides an example of scripting a template (for nanoBIO
related applications)
▪ lower the barrier for others
▪ more modular (fix bugs and add features just one place)
▪ incorporate common tests, continuous integration, etc.
Documentation & Community
• GitHub documentation
• Tools have documentation on nanoHUB
• Engage with users on nanoHUB forums

Tool Development Process and Software Engineering

  • 1.
    Tool Development Processand Software Engineering Supun Kamburugamuve NSF Site Visit, CIB, Bloomington, IN April 25, 2019
  • 2.
    • Software ▪ https://github.com/IU-nanoBio ▪Links to all projects • Website ▪ https://nanohub.org/groups/nanobio • Contact us ▪ iunanobio@googlegroups.com Overview
  • 3.
    Software Development Cycle 1.Use of Open Source Software Development Guidelines 2. Market Research and Requirements Analysis 3. Tool Design 4. Quality Assurance (Testing, Validation) 5. Software Development 6. Tool Deployment 7. Tool Maintenance 8. Community Development 9. Tool Selection and Monitoring 10. Documentation
  • 4.
    Software Development • Followsthe GitHub open source development model ▪ GitHub issues ▪ GitHub releases ▪ GitHub pull request (review then commit) • Documentation on GitHub & nanoHUB • Expand internal developer meetings to include users ▪ Create meetups
  • 5.
    Nano Micro MacroDIPY/Odyssey/Fury Harp Pull request model Yes Yes Yes Yes No Unit tests In development In development In development Yes Yes Validation tests In development In development In development Yes Yes Functionality testing / front end Yes Yes Yes Yes N/A UIs Rappture / Jupyter Jupyter / Rapture / Python C++ Jupyter Python N/A, will be Python Coding standards Yes Yes Yes Yes Yes Public Forum URL / Email nanoHUB forums Gitter nanoHUB “Questions” and physicell-users google group neuroimaging@python.org harp-users@googlegroups.c om Public Releases Github releases Github releases GitHub releases Github releases, Anaconda Github Releases Languages C++, Python C++ C++, Python Python Java / C++ / Python in development Tools MPI, OpenMP, Machine Learning LLVM, LAPACK, SUNDIALS OpenMP VTK/GLSL Intel DAAL, MPI Continuous Builds Yes WIll be added Yes (for most apps) Yes Yes Documentation Available in Github and nanoHub Yes Yes Yes Yes Development method Uses GitHub model Uses GitHub model Uses GitHub model Uses Github model Uses Github model Software Engineering Practices
  • 6.
    Quality Assurance • Dedicatedengineer for UI and functionality testing ▪ A detailed checklist on test points ▪ Cycle through the checklist each week ▪ Reports issues through GitHub • Unit tests and integration tests are in development ▪ Will be integrated to Travis builds In the past two months QA reported 11 issues and 7 of them are fixed
  • 7.
    Deployment of Tools •nanoHUB tools and underlying software frameworks are on different development cycles • Rapid releases at initial stages for nanoHUB tools ▪ Tools are small compared to back-end software ▪ We expect tools will move to longer release cycles as they mature • e.g., PhysiCell cancer-immune model ▪ 4 Releases from February 2019 • Some back-end tools moving to a quick release cycle
  • 8.
    xml2jupyter Tool (discussedin Macro slides) • Provides an example of scripting a template (for nanoBIO related applications) ▪ lower the barrier for others ▪ more modular (fix bugs and add features just one place) ▪ incorporate common tests, continuous integration, etc.
  • 9.
    Documentation & Community •GitHub documentation • Tools have documentation on nanoHUB • Engage with users on nanoHUB forums