<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Good software modularity. What exactly is it?</title>
	<atom:link href="http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/</link>
	<description>Headquarters of the Strategic Worldwide Applications and Technologies Team</description>
	<lastBuildDate>Thu, 09 Feb 2012 22:02:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: Otavio Ferreira</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-27937</link>
		<dc:creator>Otavio Ferreira</dc:creator>
		<pubDate>Thu, 07 Jul 2011 20:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-27937</guid>
		<description>Yes, Sirbi. AOP takes software modularity to the next level, especially because you can encapsulate non-functional requirements into reusable modules, called aspects. Simple examples are logging, caching, exception handling, translation, and so forth. These are cross-cutting concerns to be encapsulated into aspects. 

Otherwise, these concerns would end up scattered across many modules and tangled with one another in your platform. </description>
		<content:encoded><![CDATA[<p>Yes, Sirbi. AOP takes software modularity to the next level, especially because you can encapsulate non-functional requirements into reusable modules, called aspects. Simple examples are logging, caching, exception handling, translation, and so forth. These are cross-cutting concerns to be encapsulated into aspects. </p>
<p>Otherwise, these concerns would end up scattered across many modules and tangled with one another in your platform. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sirbi Kotrappa</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-27933</link>
		<dc:creator>Sirbi Kotrappa</dc:creator>
		<pubDate>Thu, 07 Jul 2011 07:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-27933</guid>
		<description>Hi Ottavio,
I like your article on modularity, many  research is going on AOP modularity , i am also  reseacher agree that  AOP through aspects and other features provides more modularity, Can you please comment on that?</description>
		<content:encoded><![CDATA[<p>Hi Ottavio,<br />
I like your article on modularity, many  research is going on AOP modularity , i am also  reseacher agree that  AOP through aspects and other features provides more modularity, Can you please comment on that?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sirbi Kotrappa</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-27934</link>
		<dc:creator>Sirbi Kotrappa</dc:creator>
		<pubDate>Thu, 07 Jul 2011 07:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-27934</guid>
		<description>Hi Ottavio,
I like your article on modularity, many  research is going on AOP modularity , i am also  reseacher agree that  AOP through aspects and other features provides more modularity, Can you please comment on that?</description>
		<content:encoded><![CDATA[<p>Hi Ottavio,<br />
I like your article on modularity, many  research is going on AOP modularity , i am also  reseacher agree that  AOP through aspects and other features provides more modularity, Can you please comment on that?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Sutton</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-127</link>
		<dc:creator>Ian Sutton</dc:creator>
		<pubDate>Wed, 03 Dec 2008 23:35:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-127</guid>
		<description>Hi Ottavio.

Sorry I was a little slow following up but there is an overlap between your comments here and a &lt;a href=&quot;http://www.headwaysoftware.com/blog/2008/12/software-erosion-and-package-tangles/&quot; rel=&quot;nofollow&quot;&gt;follow-up&lt;/a&gt; to the findbugs post I wanted to write. It&#039;s there now and I think you&#039;ll find it interesting.

The nub is that there are architectural components and there are physical components (like packages). These may have a one-to-one correspondence but this is not essential. It follows that tangled packages are a smell but tangled architecture is ... well more than that. In the extreme case, it equates to no architecture at all (just a bunch of classes).

Chunks of the piece are a bit tool-centric to get the views of the architectural components (Structure101 transformations), but the issues are, as ever, generic.

Cheers, Ian</description>
		<content:encoded><![CDATA[<p>Hi Ottavio.</p>
<p>Sorry I was a little slow following up but there is an overlap between your comments here and a <a href="http://www.headwaysoftware.com/blog/2008/12/software-erosion-and-package-tangles/" rel="nofollow">follow-up</a> to the findbugs post I wanted to write. It&#8217;s there now and I think you&#8217;ll find it interesting.</p>
<p>The nub is that there are architectural components and there are physical components (like packages). These may have a one-to-one correspondence but this is not essential. It follows that tangled packages are a smell but tangled architecture is &#8230; well more than that. In the extreme case, it equates to no architecture at all (just a bunch of classes).</p>
<p>Chunks of the piece are a bit tool-centric to get the views of the architectural components (Structure101 transformations), but the issues are, as ever, generic.</p>
<p>Cheers, Ian</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otavio Ferreira</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-124</link>
		<dc:creator>Otavio Ferreira</dc:creator>
		<pubDate>Sun, 30 Nov 2008 12:34:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-124</guid>
		<description>Hello Ian. Thank you for contributing.

Definitely agreed, I also think of a package as a proper module. One of my major references in Software Engineering is Ivar Jacobson, who stated that software development processes should iteratively and incrementally refine software artifacts (or models if you like). According to this statement, the Use Case model, Analysis Model, and Design Model are gradually and parallelly evolved by the architect. Software modularity must be thought of from the beginning, as a cross-model concern.

Specifically about the Analysis Model, high level classes may be grouped together in packages, when modularity becomes totally evident for the first time. Therefore, the architect should focus mainly on dependencies among packages, and package boundaries. The modularity criteria and principles take place here as well.

However, during the Design Model drafting, when technology-specific concerns pop up, a compiled language may empower the architect to place one logical package scattered in more than one (physical) component, with no architectural drawback. If this is the scenario in place, then dependencies among components are the ones that matter the most at the end.</description>
		<content:encoded><![CDATA[<p>Hello Ian. Thank you for contributing.</p>
<p>Definitely agreed, I also think of a package as a proper module. One of my major references in Software Engineering is Ivar Jacobson, who stated that software development processes should iteratively and incrementally refine software artifacts (or models if you like). According to this statement, the Use Case model, Analysis Model, and Design Model are gradually and parallelly evolved by the architect. Software modularity must be thought of from the beginning, as a cross-model concern.</p>
<p>Specifically about the Analysis Model, high level classes may be grouped together in packages, when modularity becomes totally evident for the first time. Therefore, the architect should focus mainly on dependencies among packages, and package boundaries. The modularity criteria and principles take place here as well.</p>
<p>However, during the Design Model drafting, when technology-specific concerns pop up, a compiled language may empower the architect to place one logical package scattered in more than one (physical) component, with no architectural drawback. If this is the scenario in place, then dependencies among components are the ones that matter the most at the end.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Sutton</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-122</link>
		<dc:creator>Ian Sutton</dc:creator>
		<pubDate>Fri, 28 Nov 2008 15:40:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-122</guid>
		<description>Excellent.

Reminded me of http://www.cs.auckland.ac.nz/~ewan/essays/agenda.html which argues that most people in software view the adjective &quot;modular&quot; purely as a synonym for &quot;good&quot; (as opposed to any formal understanding of what modularity might actually mean). 

Totally agree re thinking of a module as a block of code, which could be a low- (method, class) or high-level (component, web service). But I would interject that there is (should be) a level inbetween, what we might broadly think of as packages (or class clusters a la Booch). I wrote a &lt;a href=&quot;http://www.headwaysoftware.com/blog/2008/11/software-erosion-findbugs/&quot; rel=&quot;nofollow&quot;&gt;post&lt;/a&gt; on this just yesterday and would be interested whether you agree with this.</description>
		<content:encoded><![CDATA[<p>Excellent.</p>
<p>Reminded me of <a href="http://www.cs.auckland.ac.nz/~ewan/essays/agenda.html" rel="nofollow">http://www.cs.auckland.ac.nz/~ewan/essays/agenda.html</a> which argues that most people in software view the adjective &#8220;modular&#8221; purely as a synonym for &#8220;good&#8221; (as opposed to any formal understanding of what modularity might actually mean). </p>
<p>Totally agree re thinking of a module as a block of code, which could be a low- (method, class) or high-level (component, web service). But I would interject that there is (should be) a level inbetween, what we might broadly think of as packages (or class clusters a la Booch). I wrote a <a href="http://www.headwaysoftware.com/blog/2008/11/software-erosion-findbugs/" rel="nofollow">post</a> on this just yesterday and would be interested whether you agree with this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otavio Ferreira</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-120</link>
		<dc:creator>Otavio Ferreira</dc:creator>
		<pubDate>Fri, 28 Nov 2008 10:56:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-120</guid>
		<description>Hello Dewald, thanks for your comment. I agree with your thoughts. 

We&#039;ve been working on a highly changeable environment, building internet applications that should keep changing in order stay cutting edge and useful to people.

Loosely-coupled services have been the best shot for a while, and both interfaces and abstract software pieces play a very important part here, as you know.

Cheers!</description>
		<content:encoded><![CDATA[<p>Hello Dewald, thanks for your comment. I agree with your thoughts. </p>
<p>We&#8217;ve been working on a highly changeable environment, building internet applications that should keep changing in order stay cutting edge and useful to people.</p>
<p>Loosely-coupled services have been the best shot for a while, and both interfaces and abstract software pieces play a very important part here, as you know.</p>
<p>Cheers!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dewald Botha</title>
		<link>http://www.mihswat.com/2008/11/27/good-software-modularity-what-exactly-is-it/comment-page-1/#comment-118</link>
		<dc:creator>Dewald Botha</dc:creator>
		<pubDate>Thu, 27 Nov 2008 14:40:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.mihswat.com/?p=408#comment-118</guid>
		<description>Nice article and I absolutely agree.

We have to take these principals and not only apply them in our code, but also scale it up into the services/platforms we offer, business logic used etc.

Especially these days when we are slowly branching away from software as a service, but more towards platforms as a service.

We must create code/modules/services to be as loosely-coupled and agnostic as possible which ultimately shows others that we are developers/architects with a readiness towards change.</description>
		<content:encoded><![CDATA[<p>Nice article and I absolutely agree.</p>
<p>We have to take these principals and not only apply them in our code, but also scale it up into the services/platforms we offer, business logic used etc.</p>
<p>Especially these days when we are slowly branching away from software as a service, but more towards platforms as a service.</p>
<p>We must create code/modules/services to be as loosely-coupled and agnostic as possible which ultimately shows others that we are developers/architects with a readiness towards change.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

