Editors note: This is the first of a two-part look at the state of software design by Bob Broda, a former executive with Invesys, who now is president of Visage Solutions, LLC.The software development process has to improve for companies to be effective in the new economy.
Projects seem to be constantly running late with extensive cost overruns.
Applications too often do not meeting customers’ expectations.
Software is delivered with too many bugs that take too long to fix.
There is constant friction between the IT staff and user community.
To be fair, the demands of changing technology are taking a toll on limited staff. The staff delivers exactly what the user community approved. It is difficult to fix the errors without detail information that identifies the problem. Priorities are always changing and it is difficult to plan in this every changing environment.
This was the state of software development in the mid 70’s.
Advances and complexity
Haven’t there been tremendous strides and improvements in technology?
Don’t new languages make programmers more productive? Doesn’t Object Oriented coding techniques allow for extensive reuse of code? Don’t code generators and automated testing tools exponentially improve the process? Don’t methodologies and project management techniques help manage and estimate the project more effectively? Development is now even outsourced overseas where labor cost is a fraction of what it is in the US. So, why are old issues still in existence?
There have been tremendous changes in technology. Computers are more powerful, allowing more automation. The price of storage has dropped dramatically increasing the amount of information collected. This increase of information increases complexity since it increases the number of combinations of data. The user community is much more computer literate and demanding. Applications are now highly complex and completely integrated. They have to be seamless across multiple technology platforms and available for multiple languages and cultures. They need to be available 24x7x365. Businesses have to be much more flexible in order to compete, yet alone survive, putting additional demands on application development.
Software development has indeed changed, however it is more complex. Published reports of IT projects completing on time or with-in budget are rare. Some reports even advocate that the development process has become less productive.
Function Point Analysis shows progress
Actually, if you take a look at software development by Function Point Analysis metrics (a standard that measures the functionality of software), there is no doubt that the process has actually become more productive. David Longstreet of SoftwareMetrics published function point statistics from the 1970’s which surely shows productivity gains.
These statistics show that the productivity of the software development process has improved. However the gains that were made have even been limited by additional complexities including:
- New Languages: Such languages are now very powerful and can accomplish functions in one command that used to take pages of code to accomplish. However, the time and effort required becoming productive needs takes time to take advantage of their power. New versions and tools are constantly appearing on the landscape.
- Reuse of Code: Although writing less code should improve productivity, it is often difficult to identify the exact program that does exactly what needs to be accomplished. Additionally, if a slight change is necessary, the component change must be registered and approved, often making the process longer than making the change itself. So, most developers find it easier to code a new component because it is faster and fewer hassles.
- Code Generators: Only generates the more common code, the real complex functionality still has to be addressed by the programmer.
- Automated Testing Tools: These tools allow the test to be repeatable and record the results. However, devising a comprehensive testing scenario takes a significant amount of time. A complete testing plan is difficult to repeat because each time a test is run, the data changes and modifications to the program may invalid the ability to retest without significant rework on the test plan.
- Debugging Tools: Tools that capture the exact scenario that caused an error is a definite improvement in debugging. However the tool causes tremendous overhead and often causes poor performance. Often the tool is only turned on when problems are reoccurring.
- Development and Project Management Methodologies: These methodologies are necessary to handle the complexity of the entire process. However, care must be taken not to get too wrapped up in the methodology. If not administered properly. Projects can be bogged down in a mountain of paperwork and add substantial time to the development process.
- Overseas Outsourcing: Although overseas billing rates can be very attractive compared to US rates, there are other costs when making this decision. Communication is key when developing software and expanding the gap between the development staff and the business community adds to this issue.
Tuesday: Part Two — Productivity vs. Complexity
(For more information on SoftwareMetrics, visit www.softwaremetrics.com )