| Companies spend billions of dollars every year on | | | | human resources, which could be used too much |
| developing their own software applications or | | | | greater effect elsewhere, are absorbed into a |
| purchasing complex enterprise software | | | | cycle that could be avoided altogether. |
| applications. This includes not only the cost of | | | | One of the highest costs involved in software |
| software, but the hardware infrastructure | | | | development is the cost of developers. Over the |
| required to support the software as well. Rather | | | | past few decades computers have automated |
| than spending this money on software | | | | most industries. Ironically, the one industry that |
| development, a company should put it to better | | | | has not benefited from automation is the |
| use to improve the core business of the | | | | software development industry. Writing software |
| company. That is, the company should be | | | | is still a manual process involving monotonous and |
| focusing on what it is that they are really in | | | | repetitive tasks. Techniques, such as code reuse |
| business for rather then being distracted by | | | | and code generation have been developed over |
| software development. | | | | the years to reduce the workload. However, |
| Current software development practices for | | | | developers are inherently resistant to change and |
| enterprise applications often result in products that | | | | to anything they perceive as being able to |
| are too expensive to develop, acquire, implement, | | | | "replace" them. Either they do not trust someone |
| integrate and then maintain. The typical software | | | | else's code, or they think they could write better |
| development cycle starts with a base product | | | | code themselves. For whatever reason, |
| that is developed and subsequently sold, if | | | | developers wind up reinventing the wheel project |
| external, or delivered, if internal, to a client. If the | | | | after project and billing for that work. Since |
| base product is lacking in functionality, then | | | | developers are reluctant to utilize tools and |
| additional modifications must be made to the base | | | | techniques in their own development, they |
| product, adding to the cost of development. Once | | | | become their own worst enemy. The computer is |
| modifications have been completed, the | | | | the greatest tool ever invented and developers, |
| implementation and integration phase starts. This | | | | the ones that make this great tool work, are |
| phase has high costs associated with it; usually | | | | reluctant to take maximum advantage of it. |
| surrounding customization in order to get the | | | | If there is an industry that should be automated it |
| software to interface with existing legacy | | | | is the software industry. All business applications |
| systems. Finally, annual maintenance and service | | | | perform the same basic functions and they |
| fess are charged, which usually do not include | | | | interact with a database the same way, doing |
| future upgrades. Clients are frequently less than | | | | inserts, updates, queries, deletes, etc. They |
| happy with the results. The software | | | | interact with the user through a user interface |
| development entity is often unaware that the | | | | allowing the user to input and retrieve data. The |
| client is not happy until the next development | | | | internal plumbing that ties everything together is |
| cycle is well under way, at which point it is too | | | | the same. What makes an application unique is the |
| late and too expensive to address the problems. | | | | business rules, logic, and workflows (how the user |
| This results in an endless cycle where the | | | | moves through the application). Ideally there would |
| software developed for a client continuously lags | | | | be a tool that would "create" these common |
| behind the client's actual needs. Financial and | | | | features and help "manage" the unique parts. |