Requisitos e Arquitetura de Software
Objetivos
Objectivo: estudo dos requisitos como a base para o desenvolvimento de um produto de software. Os vários tipos de requisitos, em particular os requisitos da sustentabilidade e os requisitos não-funcionais (NFRs) são os pilares orientadores para o desenho da arquitetura de software.
Compreender:
- A importância dos requisitos e os fundamentos da engenharia de requisitos (RE)
- As principais actividades e tºécnicas de RE, e o impacto dos requisitos na arquitetura de software
- Os fundamentos para a derivação sistemática e a especificação da arquitetura de software
- Um subconjunto dos estilos e padrões arquiteturais
Saber:
- Lidar com desafios colocados pela dimensão, objectivos contraditórios e descrição deficiente dos problemas reais.
- Compreender as vantagens da sistematização e reutilização planeada para a derivação da arquitetura.
- Ponderar a arquitectura com base em alternativas nem sempre disjuntas.
Saber fazer:
- Aplicar abordagens ágeis e orientadas a objectivos para identificar, especificar, validar e gerir requisitos.
- Identificar requisitos que contribuem para a sustentabilidade e para o desenvolvimento de sistemas de software sustentáveis.
- Usar técnicas para refinar os requistos a sustentabilidade e os NFRs, e resolver conflitos.
- Analisar alternativas arquiteturais e escolher as mais adequadas para satisfazer as restrições impostas pelos requisitos da sustentabilidade e pelos NFRs, promovendo a derivação sistemática da arquitetura.
- Descrever arquiteturas usando visões, padrões e estilos.
Caracterização geral
Código
11171
Créditos
6.0
Professor responsável
Ana Maria Diniz Moreira, João Baptista da Silva Araújo Júnior
Horas
Semanais - 4
Totais - 52
Idioma de ensino
Português
Pré-requisitos
Métodos de Desenvolvimento de Software
Engenharia de Software
Linguagens de Modelação para Domínios Específicos
Bibliografia
- Wiegers, Karl, and Candase Hokanson. Software Requirements Essentials: Core Practices for Successful Business Analysis. Addison-Wesley Professional, 2023
- Chung, Lawrence, Brian A. Nixon, Eric Yu, and John Mylopoulos. Non-functional requirements in software engineering. Vol. 5. Springer Science & Business Media, 2012
- I. Alexander, N. Maiden, Scenarios, Stories, Use Cases: Through the Systems Development Life-Cycle, Wiley, 2004
- I. Alexander, R. Stevens, “Writing Better Requirements”, Addison Wesley, 2002
- R. N. Taylor, et al, "Software Architecture: Foundations, Theory, and Practice" John Wiley and Sons, 2009
- L. Bass, et al, "Software Architecture in Practice", 2nd edition, Addison-Wesley, 2003
- P. Clements, et al "Documenting Software Architectures: Views and Beyond", Addison-Wesley, 2003.
Método de ensino
As aulas teóricas são tradicionalmente dadas em sala de aula com um projetor, e as aulas práticas em laboratório equipado com computadores e projetor com o objetivo de aplicar e aprofundar as matérias lecionadas nas aulas teóricas anteriores.
Na fase inicial desta unidade curricular os alunos terão que entrevistar potenciais utilizadores do seu trabalho de projecto fora da sala de aula.
Os alunos podem esclarecer dúvidas durante as aulas ou nos horários de atendimento.
Método de avaliação
A avaliação desta unidade curricular (UC) tem uma componente teórica (com dois testes) e uma componente prática (um projeto com dois entregáveis). Tanto os testes como os entregáveis são classificados numa escala de 0 a 20 valores, arredondados às décimas. Apenas a nota final será arredondada às unidades.
I. Avaliação Teórica
1. Os alunos estão autorizados a consultar uma página A4 escrita à mão e validada pelo professor no início da avaliação.
2. A classificação da componente teórica (NT) é a média aritmética arredondada às décimas das notas obtidas nos dois testes presenciais (a classificação de cada teste é arredondada às décimas).
3. Os alunos que obtenham uma classificação NT igual ou superior a 9,5 valores obtêm aprovação na componente teórica.
4. Os testes são presenciais e resolvidos no próprio enunciado.
5. A identificação de fraude numa prova de avaliação (Teste ou Exame) resulta na anulação da prova, reprovação na unidade curricular e perda da frequência obtida.
II. Avaliação Prática
1. No início do semestre os alunos recebem um caderno de encargos sobre o projeto a desenvolver ao longo do semestre (maioritariamente fora das aulas).
2. O projeto é desenvolvido em grupos de 3 ou 4 alunos. A constituição dos grupos é da responsabilidade dos alunos. A constituição dos grupos é entregue ao docente até ao final da primeira semana de aulas.
3. O projeto é entregue em duas fases, cada uma com um entregável. O relatório de cada entregável contém e discute todos os elementos requeridos no enunciado, segue o template discutido nas aulas, e é submetido eletronicamente juntamente com todos os artefactos produzidos (como por exemplo, modelos). Os entregáveis são os seguintes:
(i) Especificação de requisitos, ou SRS (System Requirements Specification). Este documento é submetido aproximadamente na oitava semana do semestre. O docente faz uma avaliação sumária e dá feedback a cada grupo sobre os pontos a melhorar ou problemas encontrados.
(ii) Documento de descrição arquitetural. Este documento é submetido no início da última semana do semestre.
4. O projeto é discutido oralmente na última semana de aulas.
5. A nota da componente projeto (NP) tem que ser superior a 9,5 valores. Esta nota é atribuída individualmente e é determinada pelo conjunto da avaliação dos dois entregáveis e discussão oral, numa escala de 0 a 20.
III. Frequência
A frequência é garantida pela conjunção de três componentes:
(i) Presença em pelo menos 50% das aulas teóricas & 50% das aulas práticas
(ii) Nota final do Projecto (NP) >=9,5
(iii) Avaliação positiva nos momentos de avaliação intercalar do projeto feito durante algumas aulas práticas
IV. Classificação Final
1. A classificação final (CF) é o resultado da seguinte expressão aproximado às unidades:
CF=NT×0.6+NP×0.4
2. Os alunos que apresentem uma discrepância igual ou superior a 4 valores entre NT e NP terão que defender sua nota final numa oral individual.
3. A ausência à prova oral resulta numa classificação final igual à nota teórica (NT).
V. Utilização de Ferramentas de IA (eg, ChatGPT, Gemini)
1. Durante uma prova de avaliação, um estudante não pode ter junto a si dispositivos electrónicos com capacidade de acesso à internet ou ligação bluetooth (ex. smartphones, smartwatches, smartglasses, tablets, laptops), ainda que desligados. A violação desta regra implica a reprovação liminar na unidade curricular por exclusão e será comunicada à Comissão Científica do respectivo Curso.
2. Os alunos que utilizarem ferramentas de IA no projecto final estão obrigados a reportar o seu uso. A omissão desta informação resultará na exclusão imediata e consequente reprovação.
Conteúdo
1. Introdução
1.1 A natureza e a importância da Engenharia de Requisitos
1.2 Requisitos como drivers da Arquitetura de Software
1.3 Arquitetura de software e sua importância na evolução do software
2. Processo de Engenharia de Requisitos
2.1 Processos e modelos de engenharia de requisitos
2.2 Elicitação, Especificação e Exploração de Requisitos
2.3 Análise e Negociação de Requisitos (gestão de conflitos e priorização)
2.4 Validação de Requisitos (inspeções, protótipos, validação de modelo e teste de requisitos)
2.5 Gestão de Requisitos
2.6 Padrões de documentação de requisitos (por exemplo, IEEE 830-1998)
3. Técnicas de engenharia de requisitos
3.1 Métodos para elicitação de requisitos (e.g., Design Thinking, Brainstorming, Checklists)
3.2 Métodos para especificação de requisitos (e.g., Goal-oriented, Object-Oriented)
3.3 Estrutura de requisitos de sustentabilidade e dos requisitos não funcionais (Refinamento e operacionalização)
3.4 Modelação baseada em objetivos (modelagem organizacional intencional)
3.5 Derivação de modelos orientados a objetos (mapeamentos entre paradigmas, modelos e conceitos)
4. Fundamentos de desenho arquitetural
4.1 Princípios de arquitetura de software
4.2 Mapeamento de requisitos para conceitos arquiteturais
4.3 Documentação da arquitetura de software
5. Técnicas de arquitetura de software
5.1 Estruturação do sistema e decomposição modular
5.2 Vistas arquiteturais
5.3 Estilos e padrões arquiteturais (catálogos de arquiteturas de software)
5.4 Linguagens de descrição arquiteturais
5.5 Avaliação da arquitetura