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
- Padrões e estilos 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**
A avaliação consiste em duas componentes obrigatórias:
(i) Trabalho prático (50%) com entregáveis ao longo do semestre;
(ii) Dois testes (50%).
O trabalho (e respectivo relatório) é realizado em grupos de 2-3, e os testes individualmente.
A nota é uma média ponderada do trabalho prático (50%), e da nota dos testes (25% cada um).
A frequência é dada pelos trabalhos e apenas alunos com média superior a 9.5 valores têm frequência.
Os alunos que não cumprirem qualquer uma das componentes de avaliação são classificados como "Reprovados" e “Ausentes” caso não entreguem qualquer componente de avaliação.
O exame de época de recurso é para alunos que têm frequência, mas que não obtiveram um desempenho satisfatório na avaliação contínua, com média entre 9.5 e 20, ou que desejam fazer melhoria.
Para melhorias de nota realizadas na época de recurso do semestre em que foi obtida aprovação na cadeira, as regras de cálculo da nota são as da época de recurso, ou seja, a nota final é a nota do exame. Melhorias de notas obtidas em semestres anteriores são feitas exclusivamente por exame, em época de recurso ou época especial, sendo a nota final a nota obtida no exame.
Na época especial, a nota final é a nota do exame.
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