Software Requirements and Architecture (2021/2022) - Departamento de Informática
Description

The success of a software project is given by the degree to which it meets the intended purpose.

Requirements Engineering offers ways to discover that purpose, through the identification, specification and documentation of stakeholders and their goals and needs in a form that serves for communication, analysis and implementation. Many of these goals are hard to specify, may conflict among each other, and are difficult to satisfy. Understanding such often-conflicting goals is essential to perform well-informed architectural decisions.

Software architecture design, on the other hand, creates and documents the high-level structure of a software system; at its core it refers to the structure of the software comprising software elements, the externally visible properties of those elements, and the relationships among them.

This course studies the various types of requirements and uses quality attributes and conflict analysis for the derivation of software architectures.

Objectives

Objective: study the various types of requirements as drivers of the software architecture. Sustainability requirements, non-functional requirements (NFRs) and conflict analysis form the basis for the systematic derivation of the software architecture.

To understand:

To know:

Know how to:

Syllabus

1. Introduction
1.1 The nature and importance of Requirements Engineering
1.2 Requirements as drivers of Software Architecture
1.3 Software Architecture and its importance in software evolution

2. Requirements Engineering Process
2.1 Requirements engineering processes and models
2.2 Requirements Elicitation, Specification and Exploration
2.3 Requirements Analysis and Negotiation(Conflict management and prioritisation)
2.4 Requirements Validation(Inspections, prototypes, model validation and requirements testing)
2.5 Requirements Management
2.6 Requirements documentation standards (e.g., IEEE 830-1998)

3. Requirements Engineering Techniques
3.1 Methods for requirements elicitation(e.g.,Design Thinking, Brainstorming, Checklists)
3.2 Methods for requirements specification(e.g.,Goal-oriented, Object-Oriented)
3.3 Sustainability and non-functional requiremements refinment and operationalization methods
3.4 Goal-based Modelling (intentional organizational modeling)
3.5 Derivation of object-oriented models(mappings between paradigms, models and concepts)

4. Software Architecture Design Fundamentals
4.1 Software Architecture principles
4.2 Mapping requirements to architectural concepts
4.3 Documenting Software Architecture

5. Software Architecture Techniques
5.1 System structuring and modular decomposition
5.2 Architectural views
5.3 Architectural styles and patterns (catalogs of software architectures)
5.4 Architectural description languages
5.5 Architecture evaluation

Bibliography
Prerequisites

Software Development Methods

Software Engineering

Domain-Specific Modeling Languages

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   30.0
Project   80.0
Total hours 168
ECTS 6.0