---SAD1 Assignment #4---



We are to identify and discuss at least three system development models and discuss each phase.

Before the caterpillar will turn into a golden and beautiful butterfly it is gone through many phases, the same with software there are various processes to make it work. It passes through planning, developing, coding and many more to make it more feasible to any form of deployment. And one of these process or development is what we called system development process. Through reading different definition of system development modes I can say that system development life cycle is the process of developing information systems through investigation, analysis, design, implementation and maintenance. System development life cycle is a systems approach to problem solving and is made up of several phases, each comprised of multiple steps.

What are the different system development models?

Waterfall model

Based on my understanding waterfall model describe as an extremely valuable tool to use in the implementation or revamping of any company. The waterfall model provides a strategic foundation in which a company can either update its existing system, or a company can create an entirely new system from scratch. There are seven phases to the systems development life cycle, and each phase must be completed in order, before the next phase begins, the phase before it must be complete. If a mistake is made, it may be necessary to start from scratch all over again, or go back several phases. If the phases are completed in order you should have a great foundation and you will be on your way to building a successful information system.

It is supposed to go down through a series of steps, reminding one of the routes a natural waterfall takes over a series of rocks at different levels.

In the traditional waterfall model, the first step in the software life-cycle is requirements analysis, this is the stage where the customers are queried for their needs, and a formal description of the software requirements is created. The next step is design, where the software that is to meet the requirements is planned. The third stage is implementation, where teams of developers create the software. The fourth step is testing, at which time developers, as well as representatives of the user community, is allowed to use the software and are asked to report any bugs they find. Upon completion of this step, the software is declared operational and only maintenance tasks are required thereafter.

The traditional waterfall model is much too simplistic, however, because each of the distinct steps it asks for is really itself a broad phase consisting of many sub-steps. In the detailed waterfall model, the requirements analysis step is extremely important. It is necessary to understand the customer's needs and to translate them into appropriate desired system behaviors. Any miscommunication with the customer could be fatal to the project as a whole, as it could result in a product that does not meet the customer's expectations, thus giving the company a bad reputation, a real disaster in the competitive software vendor's marketplace. Yet, communicating with the customer is not always easy either, because the customer may have only imprecisely-formulated objectives; or may have objectives that aren't vocalized very well and remain in the background for too long; or may have unrealizable or conflicting objectives. In some cases, it is necessary for the software development team to tell the customer exactly what he wants based on his vague utterances, and also whether he can get it needless to say, this involves a fair amount of skill at diplomacy and personal communication, in addition to knowledge of software engineering. Once the customer's requirements are understood, it is then necessary to document those requirements in a formal manner and reach an agreement with the customer about them.

Rapid Application Development

Rapid Application Development (RAD) refers to a type of software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.
Below is a brief overview of the RAD process, including its advantages and disadvantages.

Advantages and Disadvantages:

The primary advantages of Rapid Application Development are speed and quality, while potentially reduced scalability and feature sets are the disadvantages.

As the name suggests, Rapid Application Development's primary advantage lies in an application's increased development speed and decreased time to delivery. The goal of delivering applications quickly is addressed through the use of computer aided software engineering or CASE tools, which focus on converting requirements to code as quickly as possible, as well as Time Boxing, in which features are pushed out to future releases in order to complete a feature light version quickly.

Requirements Planning Phase

The requirements planning phase requires that high level or knowledgeable end-users determine what the fuctions of the system should be. It should be a structured discussion of the business problems that need to be solved. It can often be done quickly when the right users and executives are involved. Requirements planning occurs in a Joint Requirements Planning workshop (JRP).

User Design Phase

The user design phase requires the users to participate strongly in the nontechnical design of the system, under the guidence of I.S. professionals. User design is done in a Joint Application Design (JAD) workshop similar to the JRP workshop. In the first two phases the users and executives should play a larger part than the I.S. professionals. Prototyping is used to aid in requirements specification and design. The user does not sign off a paper design, they sign off a CASE representation.

Construction Phase

The design created during the User Design Phase is added to using I-CASE tools. As each transaction is built it may be demonstrated to the end-users for revision. The CASE environment allows for the continuous changes in design. End-users are closely involved in the construction phase. Testing occurs throughout the process. The I-CASE toolset should generate the code as well as the database descriptions for the final product. Code optimizers may be used to improve the performance of the generated code.

Cutover Phase

When the cutover phase occurs, a variety of actions are needed, comprehensive testing, training of the end-users, organizational changes and operation in parallel with the previous system until the new system settle in.

Rapid Application Development is not appropriate for all projects. The methodology works best for projects where the scope is small or work can be broken down into manageable chunks. Along these lines project teams must also be small, preferably two to six people, and the team must have experience with all technologies that are to be used.

Scrum Methodology

It is a practice-based methodology for modeling and documentation of software-based systems. It is intended to be a collection of values, principles, and practices for modeling software that can be applied on a software development project in a more flexible manner than traditional modeling methods. The system development process is complicated and complex. Therefore maximum flexibility and appropriate control is required. Evolution favors those that operate with maximum exposure to environmental change and have optimized for flexible adaptation to change. Evolution deselects those who have insulated themselves from environmental change and have minimized chaos and complexity in their environment. An approach is needed that enables development teams to operate adaptively within a complex environment using imprecise processes. Complex system development occurs under rapidly changing circumstances. Producing orderly systems under chaotic circumstances requires maximum flexibility.

Phase Steps

Each of the phases has the following steps:

Planning

• Development of a comprehensive backlog list.
• Definition of the delivery date and functionality of one or more releases.
• Selection of the release most appropriate for immediate development.
• Mapping of product packets (objects) for backlog items in the selected release.
• Definition of project team(s) for the building of the new release.
• Assessment of risk and appropriate risk controls.
• Review and possible adjustment of backlog items and packets.
• Validation or reselection of development tools and infrastructure.
• Estimation of release cost, including development, collateral material, marketing,
training, and rollout.
• Verification of management approval and funding.

Architecture/High Level Design

• Review assigned backlog items.
• Identify changes necessary to implement backlog items.
• Perform domain analysis to the extent required to build, enhance, or update the
domain models to reflect the new system context and requirements.
• Refine the system architecture to support the new context and requirements.
• Identify any problems or issues in developing or implementing the changes
• Design review meeting, each team presenting approach and changes to implement
each backlog item. Reassign changes as required.

Closure

When the management team feels that the variables of time, competition, requirements, cost, and quality concur for a new release to occur, they declare the release “closed” and enter this phase. This phase prepares the developed product for general release. Integration, system test, user documentation, training material preparation, and marketing material preparation are among closure tasks.



Sources:
http://en.wikipedia.org/wiki/Waterfall_model
http://hebb.cis.uoguelph.ca/~dave/27320/new/rad.html
http://en.wikipedia.org/wiki/Agile_software_development