Software Process - Specification Design Validation Evolution

  • The software process
  • Generic software process models
  • Waterfall Model
  • Evolutionary Development
  • Component-Based Software Engineering
  • Coping with change
  • Reducing the cost of rework
  • Incremental delivery
  • Boehm’s spiral model
  • Rational Unified Process
1. The software process

A structured set of activities required to develop a software system
  • Specification
  • Design
  • Validation
  • Evolution
A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.

1.1 Software Specification

The process of establishing what services are required and the constraints on the system’s operation and development.

Requirements engineering process

  • Feasibility study - Is it technically and financially feasible to build the system?
  • Requirements elicitation and analysis - What do the system stakeholders require or expect from the system?
  • Requirements specification -  Defining the requirements in detail
  • Requirements validation - Checking the validity of the requirements

1.2 Software design and implementation

The process of converting the system specification into an executable system.
  • Software design - Design a software structure that realizes the specification.
  • Implementation - Translate this structure into an executable program.
The activities of design and implementation are closely related and may be inter-leaved.

1.3 Software validation

  • Verification and validation (V & V) are intended to show that a system conforms to its specification and meets the requirements of the system customer.
  • Involves checking and review processes and system testing.
  • System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.
  • Testing is the most commonly used V & V activity.

1.4 Software evolution

  • Software is inherently flexible and can change. 
  • As requirements change through changing business circumstances, the software that supports the business must also evolve and change.
  • Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

2. Generic software process models

- The waterfall model
        Separate and distinct phases of specification and development.
- Evolutionary development
        Specification, development, and validation are interleaved.
- Component-based software engineering
        The system is assembled from existing components.

2.1 Waterfall model


  • The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. 
  • One phase has to be completed before moving onto the next phase.
  • Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
  • Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. 
  • Few business systems have stable requirements.

2.2 Evolutionary development

Exploratory development 

  • The objective is to work with customers and to evolve a final system from an initial outline specification.
  • Should start with well-understood requirements and add new features as proposed by the customer.

Throw-away prototyping

  • The objective is to understand the system requirements. 
  • Should start with poorly understood requirements to clarify what is really needed.

Problems
  • Lack of process visibility
  • Systems are often poorly structured
  • Special skills
Applicability
  • For small or medium-size interactive systems
  • For parts of large systems (e.g. the user interface)
  • For short-lifetime systems

2.3 Component-based software engineering

Based on systematic reuse where systems are integrated from existing components.

Process stages

  • Component analysis
  • Requirements modification
  • System design with reuse
  • Development and integration
****

3. Coping with change

  • Change is inevitable in all large software projects.
  • Business changes lead to new and changed system requirements
  • New technologies open up new possibilities for improving implementations
  • Changing platforms require application changes
Change leads to rework so the costs of change include both rework (e.g. re-analyzing requirements) as well as the costs of implementing new functionality.

4. Reducing the costs of rework

Change avoidance 

  • The software process includes activities that can anticipate possible changes before significant rework is required. 
  • For example, a prototype system may be developed to show some key features of the system to customers. 

Change tolerance

  • The process is designed so that changes can be accommodated at a relatively low cost.
  • This normally involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have been altered to incorporate the change.

5. Incremental delivery

  • Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
  • User requirements are prioritized and the highest priority requirements are included in early increments.
  • Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

Incremental development

  • Develop the system in increments and evaluate each increment before proceeding to the development of the next increment;
  • The normal approach used in agile methods
  • Evaluation is done by user/customer

Incremental delivery

  • Deploy an increment for use by end-users
  • A more realistic evaluation of the practical use of software
  • Difficult to implement for replacement systems as increments have less functionality than the system being replaced.

Incremental delivery Advantages

  • Customer value can be delivered with each increment so system functionality is available earlier.
  • Early increments act as a prototype to help elicit requirements for later increments.
  • Lower risk of overall project failure.
  • The highest priority system services tend to receive the most testing.

Problems

  • Most systems require a set of basic facilities that are used by different parts of the system. 
  • The essence of iterative processes is that the specification is developed in conjunction with the software. 

6. Boehm’s Spiral Model

  • The process is represented as a spiral rather than as a sequence of activities with backtracking.
  • Each loop in the spiral represents a phase in the process. 
  • No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.
  • Risks are explicitly assessed and resolved throughout the process.
There are several sectors of this model.
  • Objective setting
  • Risk assessment and reduction
  • Development and validation
  • Planning

Usage

  • The spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development.
  • In practice, however, the model is rarely used as published for practical software development.

7. Rational Unified Process(RUP)

  • A modern generic process derived from the work on the UML and associated process.
  • Brings together aspects of the 3 generic process models discussed previously.
  • Normally described from 3 perspectives,
  • A dynamic perspective that shows phases over time
  • A static perspective that shows process activities
  • A practice perspective that suggests good practice

Inception

Establish the business case for the system.

Elaboration

Develop an understanding of the problem domain and the system architecture.

Construction

System design, programming, and testing.

Transition

Deploy the system in its operating environment


Rational Unified Process(RUP) Iterations

There are two types of iterations.
  • In-phase iteration
  • Cross-phase iteration

RUP good practice

  • Develop software iteratively
  • Manage requirements
  • Use component-based architectures
  • Visually model software
  • Verify software quality
  • Control changes to the software

****

Comments