ITK/Release 4/Modularization: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
(→Tools) |
(→Goals) |
||
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
- Develop accurate graph of code dependencies
- 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
- http://ryppl.org/
- Package Manager - Multi-Platform
- 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)