Software Requirements and Architecture (2017/2018) - 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, and are difficult to satisfy. Understanding such often-conflicting goals is essential to perform well-informed architectural decisions. This course studies the various types of requirements and uses non-functional requirements and conflict analysis for the derivation of software architecture.

Objectives

Objective: study the various types of requirements as drivers of software architecture. Non-functional requirements (NFRs), particularly quality attributes, and conflict trade-off analysis form the basis for the systematic derivation of the software architecture.

Knowledge:

Application:

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 evolution

2. Requirements Engineering Process
2.1 Requirements engineering processes and models
2.2 Requirements Elicitation and Exploration(Design Thinking, Brainstorming)
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 (Variable and enduring requirements, change management, traceability)
2.6 Requirements documentation standards ((e.g., IEEE 830-1998)

3. Requirements Engineering Techniques
3.1 Methods for requirements specification
3.2 Non-Functional Requirements Framework (Refinement and operationalization)
3.3. Goal-based Modelling with iStar(Intentional organizational modeling)
3.4 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

6. Advances in requirements and architecture
6.1 Crosscutting concerns
6.2 Domain Analysis and Software Product Lines

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   2.0
Aulas teóricas   2.0
Total hours 4
ECTS 6.0