<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kaman Consulting</title>
	
	<link>http://www.kamanconsulting.com</link>
	<description>Software Modernization Methodology</description>
	<lastBuildDate>Mon, 27 Feb 2012 18:31:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kamanconsulting" /><feedburner:info uri="kamanconsulting" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>kamanconsulting</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Modernizing the System in Slices</title>
		<link>http://feedproxy.google.com/~r/kamanconsulting/~3/-AiFn8QO9KQ/</link>
		<comments>http://www.kamanconsulting.com/modernize-in-slices/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 23:50:26 +0000</pubDate>
		<dc:creator>Gordon</dc:creator>
				<category><![CDATA[Legacy Modernization]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[legacy modernization]]></category>
		<category><![CDATA[Use Case 2.0]]></category>
		<category><![CDATA[use case realization]]></category>
		<category><![CDATA[use case slice]]></category>

		<guid isPermaLink="false">http://www.kamanconsulting.com/?p=398</guid>
		<description><![CDATA[It is difficult, if not impossible, to reverse engineer the requirements of a legacy application and to re-architect it in one go.  This is one of a series of blogs connecting the principles described in the Use Case 2.0 ebook to agile legacy modernization.  The principles are: Keep it simple by telling stories Understand the big picture Focus on value Build the ...]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>It is difficult, if not impossible, to reverse engineer the requirements of a legacy application and to re-architect it in one go. </em></p></blockquote>
<p>This is one of a series of blogs connecting the principles described in the <a title="Use Case 2.0 ebook" href="http://bit.ly/sIL7fu">Use Case 2.0 ebook</a> to agile legacy modernization.  The principles are:</p>
<ol>
<li>Keep it simple by telling stories</li>
<li>Understand the big picture</li>
<li>Focus on value</li>
<li><span style="color: #ff0000;">Build the system in slices</span></li>
<li>Deliver the system in increments</li>
<li>Adapt to meet the team’s needs</li>
</ol>
<p>For purposes of this discussion, let&#8217;s assume the reader is familiar with <a title="waterfall development criticisms" href="http://en.wikipedia.org/wiki/Waterfall_development" target="_blank">waterfall development criticisms</a> and understands the concept of slices defined in the new Use Case 2.0 ebook.</p>
<p>It is difficult to reverse engineer the requirements of a legacy application and to re-architect it in one go and would violate most of the agile modernization principles. The big picture is best understood through bottom-up validation of user goals and the associated stories. Nor does a waterfall approach allow focus on value. There is no differentiation of those parts of the system most useful to the stakeholder.</p>
<p>You can identify slices by identifying the most useful things that an application does, the end-to-end, most straightforward way the user achieves a goal. Fit these stories into the &#8216;big picture&#8217; use case model to provide context.</p>
<p>Use case slices are also the basis of estimation, test and connection to legacy code. Thus, in addition to it being a valuable tool for for reverse engineering the functional model, it is the basis for packaging related test and implementation elements. Extending the Use Case 2.0 concept of slice to legacy modernization, we see that the use case slice allows a connection beween the legacy and re-architected solutions.</p>
<p>Complete reverse engineering of the legacy design may not be necessary, but it may provide important information. Bringing the application into an object oriented paradigm may also guide the new architecture (see <a title="Legacy Applications and OO Technology" href="http://www.kamanconsulting.com/legacy-applications-and-oo-technology/">Legacy Applications and OO Technology</a>).</p>
<p>Connecting to legacy code is important, because it shows the extent of code coverage. Legacy code, while not sufficient by itself to understand a legacy application, can remain a source of truth during modernization. Even though this blog emphasizes vendor-neutral methodology, it is clear that only automated solutions can provide the necessary traceability and model mapping.</p>
<div id="attachment_411" class="wp-caption aligncenter" style="width: 530px"><a href="http://www.kamanconsulting.com/wp-content/uploads/2012/02/use-case-slice3.jpg"><img class="size-full wp-image-411 " title="use case slice" src="http://www.kamanconsulting.com/wp-content/uploads/2012/02/use-case-slice3.jpg" alt="use case slice with legacy and modernized applications" width="520" height="388" /></a>
<p class="wp-caption-text">The use case slice is common to the legacy and modernized applications.</p>
</div>
<p style="text-align: center;">(This figure is adapted from the Use Case 2.0 ebook <sup>[<a href="#modernize-in-slices-n-1" class="footnoted" id="to-modernize-in-slices-n-1">1</a>]</sup>)</p>
<p>As you can see, test assets are tightly integrated. Testing has always been a key part of use case technology. Extending this to slices makes the connection explicit. For new development, test should be integral. For legacy applications, it may be useful to gather existing test assets and test the legacy and modernized slices in parallel.</p>
<p>Slices provide a way to link requirements to the parts of the system that implement them&#8211;in both legacy and modernized contexts. Tests show whether requirements have been successfully implemented and allow you to compare results with the legacy application.</p>
<p><a title="Use Case Realization" href="http://en.wikipedia.org/wiki/Use-case_analysis#Realization">Use Case Realization</a> has alway been part of use case technology.  It describes how a particular use case is realized within the design model, in terms of collaborating objects. To that concept we can add slices in order to connect a functional model to the legacy and modernized implementations.</p>
<p>&nbsp;</p>

<ol class="footnotes">
	<li class="footnote" id="modernize-in-slices-n-1"><strong><sup>[1]</sup></strong> http://www.ivarjacobson.com/Use_Case2.0_ebook/, page 4 <a class="note-return" href="#to-modernize-in-slices-n-1">&#x21A9;</a></li></ol>
<img src="http://feeds.feedburner.com/~r/kamanconsulting/~4/-AiFn8QO9KQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kamanconsulting.com/modernize-in-slices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kamanconsulting.com/modernize-in-slices/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=modernize-in-slices</feedburner:origLink></item>
		<item>
		<title>Focusing on Value</title>
		<link>http://feedproxy.google.com/~r/kamanconsulting/~3/IEO_8UYNEYQ/</link>
		<comments>http://www.kamanconsulting.com/focus-on-value/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 21:31:17 +0000</pubDate>
		<dc:creator>Gordon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[legacy modernization]]></category>
		<category><![CDATA[user story]]></category>
		<category><![CDATA[work item]]></category>

		<guid isPermaLink="false">http://www.kamanconsulting.com/?p=356</guid>
		<description><![CDATA[Actual system use is the basis for determining value.  This is one of a series of blogs connecting the principles described in the Use Case 2.0 ebook to agile legacy modernization.  The principles are: Keep it simple by telling stories Understand the big picture Focus on value Build the system in slices Deliver the system in increments Adapt to meet the team’s ...]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Actual system use is the basis for determining value. </em></p></blockquote>
<p>This is one of a series of blogs connecting the principles described in the <a title="Use Case 2.0 ebook" href="http://bit.ly/sIL7fu">Use Case 2.0 ebook</a> to agile legacy modernization.  The principles are:</p>
<ol>
<li><span style="color: #000000;">Keep it simple by telling stories</span></li>
<li><span style="color: #000000;">Understand the big picture</span></li>
<li><span style="color: #ff0000;">Focus on value</span></li>
<li><span style="color: #000000;">Build the system in slices</span></li>
<li>Deliver the system in increments</li>
<li>Adapt to meet the team’s needs</li>
</ol>
<p>Agile use case modeling for legacy modernization tries to <strong>retain essential business functionality</strong>, and not start from scratch. Use case technology is a means of focusing on the existing value of the legacy application and adding value, Principle #3 of Use Case 2.0.</p>
<p>User goals and the associated stories are the mechanism for estimating, prioritizing and tracking functionality. They are the basis for use cases slices and the associated work items. In other words, prioritized functionality is connected to project work items. Focusing on the stories that provide value is a natural way to prioritize work items.</p>
<p>User goals are based on current use of the system, which may deviate from the intended use, back when the legacy application was first written. The primary goals provide the main flows. &#8220;&#8230; start with the simplest possible way to achieve the goal.&#8221; <sup>[<a href="#focus-on-value-n-1" class="footnoted" id="to-focus-on-value-n-1">1</a>]</sup> For system re-architecture it is important to identify up front the most valuable system functions. To avoid waterfall development, make these valuable stories the basis for re-architecture. The alternative ways of achieving the user goal will provide the alternative flows and may receive lower priority.</p>
<p>Legacy modernization is clearly not about re-creating obsolete functionality or dragging dead code into the re-architected application. Understanding the functional model is an important basis for knowing what is current and what has no value for the user. The goal is not to create a user manual for the legacy application, but to understand current, key capabilities. Modernization is thus an opportunity to manage scope and focus on the most direct route for reaching user goals.</p>
<p>The use case model can be used to identify  important new user goals and the associated stories. The use case model and underlying details provide scope control and iteration planning. Depending the scope of new functionality, it may be necessary to identify legacy baseline functionality and identify new functionality separately in the model. Use case modeling provides techniques differentiating current vs. new functionality. There are several different possible approaches, e.g. use of the extends association use case model versioning, etc.</p>
<p>As we will see with use case slices (Principle #4). it is necessary to connect stories to the legacy code. Mapping use cases flows to specific parts of the code may require an automated solution. It can be significant if portions of code are not exercised via the identified functions.</p>
<p>&nbsp;</p>

<ol class="footnotes">
	<li class="footnote" id="focus-on-value-n-1"><strong><sup>[1]</sup></strong> http://www.ivarjacobson.com/Use_Case2.0_ebook/, page 7 <a class="note-return" href="#to-focus-on-value-n-1">&#x21A9;</a></li></ol>
<img src="http://feeds.feedburner.com/~r/kamanconsulting/~4/IEO_8UYNEYQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kamanconsulting.com/focus-on-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kamanconsulting.com/focus-on-value/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=focus-on-value</feedburner:origLink></item>
		<item>
		<title>Seeing the Forest and the Trees</title>
		<link>http://feedproxy.google.com/~r/kamanconsulting/~3/hw56diKyoPM/</link>
		<comments>http://www.kamanconsulting.com/forest-and-the-trees/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 23:38:12 +0000</pubDate>
		<dc:creator>Gordon</dc:creator>
				<category><![CDATA[Legacy Modernization]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Reverse Engineer]]></category>
		<category><![CDATA[agile modernization]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[legacy modernization]]></category>
		<category><![CDATA[Use Case 2.0]]></category>
		<category><![CDATA[user story]]></category>

		<guid isPermaLink="false">http://www.kamanconsulting.com/?p=322</guid>
		<description><![CDATA[Understanding the complexities of a legacy application requires a top-down, bottom-up approach.  This is one of a series of blogs connecting the principles described in the Use Case 2.0 ebook to agile legacy modernization.  The principles are: Keep it simple by telling stories Understand the big picture Focus on value Build the system in slices Deliver the system in increments Adapt to ...]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Understanding the complexities of a legacy application requires a top-down, bottom-up approach. </em></p></blockquote>
<p>This is one of a series of blogs connecting the principles described in the <a title="Use Case 2.0 ebook" href="http://bit.ly/sIL7fu">Use Case 2.0 ebook</a> to agile legacy modernization.  The principles are:</p>
<ol>
<li><span style="color: #ff0000;">Keep it simple by telling stories</span></li>
<li><span style="color: #ff0000;">Understand the big picture</span></li>
<li>Focus on value</li>
<li><span style="color: #000000;">Build the system in slices</span></li>
<li>Deliver the system in increments</li>
<li>Adapt to meet the team’s needs</li>
</ol>
<p>Although written with greenfield development in mind, Use Case 2.0 is easily adapted to the world of legacy modernization. We will walk through each of the principles described for application to legacy modernization.</p>
<p>This discussion is based on the following assumptions:</p>
<ul>
<li>you want to modernize your legacy application</li>
<li>you want to retain essential business functionality, not start from scratch</li>
<li>you&#8217;re interested in vendor-independent practices</li>
<li>you&#8217;ve set the goal of reverse engineering a functional model</li>
</ul>
<p>Capturing the functional behaviour of an application involves and bottom-up, top-down approach. This corresponds to the first two principles of Use Case 2.0:</p>
<ol>
<li>Keep it simple by telling stories</li>
<li>Understand the big picture</li>
</ol>
<p>Presented with the task of understanding a legacy application, it is easy to get lost in detail or miss the larger context. One of the ways to keep it simple, is to start with the most important legacy functionality, i.e. user stories. Begin by understanding user system roles. Examine user goals when using an application. Achieving a goal is the basis of a user story. Initially it is important to capture the main flow and avoid alternate possible flows, exceptions to achieving the goal. Interview stakeholders about how they use the system.  Start with stories key to the business. Add exceptions and alternate endings only in subsequent iterations to achieve a complete picture. Isolating individual stories is the beginning of an agile modernization practice.</p>
<div id="attachment_337" class="wp-caption aligncenter" style="width: 307px"><img class="size-full wp-image-337 " title="stories" src="http://www.kamanconsulting.com/wp-content/uploads/2012/02/stories-e1328212143670.jpg" alt="" width="297" height="94" />
<p class="wp-caption-text">Assemble Use Cases from Stories</p>
</div>
<p>&nbsp;</p>
<p>Use case models define the scope and provide an overall view. But the initial, high-level view need not be complete, detailed or final. Early in the project it is enough to gain a high-level view that can be refined. After initial functional reviews, the use case model should include user interaction, batch functionality and system interfaces, in other words a complete functional overview.</p>
<div id="attachment_332" class="wp-caption aligncenter" style="width: 445px"><img class=" wp-image-332     " title="legacy functinal model" src="http://www.kamanconsulting.com/wp-content/uploads/2012/02/legacy-functinal-model.jpg" alt="" width="435" height="178" />
<p class="wp-caption-text">Establish a Top-down View of the Legacy Application</p>
</div>
<p>&nbsp;</p>
<p>One effective technique for an draft use case model is to assemble key system users for a white board session. Do this without access to the legacy application in order to avoid getting lost in detail. The techniques are similar to those used in greenfield development.  The actors you identify will have goals when using the system.</p>
<p>Identifying stories in parallel with the use case helps us reverse engineer the functional model. Unlike some modernization approaches that overwhelm with detail, the approach here is separation of concerns and multiple views. As we look at the other &#8216;First Principles&#8217; we will see how to use this model in the context of agile software modernization.</p>
<h6 style="text-align: center;">Image courtesy of Anthony Seebaran. Visit <a title="http://www.anthonyseebaran.com" href="http://www.anthonyseebaran.com">http://www.anthonyseebaran.com</a> and <a title="http://www.istockphoto.com/awseebaran" href="http://www.istockphoto.com/awseebaran">http://www.istockphoto.com/awseebaran</a></h6>
<p>&nbsp;</p>

<img src="http://feeds.feedburner.com/~r/kamanconsulting/~4/hw56diKyoPM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kamanconsulting.com/forest-and-the-trees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kamanconsulting.com/forest-and-the-trees/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=forest-and-the-trees</feedburner:origLink></item>
		<item>
		<title>Agile Modernization – Underlying Principles</title>
		<link>http://feedproxy.google.com/~r/kamanconsulting/~3/EneevD4ePpw/</link>
		<comments>http://www.kamanconsulting.com/agile-modernization-principles/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 00:07:53 +0000</pubDate>
		<dc:creator>Gordon</dc:creator>
				<category><![CDATA[Legacy Modernization]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile modernization]]></category>
		<category><![CDATA[legacy modernization]]></category>
		<category><![CDATA[Use Case 2.0]]></category>

		<guid isPermaLink="false">http://www.kamanconsulting.com/?p=264</guid>
		<description><![CDATA[This is one of a series of blogs connecting the principles described in the ebook to agile legacy modernization. It is possible to apply agile development practices to legacy modernization. The often cited disadvantages of waterfall development apply equally to modernization projects. If you have to completely understand and document the legacy application before writing a line of new code, ...]]></description>
			<content:encoded><![CDATA[<p><em>This is one of a series of blogs connecting the principles described in the <a title="Use Case 2.0 ebook" href="http://bit.ly/sIL7fu">ebook</a> to agile legacy modernization.</em></p>
<p>It is possible to apply agile development practices to legacy modernization. The often cited disadvantages of waterfall development apply equally to modernization projects. If you have to completely understand and document the legacy application before writing a line of new code, you will incur tremendous risk.</p>
<p>Let&#8217;s see how the principles described in the recent <a title="Use Case 2.0 ebook" href="http://bit.ly/sIL7fu">ebook</a> can facilitate agile modernization.</p>
<table width="100%" border="1">
<colgroup>
<col width="50" />
<col width="100" /></colgroup>
<tbody>
<tr>
<th>Use Case 2.0 First Principles</th>
<th>Applied to Legacy Modernization</th>
</tr>
<tr>
<td>Keep it simple by telling stories</td>
<td>When interviewing stakeholders about how they use the system, start with stories key to the business. Add exceptions and alternate endings in subsequent iterations.</td>
</tr>
<tr>
<td>Understand the big picture</td>
<td>After initial functional reviews, you should have a high level view and complete scope of the system. In other words, a use case model. The use case model should include batch and system interfaces, a complete functional overview.</td>
</tr>
<tr>
<td>Focus on value</td>
<td>Focus on current business values. Retain and prioritize the value of the legacy application.</td>
</tr>
<tr>
<td>Build the system in slices</td>
<td>Reverse engineer and re-engineer in slices. Based on user value, isolate the most useful parts as slices. Include the test cases for early validation of functionality.</td>
</tr>
<tr>
<td>Deliver the system in increments</td>
<td>Apply agile practices to legacy modernization. Use cases provide for overall planning. Determine increments according to risk and priority.</td>
</tr>
<tr>
<td>Adapt to meet the team&#8217;s needs</td>
<td>Applying agile modernization principles depends on the team. Determine formality based on team size and collaboration issues.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Subsequent blogs will detail each principle and what it means in the context of legacy modernization. The goal is to build on extensive use case experience for application to legacy modernization and leverage state-of-the-art knowledge about use cases.</p>
<p style="padding-left: 30px;"><em>Use-Case 2.0 exists as a proven and well-defined practice. Although the term Use-Case 2.0 suggests a new version of use cases, it does not refer to an update of the Unified Modeling Language, but rather to cumulative changes in the way software developers and business analysts apply use cases. A use case is still a use case but the ways that we present, address and manage them have all evolved to be more effective. The changes are not theoretical but are pragmatic changes based on 20 years of experience from all over the world and all areas of software development. </em><sup>[<a href="#agile-modernization-principles-n-1" class="footnoted" id="to-agile-modernization-principles-n-1">1</a>]</sup></p>

<ol class="footnotes">
	<li class="footnote" id="agile-modernization-principles-n-1"><strong><sup>[1]</sup></strong> http://www.ivarjacobson.com/Use_Case2.0_ebook/, page 4 <a class="note-return" href="#to-agile-modernization-principles-n-1">&#x21A9;</a></li></ol>
<img src="http://feeds.feedburner.com/~r/kamanconsulting/~4/EneevD4ePpw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kamanconsulting.com/agile-modernization-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kamanconsulting.com/agile-modernization-principles/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-modernization-principles</feedburner:origLink></item>
	</channel>
</rss>

