|
| Home | Website Design | WordPress Blogs | eCommerce | Programming | Hosting | Portfolio | Resources | Site Map | Blog | Contact Us |
|
Home >> Library & Articles >> Database Development Methodologies
Library & ArticlesDatabase Development MethodologiesIn small companies, software development is largely "code and fix" with the software written without much up-front design or planning. This is actually quite workable for small companies, but as the company and its needs grow, the software becomes a hodge-podge of added code, fixes and work-arounds to avoid de-stabilizing the software. The source code becomes very disorganized, inefficient and full of bugs. It becomes unstable and extremely difficult to debug. It becomes increasingly expensive and time-consuming to upgrade or enhance. The solution to this is to employ a development methodology which is intended to improve efficiency, make development more predictable, speed build time and reduce maintenance costs. Although there are many schools of thought about development methodology, there are really only two approaches:
Predictive Methodologies: Predictive development methodologies adopt a civil or mechanical engineering approach, which focuses on creating a comprehensive up-front design from which detailed construction plans are formulated. Design and construction are separated. Construction does not commence until the design and construction plans are completed and approved. The stress is on designing for both current and future needs, and on anticipating future problems or possible changes. This type of design or planning is often referred to as "anticipatory designing". The design can then be used to plan out a tight, predictable path for construction in the form of a set of plans that can be bidded out to contractors or handed off to project managers. This works out very well with development projects that have a finite result and well-established, stable technology. You can hire your creative (and expensive) people to create the design and write the plans. You can then have the work done by less expensive personnel who simply follow the plans. This methodology works well when change is infrequent and the business model is well established because the features and scope can be thoroughly laid out prior to commencement of work. Typically, the few changes that may be required are treated as an extra to the plans or contract for budgetary purposes. With predictive methodologies, a tremendous amount of up-front documentation, timelines, workflow diagrams, feature lists, various models and charts are produced. These are continually referred to and updated throughout the life of the project. When the project is suited to this methodology and the design and planning is done well, the actual construction phase runs quickly and smoothly with predictable milestones and budget requirements. Adaptive Methodologies Adaptive methodologies take the position that change is inevitable in software development and that it is "soft" ware by its very nature. Implicit in the concept of software is that it should and must be adaptable to changing business conditions and technologies. Adaptive methodologies are particularly suited to software development projects that involve a business or activity that is in a growth phase or in a heavily competitive market. With this approach, the focus is on rapid, flexible development based on sound initial concepts and continuous design and feedback from a series of short-term programming projects that build up a system over time that serves the organization over time. The key to adaptive methodologies is frequently and rapidly develop working versions of the required application that are progressively more complete versions of the final system. Each new version should build towards and conform to the demands of the final system. As they are brought on-line, they are fully integrated and carefully tested. With this methodology, long term plans are very fluid, with short term plans being written for each subsequent version of the system. Each new version builds on a solid, tested foundation for the next version. With each new version, the first thing that is done is that the source code is reviewed and upgraded as needed to simplify it and improve its efficiency. Predictive Versus Adaptive Methodologies The problem that adaptive methodology solves is that if changes are continuous, the predictive methodology is simply not workable. The up-front design will rapidly become out-of-date and will not be based on current technologies and needs. Change makes it difficult, if not impossible, to formulate a completed, up-front design that can be handed over to programmers. The problem is that such a design may look good on paper, but it may have serious flaws that will not be evident until you have to actually program it. As well, the changes inevitably produce a need for additional features or functionality that were not factored into the original design. A typical response to the problem is to assert that the changing requirements result from a poor initial design. The idea is that a good design would have reduced the need for extensive changes once development was under way. The actual problem is that it is extremely difficult to get an up-front design into a state that can be handed over to programmers. Part of the problem is that it is extremely difficult to envision the value or need for a particular feature prior to actually programming and using it and even more difficult to anticipate all of the possible features that will be required for current and future needs. The other part of the problem is that today's business environment and technology is in a rapid state of change that is often unpredictable. Now, more than ever, time is of the essence, because today's requirements can become obsolete over the life of a long project. Finally, the predictive view of software as a building project similar to building a house or bridge does not hold up under the pressure and technical requirements of today's business environment. Software planning must be flexible to meet the demands of inter-networked environments, where the ability to connect and share information may mean the difference between success and failure. Extensive up-front design documentation, even with a top-notch design can become superfluous and cost-prohibitive to maintain and the business world is not going to stop and wait while the software is fully developed. Pricing and Budgets With predictive methodologies, if the company is using an outside firm for development, it is a matter of selecting the best bid for the project. The development firm is then locked into delivering the finished product for a fixed-price. The development firm works from the design documentation. The interaction between the development team and the company is limited to progress and milestone reviews and changes to the contract are limited by the contract itself. Unfortunately, fixed-price contracts or budgets do not work well with adaptive methodologies, which require ongoing and continuous design, programming and refactoring that depends on immediate and current feedback and requirements from both the development firm and the company. The net result of attempting to apply predictive methodologies to projects that should be using adaptive methodologies is that a extremely high percentage of them are never completed as planned and a high percentage of them are actually abandoned. Supplementary References:
The New Methodology
Is Design Dead? The following websites and articles provide extensive information about the Agile Development methods, that use adaptive design methodologies:
The Agile Alliance |
| ||||||||||||||||||||