I can clearly remember that day I arrived at work - towards the end of the year 2003 – it was easily before 6am. I was leading a small team tasked with prototyping a test environment for a NASA proposal. I stood there amazed as I watched my two programmers demonstrate a completely reengineered satellite simulation environment. Wait – let me be clear - within only a few days – they rewrote close to 30,000 lines of FORTRAN and another 4,000 lines of assembly code. How did they do it? They called it “goop.” “The hand cleaner?” I asked – rather befuddled. No, they were referring a new development language by LabVIEW (National Instruments) called “GOOP” – short for Graphical Object Oriented Programming.
That was the day I decided to stop being a programmer. I was, at my ‘age,” no longer really interested in keeping up with the latest programming paradigms (and vernacular – such as “paradigm”). I decided to abandon the past and embrace my role as a program manager. But now, looking back I wish I would have asked a few more questions.
Measuring Failure
In 1995 the Boston, Mass. - based IT project management research and consulting firm The Standish Group released their first CHAOS Summary report. The report quickly became an industry score card for measuring the success or failure of IT projects; due mostly in part to the astounding percentage of failed projects disclosed in the report. The report served as a wake-up call that appears to have been heard - the 10th anniversary CHAOS report announced that the percentage of failed projects had been reduced by more than half. But alas, within a mere five years, the number of failed projects is back on the rise; the 2009 Standish Group CHAOS report indicates that nearly 1 in 4 projects are doomed. But why?
According to the original 1995 CHAOS report, to improve the probability of success projects should be reduced in complexity and the software “grown.” The recommendation was to reduce software into smaller, more manageable segments, and develop it outward. If this reported reduction in failed projects is to be believed then it appears the software industry was diligent in “growing” projects using smaller elements (1). However, what should also be understood is that those projects were comprised of many smaller pieces that were easier to “size.”
In 1995 the most common approach to sizing software was to count the source lines of code (SLOC) or count Function Points (though less prevalent). Software sizing was an established and mature methodology spanning over twenty years – with a myriad of tools available to automate the process and additional metrics available to measure software complexity and probability of defects (bugs). If the size of a project was understood, then the ability to estimate schedule and effort could easily be modeled by applying previous performance measures (and many other parameters). By forecasting a realistic estimate early in the development cycle there was a significantly higher probability of the project's success (on time, within budget, at promised functionality) – and hence – less failure.
Back to the Future
It's 2003 again, and I've just been told about a new methodology that allows anyone to build software using graphical components. This was not really all that new; in the mid-1990s through early 2000s “visual” and “portable” languages gained industry acceptance and began to dominate the development landscape. Within just a few years, languages that could be “produced” by an environment became the lingua du jour. After all, who could argue with the massive scale of economy that software manufacturing tools could generate using “Visual” programming? And for me in particular - after three days of watching my team crank out “GOOP” - I was a hero to my management.
But wait - notice the timeline in the Chaos study mentioned above and the resurgence of software failures. While I am not a big proponent of causality – let's at least take a few moments and explore this potential contributor to the trend in software failure. First, a picture from the TIOBE Programming Community (2) – the unofficial keepers of what is popular in programming languages.
The languages with the most growth in popularity for five years have been: Java, followed by C#, JavaScript, and then Ruby. Some older languages also in vogue are Perl, C, and Visual Basic. Why? Perhaps it's because most of these languages have become more sophisticated, are wrapped in integrated development environments, and are positioned with the sole purpose of increasing productivity. In a word – they've become more “visual.” While it may be easier to build the code, there is little consideration as to how the generated code should be “sized.” In fact, the environment builders boast that one barely needs to fiddle under the hood; Draw, click, and Poof – instant code that runs.
Size Matters
The most significant driver to how much time, cost and effort it takes to build software is the scope (or size) of what is to be built and therefore one of the biggest factors in accurate estimation. As the Godfather of software estimation has warned us (Barry W. Boehm) - “The biggest difficulty in using today's algorithmic software cost models is the problem of providing sound sizing estimates” (3). How does an estimator measure “GOOP” and how many lines of code that a code generator inserts are really needed? What percentage of a C++ template can we remove (if we dare) and keep the Class fundamentally stable – yet concise. As Mark Twain once said – “the hardest part about writing is removing all the extra words.”
Is it possible to count software lines of code anymore? Even using the best code counting tools available – aren't they really just counting lots of lines of code that may be unnecessary? Or in inverse – how much time did it take the programmer to remove all that code that should not have been counted – and was not? My suspicion is that all the code stays in (unless a standard with high rigor like FAA DO-178B verified the system).
Since I'm on the topic of counting code - what happened to Ada and FORTRAN; those stalwart languages of the 80's and 90's that were easy to count? Alas, they are now ranked number 24 and 25; again, no assumption of causality. (But yes my tongue is planted firmly in cheek). Estimates seemed so much easier then. Cue the music.
Hmm, there is something becoming clear in the Standish report – assuming I am not making what statisticians would call an “error of confirmation”; I would propose that perhaps the industry has made capturing the size of software too complicated – and as a consequence - our ability to accurately create a good cost estimate. Ultimately, if the industry is moving away from “countable” languages and migrating towards “visual” representations then some mechanism needs to be established that can accurately correlate effort to size or vice-versa.
Here's a thought – remember those thousands of dollars used to purchase graphical requirements and design tools – such as the IBM Rational Rose, RSA Integration, and Rhapsody? Why not use the output of these use case models to calculate Use Case Points (unadjusted) which can then be fed into the parametric models. Are you building “Design Patterns?” Why not spend a bit more time and calculate the COSMIC Function Points and publish them along with the pattern – that way the cost of implementing the pattern can be calculated. At a minimum, before charging forward from requirements to code – attempt to calculate some “functional” size that the parametric model accepts and proceed – then go back later to see if your effort per function assumptions were correct.
The software community has made great progress in creating tools to improve productivity – but our estimates are wrong because we stopped half way! We need to regroup and identify software size as it relates to software cost and involve parametric tools to calculate accurate estimates. Until then – it's purely guess work to estimate new product development and blind trust in tribal knowledge when modifying existing applications. After all – just how long does it take to make GOOP?
1 - Jim Johnson, chairman of The Standish Group, says he was so surprised to observe a dip in IT project success rates that he waited an extra four months before publishing the CHAOS report to make sure its findings were accurate. He attributes the increase in IT project failures to the recession, which according to economists began in December, 2007, and subsequent budget cuts.
3- Software Engineering – Barry W. Boehm's Lifetime Contributions to Software Development, Management and Research., Edited by Richard W. Selby , Wiley-IEEE Computer Society Pr; Reprint edition (June 4, 2007)
How To Estimate Software
Some homeowners have no problem with a vision and a plan when it comes to remodelling and renovation. It just seems that some individuals can put together a plan, after coming up with a general renovation idea, then see that plan through without much assistance. But this is not the case for the majority of homeowners. That is where home improvement software can help.
While no computer program is perfect for every situation, most homeowners will be able to find some planning programs and cost-estimate software that will be of great assistance in making the remodelling/renovation project go more smoothly. This can be true for those who are do-it-yourself types and for those who want to get some idea of the cost before turning the project over to a professional.
Some property owners who want to do a very basic remodelling task or simply upgrade something in the home may choose the simplest of planning and cost estimate programs. These can work quite well in many situations. However, there are professional versions of most home remodelling software, both for planning and for cost estimation. These might be a bit more expensive at first, but will give the homeowner a few more choices (and perhaps a more detailed estimate of cost).
Of course, if the homeowner does not plan to do any of the work and is not concerned about great detail in cost, planning and financial software may not be necessary. Most of the professionals who work on remodelling tasks have computer software to plan and estimate. Those who don't usually have enough experience to take care of the original plans, estimate of labor and materials costs and so on.
A few basic ideas about what to look for in home remodelling software will help make the early stages of the project go smoothly. Remember that this planning/estimation software is usually designed for use well before any lumber is cut or any nails are hammered in. This will be important when the homeowner or other person helping with the project starts to purchase materials. Most planning and cost estimation software allows for printing out a materials list and even provides for a report of total project. It is important as well to make sure that a preliminary plan and cost estimate is available before the homeowner goes back to the software for drawings, floor plans and budget details. In general, the planning and estimate process should be done slowly and in several steps.
There are some fairly good free software programs available. Several of these can be downloaded from Web sites. Some care should be taken to get the type of software that fits best with the original idea/vision for the remodelling project. Even with the most careful planning and the best software, there will be challenges and changes (some can be anticipated, others cannot). In most cases, just using some software will help. Using the correct software for the task, be it remodeling the bathroom or can be the difference between a smoothly flowing project and one that is beset by problems.
Both David D Dewitt & John Bakers are contributors for EditorialToday. The above articles have been edited for relevancy and timeliness. All write-ups, reviews, tips and guides published by EditorialToday.com and its partners or affiliates are for informational purposes only. They should not be used for any legal or any other type of advice. We do not endorse any author, contributor, writer or article posted by our team.
David D Dewitt has sinced written about articles on various topics from Computers and The Internet, Pet Snakes. David DeWitt is a Senior Consultant with Galorath based in El Segundo, California. He can be contacted at ddewitt (AT) galorath.com. For more information on the Galorath line of. David D Dewitt's top article generates over 720 views. to your Favourites.
John Bakers has sinced written about articles on various topics from Car Rental, Sell Home and Bathroom Remodeling Ideas. John Bakers routinely edits articles on themes relating to workbench designs. His contributions on can be fo. John Bakers's top article generates over 22200 views. to your Favourites.
Cat 5 Computer Cable Category 5 wiring and the technologies that are springing up from it are the wave and the future and its clear that this is the reason why so many of us are asking what is Cat 5 wiring