Fundamental activities

Specification

Design and implementation

Validation

Evolution

Software process model = An abstract representation of a software process

software process = A sequence of activities leading to the production of a software product

Process descriptions

Products

Roles

Pre- and post- conditions

Plan-driven processes

Agile processes

Software process model

Waterfall model

Plan-driven, strict order

Process

Requirements analysis and definition

Requirements specification[Products]
Customers, Analyst[Roles]
Requirements have been approved by customer[Post-]

System and software design

Design specification[Products]
Developer, Analyst[Roles]
All the requirements are included in the design specification[Post-]

Implementation and unit testing

Verified components[Products]
Developer, Analyst, Tester[Roles]
All the components have passed unit testing[Post-]

Integration and system testing

Verified software system[Products]
Developer, Analyst, Tester[Roles]
The software system has passed the system testing[Post-]

Operation and maintenance

Updated systems[Products]
Developer, Analyst, Customer[Roles]
Requirements and software systems have been updated according to customer or market needs[Post-]

Advantages and Disadvantages

✓ Helps coordinate the work

✓ Good requirements improves software quality

✗ Difficult to deal with changing requirements

Conidtions

✓ Large systems

✓ Requirements are well-understood and unlikely to change radically

Example

Online reservation system for meeting rooms

  • The requirements are well-studied and unlikely to change
Requirements definition
  • User information management
  • Conference reservation
  • Meeting room management
  • Reservation information management
System and software design
  • Flow chart

  • Data source

  • User Interface

Implementation and unit testing
  • Test and result
?
Operation and maintenance
  • Allowing new features

Incremental model

Interleaving activities

Process

Analysis - Design - Code - Test = Increment

Advantages and Disadvantages

✓ Dealing with changes

✓ Rapid delivery

✓ Effective feedbacks

✗ Invisible processes

✗ Degrading system structure

Conditions

✓ Limited time and budget

✓ Changing requirements

Agile methods

Traditional view

Achieve better software process(?)
  • Careful project planning

  • Formalized quality assurance

  • Use of analysis and design methods

  • Manage the process of software development

Problems

doing too much about planning designing documenting

Agile manifesto

  • Individuals and interactions over Processes and tools

  • Executive software over Comprehensive documentation

  • Customer collaboration over Contract negotiation

  • Responding to change over Following a plan

Scaling agile methods

Scaling up
  • More up-front design and system documentation
  • Cross-team communication mechanisms
  • Continuous integration
Scaling out
  • Refuse to accept the risk
  • Against standard procedures
  • A wide range of skills
  • Culture resistance

Reuse-oriented model

Component search and configurations

Process

Requirements Specification - Componment Analysis - Requirements Modification - System Design with Reuse - Development and Integration - System Validation

Key words

  • Component selection
  • Component filtering
  • Component-depentent requirements development

Advantages and Disadvantages