Software Quality and Dependability

Year
1
Academic year
2023-2024
Code
02023402
Subject Area
Software Engineering
Language of Instruction
English
Other Languages of Instruction
Portuguese
Mode of Delivery
Face-to-face
Duration
SEMESTRIAL
ECTS Credits
6.0
Type
Elective
Level
2nd Cycle Studies - Mestrado

Recommended Prerequisites

Programming, discrete math, data structures. 

Teaching Methods

Theoretical lectures with detailed exposition, using visual aids, of concepts, principles and fundamental techniques of Software Quality and Dependability, practical examples to increase students' interest and exemplify their application to real situations. Practical classes: students, with the guidance of the teacher, solve exercises that require the combination of different theoretical concepts and promote critical thinking . The practical classes are also designed to support the practical projects. The practical component consists of a set of projects of small dimension and mini-tests.

Learning Outcomes

This curricular unit provides an in-depth look into the software engineering areas related to verification, validation and certification. The goal is to provide a broad knowledge of software quality and the technical activities aimed at increasing the quality and dependability of software, including static and dynamic analysis, development models and standards, and software certification. Students will understand how quality assurance is conducted for software development, understand the difference between static and dynamic analysis, define software quality and describe the role of quality assurance activities in the software process, perform in-depth testing of software to improve software quality, gain solid knowledge on formal static analysis techniques, namely model checking, and estimate the number of faults in small software applications based on fault density and fault seeding.

Work Placement(s)

No

Syllabus

Fundamentals of software quality

- Functional quality and structural quality

- Software quality economics

- Software dependability: attributes, threats, and means

- Defect prevention and defect removal

Static analysis and formal methods

- Inspections, reviews, and audits

- Automated static analysis

- Formal methods for specification and verification

- Model checking

Software testing

- Unit testing, integration testing, and system testing

- Black-box and white-box testing

- Model-based testing

- Coverage criteria

- Defect tracking

- Verifying parallel and distributed systems

- Regression testing

Development models and standards

- Software life cycle processes

- Software product quality

- Test-driven development

- Contract-based specification

Certification

- CMMI (Capability Maturity Model Integration)

- Measuring and estimating software quality

- Verification and validation (including non-code artifacts)

- Quality assurance.

Head Lecturer(s)

Frederico Manuel Duarte Cerveira

Assessment Methods

Assessment
Mini Tests: 15.0%
Project: 25.0%
Exam: 60.0%

Bibliography

- Paul Ammann and Jeff Offutt, ―Introduction to Software Testing‖, Cambridge University Press, 2008.

- Mordechai Ben-Ari, ―Principles of the Spin Model Checker‖, Springer, 2008.

- Stephen H. Kan, ―Metrics and Models in Software Quality Engineering‖, Addison-Wesley Professional, 2003.

- Mordechai Ben-Menachem, Garry S. Marliss, ―Software Quality: Producing Practical, Consistent Software‖, International Thomson Computer Press, 1997.