NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
National Alliance for Medical Image Computing Core 1b – Engineering 5 Aims / 5 Platforms Architecture – tools, operating paradigms, reporting mechanisms, integration points End-user platform – interactive methods and information visualization for longitudinal analysis, exploratory data analysis, and translational research Computational platform – stream processing, cloud computing, statistical analysis, informatics, machine learning Data management – non-imaging and derived data, DICOM and cloud services Software engineering and software quality – navigable timeline for revision control, build, test, documentation and release
National Alliance for Medical Image Computing Software Process Supporting ease-of-developing while promoting community standards Developer Desires Focus on implementing an algorithm Simple code base Developer documentation Large collection of building blocks Implement and move-on Developer Desires Focus on implementing an algorithm Simple code base Developer documentation Large collection of building blocks Implement and move-on Community Desires Stable application Ease-of-use (friendly GUI) End-user documentation Performs as expected Community Desires Stable application Ease-of-use (friendly GUI) End-user documentation Performs as expected
National Alliance for Medical Image Computing Slicer3 Success = High Expectations = Slicer4 Challenge
National Alliance for Medical Image Computing NA-MIC Kit Software Process Tools Cmake and CPack – Cross-platform build control from a single configuration file – Release – 1900 downloads per day – Users: KDE, Blizzard (WoW), NVidia DriversS – Super-build – Brings-in external libraries with little effort – “building blocks” for developers – VTK, ITK, Qt, Python
National Alliance for Medical Image Computing NA-MIC Kit Software Process Tools CDash and CTest – Regression testing on multiple platforms: – OS, CPU, Compilers – Over 100 projects freely hosted on cdash.org – Fetches data from servers for testing – Reporting per module – Upload binaries from clients to Midas/CDash
National Alliance for Medical Image Computing NA-MIC Kit Expansion -Qt -Supported by a massive community -CTK (commontk.org) -Medical application toolkit (Qt, DCMTK) -Python -Scipy -Numpy -NiPyPe -PythonQt -SimpleITK -Focus on algorithm -Large number of building blocks -Ease-of-use
National Alliance for Medical Image Computing Ongoing work -GUI Testing (from ParaView) -Computer-Assisted Documentation -Focus on Modules -Adopt ITKv4 software practices -Git: Next/Master Branches -Modularity -Document and distribute external modules -Python and C++
National Alliance for Medical Image Computing Software Process Supporting ease-of-developing while promoting community standards Developer Desires Focus on implementing an algorithm Simple code base Developer documentation Large collection of building blocks Implement and move-on Developer Desires Focus on implementing an algorithm Simple code base Developer documentation Large collection of building blocks Implement and move-on Community Desires Stable application Ease-of-use (friendly GUI) End-user documentation Performs as expected Community Desires Stable application Ease-of-use (friendly GUI) End-user documentation Performs as expected
National Alliance for Medical Image Computing Core 1b – Engineering 5 Aims / 5 Platforms Architecture – tools, operating paradigms, reporting mechanisms, integration points End-user platform – interactive methods and information visualization for longitudinal analysis, exploratory data analysis, and translational research Computational platform – stream processing, cloud computing, statistical analysis, informatics, machine learning Data management – non-imaging and derived data, DICOM and cloud services Software engineering and software quality – navigable timeline for revision control, build, test, documentation and release