Software development processes and software quality assurance

Zsolt Dr. Ulbert

A tananyag a TÁMOP-4.1.2.A/1-11/1-2011-0042 azonosító számú „Mechatronikai mérnök MSc tananyagfejlesztés” projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

Manuscript completed: February 2014

Language reviewed by: Bódis László, Kismődi Péter

Published by: University of Pannonia

Editor by: University of Pannonia

2014


Table of Contents
Preface
1. Introduction
1.1. Software
1.2. Software process and software process models
1.3. The attributes of good software
1.4. Exercises
2. System design
2.1. System engineering
2.1.1. System requirements definition
2.1.2. System architecture design
2.1.3. Sub-system development
2.1.4. Systems integration
2.1.5. System evolution
2.2. Exercises
3. Software processes
3.1. Software process models
3.1.1. The waterfall model
3.1.1.1. V-model of software process
3.1.2. Evolutionary development
3.1.3. Component-based software engineering
3.2. Process iteration
3.2.1. Incremental delivery
3.2.2. Spiral development
3.3. Process activities
3.3.1. Software specification
3.3.2. Software design and implementation
3.3.3. Software validation
3.3.4. Software evolution
3.4. The Rational Unified Process
3.5. Exercises
4. Agile methods
4.1. Extreme programming
4.1.1. Testing in XP
4.1.2. Pair programming
4.2. Scrum
4.2.1. Scrum roles
4.2.2. Scrum artifacts
4.2.3. Scrum events
4.3. Feature driven development (FDD)
4.3.1. Milestones
4.4. Exercises
5. Object-oriented development
5.1. Generalisation
5.2. Association
5.3. Object-oriented design process
5.3.1. System context and models of use
5.3.2. Architectural design
5.3.3. Object and class identification
5.3.4. Design models
5.3.5. Object interface specification
5.4. Exercises
6. Unified Modelling Language
6.1. Model, modelling
6.2. Diagrams in UML
6.3. Business models
6.3.1. Business use case diagrams
6.3.1.1. Use case relationships
6.3.1.2. Generalisation
6.3.1.3. Activity diagrams
6.3.2. Business analysis model
6.3.2.1. Sequence diagrams
6.3.2.2. Concurrent processes
6.4. Exercises
7. Requirements analysis
7.1. Analyse the problem
7.1.1. Definition of glossary
7.1.2. Find actors
7.1.3. Develop requirements management plan
7.1.4. Develop Project Vision document
7.2. Understand stakeholder needs
7.2.1. Elicit stakeholder requests
7.2.2. Find use cases
7.2.3. Manage dependencies
7.3. Define the system
7.4. Manage the scope of the system
7.5. Refine the system definition
7.5.1. Details of use cases
7.5.2. Modelling and prototyping user-interface
7.6. Manage changing requirements
7.6.1. Structure the use case model
7.6.2. Review requirements
7.7. Exercises
8. Analysis and design
8.1. Define a candidate architecture
8.1.1. Architectural analyzis
8.1.2. Use case analysis
8.1.2.1. Find analysis classes
8.1.2.2. Distribute behaviour to analysis classes
8.1.2.3. Describe responsibilities
8.2. Refine the architecture
8.2.1. Identify design mechanisms
8.2.2. Identify design elements
8.3. Analyze behaviour
8.4. Design components
8.4.1. Use case design
8.4.2. Sub-system design
8.4.3. Class design
8.5. Implementation
8.6. Deployment
8.7. Exercises
9. Software testing
9.1. Unit testing
9.1.1. Interface testing
9.2. System testing
9.2.1. Integration testing
9.2.2. Functional testing
9.2.3. Performance testing
9.3. Exercises
10. Embedded system development
10.1. Critical systems
10.1.1. System dependability
10.1.1.1. Availability and reliability
10.1.2. Safety
10.1.3. Security
10.2. Critical systems development
10.2.1. Fault tolerance
10.2.1.1. Fault detection and damage assessment
10.2.1.2. Fault recovery and repair
10.3. Real-time software design
10.3.1. System design
10.3.1.1. Real-time system modelling
10.3.2. Real-time operating systems
10.3.2.1. Process management
10.4. Exercises
11. Project management
11.1. Management activities
11.2. Project planning
11.2.1. The project plan
11.3. Project scheduling
11.4. Risk management
11.4.1. Risk identification
11.4.2. Risk analysis
11.4.3. Risk planning
11.4.4. Risk monitoring
11.5. Exercises
12. Software quality management
12.1. Process and product quality
12.2. Quality assurance and standards
12.2.1. ISO
12.2.2. Documentation standards
12.3. Quality planning
12.4. Quality control
12.4.1. Quality reviews
12.5. Software measurement and metrics
12.5.1. The measurement process
12.5.2. Product metrics
12.6. Exercises
13. Software cost estimation
13.1. Software productivity estimation
13.2. Development cost estimation techniques
13.3. Algorithmic cost modelling
13.4. Exercises
Bibliography
List of Figures
2.1. Spiral model of requirements and design.
2.2. Block diagram of a simple alarm system.
3.1. The software life cycle.
3.2. Representation of V-model.
3.3. Evolutionary development.
3.4. Incremental development.
3.5. Spiral model of software process.
3.6. Phases of Rational Unified Process.
4.1. The Agile Manifesto.
4.2. Incremental development process.
4.3. The extreme programming release cycle.
4.4. A scrum sprint.
4.5. Process of feature driven development.
5.1. Representation of class Employee.
5.2. Instances of class Employee.
5.3. Example of polymorphism.
5.4. Representation of stereotypes.
5.5. A generalisation hierarchy.
5.6. Representation of an association model.
6.1. Business actors related to retail shop.
6.2. UML business use cases for retail shop.
6.3. Business use case diagram.
6.4. UML representation of include relationship.
6.5. UML representation of extend relationship.
6.6. The activity diagram of use case Sale Process.
6.7. Business workers and entities for retail shop.
6.8. Business object diagram for retail shop.
6.9. Sequence diagram of online order.
6.10. Representation of concurrent processes in sequence diagram.
7.1. UML representation of an actor.
7.2. UML representation of an use case.
7.3. Use case diagram in UML.
7.4. Representation of extend relationship.
7.5. representation of include relationship.
7.6. Use case generalization.
7.7. Use case generalization.
8.1. Representation of UML packages.
8.2. Representing dependency of packages.
8.3. Representation of use-case realization in UML.
8.4. Representation of stereotyping.
8.5. Boundary classes in UML.
8.6. Representation of entity classes in UML.
8.7. Representation of control classes in UML.
8.8. The sequence diagram of use case UML-01 course registration.
8.9. Collaboration diagram of use case UML-01 course registration.
8.10. Class Subject with identified methods.
8.11. The modified collaboration diagram of use case UML-01 course registration.
8.12. Attributes of class Subject.
8.13. Classes realizing use case UML-01 course registration.
8.14. Association relationship between classes.
8.15. Representation of multiplicity.
8.16. Representation of association class.
8.17. Representation of aggregation and composition relationship.
8.18. Identified classes and associations of use case UML-01 course registration.
8.19. Dependency of sub-systems.
8.20. The Corse registration boundary class.
8.21. UML representations of state.
8.22. Representation of actions relating a state.
8.23. State-chart diagram of UML-01 course object.
9.1. A model of the software testing process.
9.2. Black-box testing model.
10.1. General model for a real-time system.
10.2. Sensor – actuator control process.
10.3. RTOS actions required to start a process.
11.1. The project scheduling process.
11.2. The risk management process.
12.1. Process based quality assessment.
12.2. The software measurement process.