Learning objectives The students will know which constructive, analytic and organisational methods for software quality management projects are available. They will have acquired a deeper understanding of the dynamic and static test method, and they will know how to apply SW measurements for SW quality management and processing improvement. The students will be familiar with approaches to formal proofs of correctness of sequential and concurrent systems. They will know how to assess and improve the quality of development processes with the help of maturity models, and will have acquired a deeper understanding of a modern maturity model (e.g. CMMI). They will be able to improve the quality with the help of reengineering methods – especially when maintaining and developing older software systems, and will be familiar with the necessary methods of programme analysis and representation.
 Content

| 
| Repetition of basic concepts of SW quality management |
| 
| 
| Special dynamic test methods: function-oriented tests, steady-state tests, control flow tests, data flow tests, regression tests, probabilistic tests, model-based tests |
| 
| 
| | 
| 
| Static test method: SW inspections and reviews, static code analysis |
| 
| 
| | 
| 
| SW measurement: basic concepts and objectives of SW measurement, GQM method, product-based SW measurements, process-based SW measurements, special measurements for object-oriented systems |
| 
| 
| Formal verification of a programme: Partial and total correctness of sequential programmes and Hoare calculus. |
| 
| 
| Automatic verification through model checking: Modelling of concurrent and reactive systems, formal specification with temporal logic, algorithms for model checking, and application examples. |
| 
| 
| Quality management: Modern process models (e.g. RUP, XP), models for the assessment of SW processes, maturity models (main focus on CMMI), determining the maturity, and process improvement. |
| 
| 
| SW reengineering as a method of quality improvement: Basic concepts of re- and reverse engineering, programme analysis and representation, source code-based transformation, refactoring design and architecture-based transformation, and reengineering processes. |
|

|