Engenharia de Requisitos

4.7 Gerenciamento de requisitos

Introdução

O que é

É o processo de compreensão e controle das mudanças nos requisitos do sistema

Após a instalação e o uso do sistema, surgirão novos requisitos

Razões pelas quais a mudança é inevitável

Após a instalação, o ambiente técnico e de negócios do sistema sempre muda

Um novo hardware pode ser introduzido

Pode ser necessário fazer a interface do sistema com outros sistemas

As prioridades do negócio podem mudar

Podem ser introduzidas novas legislações e regulamentos aos quais o sistema deve respeitar

As pessoas que pagam por um sistema e os usuários desse sistema raramente são os mesmos

novos recursos podem ser adicionados, para dar suporte ao usuário, a fim de que o sistema cumpra suas metas

Sistemas de grande porte têm uma comunidade de diversos usuários, com diferentes requisitos e prioridades, que podem ser conflitantes ou contraditórios

É preciso

Ter conhecimento sobre as necessidades individuais e manter as ligações entre as necessidades dependentes para conseguir avaliar o impacto das mudanças nos requisitos

Estabelecer um processo formal para fazer propostas de mudanças e a ligação destas às exigências do sistema.

O processo de gerenciamento de requisitos deve começar quando uma versão preliminar do documento de requisitos estiver disponível

Mas, deve se começar o planeamento de como gerenciar as mudanças de requisitos durante o processo de elicitação de requisitos

Planejamento de gerenciamento de requisitos

O é o primeiro estágio essencial no processo de gerenciamento de requisitos

Determina o nível de detalhamento requerido no gerenciamento de requisitos

Questões que devem ser decididas no estágio de gerenciamento de requisitos

Identificação de requisitos

Cada requisito deve ser identificado unicamente para poder ser comparado com outros requisitos e usado em avaliações de rastreabilidade

Processo de gerenciamento de mudanças

Conjunto de atividades que avaliam o impacto e o custo das mudanças

Ferramenta de apoio

Ferramentas que podem ser usadas variam desde sistemas especializados em gerenciamento de requisitos até planilhas e sistemas de banco de dados simples

Políticas de rastreabilidade

Definem os relacionamentos entre cada requisito e entre os requisitos e o projeto de
sistema que deve ser registrado

Precisa de apoio automatizado, e as ferramentas de software para esse gerenciamento devem ser escolhidas durante a fase de planejamento

Ferramentas de apoio servem para

Armazenamento de requisitos

Os requisitos devem ser mantidos em um repositório de dados gerenciado e seguro, acessível a todos os envolvidos no processo de engenharia de requisitos

Gerenciamento de mudanças

O processo de gerenciamento de mudanças é simplificado quando as ferramentas ativas de apoio estão disponíveis

Gerenciamento de rastreabilidade

Permitem descobrir requisitos relacionados

Gerenciamento de mudança de requisitos

É essencial, pois é necessário decidir se os benefícios da implementação de novos requisitos justificam os custos de implementação

Estágios do processo de gerenciamento de mudanças

Análise de problema e especificação de mudanças

Analisa-se o problema ou a proposta de mudança a fim de se verificar sua validade

A análise é transmitida a quem solicitou a mudança

que pode responder com uma proposta mais específica de mudança de requisitos

retirar a solicitação

Análise de mudanças e custos

O efeito da mudança proposta é avaliado por meio de informações de rastreabilidadee conhecimentos gerais dos requisitos do sistema

O custo de fazer a mudança é estimado em termos de modificações no documento de requisitos e, no projeto e implementação do sistema.

Quando a análise é concluída decide-se prosseguir ou não com a mudança de requisitos

Implementação de mudanças

O documento de requisitos e, quando necessário, o projeto e implementação do sistema são modificados.

Não se deve modificar o sistema e depois o documento de requisitos, pois pode levar a uma incoerência das informações

4.6 Validação de requisitos

O que é

É o processo pelo qual se verifica se os requisitos definem o sistema que o cliente realmente quer

É importante porque erros em um documento de requisitos podem gerar altos custos de retrabalho

Quando descobertos durante o desenvolvimento ou após o sistema já estar em serviço

Tipos de verificação que devem ser efetuados com os
requisitos no documento de requisitos

1. Verificações de validade

Ter maior reflexão e análise mais aprofundada podem identificar funções necessárias, adicionais
ou diferentes

2. Verificações de consistência

Não deve haver restrições contraditórias ou descrições diferentes da mesma função do sistema

3. Verificações de completude

O documento de requisitos deve incluir requisitos que definam todas as funções e as restrições pretendidas pelo usuário do sistema

4. Verificações de realismo

Os requisitos devem ser verificados para assegurar que realmente podem ser implementados

Considerarando o orçamento e o cronograma para o desenvolvimento do sistema

5. Verificabilidade

É necessário ser capaz de escrever um conjunto de testes que
demonstrem que o sistema entregue atende a cada requisito especificado

Técnicas de validação de requisitos

1. Revisões de requisitos

Os requisitos são analisados sistematicamente por uma equipe de revisores que verifica erros e inconsistências

2. Prototipação

Um modelo executável do sistema em questão é demonstrado
para os usuários finais e clientes

Podem experimentar o modelo para verificar se ele atende a suas reais necessidades

3. Geração de casos de teste

Os requisitos devem ser testáveis

Se é difícil ou impossível projetar um teste, os requisitos devem ser reconsiderados

O desenvolvimento de testes a partir dos requisitos do usuário antes de qualquer código ser escrito é parte integrante do Extreme Programming

4.5 Elicitação e análise de requisitos

Introdução

Os engenheiros de software trabalham com clientes e usuários finais do sistema para obter informações sobre

Domínio da aplicação

Serviços que o sistema deve oferecer

Desempenho do sistema

Restrições de hardware

Entre outros

Podem envolver diversos tipos de pessoas em uma organização

Descoberta de requisitos

Fase de interação com os stakeholders do sistema para

descobrir

seus requisitos

requisitos de domínio

elaborar a documentação

Classificação e organização de requisitos

Toma a coleção de requisitos não estruturados

Agrupa requisitos relacionados e os organiza em grupos coerentes

Por meio de um modelo de arquitetura do sistema que identifica os subsistemas e associa requisitos a cada subsistema

Priorização e negociação de requisitos

Quando vários stakeholders estão envolvidos, os requisitos entram em conflito

É preciso se reunirem para resolver as diferenças e chegar a um acordo sobre os requisitos

Está atividade está relacionada com

a priorização de requisitos

encontrar e resolver os conflitos

por meio da negociação de requisitos

Especificação de requisitos

Os requisitos são documentados e inseridos no próximo ciclo da espiral

Podem ser documentos

formais

informais

É um processo iterativo, com feedback contínuo de cada atividade para as outras atividades

O processo é um pouco difícil

Os stakeholders costumam não saber o que querem de um sistema computacional

Podem achar difícil articular o que querem que o sistema faça

Podem fazer exigências inviáveis

Os stakeholders expressam requisitos em seus próprios termos e com o conhecimento implícito de seu próprio trabalho

Engenheiros de requisitos, sem experiência no domínio do cliente, podem não entender esses requisitos

Diferentes stakeholders têm requisitos diferentes e podem expressar essas diferenças de várias maneiras

Engenheiros de requisitos precisam descobrir todas as potenciais fontes de requisitos e descobrir as semelhanças e conflitos.

Fatores políticos podem influenciar os requisitos de um sistema

Os gerentes podem exigir requisitos específicos, porque estes lhes permitirão aumentar sua influência na organização

O ambiente econômico e empresarial no qual a análise ocorre é dinâmico

A importância dos requisitos específicos pode mudar

Novos requisitos podem surgir

Durante o processo, deve se organizar as negociações regulares dos stakeholders

A opinião de todos os stakeholders devem ser consideras

Uma versão inicial do documento de requisitos do sistema pode ser produzida com seções faltantes e requisitos imcompletos

Utilizando

Planilhas

Cartões

Facilitam para os stakeholders lidarem, mudarem e
organizarem os requisitos

Elicitação de requisitos

Responsável por

Reunir informações sobre

Sistemas requeridos

Sistemas existentes

Separar dessas informações os requisitos de

usuário

sistema

Fontes de informações

Documentos

Especificação de sistemas similares

Domínio da aplicação

Sistemas que interagem com o sistema especificado

Stakeholders do sistema

Interação por meio de

observação

entrevista

Utiliza se cenários e protótipos para ajudar os stakeholders a compreenderem o que o sistema vai ser

Variam desde os usuário finais, até os stakeholders externos

Entrevistas

Os stackholders são questionados sobre o sistema que usam, e o que será desenvolvido

Os requisitos surgem a partir das respostas

Tipos

Fechada

Possui um conjunto de perguntas é predefinido

Aberta

Não existe uma agenda predefinida

A equipe explora uma serie de questões com os stackholders do sistema

desenvolvendo uma melhor compreensão de suas necessidades

Na prática, costuma ser um mistura dos dois

Discussões totalmente abertas raramente funcionam bem

É preciso fazer algumas perguntas para começar e manter a entrevista centrada no sistema que será desenvolvido

São boas para a compreensão global sobre

o que os stackholders fazem

como eles podem interagir com o novo sistema

as dificuldades que eles enfrentam com os sistemas atuais

Não é eficaz na elicitação de

Domínio da aplicação

Uso de terminologias e jargões pelos especialistas em aplicações, desconhecido dos engenheiros de requisitos

O conhecimento de domínio é tão familiar aos stakeholders que eles têm dificuldade de explicá-lo ou pensam
que é tão fundamental que não vale a pena mencionar

Conhecimento sobre os requisitos e restrições
organizacionais

A maioria das pessoas é relutante em discutir questões políticas e organizacionais que podem afetar os requisitos

Bons entrevistadores

estão abertos a novas ideias

evitam ideias preconcebidas sobre os requisitos

estão dispostos a mudar de ideia sobre o sistema

estimulam o convidado a participar de discussões

questão-trampolim

uma proposta de requisitos

trabalhando em conjunto em um protótipo do sistema

Informações recolhidas em entrevistas suplementam outras informações sobre o sistema

Para evitar que informações deixem de ser capitadas, deve se usar um conjunto com outras técnicas de elicitação de requisitos

Cenários

Úteis para adicionar detalhes a uma descrição geral de requisitos

Começa com o esboço da iteração

Durante o processo de elicitação, detalhes são adicionados a esse esboço

Podem incluir

Uma descrição do que o sistema e os usuários esperam quando o cenário se iniciar

Uma descrição do fluxo normal de eventos no cenário

Uma descrição do que pode dar errado e como isso é tratado

Informações sobre outras atividades que podem acontecer ao mesmo tempo

Uma descrição do estado do sistema quando o cenário acaba

Na elicitação baseada em cenários, é preciso

identificar o cenário

capturar detalhes que serão incluídos nesses cenários

Podem ser escritos como texto, suplementados por diagramas, telas, etc

Outra possibilidade é uma abordagem mais estruturada, em que cenários de eventos ou casos de uso podem ser usados

Casos de uso

Técnica de descoberta de requisitos introduzida inicialmente no método Objectory

Identifica os atores envolvidos em uma interação e dá nome ao tipo de interação

Suplementada por informações adicionais que descrevem a interação com o sistema

Essa informação pode ser

descrição textual

modelos gráficos

diagramas de sequência

estado UML

Documentados por um diagrama de casos de uso de alto nível

O conjunto de casos de uso representa todas as possíveis interações que serão descritas nos requisitos de sistema

Não há distinção entre cenários e casos de uso que seja simples e rápida

Alguns consideram cada caso de uso um cenário único

Outros encapsulam um conjunto de cenários em um único caso de uso

Identificam as interações individuais entre o sistema e seus usuários ou outros sistemas

Deve ser documentado com uma descrição textual

pode ser ligada a outros modelos UML que desenvolverão o cenário com mais detalhes

Não é eficaz para elicitação

das restrições

dos requisitos de negócios

dos não funcionais em alto nível

descobrir requisitos de domínio

Etnografa

Sistemas de software são usados em um contexto social e organizacional

requisitos de software do sistema podem ser derivados ou restringidos desse contexto

satisfazer a esses requisitos sociais e organizacionais é crítico para o sucesso do sistema

O fracasso de alguns sistemas, é que não levam em conta a forma como o contexto social e organizacional afeta o funcionamento prático do sistema

O que é

É uma técnica de observação que pode ser usada para compreender os processos operacionais e ajudar a extrair os requisitos de apoio para esses processos

Importância

Ajuda a descobrir requisitos implícitos do sistema que refletem as formas reais com que as pessoas trabalham, em vez de refletir processos formais definidos pela organização

Fatores sociais e organizacionais que afetam o trabalho, mas que não são óbvios para os indivíduos, podem ficar claros apenas quando analisados por um observador imparcial.

Eficaz para descobrir dois tipos de requisitos

Requisitos derivados da maneira como as pessoas realmente trabalham, e não da forma como as definições dos processos dizem que deveriam trabalhar

Requisitos derivados da cooperação e conhecimento das atividades de outras pessoas

Pode ser combinada com prototipação

A etnografia informa o desenvolvimento do protótipo, para que menos ciclos de refinamento do protótipo sejam necessários

Não é uma abordagem completa para elicitação

4.4 Processos de engenharia de requisitos

Pode incluir quatro atividades de alto nível

Avaliando se o sistema é útil para a empresa (estudo de viabilidade)

Descobrindo requisitos (elicitação e análise)

Convertendo-os em alguma forma-padrão (especificação)

Verificando se os requisitos realmente definem o sistema que o cliente quer (validação)

As atividades são organizadas em torno de uma espiral

Como um processo iterativo

Tem como resultado um documento
de requisitos de sistema

O tempo gasto em cada atividade depende do

Tipo de sistema que está sendo desenvolvido

Estágio do processo como um todo

Modelo espiral

Modelo espiral

Os requisitos são desenvolvidos em diferentes níveis de detelhamento

O número de iterações em torno da espiral pode variar

A espiral pode acabar depois da definição de alguns ou de todos os requisitos de usuário

Os requisitos e a implementação podem ser desenvolvidos em conjunto por meio do desenvolvimento ágil

Análise orientada a objetos

Trata-se de analisar o sistema e desenvolver um conjunto de modelos gráficos do mesmo

Modelos de casos de uso

Servem como uma especificação do sistema

Conjunto de modelos

Descreve o comportamento do sistema

É anotado com informações adicionais

Desempenho

Confiabilidade requerida do sistema

Introdução

4.1 Requisitos funcionais e não funcionais

Definição básica

Requisitos Funcionais

Declarações de serviços que o sistema deve fornecer

Reação do sistema a entradas específicas

Comportamento do sistema em determinadas situações

Requisitos não funcionais

Restrições aos serviços ou funções oferecidos pelo sistema

A distinção entre os tipos de requisitos não é tão clara

Requisitos são independentes

Muitas vezes geram ou restringem outros requisitos

O importante é garantir que os serviços e funcionalidades sejam entregues corretamente

Requisitos Funcionais

Descreve o que o sistema deve fazer

Dependem do tipo de software, dos possíveis usuários e da abordagem adotada ao escrever os requisitos

Variam de descrições gerais até requisitos muito específicos

Imprecisão na especificação de requisitos é a causa de muito problemas da engenharia de software

Especificação deve ser

Completa

Definir todos os serviços requeridos pelo usuário

Consistente

Definições dos requisitos não devem ser contraditórias

Em sistemas grandes é quase impossível alcançar completude e consistência

Requisitos não funcionais

Requisitos que não estão diretamente ligados aos serviços específicos oferecidos pelo sistema

Relacionados por exemplo à confiabilidade, tempo de resposta e ocupação de área

Normalmente restringem o sistema como um todo

São frequentemente mais críticos, não atender um requisito pode acarretar em inutilizacao do sistema

Implementação dos requisitos pode ser difundida em todo o sistema

Podem afetar a arquitetura geral do sistema

Um requisito não funcional pode gerar uma série de requisitos funcionais

Tipos de requisitos não funcionais

Requisitos de produto

Especificam ou restringem o comportamento do software

Requisitos organizacionais

Requisitos derivados das políticas e procedimentos da organização do cliente e do desenvolvedor

Requisitos externos

Requisitos que derivam de fatores externos ao sistema e seu processo de desenvolvimento

Sempre que possível, escrever os requisitos quantitativamente

Podem ser objetivamente testados

Verificar se os requisitos estão sendo cumpridos

Na prática, é difícil separar os requisitos funcionais dos não funcionais no documento de requisitos

Uni-los gera um melhor entendimento das relações entre os requisitos

4.2 O documento de requisitos de software

4.3 Especifcação de requisitos

O que é

É o processo de escrever os requisitos de usuário e de sistema em um documento de requisitos

Devem ser: claros, inequívocos, de fácil compreensão, completos e consistentes

Os requisitos de usuário

Devem descrever os requisitos funcionais e não funcionais

Precisa ser compreensível para os usuários do sistema que não tenham conhecimentos técnicos detalhados

Devem especificar somente o comportamento externo do sistema

O documento de requisitos não deve incluir detalhes da arquitetura ou projeto do sistema

Devem escrever os requisitos de usuário em linguagem natural, com tabelas simples, formas e diagramas intuitivos

Os requisitos de sistema

Usados por engenheiros de software como ponto de partida para o projeto do sistema.

São versões expandidas dos requisitos de usuário

Eles podem ser usados como parte do contrato para a implementação do sistema

Eles não devem se preocupar com a forma como o sistema deve ser projetado ou implementado

Pode ser escrito em linguagem natural, em notações com base em formulários, modelos gráficos ou matemáticos de sistema

Devem consistir em uma especificação completa e detalhada de todo o sistema

Especificação em linguagem natural

É expressiva, intuitiva e universal

Os requisitos são escritos em frases numeradas em linguagem natural

Cada frase deve expressar um requisito

Potencialmente vaga, ambígua e seu significado depende do conhecimento do leitor

Diretrizes simples para minimizar os mal-entendidos ao escrever requisitos em linguagem natural

Invente um formato-padrão e garanta que todas as definições de requisitos aderem a esse formato

A padronização do formato torna menos prováveis as omissões e mais fácil a verificação dos requisitos

Use uma linguagem consistente para distinguir entre os requisitos obrigatórios e os desejáveis

"deve" para obrigatórios e "pode" para não essenciais

Use uma forma de destacar as partes fundamentais do requisito (negrito, itálico ou cores)

Não assumir que os leitores compreendem a linguagem técnica da engenharia de software

Especifcações estruturadas

A liberdade do escritor dos requisitos é limitada

Todos os requisitos são escritos em uma forma-padrão

Pode usar construções de linguagem de programação para mostrar alternativas e iteração

Pode destacar elementos-chave pelo uso de sombreamento ou fontes diferentes

Pode definir um ou mais templates para representar esses requisitos como formulários estruturados

A especificação pode ser estruturada em torno dos objetos manipulados pelo sistema, das funções desempenhadas pelo sistema, ou pelos eventos processados pelo sistema

As tabelas são particularmente úteis quando há um número de situações alternativas possíveis e é necessário descrever as ações a serem tomadas para cada uma dela

Quando um formulário-padrão é usado para especificar requisitos funcionais é necessário:

1. A descrição da função ou entidade a ser especificada

2. Uma descrição de suas entradas e de onde elas vieram

3. Uma descrição de suas saídas e para onde elas irão

4. Informações sobre a informação necessária para o processamento ou outras entidades usadas no sistema

5. Uma descrição da ação a ser tomada

6. Se uma abordagem funcional é usada, uma pré-condição define o que deve ser verdade antes que a função
seja chamada, e é chamada uma pós-condição, especificando o que é verdade depois da função

7. Uma descrição dos efeitos colaterais da operação

Vantagens:

Reduz-se a variabilidade na especificação

Os requisitos são organizados de forma mais eficaz

Desvantagens

Difícil escrever os requisitos de forma clara e inequívoca, especialmente quando processamentos complexos (como, por exemplo, calcular a dose de insulina) devem ser especificados

Solução: adicionar informações extras aos requisitos em linguagem natural, usando tabelas ou modelos gráficos do sistema