View on GitHub

Notes

reference notes

Even tho there are many different types of software systems(as introduced in chap1), and there is no universal process that can be applied to all of them, the right process depends on:

they all must include in some form the four fundamental activities of software engineering: specification, design implementation, validation and evolution.

Its also important to describe what is produced, who is involved and conditions that influence the sequence of activities:

  1. Product: outcome of the process activity.
  2. Roles: people involved in the process activity.
  3. Pre- and post-conditions: conditions that must be satisfied before and after the process activity.

Software processes categories:

Plan-driven processes Agile processes
All of the process activities are planned in advance Planning is incremental
Progress is measured against the plan Easier to change the process to reflect changing customer requirements
Process activities are performed in a fixed sequence Process activities are performed in a flexible sequence

Software Process Modules

Its an abstract representation of a process. it presents a descreption of the process from some particular perspective.

Generic Process Modules

The waterfall model

Plan-driven model. This approach separates the process into distinct phases, each of which is completed before the next phase begins.

Benefits Drawbacks Applicability  
Clear and seperate phases Difficut to change requirements Well-defined requirements  
    No feedback from the customer. Changes are limited during the design process
      Large systems
      Embedded systems
      Critical systems

Incremental development

This approach interleaves the process activities of specification, design, implementation and validation. The system is developed as a series of versions, with each version adding new functionality to the previous version. Could be plan-driven or agile.

Benefits Drawbacks Applicability
Reduce cost of changes Invisible process, need regular deliveables to measure progress Clear requirements
Early feedback from the customer System structure degrade as new increments are added Product needs to be delivered quickly
Fast software delivery & deployment   New tech is being used

Integration and configuration

This approach relies on the availability of reusable components or systems. The system development focuses on configuring these components for use in the new setting and integrating them into a system. Could be plan-driven or agile.

Type of reuseable software:

Benefits Drawbacks
Reduse costs and risks System may not meet the customer’s requirements
Faster delivery Lost control on evolution of reused software

Process Activities

Specification

Two things are established in this process:

  1. What services are required?
  2. What are the constraints on the system?

Requirements engineering

Design and implementation

The process of converting the system specification into an executable system.

A general model of the design process:

design process

Design Activities:

System implementation:

Validation

Verification and validation (V & V) : to show that a system conforms to its specification and meets the requirements of the system customer. Involves:

Stages of testing:

  1. Component testing - testing of individual components independently. components may be functions, objects or coherent grouping of theseb entities.
  2. System testing - testing the system as a whole
  3. Customer acceptance testing - testing the system in the real environment.

Evolution

As requirements change through changing business circumstances, the software that supports the business must also evolve and change.

Coping with Change

Chnage is inevitable in large software projects because:

Change leads to rewor(work that has been completed has to be redone), Cost of change = cost of rework(e.g. re-analysing requirements) + cost of implementing new functionality.

To reduce cost of rework:

Two ways of coping with change and changing system requirements:

Process Improvement

A way of enhancing the quality of software, reducing costs or accelerating the development process. understands the existing processes and changing these proceses to increase product quality and reduce costs and development time.

Approaches to process improvement: | | The process maturity approach | The agile approach — | — | — Focuses | improving process and project management. | Iterative development | | introducing good software engineering practice. | The reduction of overhead in the software process Description | The level of process maturity reflects the extent to which good technical and management practice has been adopted in organizational software development processes. | The primary characteristics of agile methods are rapid delivery of functionality and responsiveness to changing customer requirements.

The process improvment cycle:

  1. Measurement - measure one or more attributes of the process or product, this forms a baseline to decide whether the process improvement has been successful.
  2. Analysis - the current process is assessed, and process weaknesses and bottlenecks are identified.
  3. Change - Address some of the identified process weaknesses. when the changes are made, the cycle repeats to collect data about the effectiveness of the changes.

Process maturity models:(levels)

  1. Initial - processes unpredictable, chaotic, ad hoc, no documentation, no process improvement.
  2. Repeatable - processes are characterized for the project and often reactive.
  3. Defined - processes characterized for the project and proactive.
  4. Quantitatively managed - processes measured and controlled.
  5. Optimizing - focus on process improvement.