This purpose of this paper is to give an understanding of the information systems development methodologies available. A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system. Here are some iterative methodologies that can be used especially for large projects and some of their characteristics. Spiral Model
The idea is evolutionary development, using the waterfall model for each step; it’s intended to help manage risks. Don’t define in detail the entire system at first. The developers should only define the highest priority features. Define and implement those, then get feedback from users/customers (such feedback distinguishes “evolutionary” from “incremental” development). With this knowledge, they should then go back to define and implement more features in smaller chunks. Each iteration of the prototype represented as a cycle in the spiral. The Spiral software development model is a risk-oriented. Use the spiral model in projects where business goals are unstable but the architecture must be realized well enough to provide high loading and stress ability.
1. Focus is on risk assessment and on minimizing project risk by breaking a project into smaller segments and providing more ease-of-change during the development process, as well as providing the opportunity to evaluate risks and weigh consideration of project continuation throughout the life cycle. 2. Each cycle involves a progression through the same sequence of steps, for each portion of the product and for each of its levels of elaboration, from an overall concept-of- operation document down to the coding of each individual program. 3. Each trip around the spiral traverses four basic quadrants: (1) determine objectives, alternatives, and constraints of the iteration; (2) evaluate alternatives; identify and resolve risks; (3) develop and verify deliverables from the iteration; and (4) plan the next iteration. 4. Begin each cycle with an identification of stakeholders and their win conditions, and end each cycle with review and commitment.
1. Project Objectives. Similar to the system conception phase of the Waterfall Model. Objectives are determined, possible obstacles are identified and alternative approaches are weighed. 2. Risk Assessment. Possible alternatives are examined by the developer, and associated risks/problems are identified. Resolutions of the risks are evaluated and weighed in the consideration of project continuation. Sometimes prototyping is used to clarify needs. 3. Engineering & Production. Detailed requirements are determined and the software piece is developed. 4. Planning and Management. The customer is given an opportunity to analyze the results of the version created in the Engineering step and to offer feedback to the developer. Variations. Win-Win Spiral Process Model is a model of a process based on Theory W, which is a management theory and approach “based on making winners of all of the system’s key stakeholders as a necessary and sufficient condition for project success.”
Here the project is divided into small parts. This allows the development team to demonstrate results earlier on in the process and obtain valuable feedback from system users. Often, each iteration is actually a mini-Waterfall process with the feedback from one phase providing vital information for the design of the next phase.
1. A series of mini-Waterfalls are performed, where all phases of the Waterfall development model are completed for a small part of the system, before proceeding to the next increment; OR
2. Overall requirements are defined before proceeding to evolutionary, mini-Waterfall development of individual increments of the system, OR
3. The initial software concept, requirements analysis, and design of architecture and system core are defined using the Waterfall approach, followed by iterative Prototyping, which culminates in installation of the final prototype (i.e., working system).
1. Inception. Identifies project scope, risks, and requirements (functional and non-functional) at a high level but in enough detail that work can be estimated.
2. Elaboration. Delivers a working architecture
Variations . A number of process models have evolved from the iterative approach. All of these methods produce some demonstrable software product early on in the process in order to obtain valuable feedback from system users or other members of the project team. In some, the software products which are produced at the end of each step (or series of steps) can go into production immediately as incremental releases.
The prototype model is used to overcome the limitations of waterfall model. In this model, instead of freezing the requirements before coding or design, a prototype is built to clearly understand the requirements. This prototype is built based on the current requirements. Through examining this prototype, the client gets a better understanding of the features of the final product. The processes involved in the prototyping approach are shown in the figure below.
1. Not a stand alone, complete development methodology, but rather an approach to handling selected portions of a larger, more traditional development methodology (i.e., Incremental, Spiral, or Rapid Application Development (RAD)). 2. Attempts to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during the development process. 3. User is involved throughout the process, which increases the likelihood of user acceptance of the final implementation. 4. Small-scale mock-ups of the system are developed following an iterative modification process until the prototype evolves to meet the users’ requirements. 5. While most prototypes are developed with the expectation that they will be discarded, it is possible in some cases to evolve from prototype to working system. 6. A basic understanding of the fundamental business problem – necessary to avoid solving wrong problem.
1. Requirements Definition/Collection. Similar to the Conceptualization phase of the waterfall model, but not as comprehensive. The information collected is usually limited to a subset of the complete system requirements. 2. Design. Once the initial layer of requirements information is collected, or new information is gathered, it is rapidly integrated into a new or existing design so that it may be folded into the prototype. 3. Prototype Creation/Modification. The information from the design is rapidly rolled into a prototype. This may mean the creation/modification of paper information, new coding, modifications to existing coding. 4. Assessment. The prototype is presented to the customer for review. Comments and suggestions are collected from the customer.
5. Prototype Refinement. Information collected from the customer is digested and the prototype is refined. The developer revises the prototype to make it more effective and efficient. 6. System Implementation. In most cases, the system is rewritten once requirements are understood. Sometimes, the Iterative process eventually produces a working system that can be the cornerstone for the fully functional system. Variation. A popular variation is called Rapid Application Development (RAD). It introduces strict time limits on each development phase and relies heavily on RA tools (allow quick development).
Comparison of models
* Involves higher cost – needs to be iterated more than once * Not suitable for smaller projects * Project success depends on the risk analysis phase – hence, it requires highly specific expertise in risk analysis * Limited reusability * No established controls for moving from one cycle to another cycle, no firm deadlines, lack of milestones * Management is dubious | Incremental| * Potential exists for exploiting knowledge gained in early increments. * Moderate control over the life of the project through the use of written documentation and the formal review and approval/signoff by the user and information technology management at designated major milestones * Stakeholders can be given concrete evidence of project status throughout the life cycle. * Helps to mitigate integration/architectural risks. * Allows delivery of a series of implementations that are gradually more complete and can go into production more quickly as incremental releases
* Gradual implementation provides the ability to monitor the effect of incremental changes, isolate issues and make adjustments before the organization is negatively impacted| * Very rigid and do not overlap phases * Not all the requirements are gathered before starting the development; this could lead to problems related to system architecture at later iterations. * The user community needs to be actively involved throughout the project – time of the staff, project delay. * Communication and coordination skills take central stage in the development. * Informal requests for improvement after each phase may lead to confusion – controlled mechanism for handling substantive requests needs to be developed. * Possible “scope creep (user feedback on each phase increases customer demands.
* Errors and risks can be detected at a much earlier stage, as the system is developed using prototypes * Addresses: inability of many users to specify their information needs; difficulty of systems analysts to understand the user’s environment * Can be used to realistically model important aspects of a system during each phase of the traditional life cycle * Improves user participation in system development and communication among project stakeholders
* Increases complexity of the overall system * Involves exploratory methodology and therefore involves higher risk. * Involves implementing and then repairing the way a system is built, so errors are an inherent part of the development process. * Can lead to false expectations and poorly designed systems. * Approval process and control is not strict. * Requirements may frequently change significantly.| Here is another table that consists of the situations where each model is the most appropriate for applying. The data is based on my previous analysis and additional data collected from the internet.
Why there are so many System Development Methodologies is because all projects and systems require its own road to run. And not each method will be suitable for another one. Selecting the correct software development methodology with a proper cost-benefit analysis for a project can help projects to release successfully, on time, and within budget. Once an organization has determined which methodologies will work best for its projects it can ensure that there is a repeatable process established that will ensure successful projects. Tackling a project blindly with no process defined will result in undesirable product. Errors in the products are common, yet if the process is utilized properly, they can be eliminated quickly. Choosing the better approach or simply understanding the methodologies is important to ensure the right project/product is a result from the hard work.