SAD 1 - Assignment # 4
Identify and discuss at least 3 systems development models .. discuss each phases ...
In any kind of system development, it is desirable to have guidelines in order to represent the flow of the system that a developer is working on. Most of developers use process models in order to represent their ideas for better understanding of the process flow of development.
But what is a process model?
According to Ferguson (1997), a process model is a generic description of a class of software processes. The model is independent of a particular project, but it may be customized, or instantiated, to produce a particular software process according to the needs of a particular project. The software process is only a means to an end, the process only enables an explicit way in which the process is engineered. It is dynamic, hence difficult to implement.
Based on the definitions above, I can deduce that a process model is a figure representation that depicts or describes a certain process.
In the world of process modelling, there are different approaches that are used by developers in order to represent a certain process.
Spiral Model

The spiral model, also known as the spiral lifecycle model, is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping model and the waterfall model. The spiral model is intended for large, expensive, and complicated projects.
In the spiral model, the development process takes the form of an iterative process. Each cycle includes the following activities (see graphic).
•
Define objectives, alternatives, and general conditions This is the phase of the spiral model wherein we determine the objectives, alternatives and constraints.
Objectives: functionality, performance, hardware/software interface, critical success factors, etc.
Alternatives: build, reuse, buy, sub-contract, etc.
Constraints: cost, schedule, interface, etc.
•
Evaluate the alternatives, identify and minimize risks -Study alternatives relative to objectives and constraints
-Identify risks (lack of experience, new technology, tight schedules, poor process, etc.
-Resolve risks (evaluate if money could be lost by continuing system development
•
Implement and review the intermediate product This is the phase wherein we develop the next-level product
The typical activities in this phase are as follows:
– Create a design
– Review design
– Develop code
– Inspect code
– Test product
•
Plan the next steps of the project The typical activities in this phase are as follows:
o Develop project plan
o Develop configuration management plan
o Develop a test plan
o Develop an installation plan
The Spiral Model has its strengths as a process model and these are as follows:
• Provides early indication of insurmountable risks, without much cost
• Users see the system early because of rapid prototyping tools
• Critical high-risk functions are developed first
• The design does not have to be perfect
• Users can be closely tied to all lifecycle steps
• Early and frequent feedback from users
• Cumulative costs assessed frequently
If the Spiral Model has its strengths, it also has weakness as a process model. These are as follows:
• Time spent for evaluating risks too large for small or low-risk projects
• Time spent planning, resetting objectives, doing risk analysis and prototyping may be excessive
• The model is complex
• Risk assessment expertise is required
• Spiral may continue indefinitely
• Developers must be reassigned during non-development phase activities
• May be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration
So when is the best time to use Spiral Model?
• When creation of a prototype is appropriate
• When costs and risk evaluation is important
• For medium to high-risk projects
• Long-term project commitment unwise because of potential changes to economic priorities
• Users are unsure of their needs
• Requirements are complex
• New product line
• Significant changes are expected (research and exploration)
RAD Model
RAD is a linear sequential software development process model that emphasis an extremely short development cycle using a component based construction approach. If the requirements are well understood and defines, and the project scope is constraint, the RAD process enables a development team to create a fully functional system with in very short time period.
What is RAD?
RAD (rapid application development) is a concept that products can be developed faster and of higher quality through:
• Gathering requirements using workshops or focus groups
• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that defers design improvements to the next product version
• Less formality in reviews and other team communication
RAD model has the following phases:
1.
Business Modeling:The information flow among business functions is defined by answering questions like what information drives the business process, what information is generated, who generates it, where does the information go, who process it and so on.
2.
Data Modeling:The information collected from business modeling is refined into a set of data objects (entities) that are needed to support the business. The attributes (character of each entity) are identified and the relation between these data objects (entities) is defined.
3.
Process Modeling: The data object defined in the data modeling phase are transformed to achieve the information flow necessary to implement a business function. Processing descriptions are created for adding, modifying, deleting or retrieving a data object.
4.
Application Generation: Automated tools are used to facilitate construction of the software; even they use the 4th GL techniques.
5.
Testing and Turn over: Many of the programming components have already been tested since RAD emphasis reuse. This reduces overall testing time. But new components must be tested and all interfaces must be fully exercised.
The benefits of RAD are:
• It is useful for projects in which user requirements are uncertain or imprecise
• It encourages active user and management participation. This increases end-user enthusiasm for the project
• Projects have higher visibility and support because of the extensive user involvement throughout the process
• Users and management see working, software-based solutions more rapidly than in Model-Driven Development
• Errors and omissions tend to be detected earlier in prototypes than in system models
• Testing and Training is a natural by-product of the underlying prototyping approach
• The iterative approach is more “natural” fit because change is an expected factor during development
• It reduces risk because you test the technical solution iteratively instead of making a wholesale commitment to any solution
Rapid Application Development main disadvantages are that some believe that it encourages the “code, implement and repair” mentality and practices. It may increase the overall lifetime costs in operation, support and maintenance. Due to the decrease in time for testing prototypes, the solution can easily resolve the wrong problem or create multiple new problems. If quality is your main issue, RAD is not your choice.
Waterfall Model

This method is a good basic model for most application development and is the oldest of the models. The waterfall method assumes, however, that the only role for user is in specifying requirements, and that all requirements can be specified in advance.
Unfortunately, requirements grow and change throughout the process and beyond, calling for considerable feedback and iterative consultation. Consequently, many other SDLC models have been developed.
This model is a sequence of stages in which the output of each stage becomes the input for the next. These stages can be characterized and divided up in different ways, including the following:
1)
System/Information Engineering and Modeling As software development is large process so work begins by establishing requirements for all system elements and then allocating some subset of these requirements to software. The view of this system is necessary when software must interface with other elements such as hardware, people and other resources. System is the very essential requirement for the existence of software in any entity. In some cases for maximum output, the system should be re-engineered and spruced up. Once the ideal system is designed according to requirement, the development team studies the software requirement for the system.
2)
Software Requirement Analysis Software Requirement Analysis is also known as feasibility study. In this requirement analysis phase, the development team visits the customer and studies their system requirement. They examine the need for possible software automation in the given software system. After feasibility study, the development team provides a document that holds the different specific recommendations for the candidate system. It also consists of personnel assignments, costs of the system, project schedule and target dates.
The requirements analysis and information gathering process is intensified and focused specially on software. To understand what type of the programs to be built, the system analyst must study the information domain for the software as well as understand required function, behavior, performance and interfacing. The main purpose of requirement analysis phase is to find the need and to define the problem that needs to be solved.
3)
System Analysis and Design In System Analysis and Design phase, the whole software development process, the overall software structure and its outlay are defined. In case of the client/server processing technology, the number of tiers required for the package architecture, the database design, the data structure design etc are all defined in this phase. After designing part a software development model is created. Analysis and Design are very important in the whole development cycle process. Any fault in the design phase could be very expensive to solve in the software development process. In this phase, the logical system of the product is developed.
4)
Code Generation In Code Generation phase, the design must be decoded into a machine-readable form. If the design of software product is done in a detailed manner, code generation can be achieved without much complication. For generation of code, Programming tools like Compilers, Interpreters, and Debuggers are used. For coding purpose different high level programming languages like C, C++, Pascal and Java are used. The right programming language is chosen according to the type of application.
5)
Testing After code generation phase the software program testing begins. Different testing methods are available to detect the bugs that were committed during the previous phases. A number of testing tools and methods are already available for testing purpose.
6)
Maintenance Software will definitely go through change once when it is delivered to the customer. There are large numbers of reasons for the change. Change could happen due to some unpredicted input values into the system. In addition to this the changes in the system directly have an effect on the software operations. The software should be implemented to accommodate changes that could be happen during the post development period.
Reference:
Ferguson, P.(1997, May)."Results of Applying the Personal Software Process," IEEE Computer,
Software Development Life Cycle (SDLC) By Yogi Berra Powerpoint presentation
http://www.efunda.com/processes/rapid_prototyping/intro.cfmhttp://www.garywwright.com/sdlc.php