<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>micromux &#187; Development</title>
	<atom:link href="http://www.micromux.com/category/development-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.micromux.com</link>
	<description>Commentary on the state of my microcosm.</description>
	<lastBuildDate>Thu, 02 May 2013 02:54:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>BEGIN END.</title>
		<link>http://www.micromux.com/2011/02/08/begin-end/</link>
		<comments>http://www.micromux.com/2011/02/08/begin-end/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 03:02:30 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.micromux.com/?p=466</guid>
		<description><![CDATA[After the software development lifecycle, programs experience certain evolutionary transitions. There is the moment of genesis when the initial application demonstrates capabilities in a proof of concept, but that is ultimately superceded by a succession of modifications that eventually jeopardizes the maintainability of that code. <a href="http://www.micromux.com/2011/02/08/begin-end/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>After the software development lifecycle, programs experience certain evolutionary transitions. There is the moment of genesis when the initial application demonstrates capabilities in a proof of concept, but that is ultimately superceded by a succession of modifications that eventually jeopardizes the maintainability of that code.</p>
<p><span id="more-466"></span> The work of <a href="http://www.eis.mdx.ac.uk/staffpages/mml/">Meir Lehman</a> in this area is significant, his observations of OS/360 should be heeded by commercial and open source developers alike.</p>
<p>Unlike the smaller, faster, cheaper mantra that most of the hardware vendors have enjoyed, software developers have experienced a succession of application re-writes. In fact, Lehman would argue that this kind of lifecycle is inherent to the current nature of software application development. Developers begin with a simple idea, but once successful the demand for new features becomes unwieldly in the complexity of the legacy software platform.</p>
<p style="text-align: center;"><img class="size-full wp-image-467  aligncenter" title="OS/260 Mainframe" src="http://www.micromux.com/wp-content/uploads/2011/02/mainframe.jpg" alt="" width="399" height="273" /></p>
<p>One of the most significant challenges for development is taking a legacy framework and trying to retrofit a new technology into the system. This has been problematic for many vendors, perhaps the archtypal example of this is Microsoft building the Windows GUI environment to support multi-tasking on the MS-DOS single-tasking operating system.</p>
<p><span class="calloutRight">A mitigating aspect is to work at reducing the complexity of your application.</span>More often then not, this kind of work <em>compromises</em> the software architecture. The Windows implementation benefited from being loosly coupled to the core operating system, thereby allowing programmers to implement features without retrofitting DOS. Imagine if DOS had been reworked to support pre-emptive multitasking, and of course these issues become even more considerable when the size of the application increases.</p>
<p>The object oriented approach promised to provide the kind of building-blocks that programmers can use to accommodate evolving requirements. With OOP you can certainly include some leway in your architecture, but this will never be able to address all future implementation considerations.</p>
<p>A mitigating aspect is to work at reducing the complexity of your application. In other words, rather than implement new product features you should actually take the time to refactor an existing codebase to minimize product complexity. This can be extremely difficult, and in fact should result in a virtual re-write of your entire system.</p>
<p>There are a number of other laws of software evolution, but Lehman also makes a point to observe that a key risk is the apathy of the core development group from knowing all aspects of the application architecture. By this law, the conservation of familiarity states that once the organization loses a mastery of the application they will in turn lose control over development.</p>
<p>Each development organization is different and the requirements for the application architecture is varied. Despite these differences, every group will reach a crossroad where the existing framework is unsuitable for further expansion. When this happens, the true indicator for success is the ability for the technical team to realize the significance of that event rather than to continue to code around it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.micromux.com/2011/02/08/begin-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.319 seconds -->
