Is Open Source Software Higher Quality Software?

Monday, December 12, 2011 by Arlene Minkiewicz
Check out this paper   “The Economics of Community Open Source Software Projects: An Empirical Analysis of Maintenance Effort.”  In it the authors hypothesize that Open Source practices increase the quality of the software that gets produced and subsequently lead to code that is less costly to maintain. 

Low quality code must be refactored more frequently than high quality code and there is substantial evidence that maintenance interventions tend to lead to even more degradation of the quality of the code.  So not only are low quality applications more expensive to maintain, the unit maintenance cost also increases over time.  The authors use the term entropy to describe the phenomenon and introduce the concept of entropy-time as a means of creating a standard for measurement of this degradation over time due to subsequent refactoring activities.

The authors use this notion of entropy-time to conduct an empirical analysis comparing the maintenance costs for Open Source applications with the maintenance costs that come from a traditional maintenance cost estimating model developed through study of software maintenance efforts for proprietary software applications.  The data studied confirmed their hypotheses.  The study was rigorous and my intent in mentioning it is to pique your interest not to be comprehensive, so check it out if you’re interested.

What interests me are the conclusions the authors draw and their suggestions as to why these may be so.  The authors posit that Open Source Software may be higher quality software because it is being developed by people all over the planet where there is no (or little) direct communication requiring the development to be modular and very tightly coupled.  They further suggest that the interests of open source developers are more motivated towards quality because of the pride they take in their work or because they know that their work will be viewed by the masses.  The final factor they suggest might be responsible for this increase in quality with Open Source is the fact that schedules are self inflicted rather than in proprietary efforts where schedules are driven by customer or market demands.

I thought it was a great study with thought provoking results.  The authors ended with several examples where companies adopting a mixed public/private model has resulted in high quality software successes.  So maybe the software development community should look at where adopting open source practices might improve the quality of the software we are producing?

Some Random Musings on Technical Debt

Friday, September 9, 2011 by Arlene Minkiewicz

I have recently being following an animated thread on LinkedIn “Death of a Metaphor – Technical Debt.” It’s been live for 2 months with over 200 contributions from dozens of different people.  The discussion was launched by questioning whether continued use of this metaphor makes sense.  The discussion thread weaves and bobs around actually answering this question but it’s amazing how passionate the world is on this topic.  My personal opinion is that it’s a perfectly adequate metaphor because it helps create a discussion between IT and the business leaders in terms that both can understand – dollars and cents. 

Sometimes during software development decisions are made to forgo structural quality to meet some other objective – additional functional requirements, time to market, etc.  How many of us have been involved in a development project where it was more important to get the product out the door than it was to get it done right – we take short cuts with the intent to go back and do it right once the immediate fire drill is over.  The problem is that once the product is out the door and meeting the customers expectation - how do we convince the business that there is as much (maybe more) long term value in fixing a product that is seemingly working than in investing in new features that will make the product more appealing to more users.  What business leaders may not understand is the cost of continuing to maintain and grow a structurally questionable - sometimes brittle – application.  Technical debt is the monetization of that cost making it possible for IT to communicate the value to the business of creating and maintaining a structurally sound application.  Check out this blog for a good discussion of technical debt and how to prevent accruing it.  “Technical Debt gets the Message Across”. 

Software On the Move!

Friday, September 2, 2011 by Arlene Minkiewicz

The IEEE published “Top 11 Technologies of the Decade” in the  January 2011 editions of the IEEE Spectrum magazine.  It should come to a surprise to no one that the Smartphone was number 1 on this list.  The answer to the author’s question “Is your phone smarter than a fifth grader” was a resounding YES![1] 

 In 1983 Motorola introduced the first hand hell cellular phone.  It weighed in at two and a half pounds, had memory capacity for 30 phone numbers, took 10 hours to recharge and had a selling price of $4000 ($8045 in 2006).  The phone was the size of a man’s head and would sustain an hour of conversation before a recharge was required.  In June of 2007 Apple announced that it was launching the iPhone which would basically integrate all of the electronic gadgets teenagers carried around in their pockets into a complete package – phone, web browser, iPod and camera.  The iPhone 5 which should be available by Fall 2011 incorporates NFC technology, an upgraded operating system with cloud integration, music streaming, voice interface, 4G connectivity and an embedded social networking tool. NFC technology makes it possible to use the phone effectively as a credit card – making payments by swiping the phone near a device that can read its information. [2][3][4][5]

The proliferation of smartphones and tablets has led (and will continue to lead) to the proliferation of mobile applications.  And it seems as there are no bounds to the kinds of applications that are being developed for smartphones.  A sampling of some popular applications is listed below:

* Chase Mobile – which allows users to check account balances and review transactions
* Angry Birds – very popular gaming software
* Facebook - allows users to report their status from anywhere
* Yelp – allows users to locate places to eat, shop , etc. along with reviews from local patrons of said establishments

The list goes on but clearly if you can dream it – there’s an app for that (or at least there could be an app for that).  As practitioners in the art of estimation, all this mobile application development leads to the inevitable question of what does it cost to develop mobile apps and how is mobile application development different from more traditional forms of development? 
Mobiles apps can be categorized as either native applications – which run entirely on the device or web applications - with small clients resident on the device which interact with applications running on a remote server.  It appears that in general the web applications are less complex than the native ones, and thus less effort is required to build, test and deploy them.
While mobile application development is still in its infancy so a lot of what is going on in the industry now has a bit of the Wild West feel to it.  This stage of any technology is impacted by learning curve issues which may dampen productivity but at the same time there is the newness factor – where smart people are excited about the promise of new technologies and are willing to work extra hard to make things happen.  So while there is some effort/cost data available for mobiles apps, we must temper our enthusiasm.
Another concern when developing mobile applications is which platform(s) it is being developed for.  If an application is being developed for iPhone, Android and Blackberry the effort is significantly increased.  Although there are elements of the design that can certainly transcend platforms, each of these platforms has its own operating system and development environment. There are additional potential compatibility issues in cases such as Android where there are multiple companies manufacturing devices. Additionally, application developers need to determine which versions of OS for each of the platforms the application will work with.  They also need to be aware of and respect the user interface guidelines developed for the device(s) for which they are building apps.
Mobile applications may need to respond to various forms of external data from sensors, a real or virtual keypad, a GPS, microphones, etc.  They also may need to respond to movements of the actual device as well - so the screen adjusts when the user changes the orientation of the device.  There are also many instances where mobile apps will need to interact with other applications on the device.  Often the mobile application will need to share elements of the user interface with other applications. 
Mobile applications need to be developed in such a way as to limit the consumption of resources.  No matter how good your killer app is, if it drains the phone battery in half an hour no one is going to use it.  Along with all other applications that have access to the Internet, they should be built with a focus on security so that the users data is protected from malicious intrusions.
All of the issues listed above are likely to impact the complexity of the development effort of the mobile application – thus they have the potential to be an important part of the cost equation as well.  In many cases mobile applications are smaller than traditional applications so increased complexity may be offset because the projects and corresponding project teams are small.  Still this increased complexity is important to consider.
Another area where mobile apps are dramatically different than traditional apps is in the testing of the application.  Simulators and emulators exist and can be helpful in some circumstances but they are not always easy to use, effective or efficient.  There are also issues, with some platforms around the maturity of the technology that allows applications to be transferred from the development environment to the mobile device – further complicating the testing process.  Finally there is just the sheer magnitude of making sure that the application functions correctly on all the combinations of hardware, operating system and carriers on which it will be expected to perform.  The cost and effort associated with testing may present significant differences when being evaluated for mobile applications.
Smartphones are here to stay and more and more businesses will want (or need) to develop apps for them in order to remain competitive.  With the technology still relatively immature there is limited data that will help us develop cost models but there is feedback from the field on what issues are most likely to impact costs.  Though the technology is still emergent – there is some data available from commercially based mobile app developments – so at least we have a place to start.
Share your experiences with mobile application development by leaving a comment for this post.


[1] Ross, Philip E., “Top 11 Technologies of the Decade”, IEEE Spectrum, January 2011
[2]  http://www.motorola.com
[3] http://www.apple.com
[4] http://en.wikipedia.org/wiki/Mobile_phone
[5]http://www.ibtimes.com/articles/170418/20110628/quick-look-at-iphone-5-features-as-september-release-date-looks-probable-nfc-camera-8mp-lte-4g-displ.htm

Reused Code - what's it really buying you?

Monday, July 11, 2011 by Arlene Minkiewicz

There is a ton of code out there and we’re constantly adding more.  Gartner reported in 2009 that there were more than 310 billion lines of code in use worldwide. MS Word has grown from 27,000 lines of code in the first version to about 2 million in 2010.  The Windows Operating System grew from 3 million lines of code in 1992 to 20 Million in 1998.  You get the point – there’s lots of code out there doing lots of the same things that we may want our software to do.

One of the challenges software project leaders have in estimation and planning is successfully quantifying the functionality they can reuse and understanding and communicating the effort and cost associated with that reuse.  In projects where significant reuse is anticipated, reuse is really going to shape the project.  Reuse comes in many forms.  A firm grasp of the types of reuse and the potential pitfalls of such reuse facilities a thorough analysis of the impacts that reuse has on the project.  It is ill advised to expect to get a one to one benefit for reuse.  It is even more problematic to plan on reuse as a quick fix to schedule pressure.  

Some of the things you want to consider:

* Reusing legacy code can be a great productivity booster if the code is stable, well written and some of the original developers are on hand.  On the other hand, if you’re working with legacy code that has become spaghetti code which is only supported by a mildly deranged programmer in the corner cube – you might be better off starting from scratch
* The auto translation of existing code to newer technologies can also boost project productivity but one cannot expect the process to be transparent or without hiccups.  It is important to understand the nature of the translation tool, the amount of preparation required to use it and the expected amount of human intervention to make the translation complete
* The use of Commercial Off the Shelf Software (COTS) can significantly impact the schedule for a software project but there needs to be a thorough evaluation of the capabilities of the COTS against the requirements of the project.  There also needs to be acknowledgement with the consumer of the software system that using COTS software limits the amount of customization possible resulting in the risk that the finished product is not exactly what they expected.

Also it is often more complicated to integrate reused (not developed here) solutions since there is a steeper learning curve during the integration phase.  Code reuse can be a great way to achieve increased productivity but it is important not to assess this improvement over optimistically but rather through a careful appraisal of what the reuse activity entails.

Have a reuse story (success of horror) you want to share?  Post it as a comment to this blog.

How To Develop Data-Driven Cost Estimating Relationships in TruePlanning - 2011 ISPA Workshop Takeaways

Wednesday, June 15, 2011 by Zach Jasnoff

At the 2011 ISPA Conference, I conducted a ½ day workshop How To Develop Data-Driven Cost Estimating Relationships  in TruePlanning. The attendees at the workshop learned how to import their own data into TruePlanning and develop custom Cost Estimating Relationships. We covered three case studies:

·         In the UCAS case study we demonstrated how we can build CERs at a higher level to provide a test of reasonableness to the CAPE.

·         In the SRDR case study we demonstrated how we develop a CER to estimate SLOC based on historical data and use the results to within the new code parameter of the UCAS Reconnaissance software estimate. 

·         In the Aircraft case study we demonstrated how we can build higher level trend lines across various aircraft system platforms and classes of aircraft to compare as “ball-park” estimates.

In each case, the attendees learned how to work with real data and develop CERs traceable back to the original data points that generated them. This was a “hands-on” workshop and everyone had a chance at generating a number of CERs. Overall, we had a very successful session and provided a new and exciting capability to our TruePlanning framework.

I also wanted to share with you a few takeaways from this workshop.

  • By setting up the trend lines equations in the Equation Cost Object, estimators can create libraries of data-driven CERs for future projects
    • All data used to develop the equation can be attached to the CER to identify datapoints and methodology used.
  • The power of this approach is that the CERs are integrated into the TruePlanning framework and can be used with other cost objects (H/W, SW, IT, etc)
  • Libraries of CERs can be shared among projects.
  • CERs are “white box” and auditable both in terms of the trend line equation and underlying data points.
  • CERs represent an “estimating database” in addition to TruePlanning Cost Objects.

If you are interested in obtaining a copy of the workshop presentation including the data files and results, please e-mail me at Zachary.Jasnoff@pricesystems.com .

If all you have is a hammer......

Friday, June 10, 2011 by Arlene Minkiewicz

I’m on my way home from the ISPA/SCEA (International Society of Parametric Analysts, Society of Cost Estimating and Analysis) Conference held in Albuquerque this week.  Attendance was very good (2nd best in the conferences history) and as the content seemed especially good this week.  I attended lots of good talks on topics ranging from SEPM (System Engineering, Project Management) cost estimating, Joint Confidence Levels, Software Estimating, Affordability,  Agile software development and estimating for Enterprise Resource Planning Systems.   Of course, just because the topics are good and well presented doesn’t mean I have to agree with everything that gets said.

One particular talk entitled “Function Points, One Size Fits All” got me a little worked up.  It seems as though there is an on-going and completely unnecessary amount of energy devoted by some to convince the software community that we need to settle on a single method of measurement for software.  The author makes some really good, credible points.  Function Points are a much better method of measuring software if your intent is to compare productivity across or within specific industries.  They help eliminate development technologies, programmer inconsistencies and software architecture decisions from an analysis of how productive an organization is at delivering business value to their customers.

Having said this, I firmly believe that sometimes SLOC (Source Lines of Code) are a better tool to help organizations estimate the costs of the software development projects they are planning.  Knowing how your productivity stacks against the industry is great information when you are looking for process improvement or identifying best practices.  But if you want to know how much the next project is going to costor how many months it will  be before you can deliver content, your own history is much more relevant than the industries.  Not that your history can’t be in Function Points – it just doesn’t have to be.  Many of the weaknesses sighted with SLOC – while they certainly can be considered weaknesses) -aren’t really noticeable when working within a certain context.  Within an organization, software development projects are often similar to previous projects, targeted at similar markets and are being developed by similar teams with similar (on average) coding styles. And SLOC Counting processes can be institutionalized within an organization. When this is the case, SLOC counts are just as good, if not better, than Function Point Counts and probably much easier to count since their count can be automated and does not require certified specialists.

The author contends that SLOC is a bad option because it is hard to estimate early on.  I contend the same is true with Function Points - which if the Counting Practices Manual is followed to the letter – one is required to make an assessment of not only all transaction but also all the data element types and record element types.  The author contends that SLOC is a bad option because there is no standard for what a SLOC is.  I contend that the same can be said for Function Points.  Perusal of the International Software Benchmark Standards Groups’ (ISBSG) database shows that there are several different ‘standards’ for counting Function Points – because one standard was not deemed sufficient by many in the community to meet all software measurement needs.

Don’t get me wrong – I do not disagree with many of the assertions the author made, only the notion that one size fits all.  Let’s be real – software measurement is not easy and there are many different ways to approach it depending on the reasons for the measurement and the circumstances around those needs.  Function Points are a good tool to have in your software measurement tool box, so are Source Lines of Code, Use Case Points and user Stories.  It’s true that if all you have is a hammer every problem is a nail.  Fortunately we have many different tools and should feel empowered to choose the right tool depending on the current need.

Computing in the clouds?

Friday, June 3, 2011 by Arlene Minkiewicz

If I Google the phrase “cloud computing” I get about 49,900,000 hits.  That’s a lot of hits – more than 10 times the hits I get if I Google “service oriented architecture.”  This made me think that cloud computing is an area I needed to learn more about.

So what are we really talking about when we talk about cloud computing?  “The cloud” is a generally accepted euphemism for the Internet.  End users access computing assets from the cloud using a model similar to one that homes and offices use to get electricity and water.  Instead of purchasing or licensing hardware, software or other computing infrastructure, businesses contract with cloud providers for access to software applications, data storage and recovery services, development platforms, etc.   This access is through the Internet (or an Intranet in cases where a private cloud is employed) so in the extreme case a  business could potentially meet all their computing needs with only enough in-house assets to support browser based computing. 

According to National Institute of Standards and Technology (NIST) Cloud computing solutions deliver on-demand self-service, ubiquitous network access, location independent resource pooling, rapid elasticity and measured service.  Clearly there are lots of potential benefits for a business to move to the clouds, especially small to medium businesses and start-ups.  There are also some challenges and risks associated with cloud migration.

We at PRICE are conducting on-going research in the area of cloud computing in order to help decision makers assess the costs and benefits associated with migrating their business to the clouds.  On June 14th I am teaming  with the Data and Analysis Center for Software (DACS) to present a webinar detailing what I’ve learned and where the research is taking us.  Click here to register


How To Develop Data-Driven Cost Estimating Relationships in TruePlanning

Wednesday, May 25, 2011 by Zach Jasnoff

Going to ISPA SCEA in New Mexico?  If so, join us for a workshop on data driven cost estimating.  Register: http://www.pricesystems.com/services/predictive_modeling_schedule.asp#/?i=3

Description:  
Building transparency and traceability into your estimating process leads to more defendable estimates.  This hands-on workshop demonstrates how historical data is transformed into predictive models.   You will learn how your organization’s data can be synthesized into custom models that can be employed in support of third party models within a single analytical framework. 

Participants will learn:  (1)   To develop system level estimating relationships to provide a test of reasonableness and historical cross-check to proposed estimates. (2) To develop sub-system level relationships that estimate Software Lines of Code based on requirements. (3)  To develop historically-based relationships across classes of aircraft systems in support of “ball-park” estimates based on specific program actuals.

Location:  2011 ISPA/SCEA Joint Annual Conference /  Hyatt Regency Albuquerque - Fiesta 1-2 /  June 7th, 2011 /  9:00 am – 1:00 pm (includes complimentary lunch).  Hope to see you there!  To register go to: http://www.pricesystems.com/services/predictive_modeling_schedule.asp#/?i=3

Agile Estimation

Wednesday, April 27, 2011 by Arlene Minkiewicz

Agile software development practices are predicated on the following tenets as introduced in 2001 in the Agile Manifesto [1]

  •  Individuals and interactions over processes and tools
  •  Working software over comprehensive documentation
  •  Customer collaboration over contract negotiation
  •  Responding to change over following a plan

Agile development processes rely on experienced, highly skilled people communicating with clients and each other to deliver software that provides the clients with the most value for the money they spend.  This requires both developers and consumers of software to accept the reality that things will change over the course of the project and that the software that is eventually delivered may not be the same as that was envisioned when the project was first kicked off.

At any given time, the agile software development team is only working on the feature that the customer currently feels is the most valuable.  Estimation is performed by the team (including developers, BAs, QAs and customer representatives) and is only focused on the feature that is currently on deck.  At the end of an iteration, the customer has an opportunity to review the implementation to date and can reprioritize remaining features based on changes in their requirements, market or expectations.  So estimating beyond the current feature doesn’t really make agile sense.

Unfortunately, the fact that estimation doesn’t make sense for the agile team does not mean it doesn’t make sense for the business.  The business needs to see the forest not just the trees.  Customers need an idea when their software will be delivered, businesses need to prep the market for new products and features, businesses need to be able to optimize resource allocations across many projects, etc.   This of course begs the question of how to perform an estimate for software when you really don’t know exactly what software you’re going to build.  As an industry, we’ve been pretty unsuccessful estimating software projects even when we think we have a handle on the end product – how can we be successful with so much uncertainty.

First we accept uncertainty and commit to incorporating uncertainty into our estimates.  Once we’ve made that commitment we are then free to pursue one of many top level estimating techniques to help us get our head around a likely range of values for cost and schedule based on what we currently know about the software project.  Parametric techniques are particularly suitable for this task especially for an organization that has some historical data from previous agile projects.  Parametric estimating models like TruePlanning for Software provide a repeatable framework through which an organization can study their past performances on similar projects (similar number of features, similar market, similar customer, etc) and use what they learn to perform estimates on the project at hand.   The amount and nature of the similarities should guide the amount of uncertainty in the estimate.  Organizational history can be used to map Story Points or User Stories to a size measurement such as source lines of code, function points or user points.  Analysis of performance on past projects can inform decisions about productivity and other project drivers.  This information can be used to drive the parametric algorithms to develop estimates for cost, effort and schedule.

Since we have already acknowledged that we didn’t get the question right, it’s unreasonable to assume that the answer will be ‘the right answer’.  What we do come away with is a range for cost, effort and schedule which will give decision makers realistic data to work with. If we have properly studied our history and thoughtfully assessed uncertainty, we can present these ranges with a quantifiable degree of certainty. 

What process does your organization employ to plan around agile induced uncertainties?

[1] Agile Alliance, “Agile Software Development Manifesto”, Feb 2001, available at www.agilemanifesto.org (retrieved January 2010)


Fuel Cells

Tuesday, March 1, 2011 by Arlene Minkiewicz

The concept of the fuel cell was first published in 1938 by Christian Friedrich Schonbein.  Based on this publication Sir William Grove invented the precursor of the fuel cell in 1839. The Grove Cell created current by applying two acids to zinc and platinum electrodes separated by a porous ceramic pot.  In 1842 Grove developed the first actual fuel cell which produced electricity with hydrogen and oxygen, much like many fuel cells in use today.

Fuel cells remained an intellectual curiosity until the 1960’s when the US space program identified a requirement for extended life batteries for which fuel cells seem to offer a promising solution.  The focus on green technologies has increased interest in consumer uses of fuel cells for transportation, residential and commercial power supply, emergency backup power and portable power supplies for consumer and battlefield applications.  Increased usage of any technology begs the question of how to address the costs associated with that technology. 

A fuel cell is an electrochemical cell which converts some fuel, usually hydrogen, into electric current.  It does this through a reaction between the fuel and an oxidant in the presence of an electrolyte.  The waste product of this chemical process is water and heat.  Fuel cells, unlike conventional batteries, consume reactant from an external source rather than one stored in the battery. They do require a continuous supply of fuel, but given that this supply is available, they will not run out of charge like a conventional battery. 

Because fuel cells require neither flame nor combustion to convert fuel to electricity, there is much hope that they will become a viable power source of the future as we try to reduce our carbon footprint.  Fuel cells are very reliable and less likely to be effected by the environment as some more conventional power delivery systems are.  Because of this they are being adopted in industries such as the telecommunications where outages are particularly problematic.  They are often considered for power generation in remote areas where energy from the grid is expensive and outages are frequent.  Because heat is a waste product of the fuel cell electricity generation process, micro combined heat and power systems are gaining popularity for residential and small business needs.  Other interesting uses of fuel cell power include material handling, backup power systems and uninterruptable power supplies.

Despite increases in the use of fuel cells, they continue to evade wide spread use because they are expensive.  Certainly significant progress has been made through increases in efficiency and improvements in manufacturing processes, but it is still more expensive, in most domains, to get electricity from fuel cells than from more conventional methods. According to a report from the Department of Energy in May 2010, high volume automotive fuel cell stack cost has been reduced from $275/KW in 2002 to $61/KW in 2009 and appear to be on track to reach the $30/KW goal by 2015  The same report indicates a 24% increase in system power density for stationary fuel cells making it possible to reduce the fuel stack volume, weight and cost.

PRICE recently conducted a research effort using publically available data to develop cost estimating relationships for various types of power systems utilizing fuel cell technology. For a white paper describing this project and the resulting cost estimating models email info@pricesystems.com with the code word FUEL in the subject line.


Design, construction and testing requirements for space equipment

Monday, February 28, 2011 by PRICE Systems

What follows is PRICE's interpretation of the DOD-HDBK-343, which addresses design, construction and testing requirements for a type of space equipment. Within the document are specified several levels of Class Definitions for space programs, space vehicles and space experiments. The classes are briefly described below.

  • Class A - High Priority, Minimun Risk
  • Class B - Risk with Cost Compromises
  • Economically Re-flyable or Repeatable
  • Minimum Acquisition Cost

HDBK-343, originally published in 1986, was reviewed and found to be still valid in 1992.  We can't due justice to the 79-page document in a blog, but we can give you a brief description of each class and PRICE's interpretation of the platform for those classes.
 

The PRICE Platform alters the cost estimating relationships (particularly in the development phase) between the groups of hours and cost within the model, and is used to describe the operating specification of the item being costed. For example, as the platform is increased, the amount of design hours (thus cost) changes to a higher proportion of the development cost. This reflects the extra specifications and tests needed to qualify the design for a given operating specification.  Electronic and structural complexities are also linked platform.  Thus, when considering the platform for a specific HDBK-343 Class, the estimator must also choose appropriate complexities.

Class and Platform Descriptions

  • Class A:  Defined as high-priority, minimum risk effort. Characteristics usually involve some combination of: high national prestige, long Life, high complexity, high use of redundancy, soft failure modes, independent qualification items, complete flight spares, highest cost, and a critical launch time.  This class is considered to use a Platform of 2.0 for UNMANNED equipment; 2.5 for MANNED equipment.  NOTE:  It is possible that this Platform may have a higher value IF a number of conditions force higher quality components, longer testing, and other conditions above the HDBK-343 descriptions for this class.
  • Class B:  Defined as a risk with cost compromises effort.  It is a high priority, medium-risk, with cost saving compromises made primarily in areas other than design and construction.  Characteristics usually involve a combination of: high national prestige, medium life, high complexity, soft failure modes, protoflight qualification, limited flight spares, limited use of redundancy, high cost, short schedule, and a critical launch time.         This class is considered to use a Platform of 1.9.  NOTE:   It is possible that this Platform may have a higher (or lower) value IF a number of conditions force different quality components, different testing, and other conditions varying the HDBK-343 descriptions for this class.
  • Class C:  Defined as economically re-flyable or repeatable.  It is a medium or higher risk effort, that is economically re-flyable or repeatable.  Characteristics usually involve a combination of: medium to high national prestige, short life, low to medium complexity, small size, single string designs, hard failure modes, very limited flight spares, medium cost, short schedule, and a non-critical launch time.  This class is considered to use a Platform of 1.8.  NOTE:  It is possible that this Platform may have a higher (or lower) value IF a number of conditions force different quality components, different testing, and other conditions varying the HDBK-343 descriptions for this class.
  • Class D:  Defined as a higher risk, minimum cost effort.  Characteristics usually involve a combination of: medium to low national prestige, short life, low complexity, small size, single string designs, simple interfaces, hard failure modes, and a non-critical launch time.    This class is considered to use a Platform of 1.7.  NOTE:  It is possible that this Platform may have a higher (or lower) value IF a number of conditions force different quality components, different testing, and other conditions varying the HDBK-343 descriptions for this class.

 If you need help with this or other aspects of parametric modeling, post a comment or reach out to our subject matter experts through help@pricesystems.com

In an english paper its plagerism, it business its common sense

Monday, February 28, 2011 by David Seaver
Don't reinvent the wheel.  It's a waste of time and effort.  All too often I see organizations establishing measurement programs or new software estimation intiatives and they want to build everything from the ground up.  Mistake, mistake, mistake...

People have gone before you.  Learn from them.  Take their ideas and go forward from there.  In the past year, I have architected the implemention of our software cost estimation tools at two large federal agencies and two DoD programs.  Teaching people how to estimate is easy.  Teaching them how to find the data to develop estimates is the hard part.  My solution?  I reused (plagerized?) the measurement framework from the Practical Software and Systems Measurement (PSM) initiative.  This let us use a commercial off the shelf solution to estimate and an industry-based best practice approach to collect data to feed into the estimation technology.  The combination saved us several person years and many months of calendar time.  Our off the shelf approach made our clients very happy.  So, that's today's candy.  What do you think?  Tell me how you've saved time and money in your estimating practices.

Asset Valuation

Thursday, February 17, 2011 by John Swaren

My June blog entry suggested the use of parametrics in real-options valuation. This month, I’d like to offer the generalized use of our type of modeling in valuing tangible assets. 

Typically, fundamental analysis evaluates the intrinsic value of securities. I won’t attempt to compete with Warren Buffet here. But it is certainly the case that a company, or portfolio of securities reflecting many companies, is based in part on the market value of its product assets and their potential for future earnings, as well as other objective and subjective considerations.

In parametric estimation, we take a top-down approach to developing models of estimating ultimate acquisition and ownership costs. In the case of the former, I’d argue that we can readily… and uniquely… estimate operating costs for companies developing and selling, say, technology-based products.  Marketing can determine pricing, based on their competitive landscape analyses and market-demand for unmet needs. 

We are in an excellent position to complete the forecasting of earnings (and hence, discounted cash flow) using our parametric methods to evaluate a product-system’s should/will costs. Anyone who does detailed bottoms-up budgeting for “go to market” expense, as well as production delivery, would find value in our modeling.  

And again, once estimated costs are subtracted from revenue forecasts, the netted estimate of earnings and cash flows will allow for traditional market value assessment of this asset or entity. For example, your organization needs to compare economic potentials of emerging new software products. There are no balance sheets. There are no income statements. Yet. 

Now your sales and marketing function has a good independent sense of revenue opportunity. So it’s left to you to estimate the costs of developing and delivering. Independent parametric estimation is the answer. No idea on sizing, either SLOC or function points? No problem. 

Data-driven True Planning has years of data modeling that allow you to run application-specific calculators. In addition, you can take advantage of calibrating actual data from similar projects. Likewise, this process of valuing assets holds true for IT infrastructure products as well. Cloud computing, SAAS and ERP are all further examples of where new IT/software products are emerging… and need estimating as well as financing via valuation.

I think parametric estimating has significant value commercially in the estimation of value of future product assets, and consequently their companies and associated securities.  What do you think?


25+ Years of Software Estimating

Monday, November 15, 2010 by Arlene Minkiewicz
Last week I attended the 25th International Forum on COCOMO and Systems/Software Cost Modeling.  I attended for several reasons.  First of all, I was invited to participate on a panel whose topic was “25 years of Software Estimation: Lessons Learned, Challenges and Opportunities”.  Secondly, I have attended in the past and while it’s generally a small group, as such conferences go, I always come away impressed by the fact that so many smart people end up in one room and this year was no different. 

 But I digress; I really wanted to share my thoughts about the lessons learned, challenges and opportunities in the software estimation world.  I think the most significant lesson learned (in my 25 years at least) is that the more things change, the more they stay the same.  We continue to experience project failures. We continue to let requirements grow and blame the software folks. We continue to plan based on unproven impacts of silver bullets.  Mostly, we continue to disregard what history should be teaching us.  And if we don’t start to take our history seriously, things will be the same 25 years from now.

I think the biggest challenge that estimators face centers not around the mathematical or scientific but rather around issues of credibility, acceptance and successful negotiations.  Many project failures are the result of poor negotiations between the business and the project leadership.  Reasons for this include: failure to successfully communicate the complexity of the project, unrealistic schedule expectations forced on the project team, over-optimistic predictions of the project team.  And (in case I haven’t said this before) failure for the business and the project to learn from history and negotiate geometrically using the project management triangle.

OK – so far I am pretty much repeating the sentiments of a fellow panelist (Dan Ligett) “We’re doomed!” Dan, of course, did not stop there but offered some encouragement going forward.  I will attempt to do the same.  You might have noticed that I believe firmly that much of the problems in the software industry are rooted in our inability to learn from and/or believe the lessons that history has taught us.  Data really will set us free.  The opportunity is for the estimation community to collaborate and cooperate in order to provide paths for historical data to usefully and credibly inform future actions.    We need to look for ways to facilitate the sharing of data and models that will help the community at large make it possible to grow the practice of well informed, thoughtful geometrical decisions based on well developed, history informed estimates.
 

Back to the Future: Should Cost and Parametric Estimating Models

Wednesday, November 10, 2010 by PRICE Cost Research Analysts

I was recently struck by Ash Carter’s (Under Secretary of Defense for Acquisition, Technology & Logistics) Memorandum for Acquisition Professionals, Better Buying Power: Guidance for Obtaining Greater Efficiency and Productivity in Defense Spending (14 September 2010). Within this broad sweeping memo, Ash Carter outlines 23 principal actions in five major areas aimed at increasing efficiency in Defense acquisition.  The first major area covered is “Target Affordability and Control Cost Growth”.

Within this major area, program managers must treat affordability as a requirement before milestone authority is granted to proceed (starting with Milestone A). This means developing affordability targets and treating cost as a Key Performance Parameter. 

What I find really interesting is the critique of Will Cost vs. Should Cost. The memo is critical of Will Cost, or Independent Cost Estimates (ICE). As Dr. Carter points out, “the ICE reflecting business-as-usual management in past programs, becomes a self fulfilling prophesy. The forecast budget is expected, even required, to be fully obligated and expended.” To combat this “vicious cycle”, the memorandum now requires “each major program to conduct a Should Cost analysis justifying each element of program cost and showing how it is improving year by year or meeting other relevant benchmarks for value.”

In my career experience, parametric estimating models such as TruePlanning play a major role in targeting affordability and controlling cost growth. In terms of affordability analysis, TruePlanning contains a unified framework of all elements of program cost (hardware, software, IT and Systems) and has built-in capacity to interface with engineering optimization tools such as Model Center. Through this interface cost can be treated as a Key Performance Parameter (KPP) for optimization and engineering trade off analysis.

In terms of Should Cost and ICE, TruePlanning provides the industry standard capability to conduct Should Cost and calibrated (actual program history) for ICE. Most interestingly and to the point of the Carter memo, TruePlanning has the capability of breaking the “self fulfilling” prophesy of business-as-usual. Using a calibrated TruePlanning model for ICE, estimators can change key engineering and programmatic parameters and see the impact on cost. For example, parameters such as requirements stability, engineering complexity and team composition can be quickly changed to assess a new program’s reality while still taking into account past performance history.

As the Carter memorandum points out … “the ability to understand and control future cost from a program’s inception is critical to achieving affordability requirements.” Because of TruePlanning unified framework and comprehensive cost models, it is a tool very well suited to provide the types of analysis outlined in the memorandum.

Zach Jasnoff
Solutions Architect, PRICE Systems

Estimating Software Reuse with TruePlanning

Tuesday, November 2, 2010 by PRICE Cost Research Analysts

After some recent meetings with clients I am sensing some confusion on how to estimate software reuse. I think part of the problem is in the definition of reuse, so let's start with a definition and then address the estimating issue. Software reuse is defined as “the use of existing software, or software knowledge, to build new software.” This definition came from Wikipedia. From a estimating software costs perspective the above definition is part of the problem. The definition should read: "Use of existing software with no changes for operation in the new software program.” 

If the existing software is going to be changed, re-written or modified to operate in the new program, it should be modeled as software adaptation. In this case the software will require some amount of re-testing, and software integration. Software that is being re-used has been fully tested during the original development program. In this case the reused software does not have to go through full up integration and testing. Rather it will go through a regression testing (computer aided testing) to insure it is still operating correctly.

If the software is going to be re-used as is, then clients should use the TruePlanning  “Software COTS” cost object to model and estimate. The purpose of modeling is for integration control. External integration should be set to a value of 0 to 1.0. A value of zero implies that there is no additional integration effort. Values less than one reduce the amount of model calculated software-software integration effort. The reused software can be modeled as a software component. However, do not include software adaptation or new software with the reuse data. This will overstate the integration effort. 

If you have any questions please feel free to email us at info@pricesystems.com

Jim Otte
Solutions Architect, PRICE Systems

Audit: Not Necessarily a 4-Letter Word

Thursday, October 7, 2010 by PRICE Cost Research Analysts

Ahhhh, the 80s… a challenging (but often confusing) time in an evolving computing world.  Working in 1985 as a software estimator as well as SQA engineer in a quality assurance department that “audited” real-time projects using new concepts like OOD & OOP… well, you get the picture.  It was a great time to get immersed into great work.  And the good news:  that company’s process as well as its developers were bullish on a young estimation/ quality types asking plenty of questions… as long as they were of the Yes-No variety.  And ask I did.  Writing and using those checklists was great OJT, above & beyond adding their value of verifying/ enabling healthy development activities. 

Less than two years later, SEI’s Walt Humphrey formalized his Capability Maturity Model with its five levels of software process maturity.  These “CMM” levels are still used by many organizations and estimating tools, including within True Planning’s “Organizational Productivity Calculator.”  Could the CMM assessment be supplemented to include cost-driver questions for purposes of parametric estimation?  It worked in my SQA audit days. 

In fact many estimators (if only because they can’t get on an SME’s schedule twice) take the opportunity to ask qualitative and quantitative questions.  Integrating both lines into one interview should still be received as a healthy value-add.  Whether estimation is resident within a quality or financial function is moot.  We have the entrée to support both costing/ planning and productivity assessment.  A good example of an integrated approach is the David Group’s Project Profile Worksheet, cited in the text “Function Point Analysis” by David Garmus & David Herron.  Less comprehensive checklists are likely out there too, including methodologies proprietary to individual companies. 

The thought today is that the future is now and structured approaches, called audits or otherwise, will enable good practices as well as illuminate new approaches too.  In Wall Street, regulations are only good in controlling past (known) bad behaviors.  In just as creative Software, process rules help developers maximize their productivity towards current & future good behaviors.

John Swaren
Solutions Consultant, PRICE Systems

Estimating Software Size - Source Lines of Code (SLOC)

Wednesday, October 6, 2010 by PRICE Cost Research Analysts

The key cost driver when estimating software costs is the size of the product. The problem is that there is no perfect technique available to measure and quantify the size of software. The two major techniques in use today are Source Lines of Code and Function Points.  Today we will talk about Source Lines or Code or SLOC.

Source Lines of Code measures logical lines of code. It takes some of the uncertainty out of physical line of code measures by counting only complete statements (which can cross over more than on physical line). SLOC excludes comments and blank lines.

SLOC has several advantages:

·         Easily counted by automated tools, which can be configured with an organizations definition to produce consistent counts. Link to free tool from USC is provided below.

http://sunset.usc.edu/research/CODECOUNT/download/2010/UCC_Release_Notes_v.2010.07.pdf

·         Provide visibility into technical progress as projects proceed through design, code and testing.

·         Can be used to develop historical databases of past project size, which enable the more accurate prediction of size of future similar projects.

·         Design, Code and Test change to modified software can be specifically quantified

SLOC has several disadvantages:

·         It’s very difficult to predict SLOC on new programs prior to design

·         Different programming languages will require different amounts of SLOC to implement the same functions. This makes summary measures of size on multi-programming language products difficult

·         SLOC is difficult to map back to product features or requirements. Which makes usage of EVM difficult to apply to SLOC based SW projects. 

·         SLOC is a meaningless number to non Software Engineers (without detailed explanation)

David Seaver
Solutions Architect, PRICE Systems

TruePlanning User tip: Software Adaptation

Wednesday, October 6, 2010 by PRICE Cost Research Analysts

Over the past several weeks several users have inquired about the best way to model legacy software that is being modified when estimating software costs. The software component within the TruePlanning Software model has an input parameter call “adapted Code Size.” This input parameter accounts for existing or legacy software that will be modified or changed to meet a new requirement. Tied with the size input parameter is Percent Design/Code/Test adapted. Although the model will calculate a percentage for each input, I would recommend that user’s analyze the calculate values and override the calculation where required. The percentage for each parameter is to reflect the amount of modification being accomplished. For example, calculated values below five percent or above forty percent are probably unrealistic. 

Values below five percent reflect one single function being modified, which is normally not the case. Values above forty percent generally result in the entire software package being re-developed. Hopefully this will clear up this software input parameter. If you have further questions, please email me at james.otte@pricesystems.com

Jim Otte
Solutions Architect, PRICE Systems

Basic Needs for Successful Software Estimation

Thursday, September 23, 2010 by PRICE Cost Research Analysts

You need 3 things for your software estimates to be successful

And I will add a fourth one in after I talk about the first 3

1.       You need qualified and experienced people to generate the estimates. They have to know how to estimate and they have to understand what the problem is that the project is going to solve…..at least well enough to estimate it. This can be one person or many depending on the difficulty of the business area. The harder it is, the better having more brains look at the problem. But not to the point where it can slow you down. A team of 2 to 5 people can be faster and more efficient that a team of 8 to 12 and it’s easier to reach consensus.

2.       You need your own data as a reference point in the estimate. As a comparison or an analogy.   Your own data makes selling and explaining the estimate easier. It provides context for it that can enable management to give a quicker and more reasonable answer. 

3.       The estimate must be used as part of the decision making process. If it’s not used its wasted time and effort. When things get tight the estimation will go away.

4.       Automated project estimating software tools to speed up the software cost estimation process and to enable some more what if analysis can be indispensible,

David Seaver,  Solutions Architect, PRICE Systems