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.
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:
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
Software Development Methods
Software Engineering
Domain-Specific Modeling Languages
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 |