<?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>vLegaci - Reengineering and BI for the AS/400, iSeries and IBM i</title>
	<atom:link href="http://www.vlegaci.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vlegaci.com</link>
	<description>The intelligence of legacy systems</description>
	<lastBuildDate>Sat, 21 Apr 2012 22:12:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Software Maintainability – Traits of Good Maintainability &#8211; Processes</title>
		<link>http://www.vlegaci.com/207/software-maintainability-%e2%80%93-traits-of-good-maintainability-processes/</link>
		<comments>http://www.vlegaci.com/207/software-maintainability-%e2%80%93-traits-of-good-maintainability-processes/#comments</comments>
		<pubDate>Sun, 01 May 2011 18:35:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Maintainability]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=207</guid>
		<description><![CDATA[What makes software maintainable?  Let me first clarify that my goal here is to discuss what can be done to make it more maintainable, it’s not to just analyze whether existing code is maintainable. I say that because a number of researchers have invested time in studying the maintainability of software as an after-the-fact question.  [...]]]></description>
			<content:encoded><![CDATA[<p>What makes software maintainable?  Let  me first clarify that my goal here is to discuss what can be done to  make it more maintainable, it’s not to just analyze whether existing  code is maintainable.</p>
<p>I say that because a number of researchers have invested time in studying the maintainability of software as an <em>after-the-fact</em> question.  These  researchers typically focus on the wide variety of complexity  measurements that have been developed, e.g., Halstead’s Volume  measurement, COCOMO Cost Factors, Lines of Code, Module Cohesion,  Cyclomatic Complexity, Comments Volume, Average Lengths of Variable  Names(!)  I’m sure there are lessons to be learned from these things but they are not strictly aimed at being prescriptive.  If you’re interested in this topic I can refer you to <a href=\"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.2027\"><em>Defining and</em> <em>Measuring </em><em>Maintainability</em></a> by R. Cheaito et al.</p>
<p>(Well, you may be curious: A study for the Canadian Space Agency reported that longer variable names are more maintainable.  Another  study reported that both low and high comment volumes lead to more  difficult maintenance, the latter possibly indicating lack of focus and  tending to impede code reading comprehension.)</p>
<p>So anyway, what do you do to create a maintainable system?  A number of researchers have broken the answers down into two parts:</p>
<ul>
<li>Characteristics of the software</li>
</ul>
<ul>
<li>Characteristics of the processes used to create and maintain the software</li>
</ul>
<p>You may scratch your head a little at the second point.  But one model for thinking about this was described in <em><a href=\"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.7571\">Maintaining Maintainability</a></em> by Ramage and Bennet.  They  describe the various actors in the software process as managers, users,  business processes, tacit knowledge, designers, maintainers and the  software itself.  These authors argue that, from the  organization’s point of view, the maintainability of the system is  heavily influenced by the relationships between the various actors.  Poor relationships between users and maintainers results in lower quality maintainability.  Similarly,  the maintainers often rely on designers for an understanding of  concepts and intentions in the system design, and a poor relationship  there will also cause maintainability to suffer.  The authors of this approach offer a formula for measuring organizational maintainability.</p>
<p>The other perspective on how processes relate  to maintainability concerns how adherence to maintainability guidelines  and quality checking are implemented in the organization.  A  complete model of this includes a maintainability quality model, a set  of source code guidelines, a source analysis tool, the analysis results  profile of the source code, and a quality engineer to interpret those  results and the source code itself.</p>
<p>Next: characteristics of software that improve maintainability</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/207/software-maintainability-%e2%80%93-traits-of-good-maintainability-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lean Maintenance Techniques and Metrics</title>
		<link>http://www.vlegaci.com/301/lean-maintenance-techniques-and-metrics/</link>
		<comments>http://www.vlegaci.com/301/lean-maintenance-techniques-and-metrics/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 13:04:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>
		<category><![CDATA[Software Statistics]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=301</guid>
		<description><![CDATA[How can good general management principals be applied to the practice of software maintenance?  One model worth looking at is “lean production techniques” as developed in manufacturing and which can be adapted to software maintenance to improve quality and throughput.  The basic techniques include: Continuous process improvement Continuous product flow via reasonably sized projects  constantly [...]]]></description>
			<content:encoded><![CDATA[<p>How can good general management principals be applied to the practice of software maintenance?  One  model worth looking at is “lean production techniques” as developed in  manufacturing and which can be adapted to software maintenance to  improve quality and throughput.  The basic techniques include:</p>
<ul>
<li>Continuous      process improvement</li>
<li>Continuous      product flow via reasonably sized projects       constantly moving through the pipeline</li>
<li>Planning      for uncertainty by building adaptation to change into the process and plan</li>
<li>Focusing      on the software being usable and well-directed toward its intended purpose</li>
<li>Creating      software that is maintainable</li>
<li>Creating      projects that have frequent deliveries and opportunities for feedback</li>
<li>Improving      quality by early defect detection, thus minimizing unplanned rework</li>
</ul>
<p>Some of these techniques may be self-explanatory and others require more thought and consideration.  For the first, Continuous Process Improvement, the fundamental requirement is that you’ve got to be measuring something to know if you’re improving it.  More  importantly, deciding what to measure is the result of something even  more important: you’ve got to decide what is most critical.  In the remainder of this post I will give an example of a metric for continuous process improvement.</p>
<p>A good place to start for AS/400 RPG maintenance  shops is to do some Pareto analysis on what source code is most  frequently changed.  Pareto analysis basically leads to the  “80-20” rule and is accomplished by listing items in descending order  by the key measurement (e.g., lines of code changed in the last three  years) and having another column showing cumulative figures.  Analyzing the result often reveals that, for example, “the top ten programs account for over half of our source changes.”  A spreadsheet might look something like this (LOCM = Lines Of Code Modified/Added/Deleted):</p>
<p>&nbsp;</p>
<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tbody>
<tr>
<td width=\"94\" valign=\"top\"><strong>Program</strong></td>
<td width=\"130\" valign=\"top\"><strong>LOCM since 1/1/2005</strong></td>
<td width=\"72\" valign=\"top\"><strong>Pct of Total LOCM</strong></td>
<td width=\"132\" valign=\"top\"><strong>Cumulative LOCM</strong></td>
<td width=\"132\" valign=\"top\"><strong>Cumulative Pct</strong></td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">CS150R</td>
<td width=\"130\" valign=\"top\">549</td>
<td width=\"72\" valign=\"top\">12.5</td>
<td width=\"132\" valign=\"top\">549</td>
<td width=\"132\" valign=\"top\">12.5</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">CS722R</td>
<td width=\"130\" valign=\"top\">523</td>
<td width=\"72\" valign=\"top\">11.9</td>
<td width=\"132\" valign=\"top\">1072</td>
<td width=\"132\" valign=\"top\">24.4</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">IT909R</td>
<td width=\"130\" valign=\"top\">497</td>
<td width=\"72\" valign=\"top\">11.3</td>
<td width=\"132\" valign=\"top\">1569</td>
<td width=\"132\" valign=\"top\">35.7</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">CS542R</td>
<td width=\"130\" valign=\"top\">402</td>
<td width=\"72\" valign=\"top\">9.1</td>
<td width=\"132\" valign=\"top\">1971</td>
<td width=\"132\" valign=\"top\">44.8</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">IT121R</td>
<td width=\"130\" valign=\"top\">371</td>
<td width=\"72\" valign=\"top\">8.4</td>
<td width=\"132\" valign=\"top\">2342</td>
<td width=\"132\" valign=\"top\">53.2</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">BT440R</td>
<td width=\"130\" valign=\"top\">303</td>
<td width=\"72\" valign=\"top\">6.9</td>
<td width=\"132\" valign=\"top\">2645</td>
<td width=\"132\" valign=\"top\">60.1</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">FR333R</td>
<td width=\"130\" valign=\"top\">272</td>
<td width=\"72\" valign=\"top\">6.2</td>
<td width=\"132\" valign=\"top\">2917</td>
<td width=\"132\" valign=\"top\">66.3</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">FR101R</td>
<td width=\"130\" valign=\"top\">195</td>
<td width=\"72\" valign=\"top\">4.4</td>
<td width=\"132\" valign=\"top\">3112</td>
<td width=\"132\" valign=\"top\">70.7</td>
</tr>
<tr>
<td width=\"94\" valign=\"top\">etc</td>
<td width=\"130\" valign=\"top\">&nbsp;</td>
<td width=\"72\" valign=\"top\">&nbsp;</td>
<td width=\"132\" valign=\"top\">&nbsp;</td>
<td width=\"132\" valign=\"top\">&nbsp;</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The information to do this analysis can be obtained in various ways.  Rough figures can be obtained by analyzing the dates in your QRPGSRC or QRPGLESRC files.  Depending on your maintenance practices this may or may not give you counts of deleted lines.  If you have a change management system you may be able to obtain statistics from that.</p>
<p>If this analysis is too difficult, a more  coarse-grained approach, if you have a change management system, is to  measure the number of checkouts or promotions.</p>
<p>Understanding this information can help you identify opportunities for improving your throughput or quality.  I would start with the top program, “CS150R”, and determine what projects and fixes had driven so many modifications.  Were there continuous change requests from users?  If so, perhaps there are some things that could be soft-coded to reduce future changes.  Were there a lot of defects?  If  so, perhaps the program could be improved with some refactoring. Or  perhaps I need to be more careful about who I assign to work on this  program.  Or maybe we need to do some training or documentation about this program.</p>
<p>This is an example of a very basic analysis that  most RPG shops can execute with minimal effort, but good potential  payback.  Another very valuable analysis is to look at the defect rate  per program, if you have that information available.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/301/lean-maintenance-techniques-and-metrics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interesting Statistics – Numbers of Programmers in Maintenance vs. Development</title>
		<link>http://www.vlegaci.com/298/interesting-statistics-%e2%80%93-numbers-of-programmers-in-maintenance-vs-development/</link>
		<comments>http://www.vlegaci.com/298/interesting-statistics-%e2%80%93-numbers-of-programmers-in-maintenance-vs-development/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 12:58:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Statistics]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=298</guid>
		<description><![CDATA[In my ongoing effort to educate people about how software maintenance work outweighs development work, here are some interesting numbers about the evolution of software professionals and their work.    I found this in a presentation at the  International Conference on Software Maintenance 2008, in Beijing a couple months ago.  These statistics were in the keynote [...]]]></description>
			<content:encoded><![CDATA[<p>In my ongoing effort to educate people about how  software maintenance work outweighs development work, here are some  interesting numbers about the evolution of software professionals and  their work.    I found this in a presentation at the  <a href=\"http://www.icsm2008.org/\">International Conference on Software Maintenance 2008</a>, in Beijing a couple months ago.  These statistics were in the keynote address by Harry Sneed, ANECON GmbH in Germany, who credited long-time software authority, <a href=\"http://www.spr.com/\">Capers Jones</a>.</p>
<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tbody>
<tr>
<td width=\"148\" valign=\"top\"><strong>Year</strong></td>
<td width=\"148\" valign=\"top\"><strong>Pgmrs in Development</strong></td>
<td width=\"148\" valign=\"top\"><strong>Pgmrs in   Maintenance</strong></td>
<td width=\"148\" valign=\"top\"><strong>Percent in   Maintenance</strong></td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">1950</td>
<td width=\"148\" valign=\"top\">90</td>
<td width=\"148\" valign=\"top\">10</td>
<td width=\"148\" valign=\"top\">10%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">1960</td>
<td width=\"148\" valign=\"top\">8,500</td>
<td width=\"148\" valign=\"top\">1,500</td>
<td width=\"148\" valign=\"top\">13%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">1970</td>
<td width=\"148\" valign=\"top\">65,000</td>
<td width=\"148\" valign=\"top\">35,000</td>
<td width=\"148\" valign=\"top\">38%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">1980</td>
<td width=\"148\" valign=\"top\">1,200,000</td>
<td width=\"148\" valign=\"top\">800,000</td>
<td width=\"148\" valign=\"top\">40%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">1990</td>
<td width=\"148\" valign=\"top\">3,000,000</td>
<td width=\"148\" valign=\"top\">4,000,000</td>
<td width=\"148\" valign=\"top\">57%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">2000</td>
<td width=\"148\" valign=\"top\">4,000,000</td>
<td width=\"148\" valign=\"top\">6,000,000</td>
<td width=\"148\" valign=\"top\">60%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">2010</td>
<td width=\"148\" valign=\"top\">5,000,000</td>
<td width=\"148\" valign=\"top\">9,000,000</td>
<td width=\"148\" valign=\"top\">64%</td>
</tr>
<tr>
<td width=\"148\" valign=\"top\">2020</td>
<td width=\"148\" valign=\"top\">7,000,000</td>
<td width=\"148\" valign=\"top\">14,000,000</td>
<td width=\"148\" valign=\"top\">67%</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>What is interesting about this is that it shows the  ever growing heap of software that must be maintained.  The duration of  software maintenance on an application easily exceeds the duration of  its original development.</p>
<p>Why is this important?  Two reasons:  1)  when planning new software development I think it should be becoming  very clear that organizations must build solid maintenance plans into  the development plan.  In particular, maximizing  maintainability of the software; and 2) AS/400 iSeries IT management  needs to educate execute management about the long-term cost of software  and seek to maximize the long-term value of the software through  effective maintenance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/298/interesting-statistics-%e2%80%93-numbers-of-programmers-in-maintenance-vs-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unsolved Software Maintenance Problems – Measuring Program Comprehension</title>
		<link>http://www.vlegaci.com/294/unsolved-software-maintenance-problems-%e2%80%93-measuring-program-comprehension/</link>
		<comments>http://www.vlegaci.com/294/unsolved-software-maintenance-problems-%e2%80%93-measuring-program-comprehension/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 12:56:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>
		<category><![CDATA[Software Maintenance Theory]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=294</guid>
		<description><![CDATA[(This post is part of a general discussion of unsolved problems in software maintenance.  The initial list of these problems is defined in this previous post.) Can the analysis process that maintenance programmers engage in, so called program comprehension, be measured?  Is it important to measure it?  If it can be measured, is it then [...]]]></description>
			<content:encoded><![CDATA[<p>(This post is part of a general discussion of unsolved problems in software maintenance.  The initial list of these problems is defined in this <a title="\&quot;Unsolved" href="\&quot;http://www.vlegaci.com290/unsolved-software-maintenance-problems/\&quot;">previous post</a>.)</p>
<p>Can the analysis process that maintenance programmers engage in, so called program comprehension, be measured?  Is it important to measure it?  If it can be measured, is it then possible to improve it?</p>
<p>Some studies have shown that program comprehension takes from 40-60% of maintenance programmers’ time.  That indicates pretty clearly that this is worth measuring and improving if there is a way.  But is there a way?  There  seems to be remarkably little research on this question despite the  fact this is arguably the single most costly task in the software  lifecycle (i.e., it consumes 40-60% of maintenance programmers time, and  maintenance programming consumes 80-90% of lifecycle costs.)</p>
<p>Let me first define what I am including under the title “program comprehension” for purposes of this post:</p>
<ul>
<li>Building      mental models of the program’s  control flow and data flow, sufficient to      carry out a given  maintenance task, i.e., comprehending the program</li>
<li>Locating      the code that needs to be changed for the task</li>
<li>Defining      the changes for the task and performing the impact analysis for those      changes</li>
</ul>
<p>Can these things really be measured? I don’t know  if there’s a direct way to measure these things, but I think that there  may in fact be a way to get some related useful measurements of the  aggregate process without excessive effort if adequate code analysis  tools are available.  My basic idea is this:</p>
<ul>
<li>Measure      the quality endpoint after the code  is completed, in other words, count the      post-coding defects found –  whether found by review, QA or in production.</li>
<li>Calculate      the complexity of:
<ul>
<li>The       code that was added, changed or deleted (deleted code might need to be       weighted downward)</li>
<li>The       complexity of the existing code at the changed <em>locations</em>; this should indicate how complex was it to       analyze.  This is the calculation       that I believe factors in the “program comprehension” aspect.</li>
</ul>
</li>
</ul>
<p>It would take some experimenting to determine the  best complexity measurement for this purpose, but let’s say that for  starters you simply used McCabe’s Cyclomatic Complexity measurement  within the function(s) where the change was made.  In  addition to this I think you would have to also include a fan-in metric  to give weight to the backward program slices that needed to be  considered for the change.  Additionally, a computation for  forward program slices needs to be considered to give weight to the  impact analysis of the changes.  More generally, however, this may simply require some sort of measurement of both the backward and forward program slices.</p>
<p>I know I’m throwing a lot in the pot there, but in  theory this is all automatable with a good tool (my own tool, Codelyzer,  for example, can do a substantial portion of this for RPG.)   The point here is to find a way to measure the work that is done in programming maintenance.  Having such a measurement is a key first step towards identifying opportunities for improvement.  I think a measurement of this type begins to fit the actual mental process and effort a programmer requires to make a change.  Other  people, such as Capers Jones, has propose extending the use of function  points into maintenance measurement, and in fact has proposed “micro  function points.”  As much as greatly admire the vast amount of original analysis and work he has done, I have to disagree with him on this point.  Here’s an example of why I disagree:</p>
<p><img class="alignnone" title="unsolved-pgm-comp" src="http://www.vlegaci.com/wp-content/uploads/2011/05/unsolved-pgm-comp1.png" alt="" /></p>
<p>While this is a relatively simple example I think  the point is clear – analyzing code that is be added, changed or deleted  requires analyzing the conditional logic that applies, and this logic  can get quite complex and time-consuming to analyze.  That is why I say the locations of the code changes must be factored into to any attempt to measure maintenance work effort.  This  conditional logic applies within the function, or subroutine, as well  to all the calls of that subroutine, i.e., calculating the backward  program slices.</p>
<p>While this is certainly not a complete prescription  for measuring maintenance work I think it does begin to describe what a  solution might look like.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/294/unsolved-software-maintenance-problems-%e2%80%93-measuring-program-comprehension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unsolved Software Maintenance Problems &#8211; Estimating</title>
		<link>http://www.vlegaci.com/292/unsolved-software-maintenance-problems-estimating/</link>
		<comments>http://www.vlegaci.com/292/unsolved-software-maintenance-problems-estimating/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 12:54:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>
		<category><![CDATA[Software Maintenance Theory]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=292</guid>
		<description><![CDATA[This post is part of a general discussion of unsolved problems in software maintenance.  The initial list of these problems is defined in this previous post. There are a number of problems associated with estimating maintenance work (by which I mean enhancement projects as opposed to production support fixes.) A summary of these problems includes: [...]]]></description>
			<content:encoded><![CDATA[<p>This post is part of a general discussion of unsolved problems in software maintenance.  The initial list of these problems is defined in this <a title=\"Unsolved Software Maintenance Problems\" href=\"http://www.vlegaci.com290/unsolved-software-maintenance-problems/\">previous post</a>.</p>
<p>There are a number of problems associated  with estimating maintenance work (by which I mean enhancement projects  as opposed to production support fixes.)</p>
<p>A summary of these problems includes:</p>
<ol>
<li>In some cases analyzing the programming      changes to be made can comprise half or more of the total programming      work.  How can reasonable estimates      be made without doing half the work?</li>
<li>There are no comprehensive measurements      of maintenance work.  New       development estimates can be made fairly reliable through the use  of      function points, but there are several problems with the use of  function      points for estimating maintenance work.       When can function points be useful, and what can be used when they      are not appropriate?</li>
<li>There are no reliable means of       factoring program complexity into the estimating equation without,  again,      completing the analysis work.  A      change in  one location of a highly complex function maybe be simple, but a       change in a different place might be difficult – how can this be  measured      and factored in?</li>
<li>Absent the ideal analysis tool, there      is no clear means of identifying the full set of required regression test      cases.</li>
<li>Programming estimates are always affected       by the knowledge and skill of the particular programmer doing the  work,      but maintenance work is even more highly leveraged by these  factors.  In particular, domain knowledge of the       business, application and program are critical, as well as knowledge of  programming      patterns used in the application, and the history of  changes to the      application.  How can the knowledge      of these be measured and factored into estimates?</li>
<li>For some types of maintenance work       there is no apparent way to measure the amount of work that was  performed      – this impedes the effort to measure productivity and  improve future      estimates.  To make a difficult       example, say the maintenance work that a programmer did consisted of  reorganizing      a function of 100 statements so that it executed  correctly and more      quickly.  The programmer just      reorganized and sequenced the same set of statements – how could this be      measured?</li>
</ol>
<p>Following are my comments on the first of these problems – no complete solutions here, and sometimes just more questions.  As someone said, the closer you look, the more you don’t know.</p>
<p><strong>1. In some cases analyzing the programming changes to be made can comprise half or more of the total programming work.  How can reasonable estimates be made without doing half the work?</strong></p>
<p>This problem needs to be broken down for finer grained analysis.  In his book “<em><a href=\"http://www.amazon.com/Estimating-Software-Costs-Bringing-Realism/dp/0071483004/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1235448088&amp;sr=1-1\">Estimating Software Costs</a></em>” Capers Jones defines five types of maintenance work:</p>
<ul>
<li>Code additions without internal changes</li>
<li>Additions with internal changes</li>
<li>Replacing an existing feature with a      new feature</li>
<li>Adding new features accompanied by      scattered updates</li>
<li>Scattered updates, deletions and      concurrent changes by multiple programmers</li>
</ul>
<p>I think the most difficult estimating challenges occur in the types that involve changes to existing code.  Estimating  work that is essentially new code added on to the application can  mostly be estimated simply as new work with interface and regression  testing requirements.  Mr. Jones suggests that the  difficulty of working with existing code can be alleviated – sometimes –  by the use of specialized tools.</p>
<p>So the most challenging problem here is how to estimate changes to existing code.  As  I said earlier, the first challenge of that is to locate all the code  to be changed – and this can be a significant portion of the work.  How can this be estimated?  Without  an ideal reverse engineering tool that is full of domain knowledge that  can map change requirements to specific code, I don’t know of a way  around doing this analysis work.  I suspect the best  solution to this problem has to do with optimizing the project processes  and management expectations around this unavoidable fact of maintenance  life.  But it is it provably unavoidable?  That’s an open question as far as I know.</p>
<p>More on the sub-problems of maintenance estimates in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/292/unsolved-software-maintenance-problems-estimating/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unsolved Software Maintenance Problems</title>
		<link>http://www.vlegaci.com/290/unsolved-software-maintenance-problems/</link>
		<comments>http://www.vlegaci.com/290/unsolved-software-maintenance-problems/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 12:53:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=290</guid>
		<description><![CDATA[In the writing, research, development and consulting work that I do, I find that I keep coming back to the same set of problems in software maintenance that no one seems to have solved.  I’m going to write a post on each of these problems laying out what the issue is and what is currently [...]]]></description>
			<content:encoded><![CDATA[<p>In the writing, research, development and  consulting work that I do, I find that I keep coming back to the same  set of problems in software maintenance that no one seems to have  solved.  I’m going to write a post on each of these  problems laying out what the issue is and what is currently the best  practice for dealing with each.</p>
<p>Let me first clarify the term “maintenance”  as it is very ambiguous – in this context what I am referring to is  software “enhancement”, aka, “adaptive” maintenance according to the ISO  14764 specification.</p>
<p>Here are the key unsolved software maintenance problems as I see them:</p>
<p><a href=\"http://kilnerblog.com/unsolved-software-maintenance-problems-estimating/\"><strong>Estimating</strong></a><a href=\"http://kilnerblog.com/unsolved-software-maintenance-problems-estimating/\"> </a>–  how can a modification be estimated without first thoroughly locating  and understanding all relevant code in the existing application?  Doing so is, of course, often a large portion of the work.</p>
<p><a href=\"http://kilnerblog.com/66/\"><strong>Tracking, measuring and improving key tasks</strong></a> – many studies have shown that program comprehension can take as much as half of a maintenance programmer’s time.  Program comprehension is mostly an internal mental task: how can it be tracked, measured and improved?  Or even estimated?  If  this can’t be tracked, measure, improved or estimated, well, there’s  half the budget right there beyond the control of management.</p>
<p><strong>Methodology</strong> – ISO 12207 is a specification for the complete software life cycle.  It contains a process for software maintenance which breaks down into further tasks and activities.  However, there is no mention, again, of program comprehension – half the work of maintenance programmers.  What would a methodology look like that included this key activity?</p>
<p>Part 2 of this questions is whether an Agile-like methodology can work with maintenance projects.  I have written on this subject before, <a title=\"Software Maintenance Measurements – Processes\" href=\"http://www.vlegaci.com282/software-maintenance-measurements-%e2%80%93-processes/\">here</a>, which also connects to further posts I have written.</p>
<p><strong>Training</strong> – Software maintenance is a specialized skill, and by all accounts more difficult than new development.  What would an ideal training curriculum contain for maintenance programmers?  One of vLegaci’s offerings is maintenance training, but I regard this as a work in progress.  I have searched extensively for some theoretical grounding for this topic and have found very little.</p>
<p><strong>Regression testing</strong> – There are two problems here, 1) how can you automatically scope the  required regression testing, and 2) in the absence of a well-documented  system, how can you execute thorough regression tests inexpensively?</p>
<p><strong>IDE/IME</strong> – IME is my name for Interactive Maintenance Environment.  Perhaps other platforms have the maintenance equivalent of an IDE, but I am not aware of them.  There are many features that could be very valuable to maintenance programmers.</p>
<p><strong>Defining the Efficacy of Available Resources</strong> – following are some things that effect work estimates – how do you  quantify them for estimating purposes: quality of documentation,  relevant knowledge and skill level of maintenance programmers, coverage  of existing regression tests, actual maintainability of target code,  etc.</p>
<p>I will tackle each of these subjects in following posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/290/unsolved-software-maintenance-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Maintenance Measurements – Processes</title>
		<link>http://www.vlegaci.com/282/software-maintenance-measurements-%e2%80%93-processes/</link>
		<comments>http://www.vlegaci.com/282/software-maintenance-measurements-%e2%80%93-processes/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 12:46:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=282</guid>
		<description><![CDATA[What processes should be measured in software maintenance work? Consider first the goals of measuring these processes.  The goals of measuring such work are that the measurements should be: Translatable into process improvements and increased value delivery Cost effective to capture Demonstrably consistent Automated wherever feasible Traceable, in two respects: from summary to original point [...]]]></description>
			<content:encoded><![CDATA[<p>What processes should be measured in software maintenance work?</p>
<p>Consider first the <em>goals </em>of measuring these processes.  The goals of measuring such work are that the measurements should be:</p>
<ul>
<li>Translatable into process improvements and increased      value delivery</li>
<li> Cost effective to capture</li>
<li>Demonstrably consistent</li>
<li>Automated wherever feasible</li>
<li>Traceable, in two respects: from       summary to original point of capture, and from one point in a project to       another</li>
<li>Parallel, that is, measurements       should line up for the same time periods, projects, resources, etc</li>
</ul>
<p>Let me emphasize the first goal: without increases in productivity, quality or value all the other goals have little meaning.</p>
<p>In his book, <em><a href=\"http://www.amazon.com/Applied-Software-Measurement-Capers-Jones/dp/0071502440/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1233721006&amp;sr=1-1\">“Applied Software Measurements, Global Analysis of Productivity and Quality”</a></em> by Capers Jones, the author expresses some exasperation that in over 50  years the IT community has not yet produced a standardized “chart of  accounts” for software project activities.  I think the  concept of a standard chart of accounts for project tasks makes a great  deal of sense, and, even if the IT world as a whole does not  standardize, surely a given IT organization should do so.</p>
<p>In his book he references two charts of accounts that have been developed, one by an organization with which he is associated, <a href=\"http://www.spr.com/\">Software Productivity Research (SPR)</a>, and one by IBM.  For most business IT organizations (referred to in the book as “MIS”) the SPR chart of accounts seems more appropriate.  It contains 25 top level tasks, which SPR has broken down into as many as 150 subordinate tasks.</p>
<p>Here is the SPR chart of accounts of project tasks:</p>
<ol>
<li>
<ol>
<li>Requirements</li>
<li>Prototyping</li>
<li>System architecture</li>
<li>Project planning</li>
<li>Initial analysis and design</li>
<li>Detail design and specification</li>
<li>Design reviews and inspection</li>
<li>Coding</li>
<li>Reusable code acquisition</li>
<li>Purchased software acquisition</li>
<li>Code reviews and inspections</li>
<li>Independent verification and validation</li>
<li>Configuration control</li>
<li>Integration</li>
<li>User documentation</li>
<li>Unit testing</li>
<li>Function testing</li>
<li>Integration testing</li>
<li>System testing</li>
<li>Field testing</li>
<li>Acceptance testing</li>
<li>Independent testing</li>
<li>Quality assurance</li>
<li>Installation and user training</li>
<li>Project management</li>
</ol>
</li>
</ol>
<p>Mr. Jones makes the point that most projects  do not contain activities for all these tasks, and in fact many MIS  projects routinely succeed with 6 to 12 tasks (whereas military  projects, for example, tend to contain 15 to 25 tasks.)  And again note that these tasks can have a number of subtasks.</p>
<p>The data that the author suggests should be collected for each of these tasks is the following:</p>
<ul>
<li>The size of the staff for each activity</li>
<li>The total effort for each activity</li>
<li>The total cost for each activity</li>
<li>The schedule for each activity</li>
<li>The overlap or concurrency of activity      schedules</li>
<li>The deliverables or work products from      each activity</li>
</ul>
<p>These activities and measurements form the  structure for the initial estimates and project plan, and then the  tracking of actuals against the plan.</p>
<p>Another key aspect of this is that function point metrics are captured for each project.  These  then become the basis for subsequent analysis of activity results  against function points to enable improvement of future estimating and  planning.</p>
<p><strong>What About Agile Projects?</strong></p>
<p>Given the distinct nature of the Agile methodology a different chart of accounts is proposed:</p>
<ol>
<li>
<ol>
<li>Initial planning</li>
<li>Test case development for initial      iteration</li>
<li>Scrum session for testing</li>
<li>Development of initial iteration</li>
<li>Scrum sessions for development</li>
<li>Internal testing of initial iteration</li>
<li>Scrum session for internal testing</li>
<li>User documentation of initial iteration</li>
<li>Scrum session for user documentation</li>
<li>Release of initial iteration</li>
<li>Scrum session for release</li>
<li>User acceptance of initial iteration</li>
<li>Scrum session for acceptance test</li>
</ol>
</li>
</ol>
<p>For those not familiar, in Agile projects the  above activities represent one iteration of a 2-4 week development  cycle that will be iterated until the project conclusion; a scrum  session is a quick discussion by all team members of 1) what has been  done since yesterday, 2) what is to be done today, and 3) what  impediments exist, if any.</p>
<p>In this book, which as I have said before is a  truly excellent reference of actual empirical data from over 12,000  software projects, the author does some in depth analysis of the results  of different project methodologies.  His analysis concludes that different methodologies are more successful for different sized projects.  I  will write more on this in a later post, but a quick summary is that  for small projects Agile is highly successful, and for larger projects  TSP/PSP and CMM are more successful.  The author goes on to  point out that if Agile is used for larger projects then additional  tasks need to be added for such things as change control, integration  and so on.</p>
<p>A key question, not addressed in this book, is  whether Agile can be made to work with maintenance enhancement  projects.  I have previously written two posts on this question,<a title=\"Can Agile Methods Work for Software Maintenance? Part 1\" href=\"http://www.vlegaci.com269/can-agile-methods-work-for-software-maintenance-part-1/\"> Part 1</a> and <a title=\"Can Agile Methods Work for Software Maintenance? Part 2\" href=\"http://www.vlegaci.com284/can-agile-methods-work-for-software-maintenance-part-2/\">Part 2</a>.</p>
<p><strong>But What About Maintenance (Enhancement) Projects?</strong></p>
<p>Notably lacking from either chart of accounts  are tasks for analyzing the existing system or program comprehension,  though these are often lumped under initial or detailed design.  This is problematic in that many studies have shown that program comprehension <em>typically consumes half</em> of a programmer’s time on maintenance or enhancement work.  How can this be measured?  Estimated?  This seems to be one of the largest remaining unsolved problems in software engineering.  I  will write more on this in a future post, but for now I will say that  the beginning steps to solving these problems are the implementation for  the team of 1) consistent, visible methods and 2) tools that enable  tracking of program research.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/282/software-maintenance-measurements-%e2%80%93-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Maintenance Measurements – Users</title>
		<link>http://www.vlegaci.com/280/software-maintenance-measurements-%e2%80%93-users/</link>
		<comments>http://www.vlegaci.com/280/software-maintenance-measurements-%e2%80%93-users/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 12:43:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=280</guid>
		<description><![CDATA[A simple list of things to measure that are related to users includes items in the list shown below.  Some of these can be defined further, for example, categories could be defined and reported on for the first three items, but for current purposes I will keep the list at a fairly high level.  These [...]]]></description>
			<content:encoded><![CDATA[<p>A simple list of things to measure that are related to users includes items in the list shown below.  Some  of these can be defined further, for example, categories could be  defined and reported on for the first three items, but for current  purposes I will keep the list at a fairly high level.  These  measurements are not solely related to maintenance, but I think it’s  worth talking about them in the overall context of measurements.</p>
<p>Caveat: selection of which measurements to  implement should be based on the anticipated value they contribute to  software maintenance process improvement efforts or general business  goals.</p>
<div>
<ul>
<li>Incidents reported</li>
<li>Help requests</li>
<li>Defects reported</li>
<li>IT response times and resolutions to      the above items</li>
<li>Numbers of users, and those numbers      cross-mapped to:</li>
</ul>
<ul>
<li>
<ul>
<li>Application usage</li>
<li>System usage</li>
<li>The first three reporting items in this list</li>
</ul>
</li>
</ul>
<p>User satisfaction – as obtained through periodic surveys, measuring such items as:</p>
<ul>
<li>Nature, frequency, importance and      benefits of application usage</li>
<li>Ease of learning, installation,      customization, use for both frequent and infrequent tasks, handling      errors,</li>
<li>Assessment of defects, performance,      availability, reliability</li>
<li>Quality of training, reference manuals,       on-screen prompts, clarity of screen and report formatting, clarity of       terminology</li>
<li>Quality of support</li>
<li>Rankings of the best and worst features      and desired improvements</li>
</ul>
<p>Much of this user satisfaction list is a summary from <em><a href=\"http://www.amazon.com/Applied-Software-Measurement-Capers-Jones/dp/0071502440/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1233721006&amp;sr=1-1\">“Applied Software Measurement”</a></em> by Capers Jones.  This book is an outstanding reference for information about all aspects of software measurement.</p>
<p>Also in this book is an interesting table presented by Mr. Jones that combines data on defects and customer satisfaction.</p>
<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tbody>
<tr>
<td width=\"197\" valign=\"top\">&nbsp;</td>
<td width=\"197\" valign=\"top\"><strong>High User   Satisfaction</strong></td>
<td width=\"197\" valign=\"top\"><strong>Low User   Satisfaction</strong></td>
</tr>
<tr>
<td width=\"197\" valign=\"top\"><strong>High Defect   Levels</strong></td>
<td width=\"197\" valign=\"top\">Zone of Urgent   Repairs</td>
<td width=\"197\" valign=\"top\">Zone of Urgent   Replacement</td>
</tr>
<tr>
<td width=\"197\" valign=\"top\"><strong>Low Defect Levels</strong></td>
<td width=\"197\" valign=\"top\">Zone of Excellent   Applications</td>
<td width=\"197\" valign=\"top\">Zone of   Functional Enhancements</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Zone of Urgent Repairs – In most cases defect  levels are inversely proportional to user satisfaction – this zone is  therefore unusual, and typically represents initial software releases  with very important functionality.</p>
<p>Zone of Excellent Applications – This is obviously the desirable goal of all software projects.  Software with high levels defects rarely report high user satisfaction.  Top notch IT organizations can achieve this goal in as much as 90 percent of their applications.</p>
<p>Zone of Urgent Replacement – These applications are candidates for immediate action or replacement.  Mr.  Jones suggests several possible remedies, including: identifying and  eliminating error prone modules, full inspections and retesting.</p>
<p>Zone of Functional Enhancements –  Applications in this zone have generally fallen short in the areas of  functionality delivered, cumbersome user interfaces, or inadequate  training or documentation.</p>
<p><strong>User Productivity as a Measure</strong></p>
<p>An altogether different perspective is described by Joe Hogan in an article for CIO Magazine, <a href=\"http://www.cio.com/article/132501/The_Real_Measure_of_Great_End_User_Services\"><em>“The Real Measure of Great End-User Services.” </em></a> This  article makes the case that IT organizations sometimes become overly  focused on measurements that support their efforts to meet their SLAs.  Instead  of focusing inwardly on SLAs, IT organizations serve their companies  better by focusing their measurements on how they help users achieve  their business unit goals.  Examples of such goals to be  measured might be whether sales people are making more calls and closing  more sales, whether customer service people are handling more calls  more effectively, and so on.</p>
<p>While SLAs could in theory include such business unit goals, these goals are often a moving target.  Users  who support customers in particular are increasingly dependent on IT  systems and have little tolerance for any delays or interruptions that  stand in the way of doing their job.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/280/software-maintenance-measurements-%e2%80%93-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Agile Methods Work for Software Maintenance? Part 2</title>
		<link>http://www.vlegaci.com/284/can-agile-methods-work-for-software-maintenance-part-2/</link>
		<comments>http://www.vlegaci.com/284/can-agile-methods-work-for-software-maintenance-part-2/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 12:48:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=284</guid>
		<description><![CDATA[If you read Part 1 of this post you’ll recall I reviewed the 12 original points of the Agile Manifesto and commented on their suitability for legacy enhancement projects (as opposed to production support work.)  Now I’d like to expand on the first of the points, one of the most essential points that makes Agile [...]]]></description>
			<content:encoded><![CDATA[<p>If you read <a title=\"Can Agile Methods Work for Software Maintenance? Part 1\" href=\"http://www.vlegaci.com269/can-agile-methods-work-for-software-maintenance-part-1/\">Part 1</a> of this post you’ll recall I reviewed the 12 original points of the <a href=\"http://www.agilemanifesto.org/principles.html\">Agile Manifesto</a> and commented on their suitability for legacy enhancement projects (as opposed to production support work.)  Now I’d like to expand on the first of the points, one of the most essential points that makes Agile what it is:</p>
<ol>
<li>Early and continuous delivery of      valuable software</li>
</ol>
<p>In my own experience this can be very  problematic for sizeable legacy enhancement projects – it is possible,  but I think only in the right circumstances.  What are the objectives of this anyway?  Why is it important?</p>
<p>Two key objectives in any project are:</p>
<ol>
<li>Minimize risk</li>
<li>Maximize speed and volume of value      delivery</li>
</ol>
<p>The second point is clear enough, make the rate of value delivery as high as possible.  A graph of value delivered by the project should be sloping down over time.  This  ensures that if the project is discontinued for any reason, the most  value pieces got out the door, plus it maximizes the rate of ROI.</p>
<p>The first point, minimize risk, is a little more complicated.  In a <a href=\"http://www.infoq.com/presentations/Lean-Agile-Alan-Shalloway\">presentation by </a><a href=\"http://www.infoq.com/presentations/Lean-Agile-Alan-Shalloway\">Alan Shalloway, CEO of Net Objectives, </a><a href=\"http://www.infoq.com/presentations/Lean-Agile-Alan-Shalloway\">at Agile 2008</a>, he commented that there are five possible reasons that mistakes are made in software development:</p>
<p>-          Developers didn’t write the code properly</p>
<p>-          Developers misunderstood what the customer wanted</p>
<p>-          The customer realized later they misspoke</p>
<p>-          The customer spoke properly but realized after they saw the program that they asked for the wrong thing</p>
<p>-          The customer spoke properly and got what they originally wanted, but now they have a better idea</p>
<p>Risk for a project is minimized by reducing both the occurrence of these mistakes and their impact when they do occur.  One  of the key benefits of the first Agile point, “early and continuous  delivery”, is that it reduces the impact of these mistakes by  discovering them as quickly as possible.</p>
<p>So that is the thinking behind this concept, now, the question: is this possible in legacy enhancement projects?</p>
<p>New development projects typically realize  this goal by stubbing off modules in early iterations and completing  them in later iterations.  A map of when different pieces of functionality are delivered might end up looking something like this:</p>
<p><img class=\"alignnone size-full wp-image-286\" title=\"deliverydgm\" src="http://www.vlegaci.com/wp-content/uploads/2011/05/deliverydgm.png" alt=\"\" width=\"540\" height=\"255\" /></p>
<p>Is this process of stubbing off functionality possible in enhancement projects?  I believe the answer is</p>
<p>-      usually yes, when the new functionality is realized as new interfaces  to new modules, representing new edges of the application &#8211; akin to new  development, though called by old code, and</p>
<p>-          usually no, when the new functionality is realized by modifying the internals of multiple interconnected existing modules.</p>
<p>Modules in this context are AS/400 programs or RPG subroutines or procedures.  I  qualify these both by “usually” as I think the truth is more  fine-grained than this level of analysis – but this is a good start –  more in the future.</p>
<p>I think this is a very important point to  have clarity on as it needs to be considered when planning projects and  setting expectations with the organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/284/can-agile-methods-work-for-software-maintenance-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Maintenance Measurements &#8211; An Inventory</title>
		<link>http://www.vlegaci.com/278/software-maintenance-measurements-an-inventory/</link>
		<comments>http://www.vlegaci.com/278/software-maintenance-measurements-an-inventory/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 12:42:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Maintenance Management]]></category>

		<guid isPermaLink="false">http://www.vlegaci.com?p=278</guid>
		<description><![CDATA[In order to track and improve a software maintenance operation what should you measure?  One way to look at this is that from an organization’s point of view the objective is to maximize a system’s “maintainability”.  That’s maintainability in a very broad sense, for example as described in Maintaining Maintainability by Ramage and Bennet a [...]]]></description>
			<content:encoded><![CDATA[<p>In order to track and improve a software maintenance operation what should you measure?  One way to look at this is that from an organization’s point of view the objective is to maximize a system’s “maintainability”.  That’s maintainability in a very broad sense, for example as described in <a href=\"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.7571\"><em>Maintaining Maintainability</em></a> by Ramage and Bennet a number of factors influence maintainability:</p>
<ul>
<li>Users</li>
<li>Processes</li>
<li>Documentation</li>
<li>Availability of software authors for consultations</li>
<li>Skills of maintenance programmers</li>
<li>Tools available to aid the maintenance process</li>
<li>The software itself</li>
</ul>
<p>For each of these factors measurements can be  defined, captured and analyzed to improve the affect on the overall  maintenance operation.  In some cases the measurements by themselves have little value, but gain value only when used in ratios with other measurements.  Not  all measurements are necessarily of value to a given organization –  management needs to exercise judgment as to which measurements may be  most useful.</p>
<p>Another way, of course, to determine what should be  measured is  to look at the goals of software measurement.  I had  outlined one set of possible goals in an earlier post, <a title=\"Goals of Software Maintenance\" href=\"http://www.vlegaci.com276/goals-of-software-maintenance/\">here</a>.  For this this exercise, however, I will use the perspective described above.</p>
<p>Over the next few posts I will drill down into each of these areas and suggest possible measurements to be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlegaci.com/278/software-maintenance-measurements-an-inventory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

