Software Quality


- Elements of a Software Quality Management (SQM) system
- Software Quality Models and evaluation
- Verification and Validation
- Principles, Concepts, and Aims of Software Reengineering
- Legacy Software Systems
- Techniques and Tools for Reverse Engineering
- Program Reengineering and Refactoring

Skills and competencies:
- Reify an SQM for software development projects
- Define a software quality model
- Select and use adequate verification and validation techniques
- Critical evaluation of the coverage achieved by verification and validation techniques
- Analyze existing, non-trivial, software systems
- Extract high-level information from legacy systems
- Diagnostic reporting
- Master techniques for software system reengineering

Soft skills:
- Teamwork
- Public defense of points of view

General characterization





Responsible teacher

Miguel Carlos Pacheco Afonso Goulão, Miguel Jorge Tavares Pessoa Monteiro


Weekly - 4

Total - 52

Teaching language



Software Engineering, Software Development Methods


Chikofsky et al. Reverse Engineering and Design Recovery: a Taxonomy. IEEE Soft. 7(1),1990.

Lanza M.; Marinescu R. Object-Oriented Metrics in Practice. Springer-Verlag 2006.

Fowler M. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. 

Mens, et al.: Guest Editors'''''''''''''''' Introduction: Software Evolution. IEEE Software 27(4), 2010.

Gamma, Helm, Johnson, Vlissides. "Design Patterns Elements of reusable object-oriented software". Addison Wesley, 1995.

Myers, et al.: The Art of Software Testing, 3rd ed., 2011.

Maurício Aniche et al. “Software Testing: From Theory to Practice”, GitBook, 2021.

ISO/IEC 25023:2016

ISO/IEC 25010:2011

Teaching method

Lectures consist of a theoretical exposition, illustrated by application examples, and supported by slides and the usage of the software development environment of the lecturer.

In the lab sessions, students solve problems by concretely applying the concepts discussed in the previous lectures.

Students may clarify any doubts during classes or in the instructor’s contact hours.

Whenever there are students who don''''''''t speak Portuguese, classes will be in English. All course materials are in English, as well.

Evaluation method

Evaluation Components
The assessment includes a theoretical component and a practical component.
Grades are given in a scale of 0-20 points.

Lab Component and frequency
The practical component consists of 2 practical assignments and is worth 40% of the final grade. In this edition of subject QS, they take the form of written reports.
The two Practical assignments (P1 and P2) are carried out by groups of 2 students and are worth 20% of the final grade each.

"Frequency" is a set of conditions to be satisfied by the student for him/her to be accepted at any or all tests or exams. To obtain frequency, a student must obtain a weighted average of the grades of the works >= 9.5 points (ou of 20).

Theoretical component

The theoretical component consists of two individual tests, carried out in person, worth 60% of the final grade.

Students are allowed to bring a handwritten reference sheet (two pages) with them, which they must hand in with the test.

The theoretical component grade is the weighted average of the test grades or the Exam grade (Ex). In order to pass, it is necessary to obtain a weighted average of the test (or exam) grade >= 9.5 points and have a valid frequency.

Final Grade

When the grading is obtained from the two written tests, the final grade (NF) is given by:
NF = T1 * 0.30 + T2 * 0.30 + P1 * 0.20 + P2 * 0.20

When the grading is obtained from the the exam, the final grade is given by:
NF = Ex *0.60 + P1 * 0.20 + P2 * 0.20

To obtain approval to this subject, the student must obtain a theoretical assessment grade >= 9.5 (out of 20.0).

If the theoretical assessment grade is < 9.5, the final grade to be registered at CLIP is the theoretical assessment grade.

Frequency from the previous edition
Frequencies obtained in the previous edition (2022/23) remain valid, as well as the respective grade for the practical component. However, for the purposes of calculating the final grade, the weight of the practical component to be used is that of this subject''s edition: 40%.

Improving the grade in exam
Students who want to improve the grades for both tests can attend the exam. If the grade obtained in the exam is higher than the weighted test grade, it replaces the weighted test grade for the purposes of calculating the final grade.

Subject matter

1. Introduction to software quality

2. Software Quality Models and Standards
2.1 Process Quality Models
2.2 Product Quality Models

3. Software evolution
3.1 Reverse engineering of software systems
3.2 Software metrics
 Software visualization

4. Reengineering of software systems
4.1 Reengineering fundamentals
4.2 Refactoring

5. Software design & reuse
5.1 Design disharmonies (metrics)
5.2 Design Patterns

6. Software Verification and Validation


Programs where the course is taught: