3. Evolutionary Prototyping

Evolutionary Prototyping

Advantages of Evolutionary prototyping

  •  Effort of prototype is not wasted
  • Faster than the Waterfall model
  • High level of user involvement from the start
  • Technical or other problems discovered early – risk reduced
  • Mainly suitable for projects with vague and unstable requirements.

 Disadvantages of Evolutionary prototyping

  • Prototype usually evolve so quickly that it is not cost- effective to produce great deal of documentation
  • Continual change tends to corrupt the structure of the prototype system.  Maintenance is therefore likely to be difficult and costly.
  •  It is not clear how the range of skills which is normal in software engineering teams can be used effectively for this mode of development.
  • Languages which are good for prototyping not always best for final product.

4. The Spiral Model

  • This model is an evolutionary software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model.
  • Using the spiral model software is developed in a series of incremental releases. During early iterations, the incremental release might be a paper model or prototype.
  • The spiral model is divided into four main task regions
  • Determine goals, alternatives, constraints
  • Evaluate alternatives and risks
  • Develop and test
  • Plan
The Spiral Model

5. Formal Development Model

Formal Development Model

  • Formal software specifications are mathematical entities and may be analyzed using mathematical methods.  Specification consistency and completeness can be proved mathematically.
  • Formal specifications may be automatically processed. Software tools can be used to build programs from formal specifications.
  • The development of a formal specification provides insights into and an understanding of the software requirements and the software design.

 

Problems with formal development methods

  • Many software engineers have not been trained in the techniques required to develop formal specifications.
  • Customers may be unwilling to fund development activities that they cannot easily monitor.
  • Software management is inherently conservative and is unwilling to adopt new techniques for which payoff is not obvious.
  • Most of the effort in specification research has been concerned with the development of languages and their theoretical aspects rather than tools and methods.

6. Incremental development

Incremental Model

The Incremental development model involves developing the system in an incremental fashion. The most important part of the system is fist delivered and the other parts of the system are then delivered according to their importance.

Incremental development avoids the problems of constant change which characterize evolutionary prototyping. An overall system architecture is established early in the process to act as a framework.

Incremental development is more manageable than evolutionary prototyping as the normal software process standards is followed. Plans and documentation must be produced 

7. Rapid Application Development

Rapid Application Development (RAD) is an incremental software development process model that emphasizes an extremely short development cycle.

 If requirements are well understood and project scope is constrained, the RAD process enables a development team to create a ‘fully functional system’ within very short time periods (e.g., 60 to 90 days)

Rapid Application Development

Processes in the RAD model

Business modelling

The information flow in a business system considering its functionality.

Data Modelling

The information flow defined as part of the business modelling phase is refined into a set of data objects that are needed to support the business

Process Modelling

 The data objects defined in the data modelling phase are transformed to achieve the information flow necessary to implement business functions.

Application generation

RAD assumes the use of 4GL or visual tools to generate the system using reusable components.

Testing and turnover

New components must be tested and all interfaces must be fully exercised

Problems with the RAD model

  • RAD requires sufficient human resources to create right number of RAD teams
  • RAD requires developers and customers who are committed to the rapid-fire activities necessary to get a system completed in a much-abbreviated time frame.
  • If a system cannot be properly modularized, building the components necessary for RAD will be problematic.
  • RAD is not applicable when technical risks are high. This occurs when a new application makes heavy use of new technology or when the new software requires a high degree of interoperability with existing computer programs.

8. Unified Process

The Unified Process or Rational Unified Process (RUP) is a framework for object-oriented software engineering using UML.  This is a use-case driven, architecture centric, iterative and incremental software development model.

Unified Process

Inception Phase

The Inception Phase of UP includes both customer communication and planning activities. By collaborating with the customer and end-users, business requirements for the software are identified, a rough architecture for the system is proposed, and a plan for the iterative, incremental nature of the project is developed.

Elaboration Phase

The Elaboration Phase encompasses the planning and modeling activities of the generic process model. Elaboration refines and expands the primary use-cases that were developed as part of the inception phase and expands the architectural representation to include five different views of the software – the use-case model, the analysis model, the design model, the implementation model and the deployment model.

Transition Phase

 The Transition Phase of the UP encompasses the later stages of the generic construction activity and the first part of the generic deployment activity.  Software is given to end-users for beta testing. The software team creates necessary support information (user manual, installation manual etc.). At the end of transition phase, the software increment becomes a usable software release.

Production Phase

The production phase of the UP coincides with the deployment activity of the generic process.  During this phase, the ongoing use of the software is monitored, support for operating environment is provided, and defect reports and requests for change are submitted and evaluated.

It is likely that at the same time the construction, transition and production phases are being conducted, work may have already begun on the next software increment. This means that the unified process do not occur in a sequence, but rather with staggered concurrency.

 

Major work products produced for each UP phases.

Inception Phase

Vision document

Initial use-case model

Initial risk assessment

Project Plan

Business model

Prototypes

 

Elaboration Phase

Use-case model

Requirements functional, non-functional

Analysis model

Software architecture

Preliminary design model

Revised risk list, revised prototypes

 

Construction Phase

Design model

Software components

Integrated software increment

Test cases

Test Plan and Procedures

Support documentation

 

Transition Phase

Delivered software increment

Beta test reports

General user feedback


9. Agile model

Click here to read Agile Software Development Process (Model) Article

10. Extreme Programming (XP)

Click here to read Agile Software Development Process (Model) Article