Requisitos e Arquitetura de Software
Objetivos
Objectivo: estudo dos vários tipos de requisitos como pilares orientadores da arquitetura de software. Os requisitos não-funcionais (NFRs) e análise de conflitos servem de base para derivação sistemática da arquitetura de software.
Compreender:
- Fundamentos da engenharia de requisitos
- Métodos de especificação e análise de requisitos
- Fundamentos da arquitetura de software
- Estilos e padrões arquiteturais
- As bases para derivação sistemática da arquitetura de software
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 orientadas a objectivos para identificar, especificar, validar e gerir requisitos.
- Usar o NFR Framework para refinar NFRs e resolver conflitos.
- Analisar alternativas arquiteturais e escolher para satisfazer as restrições impostas pelos NFRs, promovendo a derivação sistemática da arquitetura.
- Descrever arquiteturas usando visões, padrões e estilos.
- Utilizar linguagens de descrição arquitetural ferramentas automáticas.
Caracterização geral
Código
11171
Créditos
6.0
Professor responsável
Ana Maria Diniz Moreira
Horas
Semanais - 4
Totais - A disponibilizar brevemente
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
- An Introduction to requirements Engineering, I. K. Bray, Addison-Wesley, 2002
- K. Wiegers, J. Beatty, Software Requirements, Microsoft Press, 2013
- J.Dick, E. Hull, K. Jackson, Requirements Engineering, Springer-Verlag, 2010
- A. Lamsweerde, Requirements Engineering, Wiley, 2009
- I. Alexander, N. Maiden, Scenarios, Stories, Use Cases: Through the Systems Development Life-Cycle, Wiley, 2004
- G. Kotonya, I. Sommerville, “Requirements Engineering: Processes and Techniques”, Wiley, 1998
- 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
O objectivo desta UC é o estudo dos vários tipos de requisitos como pilares orientadores da arquitetura de software no contexto do estado da arte atual, envolvendo por isso:
- brainstorming para compreensão do domínio do problema e o estudo de técnicas próprias de engenharia de requisitos dirigida por objectivos com ênfase na especificação e análise de requisitos não-funcionais que são fundamentais para a derivação informada e sistemática da arquitetura do software (Partes 1 e 2);
- a análise e propagação dos resultados para a arquitetura de software com vista a facilitar a evolução do futuro sistema leva ao estudo das visões, padrões e estilos arquiteturais, terminando com o refinamento e avaliação da arquitetura resultante (Partes 1, 3 e 4); e
- uma visão global do estado da arte atual (Parte 4).
Método de avaliação
**As regras de avaliação podem sofrer ajustes durante as duas primeiras semanas de aulas**
Componentes de avaliação
A avaliação consiste em duas componentes:
(i) Projeto prático com dois entregáveis;
(ii) Dois testes.
Componentes prática
A componente prática consiste de um projeto a desenvolver ao longo do semestre, com dois entregáveis espaçados no tempo e avaliados separadamente. O primeiro entregável (submetido aproximadamente na semana 7) é o documento de "especificação de requisitos”. O segundo (submetido na semana 13) é o documento de "especificação da arquitetura".
Cada entregável, submetido no Moodle, consta um fichero zip que inclui um relatório documentando os vários passos, atividades e resultados desenvolvidas, e ainda os modelos IGNOREe criados.
Este projeto é realizado em grupos de 2-3 alunos.
Componentes teórica
A componente teórica é composta por dois testes individuais. Os testes são realizados presencialmente, se as condições sanitárias o permitirem, com consulta de duas páginas manuscritas. Caso testes presenciais não sejam possíveis, serão substituídos por avaliações online (um teste e uma oral).
Datas preferenciais para os testes:
(i) Primeiro teste: a 26 de abril ou 3 de maio
(ii) Segundo teste: entre 14 e 17 de junho
Frequência
A frequência é dada pelos trabalhos e apenas alunos com média ≥ a 9.5 valores têm frequência. As frequências obtidas no ano anterior são são válidas, assim como a respectiva nota.
Assim, apenas alunos com frequência estão habilitados para fazer o exame de recurso.
Nota final
A nota é uma média ponderada do trabalho prático (20% primeiro deliverable e 30% o segundo deliverable) e da nota dos dois testes (25% cada).
Para obter aprovação o aluno tem de ter frequência e obter uma nota final >= 9.5.
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 Requisitos Elicitação e Exploração (Design Thinking, Brainstorming)
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 especificação de requisitos
3.2 Estrutura de requisitos não funcionais (Refinamento e operacionalização)
3.3. Modelação baseada em objetivos com iStar (modelagem organizacional intencional)
3.4 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
6. Avanços em requisitos e arquitetura
6.1 Questões transversais
6.2 Análise de Domínio e Linhas de Produto de Software