IGT Software Design and Process - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

IGT Software Design and Process

Description:

NA-MIC. National Alliance for Medical Image Computing. http://na-mic.org. IGT ... that use containers and iterators to create efficient, fundamental algorithms. ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 28
Provided by: nam90
Category:

less

Transcript and Presenter's Notes

Title: IGT Software Design and Process


1
IGTSoftware Design and Process
  • Bill Lorensen
  • GE Research

2
Outline
  • Background
  • Design Principles
  • Software Process
  • Challenges

3
Open Source Menu for Success
  • A Community with a common vision
  • A pool of talented and motivated
    developers/scientists
  • A mix of academic and commercial
  • An organized, light weight approach to software
    development
  • A leadership structure
  • Communication
  • A business model

4
Guiding Principles
  • Open is good
  • Proprietary is bad
  • Reuse is good
  • NIH is bad
  • Modularity is good
  • Monolithic is bad

Not invented here
5
Design Principles
6
Toolkits and Libraries
  • Visualization - VTK
  • Segmentation/Registration - ITK
  • State machines IGSTK
  • UI KWWidgets, ??
  • Tracking OpenTracker, ??
  • DICOM dcmtk, gdcm
  • File I/O nrrd, meta, pnglib,

7
Object-Oriented Design
  • Dominated software systems throughout the 1990s
  • Continues to be the accepted software design
    technique
  • Particularly useful for dealing with complexity
  • Provides programmatic abstractions to deal with
    generalization and encapsulation
  • C and Java have mechanisms to support OOD

8
Generic Programming
  • Organize libraries consisting of genericor
    reusablesoftware components.
  • The essential ideas of generic programming are
    containers to hold data, iterators to access the
    data, and generic algorithms that use containers
    and iterators to create efficient, fundamental
    algorithms.
  • ITK uses generic programming to process
    n-dimensional images.

9
Design Patterns
  • Good object-oriented software systems have
    recurring designs (patterns) that occur
    frequently
  • ITK employs a number of powerful design patterns
  • object factories
  • command/observer
  • smart pointer memory management

10
Frameworks
  • Define how a group of participants can be put
    together to solve a particular task.
  • Particularly suitable for describing complex
    flows or algorithms that have a number of steps
    that can be varied
  • ITK Frameworks
  • A demand-driven data processing pipeline that
    connects algorithms to process n-dimensional
    image data
  • Registration framework
  • Level-set framework

11
Separation of Algorithms from Interfaces
  • Implement the algorithms with a clear separation
    from the applications and especially the user
    interfaces.
  • Uses the Command/Observer design pattern that
    permits applications to watch for significant
    events during the execution of an algorithm
  • ITK has no built-in visualization, but has been
    interfaced to several systems including 3D
    Slicer, Analyze, SciRun and Volview.

12
Slicer 3 Execution Model Goals
  • Provide interface to batch programs
  • Simplify and unify command line processing
  • Auto generate C command line processing
  • Simplify and unify GUI
  • Auto generate GUI

13
Slicer 3.0
User Desktop
Algorithms
ITK
VTK
Slicer Modules
Slicer 3.0
Scripts of Slicer Mods
VTK Apps Using ITK
Batch Programs
Non-NAMIC Cmd tools
LONI Pipeline
Birn Grid Data/Compute
14
Execution Model Plugins
  • XML Interface Description
  • Describes command line options
  • Describes suggestions for GUI
  • GenerateCLP
  • Generates C command line processing code from
    XML
  • Reports XML description

15
Program Flow
User Desktop
Slicer Modules
Slicer 3.0
prog.xml
GenerateCLP
progCLP.h
prog.cxx
Non-NAMIC Cmd tools
LONI Pipeline
Birn Grid Data/Compute
16
Resample --xml
ltlabelgtIOlt/labelgt ltdescriptiongtInput/output
parameterslt/descriptiongt ltimagegt
ltnamegtInputVolumelt/namegt ltlabelgtinput
Volumelt/labelgt ltchannelgtinputlt/channelgt
ltindexgt0lt/indexgt ltdescriptiongtInput
volume to be resampledlt/descriptiongt
lt/imagegt ltimagegt ltnamegtOutputVolumelt/nam
egt ltlabelgtOutput Volumelt/labelgt
ltchannelgtoutputlt/channelgt ltindexgt1lt/indexgt
ltdescriptiongtResampled Volumelt/descriptiongt
lt/imagegt lt/parametersgt lt/executablegt
  • lt?xml version"1.0" encoding"utf-8"?gt
  • ltexecutablegt
  • ltcategorygtfilteringlt/categorygt
  • lttitlegtResample Volumelt/titlegt
  • ltdescriptiongtResamples a volumelt/descriptiongt
  • ltversiongt1.0lt/versiongt
  • ltdocumentationurlgtlt/documentationurlgt
  • ltlicensegtlt/licensegt
  • ltcontributorgtBill Lorensenlt/contributorgt
  • ltparametersgt
  • ltlabelgtResampling Parameterslt/labelgt
  • ltdescriptiongtParameters used for
    resamplinglt/descriptiongt
  • ltfloat-vectorgt
  • ltnamegtoutputPixelSpacinglt/namegt
  • ltflaggt-slt/flaggt
  • ltlongflaggt--spacinglt/longflaggt
  • ltdescriptiongtSpacing along each dimension
    (0 means use input spacing)lt/descriptiongt
  • ltlabelgtSpacinglt/labelgt
  • ltdefaultgt0,0,0lt/defaultgt

17
Resample.cxx
  • .
  • .
  • .
  • include ResampleCLP.h
  • Main (int argc, char argv)
  • PARSE_ARGS
  • algorithm code

18
Resample --help
  • USAGE
  • ResampleVolume
  • --xml
    --echo -s ltstdvectorltfloatgtgt
  • --

  • --version -h ltstdstringgt

  • ltstdstringgt
  • Where
  • --xml
  • Produce xml description of command line
    arguments (default 0)
  • --echo
  • Echo the command line arguments (default 0)
  • -s ltstdvectorltfloatgtgt, --spacing
    ltstdvectorltfloatgtgt
  • Spacing along each dimension (0 means use
    input spacing) (default 0,0,0)
  • --, --ignore_rest
  • Ignores the rest of the labeled arguments
    following this flag.
  • --version
  • Displays version information and exits.
  • -h, --help
  • Displays usage information and exits.

19
Software Process
20
NA-MIC Rhythms
  • Yearly All-Hands Meeting
  • Bi-annual Programmers Week
  • Weekly Engineering T-Cons
  • Nightly Build/Test
  • ITK
  • VTK
  • Slicer

21
NA-MIC Tools
  • CMake
  • Cross-platform build
  • Dart 2
  • Build/Test server
  • CTest
  • Build/Test client
  • Cpack
  • Packaging and Distribution
  • Media Wiki
  • Reporting/discussion forum
  • POTS
  • T-cons

22
How DART Enables Collaboration
CVS/SVN maintainssource code revisions
DART compilessource code, runs tests
CVS SVN
Developers check-in code
Developers review results
23
Dart
Dart
24
(No Transcript)
25
Multi-Platform Builds
26
IGT Challenges
  • Define an architecture tailored to IGT
    requirements
  • Leverage existing toolkits
  • Fill in toolkit gaps

27
IGTSoftware Design and Process
  • Bill Lorensen
  • GE Research
Write a Comment
User Comments (0)
About PowerShow.com