Software Process for Distributed Teams KITWARE, Inc.
"An expert is a man who has made all the mistakes which can be made, in a narrow field." Niels Bohr
Overview Insight Toolkit ITK Insight Journal Image Guided Surgery Toolkit IGSTK National Alliance for Medical Image Computing NAMIC
The Insight Toolkit Publicly funded NLM-NIH : $13M 6 Contractors and 4 Subcontractors 3 Commercial companies and 7 Universities 50 Unique developers 4 Years of development 2 Years of maintenance (so far) 41 platforms ( software + hardware ) 700 C++ Classes 1600 source code files 500 K lines of code
ITK Developers
Insight Toolkit Software Process
Communication Weekly TCons Users Mailing List Instant Messaging Developers Meetings Tutorials at Conferences BOF at Conferences NetMeeting FTP for Data Developers Users Dev. Mailing List Wiki
ITK Software Process RefactoringNew Features Insight Journal Paper Online Public Reviews Wiki Proposal Technical Committee CVS Commit Code Reviews
Wiki Proposals
The Insight Journal
Technical work must be reproducible Papers should be publicly accessible Peer-Review process must be open Fully Electronic publishing
Open Science Reproducibility requires sharing – Source code – Images – Parameters Open source – Existing algorithms provide services – New algorithms made available to others
Insight Journal Submission Code Input Data Journal Repository Web Site Results Data Author Build Machines PDF doc
Insight Journal Manager Author Submits Project DSpace Stores Project Automatic Testing Environment Posts Results Dashboard Submits Entry Reviewer Reviews Project Process Flow Sends Code
Online Paper – Open Reviews
NAMIC Software Process
NAMIC Structure
Core 1 - Algorithms Harvard Georgia TechUNC UtahMIT Segmentation Registration Foundational Methods Structural Features and Statistics Connective Features and Statistics 1. Shape and Atlas Based Segmentation 2. Statistical Shape Analysis 3, DTI Connectivity Analysis 1. Diffusion-based Registration 2.Group Effect Maps 3. Automatic Segmentation 1. DTI Processing 2. Surface Processing 3. PDE Implementations 1. Combined Statistical/PDE Methods 1. Quantitative DTI Analysis 2. Cross-Sectional Shape Analysis 2. Stochastic Flow Models
Core 2 - Engineering GE IsomicsUCSD UCLAKitware Software Integration Software Engineering Software Quality Software Engineering Tools Data Access Tools 1. Cross-platform Build 2. Cross-platform Distribution 3. Cross-language API’s1. Software Architecture2. Software Process3. Software Quality1. Graphical programming interfaces 2. Coordinate pre-compiled tools 3. Data format interpreters1. DBP Applications 1. Grid Middleware 2. Data Grid 2. Application Methodology Distributed Computing Applications 3. Data Mediation3. Application Quality Assurance
Core 3 – Biological Sciences Harvard Dartmouth 1. Fronto-Temporal Connections 2. Cognitive and Behavioral Data UCI U.Toronto 1. Brain Regions Involved 2. Clinical Cognitive and Genetic Data
Support Cores (# 4-7) Service, Training Dissemination Crucial support for the scientific and engineering enterprise Support core PI’s also have strong scientific credentials Collaboration history through BIRN and ITK
Training
Dissemination: Events
Good Software should be easy to teach !
The NAMIC Philosophy Open Source + Open Data = Open Science
NAMIC Software Process Algorithm Developer Software Engineer Insight Journal Paper Programming Week Phone / IM Collaboration Subversion/CVS Sandbox Bottomless Pit of Useless Research ITK / VTK Slicer Wiki Project Page
IGSTK Software Process
IGSTK Team Georgetown University UNC Chapel Hill Atamai Canada Kitware * Subcontracts PI STTR – NIH Primary
Design - Implementation Process Surgical Procedure Workflow Analysis Factorizing Components Wiki Page Requirements Wiki Page Design Sandbox Version Code Reviews CVS Commit Maintenance
Traceability – FDA Process Requirements Bugs Bug Tracking Database CVS Commits Logs
Team Coordination
Design Discussions - Wiki
Requirements - Wiki
Agile yet Strict Developers Discussions – Tcon, IM, Mailing List, Wiki Code Reviews CVS Sandbox CVS Main Wiki Proposals Bug Reports
Code Reviews - Wiki
Bugs - CVS Commits linkage
“Though a program be but three lines long, someday it will have to be maintained." The Tao of Programming
End
NA-MIC-Organization Structure
Image Processing Method Algorithm Input Image(s) Parameters Output Image(s)
Benefits of the Insight Journal Allows sharing your Source Code – Faster and larger impact on the community Immediate feedback from Readers and Reviewers – Open Dialog / Forum No Limitations – No page limitations – No limit or charges for colour figures – Accepting additional electronic material
Benefits of the Insight Journal Indexed by Google Post revisions of papers and code Richer reader’s experience – Source code available – Original parameters and images available – Reader can try on their own data Accepts practical contributions that are too small for traditional full Journal Papers
or... How to develop software with programmers located in distant sites… without killing each other