|
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
Tools Engineering + Reuse = Savings
How to really cut the cost of software development
By: David Messinger
Sep. 15, 2005 09:00 AM
Why are contract outsourcing and offshore development failing to deliver the expected benefit of lower costs and increased end-user satisfaction to enterprise software development users? It seems that lower rates per hour and better management of human resources are not enough to overcome the problems associated with the central issue of lack of engineering discipline. In most other industries, real cost savings matched with increased productivity that translate into fundamentally lower production costs have been the result of process and manufacturing reengineering, not simply of lowering labor input costs. The cost of building a car has actually declined in real dollars over the last 20 years, even as average hourly pay has increased. By and large, this has not been the case in software. Without looking at the way software is developed with an eye toward reducing the amount of labor input - and instead simply trying to lower input costs - companies have not been able to meaningfully affect the overall cost of software development.
The idea of using prebuilt pieces of software (components) as building blocks is not new, yet very little has been accomplished in companies actually using them. Most companies, while speaking some of the language of reuse - the hallmark of component development - have no defined structure, metrics, or management for real reuse initiatives. This is surprising given that we estimate that a company could lower their overall development costs by as much as 50% through formal reuse initiatives. Reusable components are not limited to a class, library, or object but rather are an entire package of assets. Components can be open source, commercial, off-the-shelf, or homegrown assets. No matter where they are accessed, it is important that they are constructed in a consistent and uniform manner. Best practices state that every component must contain the same consistent deliverables. A developer will waste more time determining how to use the component if each component has a different style and set of deliverables. The more time the developer has to spend learning the component, the less valuable the component becomes. Below is a list of important deliverables a component contains. Documentation:
Once the component has been designed and built for reuse, the next time the functionality is needed by an application the timelines and cost of building the application shrink dramatically. For example, at TopCoder we will use any component that matches 80 percent of the required functionality. To fulfill the last 20 percent of the functionality we can either embed the logic in the application code or, more ideally, extend/wrap the component to support the remaining requirements. The effort to modify a component is significantly less than building the logic from scratch. In order to look at this mathematically, the equation would be: (n * IT) + RBE < n * BE. Reader Feedback: Page 1 of 1
Latest Cloud Developer Stories
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week
Breaking Cloud Computing News
|
|||||||||||||||||||||||||||||||||||||||||||||||||