Software Quality

Objectives

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

Skills and competencies:
- Analyze existing, non-trivial, software systems
- Extract high-level information from legacy systems
- Diagnostic reporting
- Master techniques for software system reengineering
- 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

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

General characterization

Code

11170

Credits

6.0

Responsible teacher

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

Hours

Weekly - 4

Total - 56

Teaching language

Português

Prerequisites

Software Engineering, Software Development Methods

Bibliography

main bibliography

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

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

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

complementary bibliography

Chikofsky et al. Reverse Engineering and Design Recovery: a Taxonomy. IEEE Soft. 7(1),1990.
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.

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.
All course materials are in English. Whenever there are students who don''t speak Portuguese, classes will be also in English.

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 (practical) and frequency

The practical component consists of 2 practical assignments (P1 and P2), taking the form of written reports. They are carried out by groups of 2 students and are worth 20% of the final grade each.
It is planned to carry out a defense of the work that will take the form of a conversation between the lecturer and all group members, which will in principle take place in the last 2 weeks of classes, using the time slots of the practical classes and perhaps the theoretical one.

"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 assignments >= 9.5 points (out of 20).

Theoretical component

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

For written tests, students are allowed to bring a sheet with their notes (one sheet, front and back) with them, which they must hand in with the test. Notes must be handwritten (no computer printout).

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

Final Grade

When the grading is obtained from the two written tests, the final grade (FG) is given by:
FG = 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:
FG = Ex *0.60 + P1 * 0.20 + P2 * 0.20

In both cases above, rounding when calculating the final grade is done only at the end, without intermediate calculations.

To obtain approval to this subject, FG must be >=9.50 and the student must also obtain a grade >= 9.5 (out of 20.0) for the theoretical component.

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
3.3 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

Programs where the course is taught: