Software Quality (2021/2022) - Departamento de Informática
Description

This course addresses issues related to short, medium and long-term quality in software, from its construction to a potentially prolonged and continuous evolution. The software quality syllabus is supported by a pragmatic view of standards, methodologies and models, in line with industry best practices. The syllabus includes an introduction to software quality, aimed at promoting approaches to software quality during development and evolution, in line with quality models. Verification and validation techniques are covered in detail. To cope with new requirements, the systems need to evolve while preserving or even improving their quality. One of the goals of this course is to cover approaches and techniques to identify evolution problems, using reverse engineering techniques applied to real case studies. Once identified, these problems are tackled with reengineering practices including software refactoring, while maintaining traceability throughout the process. Finally, software reuse is discussed as a quality enhancing technique.

Objectives

Knowledge:
- 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

Syllabus

1. Introduction to software quality

2. Software Quality Models and Standards

2.1 Process Quality Models

2.2 Product Quality Models

3. Software Verification and Validation

3.1 Reviews (walkthroughs, inspections, demonstrations, audits)

3.2 Reading techniques (ad-hoc, checklist-based, defect-based reading, perspective-based reading)

3.3 Costs and benefits analysis of reviews

3.4 Software testing (fundamentals, black-box testing, white-box testing)

4. Software evolution

4.1 Reverse engineering of software systems

4.2 Software metrics

4.3 Software visualization

5. Reengineering of software systems

5.1 Reengineering fundamentals

5.2 Refactoring

6. Software design & reuse

6.1Design disharmonies (metrics)

6.2 Design Patterns
Bibliography

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

Prerequisites

Software Engineering, Software Development Methods

Student work
  Hours per credit 28
  Hours per week Weeks Hours
Aulas práticas e laboratoriais   26.0
Aulas teóricas   26.0
Avaliação   6.0
Self study   50.0
Project   60.0
Total hours 168
ECTS 6.0