[ITK-dev] ITK Architectural Patterns & Quality Attributes for Research

Matt McCormick matt.mccormick at kitware.com
Mon Nov 7 11:37:28 EST 2016


Hello Michael et al,

Thank you for your interest in ITK. Some follow-up on the patterns and
attributes with pointers to additional information and attributes can
be found below.


On Sat, Oct 15, 2016 at 4:39 PM, Michael Skeen <mmskeen at gmail.com> wrote:
> Hello ITK Community,
>
>
> I am part of an undergraduate research group focusing on software
> architecture patterns and quality attributes at Utah Valley University. We
> recently analyzed the work published on ITK in the Architecture of Open
> Source Applications (AOSA) and referenced it in a paper we presented at the
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), as
> attached.  As a part of our continuing research we wish to validate our
> architectural analysis for ITK with the current developers.
>
>
> We would like to know if we are missing any patterns or quality attributes
> that may have been included in ITK, or if there are any we listed that
> aren’t used. Any additional comment on these topics you might have would
> also, of course, be welcome.
>
>
> We believe we found the following software architectural patterns in this
> application:
>
>
> Pattern Name | Is This Found in the Architecture? (yes / no / don't know) |
> Comments (optional)
>
> Pipes & Filters

Yes. More information can be found in the Data Processing Pipeline
section of the ITK Software Guide:

  https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch3.html#x34-390003.5



> Plugin

Yes. See, for example the ImageIO system:

  https://itk.org/Doxygen/html/classitk_1_1ImageIOBase.html



> Other?

Yes.  See, for example the Architecture section of the ITK Software Guide:

  https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1pa2.html#x33-26000II



> We also identified the following quality attributes:
>
>
> Attribute Name | Is This Found in the Architecture? | Comments (optional)
>
> Usability

Yes. We work hard on developer usability.  See, e.g.

  https://itk.org/ITK/help/documentation.html


> Extensibility

Yes. We recently developed an extensible module system for the toolkit.  See

  https://blog.kitware.com/advance-itk-with-modules/


> Flexibility

Yes. For example, see the image registration framework, which can be
adapted to new problems:

  http://journal.frontiersin.org/article/10.3389/fninf.2014.00044/full


> Maintainability
> Testability

Yes and yes. For more information, see:

  http://journal.frontiersin.org/article/10.3389/fninf.2014.00013/full



The additional attributes also apply:


Scalability. We support image processing through streaming.


Performance. ITK is a high performance toolkit that makes an effort to
perform well on multi-core, many-core, and GPGPU systems. See, for
example:

  http://www.insight-journal.org/browse/publication/972


Portability. ITK is portable across many platforms, including x86_64
Linux, Windows, Mac OSX, but also ARM architectures, Android, POWER8,
and JavaScript.  See

  https://blog.kitware.com/compile-cc-into-javascript-with-emscripten-and-docker/


Modularity. Yes, since ITK version 4, ITK is organized into Groups and Modules.


Cost. Legality. ITK has a strong focus on collaborative, open source
development to sustainably create one of the most powerful medical
image analysis libraries in the world. There is also an explicit
attention to legality: ITKv4 is licensed as Apache 2.0, and algorithms
with software patents are excluded from the library.


Thanks,
Matt




> For your convenience, we have a complete list below of the patterns and
> quality attributes we referred to when conducting our research. To clarify,
> we are specifically studying architectural patterns, rather than design
> patterns such as the GoF patterns.
>
>
> Architectural Patterns Considered
>
>
> Quality Attributes Considered
>
> Active Repository
>
>
> Scalability
>
> Batch
>
>
> Usability
>
> Blackboard
>
>
> Extensibility
>
> Broker
>
>
> Performance
>
> Client Server
>
>
> Portability
>
> Event System
>
>
> Flexibility
>
> Explicit Invocation
>
>
> Reliability
>
> Implicit Invocation
>
>
> Maintainability
>
> Indirection Layer
>
>
> Security
>
> Interceptor
>
>
> Testability
>
> Interpreter
>
>
> Capacity
>
> Layers
>
>
> Cost
>
> Master and Commander
>
>
> Legality
>
> Microkernel
>
>
> Modularity
>
> Model View Controller
>
>
> Robustness
>
> Peer to Peer
>
>
>
> Pipes and Filters
>
>
>
> Plugin
>
>
>
> Presentation Abstraction Control
>
>
>
> Publish Subscribe
>
>
>
> Reflection
>
>
>
> Rule-Based System
>
>
>
> Shared Repository
>
>
>
> Simple Repository
>
>
>
> State Based
>
>
>
> Virtual Machine
>
>
>
>
> Please respond by October 25th, if possible.
>
> Thank you for considering our request, and for your continued work on ITK.
>
>
> Sincerely,
>
>
> Michael Skeen, with
>
> Erich Gubler,
>
> Danielle Skinner,
>
> Brandon Leishman,
>
> Neil Harrison, Ph.D. (advisor)
>
>
> Reference: Neil B. Harrison, Erich Gubler, Danielle Skinner, "Software
> Architecture Pattern Morphology in Open-Source Systems",WICSA, 2016, 2016
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), 2016
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA) 2016, pp.
> 91-98, doi:10.1109/WICSA.2016.8
>
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-developers
>


More information about the Insight-developers mailing list