<div dir="ltr">Matt,<div><br></div><div>Thank you for the excellent and thorough response! We will use this information in our research.</div><div><br></div><div>Michael</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 7, 2016 at 9:37 AM, Matt McCormick <span dir="ltr"><<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Michael et al,<br>
<br>
Thank you for your interest in ITK. Some follow-up on the patterns and<br>
attributes with pointers to additional information and attributes can<br>
be found below.<br>
<span class=""><br>
<br>
On Sat, Oct 15, 2016 at 4:39 PM, Michael Skeen <<a href="mailto:mmskeen@gmail.com">mmskeen@gmail.com</a>> wrote:<br>
> Hello ITK Community,<br>
><br>
><br>
> I am part of an undergraduate research group focusing on software<br>
> architecture patterns and quality attributes at Utah Valley University. We<br>
> recently analyzed the work published on ITK in the Architecture of Open<br>
> Source Applications (AOSA) and referenced it in a paper we presented at the<br>
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), as<br>
> attached.  As a part of our continuing research we wish to validate our<br>
> architectural analysis for ITK with the current developers.<br>
><br>
><br>
> We would like to know if we are missing any patterns or quality attributes<br>
> that may have been included in ITK, or if there are any we listed that<br>
> aren’t used. Any additional comment on these topics you might have would<br>
> also, of course, be welcome.<br>
><br>
><br>
> We believe we found the following software architectural patterns in this<br>
> application:<br>
><br>
><br>
> Pattern Name | Is This Found in the Architecture? (yes / no / don't know) |<br>
> Comments (optional)<br>
><br>
> Pipes & Filters<br>
<br>
</span>Yes. More information can be found in the Data Processing Pipeline<br>
section of the ITK Software Guide:<br>
<br>
  <a href="https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch3.html#x34-390003.5" rel="noreferrer" target="_blank">https://itk.org/<wbr>ITKSoftwareGuide/html/Book1/<wbr>ITKSoftwareGuide-Book1ch3.<wbr>html#x34-390003.5</a><br>
<br>
<br>
<br>
> Plugin<br>
<br>
Yes. See, for example the ImageIO system:<br>
<br>
  <a href="https://itk.org/Doxygen/html/classitk_1_1ImageIOBase.html" rel="noreferrer" target="_blank">https://itk.org/Doxygen/html/<wbr>classitk_1_1ImageIOBase.html</a><br>
<br>
<br>
<br>
> Other?<br>
<br>
Yes.  See, for example the Architecture section of the ITK Software Guide:<br>
<br>
  <a href="https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1pa2.html#x33-26000II" rel="noreferrer" target="_blank">https://itk.org/<wbr>ITKSoftwareGuide/html/Book1/<wbr>ITKSoftwareGuide-Book1pa2.<wbr>html#x33-26000II</a><br>
<span class=""><br>
<br>
<br>
> We also identified the following quality attributes:<br>
><br>
><br>
> Attribute Name | Is This Found in the Architecture? | Comments (optional)<br>
><br>
> Usability<br>
<br>
</span>Yes. We work hard on developer usability.  See, e.g.<br>
<br>
  <a href="https://itk.org/ITK/help/documentation.html" rel="noreferrer" target="_blank">https://itk.org/ITK/help/<wbr>documentation.html</a><br>
<br>
<br>
> Extensibility<br>
<br>
Yes. We recently developed an extensible module system for the toolkit.  See<br>
<br>
  <a href="https://blog.kitware.com/advance-itk-with-modules/" rel="noreferrer" target="_blank">https://blog.kitware.com/<wbr>advance-itk-with-modules/</a><br>
<br>
<br>
> Flexibility<br>
<br>
Yes. For example, see the image registration framework, which can be<br>
adapted to new problems:<br>
<br>
  <a href="http://journal.frontiersin.org/article/10.3389/fninf.2014.00044/full" rel="noreferrer" target="_blank">http://journal.frontiersin.<wbr>org/article/10.3389/fninf.<wbr>2014.00044/full</a><br>
<br>
<br>
> Maintainability<br>
> Testability<br>
<br>
Yes and yes. For more information, see:<br>
<br>
  <a href="http://journal.frontiersin.org/article/10.3389/fninf.2014.00013/full" rel="noreferrer" target="_blank">http://journal.frontiersin.<wbr>org/article/10.3389/fninf.<wbr>2014.00013/full</a><br>
<br>
<br>
<br>
The additional attributes also apply:<br>
<br>
<br>
Scalability. We support image processing through streaming.<br>
<br>
<br>
Performance. ITK is a high performance toolkit that makes an effort to<br>
perform well on multi-core, many-core, and GPGPU systems. See, for<br>
example:<br>
<br>
  <a href="http://www.insight-journal.org/browse/publication/972" rel="noreferrer" target="_blank">http://www.insight-journal.<wbr>org/browse/publication/972</a><br>
<br>
<br>
Portability. ITK is portable across many platforms, including x86_64<br>
Linux, Windows, Mac OSX, but also ARM architectures, Android, POWER8,<br>
and JavaScript.  See<br>
<br>
  <a href="https://blog.kitware.com/compile-cc-into-javascript-with-emscripten-and-docker/" rel="noreferrer" target="_blank">https://blog.kitware.com/<wbr>compile-cc-into-javascript-<wbr>with-emscripten-and-docker/</a><br>
<br>
<br>
Modularity. Yes, since ITK version 4, ITK is organized into Groups and Modules.<br>
<br>
<br>
Cost. Legality. ITK has a strong focus on collaborative, open source<br>
development to sustainably create one of the most powerful medical<br>
image analysis libraries in the world. There is also an explicit<br>
attention to legality: ITKv4 is licensed as Apache 2.0, and algorithms<br>
with software patents are excluded from the library.<br>
<br>
<br>
Thanks,<br>
Matt<br>
<div><div class="h5"><br>
<br>
<br>
<br>
> For your convenience, we have a complete list below of the patterns and<br>
> quality attributes we referred to when conducting our research. To clarify,<br>
> we are specifically studying architectural patterns, rather than design<br>
> patterns such as the GoF patterns.<br>
><br>
><br>
> Architectural Patterns Considered<br>
><br>
><br>
> Quality Attributes Considered<br>
><br>
> Active Repository<br>
><br>
><br>
> Scalability<br>
><br>
> Batch<br>
><br>
><br>
> Usability<br>
><br>
> Blackboard<br>
><br>
><br>
> Extensibility<br>
><br>
> Broker<br>
><br>
><br>
> Performance<br>
><br>
> Client Server<br>
><br>
><br>
> Portability<br>
><br>
> Event System<br>
><br>
><br>
> Flexibility<br>
><br>
> Explicit Invocation<br>
><br>
><br>
> Reliability<br>
><br>
> Implicit Invocation<br>
><br>
><br>
> Maintainability<br>
><br>
> Indirection Layer<br>
><br>
><br>
> Security<br>
><br>
> Interceptor<br>
><br>
><br>
> Testability<br>
><br>
> Interpreter<br>
><br>
><br>
> Capacity<br>
><br>
> Layers<br>
><br>
><br>
> Cost<br>
><br>
> Master and Commander<br>
><br>
><br>
> Legality<br>
><br>
> Microkernel<br>
><br>
><br>
> Modularity<br>
><br>
> Model View Controller<br>
><br>
><br>
> Robustness<br>
><br>
> Peer to Peer<br>
><br>
><br>
><br>
> Pipes and Filters<br>
><br>
><br>
><br>
> Plugin<br>
><br>
><br>
><br>
> Presentation Abstraction Control<br>
><br>
><br>
><br>
> Publish Subscribe<br>
><br>
><br>
><br>
> Reflection<br>
><br>
><br>
><br>
> Rule-Based System<br>
><br>
><br>
><br>
> Shared Repository<br>
><br>
><br>
><br>
> Simple Repository<br>
><br>
><br>
><br>
> State Based<br>
><br>
><br>
><br>
> Virtual Machine<br>
><br>
><br>
><br>
><br>
> Please respond by October 25th, if possible.<br>
><br>
> Thank you for considering our request, and for your continued work on ITK.<br>
><br>
><br>
> Sincerely,<br>
><br>
><br>
> Michael Skeen, with<br>
><br>
> Erich Gubler,<br>
><br>
> Danielle Skinner,<br>
><br>
> Brandon Leishman,<br>
><br>
> Neil Harrison, Ph.D. (advisor)<br>
><br>
><br>
> Reference: Neil B. Harrison, Erich Gubler, Danielle Skinner, "Software<br>
> Architecture Pattern Morphology in Open-Source Systems",WICSA, 2016, 2016<br>
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), 2016<br>
> 13th Working IEEE/IFIP Conference on Software Architecture (WICSA) 2016, pp.<br>
> 91-98, doi:10.1109/WICSA.2016.8<br>
><br>
><br>
><br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
><br>
> Kitware offers ITK Training Courses, for more information visit:<br>
> <a href="http://kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://kitware.com/products/<wbr>protraining.php</a><br>
><br>
> Please keep messages on-topic and check the ITK FAQ at:<br>
> <a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_<wbr>FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://public.kitware.com/mailman/listinfo/insight-developers" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/insight-<wbr>developers</a><br>
><br>
</blockquote></div><br></div>