- 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.
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
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.
- 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 environmentRational 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
Post a Comment