ITK/Release 4/Modularization: Difference between revisions

From KitwarePublic
< ITK‎ | Release 4
Jump to navigationJump to search
Line 4: Line 4:


* Organize the continuous growth of the Toolkit
* Organize the continuous growth of the Toolkit
** Develop accurate graph of code dependencies
*** Use "#include" as edge in graph
*** Need to remove unnecessary includes (non-trivial problem)
** Segment the code into a kernel and modules
*** Code in the kernel will be rigorously maintained
*** High cost for code in the kernel
*** Modules will be divided by firm boundaries
* Simplify usage for application developers
* Simplify usage for application developers
** Modules divided logically
** Good granularity so that modules provide a beneft
*** Too many modules is too complex
*** Too few modules is pointless
*** Goal: ~20 modules
** Only logical modular dependencies
*** "Advanced Registration" depends on "Registration" is OK
*** "Segmentation" depends on "Registration" because they share one non-kernel file is BAD


= Issues =
= Issues =

Revision as of 18:39, 30 July 2010

Modularization

Goals

  • Organize the continuous growth of the Toolkit
    • Develop accurate graph of code dependencies
      • Use "#include" as edge in graph
      • Need to remove unnecessary includes (non-trivial problem)
    • Segment the code into a kernel and modules
      • Code in the kernel will be rigorously maintained
      • High cost for code in the kernel
      • Modules will be divided by firm boundaries
  • Simplify usage for application developers
    • Modules divided logically
    • Good granularity so that modules provide a beneft
      • Too many modules is too complex
      • Too few modules is pointless
      • Goal: ~20 modules
    • Only logical modular dependencies
      • "Advanced Registration" depends on "Registration" is OK
      • "Segmentation" depends on "Registration" because they share one non-kernel file is BAD

Issues

Tools

Ryppl

Source Navigator

  • http://sourcenav.berlios.de/
  • Static analysis tool
  • Builds detailed database of code elements and interactions
  • Programmable tcl API (also c++ but less well documents and/or out of date)