Course Outline

One of the major challenges that the software community has to face nowadays is to develop systems that have a high level of quality at reasonable cost and time delay. The pressure to be the first in the market has drastically compressed the development process so that software products are often delivered without meeting the minimum quality assurance criteria, with vendors often relying on the patience and skills of customers to discover and report bugs. Though lower costs and rapid delivery seem to be the main issues in the contemporary marketing environment, meeting some level of quality assurance is still an important concern in highly competitive markets, in particular in organizations concerned with the development of critical systems such as aerospace industry, healthcare, or nuclear sectors. Mistakes in such organizations can lead to loss of life, injury, significant damage to the environment, or significant monetary loss.

In this course we will look at how to build and verify quality in software systems, with a strong emphasis on the verification aspects. The course will survey quality standards and processes and discuss their role in the development of quality software systems. There are several facets to software quality also referred to as software quality attributes; examples of such attributes include maintainability, usability, performance, security, and reliability. Each of these quality attributes is a complex notion in itself, requiring special verification techniques and tools. The course will concentrate on the verification and validation of two the most important quality aspects, specifically correctness and reliability. Lab works will consist of a mainstream project aimed at documenting, reviewing and testing the code of an open source software system. 

Syllabus


The following syllabus is subject to the time available and may change during the term. Some of the topics may not be covered. References to the reading materiel corresponding to each of the lecture sessions are indicated in bracket (TB for textbook).

Lectures:

Unit 1. Software Quality: Overview and Basics (2h, TB: Chap. 1: 1.1-1.6; Chap. 17: 17.1-17.4; Chap. 18: 18.1-2)

Introduce software quality standards and processes, quality planning and control, quality attributes and specification. Specifically, the following issues will be covered:

-      Quality Assurance and Standards

-      Quality Specification

-      Quality Control

Unit 2. Software Inspection (2h, TB: Chapter 3: 3.2)

Overview of different types of software review and focus on quality review through (formal) inspection. Introduce inspection process, documents and metrics.

Unit 3. Quality Models and Measurements (4h, TB: Chapter 13: 13.4, 13.11)

Presentation of quality management models; Use of quality models and data for in-process quality management and to guide software testing. Introduction of a number of techniques to quantify, classify and analyze discovered defects

Unit 4. Software Reliability Models (2h, TB: Chapter 15: 15.1-15.7)

Notions of software reliability and reliability growth. Overview of software reliability growth models (SGRM). Use of SGRM in tracking software quality.

Unit 5. Testing: Concepts and Management (1h, TB: Chapter 1: 1.3-1.15)

Presentation of testing dimensions, concepts, terminologies and processes. Introduction to lifecycle testing and to model-based testing. Discussion of underlying issues and approaches to test management. Introduction to test planning, test status and defect reporting.

Unit 6. Domain Testing (2h, TB: Chapter 6: 6.1-6.7; Chapter 9: 9.4-9.5)

Presentation of selected test models and testing strategies: domain test model.

Unit 7. Test Generation from Finite-State Machines (2h, TB: Chapter 10: 10.1-10.6)

Presentation of selected test models and testing strategies: state-based test model.

Unit 8. Control Flow Testing (3h, TB: Chapter 4: 4.1-4.10; Chapter 5: 5.1-5.10)

Notion of test adequacy; test coverage criteria and metrics; the basis-path test model; control flow testing.

Unit 9. Combinational Testing (2h, TB: Chapter 9: 9.6)

Presentation of selected test models and testing strategies: combinational test model.

Unit 10. System Integration Testing (1h, TB: Chapter 7: 7.1-7.4; Chapter 8: 8.1)

Presentation of selected test models and testing strategies: test integration.

Unit 11. Software Reliability Engineering (7h, TB: Chapter 15: 15.1-15.7)

Notions of software reliability and availability; comparison between hardware and software reliability; Software Reliability modeling and metrics. Reliability block diagrams; concurrent systems (series/parallel) reliability. Application of reliability concepts and models within a disciplined and systematic software engineering process. Reliability validation and demonstration.

 

Grading


The final grade obtained from the above marking scheme will be based on the following percentage-to-grade point conversion:

Grading Table