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
✓
✗