Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Requisitos de Software 
 
 
Prezados (as) acadêmicos (as)! 
É com grande satisfação que iniciamos a nossa segunda unidade da 
disciplina de Requisitos, Análise e Projeto de Sistemas do curso de 
Licenciatura em Computação, que trata das características e conceitos que 
envolvem esta disciplina tão atual no cotidiano dos profissionais da 
computação. 
Nesta unidade, estudaremos tópicos que objetivam fazer com que o aluno 
construa uma base de conhecimento que o permita realizar atividades 
voltadas à disciplina de Requisitos. 
Os objetivos específicos são: 
● conceituar o que são Requisitos funcionais e não funcionais; 
● identificar pontos relevantes pertinentes às disciplinas de Requisitos; 
● compreender a importância da utilização de ferramentas e UML para 
essa atividade. 
Como leitura obrigatória desta unidade, selecionamos o texto ‘Requisitos 
de Software’ disponível na Aba “Biblioteca” e na ferramenta “Conteúdo 
Interativo”. 
Após a leitura atenta aos textos, vocês deverão realizar a atividade 
avaliativa: questionário com valor máximo: 100 pontos. 
A Leitura obrigatória é essencial para que vocês possam, de forma 
produtiva, construir o conhecimento nesta unidade, bem como participar 
das atividades avaliativas. 
Fiquem atentos ao prazo de encerramento da unidade e da atividade 
avaliativa. Se vocês tiverem alguma dúvida, não hesitem em entrar em 
contato com o seu tutor para saná-la. Além disso, procure discutir as 
temáticas apresentadas neste material com os seus colegas de curso, seja 
no ambiente de aprendizagem ou no polo de sua cidade. 
Bom trabalho! 
REQUISITOS DE SISTEMAS 
 
PARTE A - CONCEITOS FUNDAMENTAIS 
 
1. Introdução 
 
O desenvolvimento de software objetiva criar soluções 
computacionais em software que atendam às necessidades de clientes e 
usuários. Uma correta especificação dos requisitos do software é 
essencial para evitarmos o esforço dispendioso de desenvolvimento. 
Mesmo que um sistema tenha sido bem projetado e codificado, se ele 
for mal especificado provavelmente frustrará o usuário e causará 
desconforto à equipe de desenvolvimento, que terá de modificá-lo para 
se adequar às necessidades do cliente. 
Os requisitos abrangem a definição do que o sistema deve 
realizar, suas propriedades e as restrições que envolvem sua operação e 
o processo de desenvolvimento. A interação efetiva entre os clientes e 
usuários do software e os desenvolvedores geralmente resulta na 
definição eficaz de requisitos. Os requisitos do sistema não são 
influenciados somente pelas preferências dos usuários, mas também por 
questões organizacionais. 
Geralmente, inúmeras dificuldades são encontradas pela equipe 
desenvolvedora quanto ao entendimento da informação fornecida pelo 
cliente / usuário. Os requisitos são frequentemente registrados de 
maneira desorganizada e desperdiça-se tempo verificando o que de fato 
foi registrado, permitido que as modificações nos requisitos controlem a 
equipe desenvolvedora ao invés de se estabelecer um controle de 
modificações. Falha-se na fundamentação sólida para o desenvolvimento 
de software e, quando esses problemas se combinam, a perspectiva é 
danosa mesmo para os gerentes e profissionais mais experientes. Mas 
há uma boa notícia: existem soluções para esses problemas e elas 
abrangem a definição correta dos requisitos funcionais e dos requisitos 
não funcionais do sistema. 
40
2. Requisitos Funcionais
Os requisitos funcionais de um sistema descrevem o que o 
sistema deve fazer. Esses requisitos dependem do tipo de software que 
está sendo desenvolvido, dos usuários a que o software se destina e da 
abordagem geral considerada pela organização ao redigir os requisitos. 
Os requisitos funcionais descrevem detalhadamente as funcionalidades, 
entradas, saídas e exceções do sistema. O nível de detalhamento do 
requisito pode variar, conforme os exemplos abaixo: 
● Exemplo 1: O usuário deve ser capaz de fazer uma busca em todo 
o banco de dados ou selecionar uma visão nele baseado (requisito 
pouco detalhado). 
● Exemplo 2: O sistema deve fornecer telas apropriadas para o 
usuário visualizar os documentos do repositório (requisito pouco 
detalhado).
● Exemplo 3: Para cada pedido deve ser alocado um identificador 
único Order_ID (requisito bem detalhado).
Em uma especificação de requisitos funcionais, os serviços 
exigidos pelo usuário devem ser definidos (completeza) e os requisitos 
não devem ter definições contraditórias (consistência). Porém, é muito 
difícil atingir a completeza e consistência em sistemas grandes e 
complexos, pois além de ser fácil cometermos erros e omissões na 
especificação, há diferentes stakeholders[1] que possuem diferentes 
necessidades. Ainda, interpretações incorretas normalmente resultam na 
especificação de requisitos inconsistentes. Com isso, os problemas 
podem aparecer apenas depois de uma análise mais profunda ou, às 
vezes, depois que o desenvolvimento estiver concluído e o sistema tiver 
sido entregue para o cliente. 
3. Requisitos Não Funcionais
Os requisitos não funcionais definem as restrições do sistema, 
como a capacidade dos dispositivos de entrada/saída e as 
representações de dados utilizadas nas interfaces do sistema. Podem 
41
especificar desempenho, proteção, disponibilidade e outras propriedades 
emergentes do sistema. Abrangem também restrições de orçamento, 
políticas organizacionais, interoperabilidade com outros sistemas de 
software ou hardware, regulamentos de segurança ou legislação sobre 
privacidade, conforme ilustrado na Figura 2.1. Geralmente são mais 
importantes que os requisitos funcionais, pois o não atendimento a um 
requisito não funcional pode comprometer o funcionamento de todo o 
sistema. Por outro lado, os usuários costumam contornar uma situação 
em que uma determinada funcionalidade do sistema não atende à sua 
necessidade. 
 
[1] O termo stakeholder define a pessoa ou grupo afetado direta ou 
indiretamente pelo desenvolvimento do sistema. 
 
Figura 2.1 – Tipos de requisitos não funcionais (Fonte: SOMMERVILLE, 2007). 
 
Os requisitos não funcionais são classificados em três grupos 
principais: 
1) Requisitos de produto: especificam o comportamento do produto e 
estão relacionados à usabilidade, eficiência, confiabilidade e 
42
portabilidade do sistema. A Tabela 2.1 ilustra os tipos de requisitos de 
produto com o respectivo exemplo. 
 
Tipo de requisito de produto Exemplo 
Usabilidade Usuários deverão operar o sistema 
após um determinado tempo de 
treinamento 
Eficiência O sistema deverá processar n 
requisições por um determinado 
tempo (tempo de resposta é 
requerido) 
Confiabilidade O sistema deve estar disponível ao 
usuário durante 99% do tempo 
Portabilidade O sistema deve operar na plataforma 
Windows 
Tabela 2.1 – Tipos de requisitos de produto. 
 
 
 
2) Requisitos organizacionais: derivados de políticas e procedimentos de 
organização do cliente e do desenvolvedor. Incluem requisitos de 
entrega (especificam quando o produto e a documentação devem ser 
entregues), requisitos de implementação (linguagem e/ou método 
utilizados) e padrões de processos. A Tabela 2.2 ilustra os tipos de 
requisitos organizacionais com o respectivo exemplo. 
 
Tipode requisito 
organizacional 
Exemplo 
Entrega O sistema deve possibilitar a 
emissão de relatórios gerenciais 
de contas a pagar 
43
Implementação O sistema deverá ser 
desenvolvido na linguagem Java 
Padrões O uso de programação orientada 
a objetos sob a plataforma 
Windows 
Tabela 2.2 – Tipos de requisitos organizacionais. 
 
3) Requisitos externos: abrange todos os requisitos provenientes de 
fatores externos ao sistema e seu processo de desenvolvimento. 
Incluem requisitos de interoperabilidade, requisitos éticos e requisitos 
legais. A Tabela 2.3 ilustra os tipos de requisitos externos com os 
respectivos exemplos. 
 
Tipo de requisito externo Exemplo 
Interoperabilidade O sistema deverá se comunicar 
com o Sistema Gerenciador de 
Banco de Dados SQL Server 
Ético O sistema não apresentará aos 
usuários quaisquer dados 
considerados privados 
Legal O sistema deverá atender às 
normas legais, tais como 
padrões, leis, etc. 
Tabela 2.3 – Tipos de requisitos externos. 
 
 
 
4. Categorização dos Requisitos (FURPS+) 
 
Uma forma de estabelecer critérios de qualidade para avaliação de 
sistemas de software é caracterizar os atributos de um sistema de 
44
software de acordo com a Funcionalidade (Functionality), Usabilidade 
(Usability), Confiabilidade (Reliability), Desempenho (Performance) e 
Suportabilidade (Supportability), constituindo o modelo FURPS+. Este 
acrônimo descreve as principais categorias de requisitos e o sinal “+” 
refere-se à inclusão de requisitos relacionados ao design, 
implementação, interface e característica física. 
 
● Funcionalidade (Funcional): os requisitos de funcionalidade são 
usados para expressar o comportamento de um sistema 
especificando a contribuição e as condições esperadas de saída. 
● Usabilidade (Não Funcional): endereçam fatores humanos 
(estética, facilidade de aprendizado e de uso) e consistência na 
interface do usuário, documentação de usuário e materiais de 
treinamento. 
● Confiabilidade (Não Funcional): endereçam frequência e gravidade 
de falha, possibilidade de recuperação, previsibilidade e precisão. 
● Desempenho (Não Funcional): impõem condições aos requisitos 
funcionais. Por exemplo, para uma determinada ação ser 
executada, um requisito pode especificar parâmetros de 
desempenho relacionados à velocidade, disponibilidade, precisão, 
tempo de resposta, tempo de recuperação ou utilização de 
recursos (memória, processamento, etc.). 
● Suportabilidade (Não Funcional): os requisitos de suporte podem 
incluir a capacidade de testes, adaptabilidade, manutenibilidade, 
compatibilidade, possibilidade de configuração, possibilidade de 
serviço, possibilidade de instalação. 
 
Outros requisitos do modelo FURPS+ 
 
● Requisito de Design: Um requisito de design, frequentemente 
chamado de uma restrição de design, especifica ou restringe o 
45
design de um sistema. 
● Requisito de Implementação: Um requisito de implementação 
especifica ou restringe o código ou a construção de um sistema. 
Como exemplos, podemos citar: padrões obrigatórios, linguagens 
de implementação, políticas de integridade de banco de dados, 
limites de recursos e ambientes operacionais. 
● Requisito de Interface: Um requisito de interface especifica um 
item externo com o qual o sistema deve interagir e restrições de 
formatos, tempos ou outros fatores usados por tal interação. 
● Requisito Físico: um requisito físico especifica uma característica 
física que um sistema deve possuir, podendo estar relacionado ao 
material, forma, tamanho e peso. Esse tipo de requisito pode ser 
usado para representar requisitos de hardware, como as 
configurações físicas de rede obrigatórias. 
 
5. Engenharia de Requisitos 
 
A Engenharia de Requisitos auxilia os engenheiros de software na 
melhor compreensão do problema que terá de ser resolvido por eles. Ela 
inclui um conjunto de tarefas ou subprocessos que levam a um 
entendimento de qual será o impacto do software sobre o negócio, do 
que o cliente deseja e de como os usuários finais vão interagir com o 
software. 
Como todas as outras atividades de Engenharia de Software, a 
Engenharia de Requisitos precisa ser adaptada às necessidades do 
processo, projeto, do produto e do pessoal que está fazendo o trabalho. 
Ela estabelece uma base sólida para o projeto e a construção. Sem ela, 
o software resultante tem uma alta probabilidade de não satisfazer às 
necessidades dos clientes, pois ela fornece o mecanismo apropriado 
para entender o que o cliente deseja, analisando as necessidades, 
avaliando a exequibilidade, negociando uma condição razoável, 
especificando a solução de modo não ambíguo, validando a 
especificação e gerindo os requisitos à medida em que são 
46
transformados em um sistema de software operacional. 
O processo de Engenharia de Requisitos deve gerar e manter um 
documento de requisitos de sistema. O processo geral inclui 
subprocessos relacionados à: avaliação da utilidade do sistema para a 
empresa (estudo de viabilidade), obtenção de requisitos (elicitação e 
análise), conversão desses requisitos em alguma forma padrão 
(especificação), verificação dos requisitos quanto ao real atendimento às 
necessidades do cliente (validação) e gerenciamento de requisitos. A 
Figura 2.2 ilustra o relacionamento entre essas atividades e os 
documentos produzidos em cada estágio do processo de engenharia de 
requisitos. 
 
 
Figura 2.2 – Processo de engenharia de requisitos (Fonte: SOMMERVILLE, 2007). 
 
As atividades ilustradas na Figura 2.2 estão relacionadas à 
obtenção, documentação e verificação de requisitos. Na prática, no 
entanto, todos os requisitos de sistema sofrem modificações ao decorrer 
do tempo. As pessoas envolvidas desenvolvem uma compreensão maior 
do que desejam que o software realize, a organização que está 
47
adquirindo o sistema estabelece novas prioridades, ocorrem 
modificações de hardware, de software e no ambiente organizacional do 
sistema. 
 
 
5.1 Estudo de Viabilidade 
Em todos os sistemas novos, o processo de Engenharia de 
Requisitos deve começar com um estudo de viabilidade. Este estudo 
consiste do esboço de requisitos de negócios, do esboço da descrição do 
sistema e da definição de como o sistema apoiará os processos de 
negócios. No relatório devem constar os resultados, recomendações (por 
exemplo, mudanças de escopo, orçamento e prazo) e a conclusão sobre 
a viabilidade dos processos de engenharia de requisitos e de 
desenvolvimento de sistema. A Tabela 2.4 ilustra uma Matriz de Análise 
de Viabilidade. 
 
 
 
 
Viabilidade Peso Alternativa 
1 
Alternativa 
2 
Alternativa 
3 
Operacional 50% 8 7 10 
Técnica 10% 9 7 10 
Cronograma 10% 10 7,5 6 
Econômica 30% 8,5 7 7,5 
 
Final 100% 8,45 7,05 8,85 
Tabela 2.4 – Matriz de Análise de Viabilidade. 
48
 
Em um estudo de viabilidade algumas questões devem ser respondidas: 
● O sistema contribui para os objetivos gerais da organização? 
● O sistema pode ser implementado com tecnologia atual e dentro 
das restrições definidas de custo e prazo? 
● O sistema pode ser integrado a outros sistemas já implantados? 
 
A contribuição do sistema para os objetivos da empresa é uma 
questão crítica, pois se um sistemanão atende aos requisitos 
elicitados, ele não tem valor real para a empresa. Isso pode ocorrer 
devido às falhas na definição de requisitos de negócios para o sistema 
ou por influência de fatores políticos ou organizacionais na aquisição do 
sistema. 
 
Tipos de viabilidade 
● Viabilidade operacional: análise do grau de adequação da solução 
para a organização. 
● Viabilidade técnica: é a avaliação de uma solução técnica 
específica e a disponibilidade dos recursos técnicos. 
● Viabilidade de cronograma: avaliação do cronograma do projeto. 
● Viabilidade econômica: avaliação do custo-benefício de um projeto 
ou solução. 
 
 
5.2 Elicitação e análise de requisitos 
 
Neste subprocesso da Engenharia de Requisitos, os 
desenvolvedores do sistema trabalham com o cliente para definirem 
características globais como o domínio da aplicação, os serviços 
oferecidos pelo sistema, o desempenho esperado, as restrições de 
49
hardware, etc. Além do desenvolvedor e do cliente, outras pessoas 
podem estar envolvidas na elicitação e análise de requisitos: usuários 
que interagem com o sistema, pessoas da organização que podem ser 
afetadas pela instalação, os engenheiros que estão mantendo ou 
desenvolvendo sistemas relacionados, gerentes de negócios, 
especialistas do domínio e representantes de sindicato. 
Um modelo de subprocesso genérico de elicitação e análise de 
requisitos é apresentado na Figura 2.3. Cada organização tem seu 
próprio modelo, de acordo com fatores como nível de conhecimento da 
equipe, padrões utilizados e tipo do sistema que está sendo 
desenvolvido. Trata-se de um subprocesso iterativo com realimentação 
contínua de cada atividade para outras atividades. O entendimento dos 
requisitos pelo analista deve aumentar a cada volta do ciclo. 
 
 
Figura 2.3 – Processo de elicitação e análise de requisitos (Fonte: SOMMERVILLE, 2007). 
50
 
As atividades do subprocesso de elicitação e análise envolvem a 
interação entre desenvolvedor e stakeholders para a coleta de 
requisitos. A interação com os stakeholders ocorre por meio de 
entrevistas e observações, podendo ser utilizados cenários e protótipos 
para auxiliar na obtenção de requisitos. 
 
● Entrevistas: por meio de entrevistas formais ou informais a 
equipe de engenharia de requisitos formula questões para os 
stakeholders sobre o sistema que eles já utilizam e o 
sistema a ser desenvolvido. O entrevistador eficiente possui 
“mente aberta”, não tem ideias preconcebidas sobre os 
requisitos, sabe ouvir os stakeholders, induz os 
entrevistados a iniciar as discussões com uma questão ou 
proposta de requisitos e, quando necessário, sugerem um 
trabalho conjunto em um protótipo do sistema. As 
informações obtidas das entrevistas complementam outras 
informações sobre o sistema obtidas de documentos, 
observações de usuários, etc. Portanto, deve ser utilizada 
juntamente com outras técnicas de elicitação de requisitos. 
● Cenários: As pessoas geralmente consideram mais fácil 
relatar exemplos da vida real do que abstrair descrições. Elas 
podem compreender e criticar um cenário de como 
interagiram com um sistema de software. Os engenheiros de 
requisitos podem usar as informações obtidas nessa 
discussão para elaborar os requisitos reais do sistema. Os 
cenários podem ser úteis para adicionar detalhes a um 
esboço da descrição de requisitos. Eles são descrições de 
exemplos das sessões de interação e abrangem uma ou mais 
interações possíveis. A elicitação baseada em cenários pode 
51
ser realizada informalmente – os engenheiros de requisitos 
trabalham com os stakeholders para identificar cenários e 
captar os detalhes desses cenários. Os cenários podem ser 
escritos na forma de textos, complementados por diagramas, 
imagens de computador, etc. Como alternativa, pode ser 
adotada uma abordagem mais estruturada, como cenários de 
eventos ou casos de uso. 
● Caso de uso: em sua forma mais simples, cujos elementos 
essenciais de sua notação são ilustrados na Figura 2.4, 
identifica o tipo da interação e os agentes envolvidos. O 
conjunto de casos de uso representa as possíveis interações 
compostas pelos requisitos do sistema. Os casos de uso 
podem ser documentados por meio de textos ou de links com 
modelos UML que desenvolvem o cenário mais 
detalhadamente. Os diagramas de sequência (apresentados 
na próxima Unidade), por exemplo, são frequentemente 
utilizados para adicionar informações ao caso de uso. 
Ilustram os agentes envolvidos na interação, os objetos com 
os quais interagem e as operações associadas a esses 
objetos. 
 
 
Figura 2.4 – Exemplo simples de caso de uso (Fonte: SOMMERVILLE, 2007). 
 
● Protótipos: o objetivo da prototipação é permitir que os 
usuários tenham contato direto com a interface. A maioria de 
nós considera difícil pensar de maneira abstrata sobre uma 
52
interface com o usuário para explicar exatamente o que 
queremos. Entretanto, quando são apresentados exemplos, é 
fácil identificar as características de que gostamos ou não. 
 
5.3 Especificação 
 
O documento de requisitos de software (referido também como 
especificação de requisitos ou SRS – Software Requirements 
Specification) é a declaração oficial do que os desenvolvedores de 
sistema devem implementar. Deve incluir os requisitos de usuário de um 
sistema e uma especificação detalhada dos requisitos de sistema. Em 
alguns casos, os requisitos de usuário e de sistema podem estar 
integrados em uma única descrição. Em outros casos, os requisitos de 
usuário estão definidos em uma introdução à especificação dos 
requisitos de sistema. Se houver um grande número de requisitos, os 
requisitos detalhados de sistema podem ser apresentados em um 
documento separado. 
O documento de requisitos pode ser útil a um conjunto 
diversificado de usuários, abrangendo desde a gerência sênior da 
organização até os próprios engenheiros responsáveis pelo 
desenvolvimento do software: 
● Clientes do sistema: especificam e leem os requisitos para 
verificar se eles atendem às suas necessidades. Os clientes 
especificam as mudanças nos requisitos. 
● Gerentes: usam o documento de requisitos para planejar um 
pedido de proposta para o sistema e planejar o processo de 
desenvolvimento de sistema. 
● Engenheiros de sistema: usam os requisitos para compreender 
qual sistema será desenvolvido. 
● Engenheiros de teste de sistema: usam os requisitos para 
53
desenvolver testes de validação para o sistema. 
● Engenheiros de manutenção de sistema: usam os requisitos para 
compreender o sistema e os relacionamentos entre suas partes. 
A diversidade de possíveis usuários significa que o documento de 
requisitos deve conter uma linguagem acessível e expor claramente o 
compromisso entre a comunicação dos requisitos para os clientes, a 
definição dos requisitos em detalhes precisos para os desenvolvedores e 
testadores e as informações sobre uma possível evolução do sistema. 
As informações sobre mudanças previstas podem auxiliar tanto os 
projetistas, que evitariam decisões restritivas de projeto, quanto os 
engenheiros de manutenção de sistema, que adaptariamo sistema a 
novos requisitos. 
O nível de detalhamento a ser incluído em um documento de 
requisitos depende do tipo de sistema que está sendo desenvolvido e 
do processo de desenvolvimento usado. Quando o sistema for 
desenvolvido por um fornecedor externo, as especificações de sistema 
crítico devem ser precisas e muito detalhadas. Quando houver maior 
flexibilidade nos requisitos e quando um processo de desenvolvimento 
interno e iterativo for usado, o documento de requisitos pode ser muito 
menos detalhado e qualquer ambiguidade será resolvida durante o 
desenvolvimento do sistema. 
Uma série de grandes organizações, como o Departamento de 
Defesa dos EUA e o Instituto de Engenheiros Eletricistas e Eletrônicos 
(IEEE), definiram padrões para documentos de requisitos. O padrão mais 
amplamente conhecido é IEEE/ANSI 830-1998, atual ISO/IEC/IEEE 
29148:2011. O padrão IEEE contém um grande número de 
recomendações de como redigir requisitos e evitar problemas. A Figura 
2.5 ilustra um modelo de documento de requisitos no padrão 
ISO/IEC/IEEE 29148:2011. 
 
54
 
Figura 2.5 – Modelo de documento de requisitos (Fonte: ISO/IEC/IEEE 29148:2011). 
 
 
5.4 Validação de requisitos 
O processo de validação objetiva a certificação de que os 
requisitos realmente definem o sistema que o usuário deseja. A 
validação de requisitos se sobrepõe à análise, pois está relacionada à 
descoberta de problemas relacionados aos requisitos. Erros contidos em 
um documento de requisitos, quando descobertos durante o 
desenvolvimento ou depois que o sistema está em operação, podem 
resultar em custos financeiros elevados e retrabalho. O custo de 
correção de um requisito que exige modificações no sistema é muito 
maior quando comparado à correção de erros de projeto e de codificação. 
A razão é que modificação de requisitos geralmente significa 
modificação no projeto e na implementação do sistema, que neste caso 
55
deverá ser testado novamente. 
Conflitos, contradições, erros e omissões nos requisitos devem ser 
apontados pelos revisores e registrados formalmente no relatório de 
revisão. É, portanto, de responsabilidade dos usuários, do adquirente de 
sistema e do desenvolvedor de sistema negociar uma solução para os 
problemas identificados. Algumas técnicas de validação de requisitos 
podem ser usadas em conjunto ou individualmente. 
● Revisões de requisitos: os requisitos são analisados 
sistematicamente por uma equipe de revisores. 
● Prototipação: um modelo executável do sistema é apresentado 
para usuários finais e clientes com o objetivo de verificar se 
atende às suas reais necessidades. 
● Geração de casos de teste: os requisitos devem ser testáveis. Se 
um teste foi difícil ou impossível de ser projetado, isso significa 
geralmente que os requisitos serão difíceis de ser implementados 
e devem ser reconsiderados. 
 
5.5 Gerenciamento de requisitos 
Durante o processo de desenvolvimento de software, o 
entendimento dos stakeholders sobre o sistema muda constantemente. 
Esses requisitos devem então evoluir para refletir essas novas visões do 
problema. Além disso, depois que o sistema estiver instalado, 
inevitavelmente surgirão novos requisitos. Quando os usuários 
adquirirem experiência com o sistema, novas necessidades e prioridades 
serão descobertas. 
O gerenciamento de requisitos é um subprocesso da Engenharia de 
Requisitos que objetiva a compreensão e o controle das mudanças dos 
requisitos de sistema. É preciso manter o acompanhamento dos 
requisitos individuais e manter as conexões entre os requisitos 
dependentes, de modo que seja possível avaliar o impacto das 
56
modificações. É preciso estabelecer um processo formal para fazer 
propostas de mudança e ligá-las aos requisitos de sistema. O processo 
de gerenciamento de requisitos deve ser iniciado no momento em que a 
versão inicial do documento de requisitos estiver disponível. O plano de 
mudanças de requisitos deve ser elaborado durante o subprocesso de 
elicitação de requisitos. 
Durante o estágio de gerenciamento de requisitos, deve haver: 
● Identificação de requisitos: cada requisito deve ser identificado 
unicamente de modo que haja a referência cruzada entre um 
requisito e outros requisitos, permitindo avaliações de 
rastreabilidade. 
● Processo de gerenciamento de mudanças: é o conjunto de 
atividades que avaliam o impacto e custo das mudanças. 
● Políticas de rastreabilidade: definem os relacionamentos entre os 
requisitos em si e entre os requisitos e o projeto de sistema. 
● Apoio de ferramentas case: por envolver o processamento de 
grandes quantidades de informações sobre os requisitos, 
ferramentas como sistemas especializados de gerenciamento de 
requisitos, planilhas ou simples sistemas de banco de dados 
podem ser utilizados. 
As informações de rastreabilidade são frequentemente 
representadas por meio de matrizes de rastreabilidade que relacionam 
os requisitos aos stakeholders, aos outros requisitos ou aos módulos de 
projeto. Em uma matriz de rastreabilidade de requisitos, cada requisito 
é introduzido em uma linha e uma coluna da matriz. As dependências 
entre diferentes requisitos são registradas na célula correspondente à 
intersecção de linha e coluna. A Figura 2.6 mostra uma matriz simples 
de rastreabilidade que registra as dependências entre os requisitos. A 
letra “D” na intersecção linha / coluna ilustra que o registro da linha 
depende do requisito identificado na coluna; a letra “R” significa que 
57
existe algum outro relacionamento mais fraco entre os requisitos. 
 
 
Figura 2.6 – Matriz de rastreabilidade (Fonte: SOMMERVILLE, 2007). 
 
As matrizes de rastreabilidade podem ser usadas quando um 
pequeno número de requisitos deve ser gerenciado. Em sistemas de 
grande porte com muitos requisitos o gerenciamento é difícil e a 
manutenção é dispendiosa. Para esses sistemas, as informações de 
rastreabilidade devem ser registradas em um banco de dados de 
requisitos, no qual cada requisito é explicitamente conectado a outros 
requisitos relacionados. O uso de ferramentas CASE neste caso é 
necessário para o armazenamento de requisitos, para o gerenciamento 
de mudanças e para o gerenciamento de rastreabilidade. 
Se uma mudança de requisitos do sistema é solicitada com 
urgência, existe sempre uma propensão a realizar a mudança no sistema 
e, depois, retrospectivamente, modificar o documento de requisitos. 
Isso geralmente leva à defasagem entre o documento de requisitos e a 
implementação do sistema. Uma vez realizadas as modificações no 
sistema, os ajustes necessários do documento de requisitos podem ser 
esquecidos ou realizados de maneira não consistente com as mudanças 
do sistema. 
O gerenciamento de mudanças de requisitos deve ser aplicado a 
todas as mudanças propostas aos requisitos. Embora o processo formal 
58
de gerenciamento de mudanças seja dispendioso, ele pode ser 
vantajoso, uma vez que todas as propostas de mudança são tratadas 
consistentemente e as mudanças no documento de requisitos são feitas 
de maneira controlada. 
 
6. Captação e administração de requisitosutilizando o 
RUP 
 
Em cada projeto de software orientado ao RUP podemos visualizar 
uma estrutura comum relacionada a requisitos. Primeiramente, são 
coletadas as solicitações dos stakeholders, que abrangem todas as 
solicitações obtidas dos usuários finais, clientes e outros interessados 
do projeto. 
O conjunto de solicitações é utilizado para desenvolver um 
documento de visão que contém o conjunto fundamental de 
necessidades do stakeholder e dos usuários e as características de alto 
nível do sistema. Estas características de sistema expressam os serviços 
que devem ser entregues pelo sistema para cumprir as necessidades do 
stakeholder. As informações incluídas no documento de visão devem 
estar baseadas na análise de custo da implementação e na previsão de 
retorno do investimento. 
Antes de iniciada a codificação, é necessário traduzir as 
informações do documento de visão em requisitos detalhados de 
software de modo que permita projetar e construir um sistema atual e 
identificar casos de teste para testar o comportamento de sistema. 
Estes requisitos detalhados são captados no modelo de caso de uso. 
No detalhamento dos requisitos é necessário lembrar as 
necessidades originais do stakeholder e das características de sistema, 
para ter certeza de estar interpretando corretamente a visão. Durante o 
detalhamento dos requisitos serão encontradas falhas e inconsistências, 
59
que exigirão novas reuniões com os stakeholders para esclarecimentos, 
intercâmbios e atualização das necessidades. Assim, o fluxo de 
requisitos se repete de modo iterativo até que todos os requisitos 
estejam definidos, a avaliação finalizada e as mudanças inevitáveis, 
administradas. 
 
6.1 Atividades 
A Figura 2.7 resume as atividades do RUP que constituem o fluxo 
de requisitos: 
 
Figura 2.7 – Fluxo de requisitos (Fonte: www.funpar.ufpr.br). 
 
● Analisar o problema: deve haver um acordo entre as partes na 
definição do problema que tem de ser resolvido. Faz-se necessário 
identificar os interessados, os limites e restrições do sistema. 
● Compreender as necessidades dos envolvidos: utilizar várias 
60
técnicas de extração, reunir as Solicitações dos Principais 
Envolvidos e obter uma compreensão clara das reais necessidades 
dos usuários e interessados do sistema. 
● Definir o Sistema: deve-se estabelecer um conjunto de 
características de sistema a ser considerado para entrega baseado 
na contribuição dos interessados. Faz-se necessário determinar os 
critérios que serão utilizados e definir junto aos interessados 
expectativas realistas sobre como as funcionalidades serão 
entregues. Os atores e casos de uso necessários para cada 
característica fundamental devem ser identificados. 
● Gerenciar o escopo do sistema: coletar informações importantes 
de interessados no projeto e mantê-las como atributos de 
requisitos, para serem usadas na priorização e alcance do conjunto 
de requisitos acordados. Assim, o sistema pode ser entregue 
dentro do prazo com orçamento que satisfaça as expectativas dos 
clientes. 
● Refinar a definição do sistema: utilizar um modelo de caso de uso, 
detalhar os requisitos do sistema para fazer um acordo com o 
cliente sobre a funcionalidade do sistema e captar outros 
requisitos importantes, como requisitos não funcionais, restrições 
de projeto, etc. 
● Gerenciar requisitos mutáveis: utilizar atributos de requisito e 
rastreamento para avaliar o impacto das mudanças de requisitos; 
usar uma autoridade central de controle para controlar mudanças 
nos requisitos; manter acordo com o cliente e estabelecer as 
expectativas realistas do que será entregue. 
 
 
6.2 Papéis 
Como tudo isso é traduzido concretamente em termos de 
61
trabalhadores, artefatos e atividades? A Figura 2.8 ilustra os papéis 
principais e artefatos no fluxo de requisitos. 
 
 
Figura 2.8 – Papéis e artefatos no fluxo de requisitos (Fonte: www.funpar.ufpr.br). 
 
● Analista de Sistemas: conduz e coordena a extração de requisitos 
e a modelagem do caso de uso delineando a funcionalidade do 
sistema e delimitando o sistema. Ao trabalhar com os 
interessados do projeto, o Analista de Sistemas analisa o 
problema e busca entender junto aos interessados o que eles 
precisam, além de definir o que o sistema deve fazer e talvez o 
que não deve fazer – também identificando requisitos não 
funcionais. O Analista de Sistemas pode então desenvolver uma 
Visão para o projeto. Esta visão expressa como um conjunto de 
características descritas a partir da perspectiva do interessado, é a 
base para o desenvolvimento de um esboço do modelo de caso de 
uso. 
● Especificador de Requisitos: detalha toda ou parte da 
funcionalidade do sistema descrevendo os aspectos dos requisitos 
de um ou vários casos de uso. A ele é atribuído um conjunto de 
casos de uso e requisitos suplementares que devem ser 
62
detalhados e que consistirão em outros artefatos do fluxo de 
requisitos. O Especificador de Requisitos não trabalha isolado e 
deve comunicar-se frequentemente com outros indivíduos 
especificadores de caso de uso e com o Analista de Sistemas. 
● Projetista de Interface do Usuário: é responsável por selecionar o 
conjunto de casos de uso para demonstrar as interações 
essenciais dos usuários com o sistema. Trabalhando com os 
usuários, o Projetista de Interface do Usuário desenvolve 
Storyboards de Casos de Uso e protótipos de interface do usuário 
para ajudar a determinar os requisitos finais do sistema. O 
Projetista de Interface trabalha em paralelo com o Especificador de 
Requisitos para projetar a interface do usuário do sistema. Na 
maioria dos casos há uma interação sinérgica entre eles. 
 
6.3 Artefatos 
 
● Plano de Gerenciamento de Requisitos: descreve a documentação 
de requisitos, os tipos de requisitos e seus respectivos atributos 
de requisitos, especificando as informações e os mecanismos de 
controle que devem ser coletados e usados para avaliar, relatar e 
controlar mudanças nos requisitos do produto. 
● Solicitações dos Principais Envolvidos: este artefato contém 
qualquer tipo de solicitação dos principais envolvidos (cliente, 
usuário final, pessoal de marketing etc.) em relação ao sistema 
que será desenvolvido. Ele também pode conter referências a 
qualquer tipo de fonte externa com a qual o sistema deve estar de 
acordo. 
● Glossário: define uma terminologia comum usada constantemente 
ao longo do projeto ou da organização. 
● Documento de Visão: fornece uma visão completa para o sistema 
63
de software desenvolvido e proporciona a base contratual para 
requisitos técnicos mais detalhados. O Documento de Visão é 
escrito sob a perspectiva do cliente, focando nas características 
essenciais do sistema e em níveis aceitáveis de qualidade. A visão 
deve incluir uma descrição do que será incluído, bem como as 
características que foram consideradas mas não incluídas. Também 
devem especificar as capacidades operacionais (volumes, tempo 
de resposta, precisões), os perfis do usuário e as interfaces 
interoperacionais com as entidades fora do limite do sistema,onde aplicável. 
● Modelo de Caso de Uso: deve servir como um meio de 
comunicação e como um contrato entre o cliente, os usuários e os 
desenvolvedores do sistema, na funcionalidade do sistema que 
permite: a) aos clientes e usuários validar que o sistema se 
tornará o que eles esperaram, e b) aos desenvolvedores do 
sistema construir o que é esperado. O Modelo de Caso de Uso 
consiste em Casos de Uso e Atores. Cada Modelo de Caso de Uso 
é descrito em detalhes, mostrando passo a passo como o sistema 
interage com os atores e o que ele faz no caso de uso. O mesmo 
Modelo de Caso de Uso é usado na análise do sistema, no projeto, 
na implementação e no teste. 
● Especificação Suplementar: é um complemento importante ao 
Modelo de Caso de Uso, porque juntos eles captam todos os 
requisitos de software (funcional e não funcional) que precisam ser 
descritas para servirem como especificação completa de requisitos 
de software. 
● Atributos de Requisitos: este artefato contém um repositório de 
dependências, atributos e requisitos de projeto para controlar a 
partir de uma perspectiva de gerenciamento de requisitos. 
● Caso de Uso: define um conjunto de instâncias de casos de uso, 
64
no qual cada instância é uma sequência de ações realizada por um 
sistema que produz um resultado de valor observável para 
determinado ator. 
● Especificação de Requisitos de Software (SRS): captura todos os 
requisitos de software para o sistema ou para uma parte do 
sistema. Quando uma modelagem de casos de uso é utilizada, 
este artefato consiste em um pacote contendo casos de uso do 
modelo de casos de uso e Especificações Suplementares 
aplicáveis. 
● Pacote de casos de uso: é um conjunto de casos de uso, atores, 
relacionamentos, diagramas e outros pacotes. Ele é usado para 
estruturar o modelo de casos de uso, dividindo-o em partes 
menores. 
● Protótipo da Interface do Usuário: pode se manifestar como 
esboços em papel ou figuras, bitmaps feitos com uma ferramenta 
de desenho ou protótipo de executável interativo feito com o apoio 
de uma ferramenta de programação visual. 
● Encenação (ou Storyboard) de caso de uso: é uma descrição 
lógica e conceitual de como um caso de uso é fornecido pela 
interface do usuário, incluindo a interação necessária entre os 
atores e o sistema. 
 
 
 
 
 
 
 
7. Modelagem dos requisitos utilizando diagramas UML 
 
65
A UML é um padrão real para a modelagem orientada a objetos e, 
portanto, os casos de uso e a elicitação baseada em casos de uso tem 
sido cada vez mais usados para elicitação de requisitos. Cenários e 
casos de uso são técnicas eficazes para elicitação de requisitos. É 
essencial descrever os requisitos do usuário em uma linguagem em que 
os não-especialistas possam compreender. 
 
7.1 Diagrama de Casos de Uso 
Os diagramas de Casos de Uso são importantes para visualizar, 
especificar e documentar o comportamento de um elemento do sistema. 
Esses diagramas fazem com que sistemas, subsistemas e classes 
fiquem acessíveis e compreensíveis, por apresentarem uma visão 
externa sobre como esses elementos podem ser utilizados no contexto. 
O diagrama de caso de uso compartilha as mesmas propriedades 
comuns a todos os demais diagramas – um nome e um conteúdo gráfico 
que são uma projeção em um modelo. O que diferencia um diagrama de 
caso de uso dos outros tipos de diagramas são seus componentes e 
relacionamentos. 
 
7.1.1 Componentes 
 
● Caso de Uso: é uma descrição de um conjunto de sequências de 
ações que um sistema executa para produzir um resultado de valor 
observável por um ator. É representado graficamente por uma 
elipse, conforme ilustrado na Figura 2.9. Todo caso de uso deve 
ter um nome que o diferencie dos demais casos de uso. Pode ter 
um nome simples (nome sozinho) ou um nome de caminho (com 
nome do caso de uso e do pacote onde se encontra). Tipicamente 
um caso de uso é definido exibindo o nome simples. 
 
66
 
 
Figura 2.9 – Representação de um caso de uso com nome simples e nome de 
caminho (Fonte: BOOCH et. al.,2000). 
 
● Ator: representa um conjunto de papéis que os usuários 
desempenham quando interagem com esses casos de uso. 
Geralmente representa o papel que um ser humano, um dispositivo 
de hardware ou outro sistema desempenha com o sistema. Os 
atores são representados como figuras esquematizadas, conforme 
ilustrado na Figura 2.10. 
 
Figura 2.10 – Representação de atores (Fonte: BOOCH at. al., 2000). 
 
7.1.2 Organização (Relacionamentos) 
 
● Associação: Conecta atores aos casos de uso. A associação entre 
67
o ator e um caso de uso indica a comunicação entre eles, cada um 
com a possibilidade de enviar e receber mensagens. A Figura 2.11 
ilustra o contexto de um sistema com associações. 
 
 
Figura 2.11 – Modelagem do contexto de um sistema (Fonte: BOOCH at. al.,2000). 
 
● Generalização: é semelhante à generalização existente entre as 
classes. Significa que o caso de uso filho herda o comportamento e 
o significado do caso de uso pai; o filho deverá acrescentar ou 
sobrescrever o comportamento de seu pai e o filho poderá ser 
substituído em qualquer local no qual o pai apareça (ambos 
poderão ser instâncias concretas). A generalização é representada 
como uma linha cheia direcionada com uma seta aberta, 
exatamente como na generalização entre classes. 
● Inclusão: o caso de uso incorpora explicitamente o comportamento 
de outro caso de uso em uma localização especificada na base. O 
caso de uso incluído nunca permanece isolado, mas é apenas 
instanciado como parte de alguma base maior que o inclui. O 
68
relacionamento de inclusão evita a descrição do mesmo fluxo de 
evento várias vezes, incluindo o comportamento comum em um 
caso de uso próprio (o caso de uso incluído em um caso de uso 
básico). É um exemplo de delegação e pode ser representado 
como uma dependência, estereotipada como include. 
● Extensão: um relacionamento estendido entre casos de uso 
significa que o caso de uso incorpora implicitamente o 
comportamento de um outro caso de uso em um local especificado 
indiretamente pelo caso de uso estendido. O caso de uso base 
poderá permanecer isolado, mas, sob certas condições, seu 
comportamento poderá ser estendido pelo comportamento de um 
outro caso de uso. O relacionamento estendido é utilizado para a 
modelagem da parte de um caso de uso que o usuário poderá 
considerar como um comportamento opcional do sistema. O 
relacionamento estendido é representado como uma dependência, 
estereotipada como extend. A Figura 2.12 ilustra casos de uso com 
relacionamentos de Generalização, Inclusão e Extensão. 
 
Figura 2.12 – Exemplos de Generalização, Inclusão e Extensão (Fonte: BOOCH et. 
al., 2000). 
 
69
7.1.3 Modelagem do comportamento de um elemento 
A modelagem do comportamento de um elemento será a situação 
mais comum em que os casos serão aplicados, seja esse elemento o 
sistema como um todo, um subsistema ou uma classe. Ao fazer a 
modelagem do comportamento desses elementos, é importante que 
vocêfocalize o que o elemento faz e não como faz. 
Para fazer a modelagem do comportamento de um elemento: 
● Identifique os atores que interagem com o elemento. Candidatos a 
atores incluem grupos que exigem determinado comportamento 
para a realização de suas tarefas ou que são necessários direta ou 
indiretamente para a realização de funções do elemento. 
● Organize os atores, identificando papeis gerais e mais 
especializados. 
● Para cada ator, considere as formas primárias em que o ator 
interage com o elemento. Considere, também, as interações que 
alteram o estado do elemento ou seu ambiente ou que envolvam 
uma resposta a algum evento. 
● Considere, também, as formas excepcionais em que cada ator 
interage com o elemento. 
● Organize esses comportamentos como casos de uso, aplicando 
relacionamentos de inclusão e estendidos com a finalidade de 
fazer a fatoração do comportamento comum e diferenciar o 
comportamento excepcional. 
Por exemplo, um sistema de vendas e varejo interage com os 
clientes que incluem e acompanham os pedidos. Por sua vez, o sistema 
remeterá os pedidos e cobrará dos clientes. Conforme mostra a Figura 
2.13, é possível fazer a modelagem do comportamento de um sistema 
como esse, declarando-os esses comportamentos como casos de uso 
(Place order, Track order, Ship order e Bill customer). Tanto o 
comportamento comum (Validade customer) quanto as variantes (Ship 
70
partial order) podem ser identificados. Para cada um desses casos de 
uso podemos incluir uma especificação do comportamento, por meio de 
um texto, máquina de estados ou interações. 
 
Figura 2.13 - Modelagem do comportamento de um elemento (Fonte: BOOCH et. 
al., 2000). 
 
7.1.4 Recomendações para diagramação de Casos de Uso 
Ao fazer a modelagem de casos de uso na UML, todos os casos 
deverão representar algum comportamento distinto e identificável do 
sistema ou de parte do sistema. Um caso de uso bem estruturado: 
● Nomeia um comportamento do sistema ou de parte do sistema, 
que seja único, identificável e razoavelmente atômico. 
● Faz a identificação do comportamento comum, obtendo esse 
comportamento a partir de outros casos de uso que ele inclui. 
● Faz a identificação das variantes, aplicando esse comportamento a 
outros casos de uso que o estendem. 
● Descreve o fluxo de eventos de maneira suficientemente clara para 
que alguém de fora seja capaz de compreendê-lo com facilidade. 
71
● É descrito por um conjunto mínimo de cenários que especificam a 
semântica e variante do caso de uso. 
 
Ao definir um caso de uso na UML: 
● Mostre somente os casos de uso que são importantes para a 
compreensão do comportamento do sistema ou de parte em 
seu contexto. 
● Mostre somente os atores que estão relacionados com esses 
casos de uso. 
À medida em que os modelos crescem, perceberemos que muitos 
casos de uso tendem a se reunir em grupos relacionados conceitual e 
semanticamente. Na UML, podemos utilizar os pacotes para fazer a 
modelagem desses agrupamentos. O diagrama de pacotes será 
comentado a seguir. 
 
7.2 Diagrama de Pacotes 
Os pacotes são utilizados para organizar os elementos de 
modelagem em conjuntos maiores que possam ser manipulados como 
grupos. É possível controlar a visibilidade desses elementos, permitindo 
que alguns itens fiquem visíveis fora do pacote, enquanto outros ficarão 
ocultos. Os pacotes também podem ser empregados para apresentar 
diferentes visões da arquitetura do sistema. Eles podem agrupar 
qualquer elemento: classes, outros pacotes, casos de uso, etc. 
Os pacotes bem estruturados agrupam elementos que estão 
próximos semanticamente e que tendem a se modificar em conjunto. 
Portanto, os pacotes bem estruturados são fracamente acoplados em 
forte coesão, com acesso altamente controlado ao conteúdo do pacote. 
A UML oferece uma representação gráfica para os pacotes com 
uma notação que permite a visualização de grupos de elementos que 
podem se manipulados como um todo e de uma forma que permite 
72
controlar a respectiva visibilidade e o acesso aos elementos individuais. 
O nome do pacote pode ser colocado na “orelha” da pasta se o pacote 
mostrar membros internos ou, se não for o caso, na pasta principal, 
conforme ilustrado na Figura 2.14. 
 
 
Figura 2.14 – Visibilidade do diagrama de pacotes (Fonte: BOOCH et. al., 2000). 
 
É comum mostrar a dependência (acoplamento) entre pacotes, de 
modo que os desenvolvedores possam ver o acoplamento em larga 
escala do sistema. A linha de dependência UML é utilizada para isso, 
uma linha tracejada em que a seta aponta para o pacote dependente, 
conforme ilustrado na Figura 2.15. 
 
 
Figura 2.15 – Generalização entre Pacotes (Fonte: BOOCH et. al., 2000). 
 
73
 
7.2.1 Recomendações para diagramação de Pacotes 
Ao fazer a modelagem de pacotes na UML, lembre-se de que eles 
existem somente para ajudar a organizar os elementos de seu modelo. 
Caso haja abstrações manifestadas como objetos no sistema real, não 
utilize pacotes. Em seu lugar, use elementos de modelagem como as 
classes ou componentes. Um pacote bem estruturado: 
● É coeso, fornecendo uma clara fronteira para um conjunto de 
elementos relacionados. 
● É fracamente acoplado, exportando somente os elementos que 
outros pacotes realmente precisam enxergar e importando apenas 
os elementos necessários e suficientes para os elementos do 
pacote fazerem suas tarefas. 
● Não contém muitos aninhamentos, por haver limites para a 
compreensão humana de estruturas com muitos aninhamentos. 
● Tem um conjunto equilibrado de conteúdo; em relação uns com os 
outros em um sistema, os pacotes não deverão ser muito grandes 
(divida-os, se necessário) nem muito pequenos (combine 
elementos que sejam manipulados como um grupo). 
Ao definir um pacote na UML: 
● Use a forma simples de ícone de pacote, a menos que seja 
necessário revelar o conteúdo desse pacote explicitamente. 
● Ao revelar o conteúdo do pacote, mostre somente os elementos 
necessários para a compreensão do significado do pacote no 
contexto. 
● Principalmente se estiver usando pacotes para fazer a modelagem 
de itens sob um gerenciamento de configuração, revele os valores 
de etiquetas associados com a versão. 
 
7.3 Diagrama de atividades 
74
Os diagramas de atividades são empregados para fazer a 
modelagem de aspectos dinâmicos do sistema. Na maior parte, isso 
envolve a modelagem das etapas sequenciais (e possivelmente 
concorrentes) em um processo computacional. Com um diagrama de 
atividade, podemos também fazer a modelagem do fluxo de um objeto, 
à medida que ele passa de um estado para outro em pontos diferentes 
do fluxo de controle. Os diagramas de atividades poderão permanecer 
isolados para visualizar, especificar, construir e documentar a dinâmica 
de uma sociedade de objetos, ou poderão ser utilizados para fazer a 
modelagem do fluxo de controle de uma operação. Enquanto os 
diagramas de interação (de sequências e colaboração) dão ênfase ao 
fluxo de controle de um objeto para outro, os diagramas de atividades 
dão ênfase ao fluxo de controle de uma atividade para outra. Uma 
atividade é uma execução não atômica em andamentoem uma máquina 
de estados. As atividades acabam resultando em alguma ação, formada 
pelas computações atômicas executáveis que resultam em uma mudança 
de estado do sistema ou o retorno de um valor. 
Um diagrama de atividades é essencialmente um fluxograma que 
dá ênfase à atividade que ocorre ao longo do tempo, conforme ilustrado 
na Figura 2.16. Podemos considerar um diagrama de atividade com um 
diagrama de interação cujo interior é revelado. Um diagrama de 
interação observa os objetos que passam mensagens; um diagrama de 
atividades observa as operações passadas entre os objetos. A diferença 
semântica é sutil, mas resulta em formas distintas de se observar o 
mundo. 
 
75
 
Figura 2.16 – Diagrama de Atividades (Fonte: BOOCH et. al., 2000). 
 
Os diagramas de atividades costumam conter: 
● Estados de atividade e estados de ação 
● Transições 
● Objetos 
 
7.3.1 Recomendações para diagramação de atividades. Um 
diagrama de atividade bem estruturado: 
● Está voltado para comunicar um aspecto da dinâmica do sistema. 
● Contém somente os elementos essenciais para a compreensão 
desse aspecto. 
● Oferece detalhes consistentes com seu nível de abstração; você 
expõe somente os adornos essenciais à compreensão. 
● Não é tão minimalista que informe mal o leitor sobre a semântica 
importante. 
 
76
Ao definir um diagrama de atividade: 
● Dê-lhe um nome capaz de comunicar seu propósito. 
● Inicie com a modelagem do fluxo primário. Inclua ramificações, 
concorrências e fluxos de objetos como considerações secundárias, 
possivelmente em diagramas separados. 
● Distribua seus elementos de forma a minimizar o cruzamento de 
linhas. 
● Use notas e cores como indicações visuais com a finalidade de 
chamar a atenção para as características importantes de seu 
diagrama. 
É útil diferenciar os requisitos funcionais dos não-funcionais no 
documento de requisitos. Na prática, isso é difícil de ser feito. Se os 
requisitos não-funcionais forem definidos separadamente dos funcionais, 
às vezes será difícil identificar o relacionamento entre eles. Se eles 
forem definidos com os requisitos funcionais, pode haver dificuldade em 
separar as considerações funcionais e as não-funcionais e identificar os 
requisitos relacionados ao sistema como um todo. 
 
8. Ferramentas para modelagem de requisitos 
As ferramentas de engenharia de requisitos apoiam a obtenção, 
modelagem, gestão e validação de requisitos. Em geral, essas 
ferramentas constroem uma variedade de modelos gráficos (UML, por 
exemplo) que representam os aspectos informacional, funcional e 
comportamental de um sistema. Esses modelos formam a base para 
todas as outras atividades do processo de software. 
Uma lista abrangente de ferramentas de engenharia de requisitos 
pode ser encontrada em 
http://www.systemguid.com/guildsite/robs/retools.html. Outras 
ferramentas são: 
● EasyRM: constrói um dicionário / glossário específico para o 
77
projeto contendo descrições e atributos detalhados dos requisitos. 
● OnYourMarkPro: constrói um banco de dados de requisitos, 
estabelece relacionamentos entre os requisitos e permite aos 
usuários analisar o relacionamento entre os requisitos e permite 
aos usuários analisar o relacionamento entre requisitos e 
cronogramas / custos. 
● Rational RequisitePro: permite aos usuários construir um banco de 
dados de requisitos, representar os relacionamentos entre os 
requisitos e organizar, priorizar e rastrear requisitos. 
● RTM: é uma ferramenta de descrição e rastreamento de requisitos 
que apóia também certos aspectos do controle de modificações e 
gestão de testes. 
 
Deve-se notar que muitas tarefas de gestão de requisitos podem 
ser realizadas usando uma simples planilha ou um pequeno sistema de 
banco de dados. 
Em se tratando de Casos de Uso, as ferramentas objetivam 
auxiliar no desenvolvimento de casos de uso fornecendo gabaritos 
automáticos e mecanismos para avaliar a clareza e a consistência. 
Em geral, as ferramentas de casos de uso fornecem gabaritos de 
preenchimento de espaços para criar casos de uso efetivos. A maioria 
das funcionalidades do caso de uso está embutida em um conjunto de 
funções mais amplas de engenharia de requisitos. Algumas das 
ferramentas representativas para o desenvolvimento de casos de uso 
são: 
● Clear Requirement Workbench, que fornece suporte automatizado 
para a criação e avaliação de casos de uso bem como uma 
variedade de outras funções de engenharia de requisitos. 
● Objects by design: uma fonte de ferramentas UML 
(www.objectsbydesign.com/tools/umtools_byCompany.html) 
78
http://www.google.com/url?q=http%3A%2F%2Fwww.objectsbydesign.com%2Ftools%2Fumtools_byCompany.html&sa=D&sntz=1&usg=AFQjCNGK_mFWwa96CfZuJYZfxsAk7_sskQ
fornece links abrangentes para ferramentas desse tipo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PARTE B - CONCEITOS COMPLEMENTARES 
79
 
1. Definição de requisitos e Especificação de requisitos 
 
É importante distinguirmos de maneira clara esses dois conceitos, 
os quais muitas vezes podem nos levar a pensar se tratar da mesma 
atividade ou artefato. 
A Definição de Requisitos envolve uma listagem completa de tudo 
que o cliente ou usuário deseja que o sistema realize, com a descrição 
dos requisitos em linguagem natural, clara e compreensível, nos termos 
do cliente. 
A Especificação de Requisitos redefine cada requisito listado na 
Definição de Requisitos em termos técnicos apropriados, por meio de 
linguagem ou notação informal ou formal. Cada requisito listado na 
Definição de Requisitos deve corresponder a um ou mais requisitos da 
Especificação de Requisitos. 
 
2. Problemas comuns na definição de requisitos 
Vários problemas podem surgir quando os requisitos são redigidos 
em um documento com texto em linguagem natural: 
● Falta de clareza: a imprecisão no uso da linguagem pode tornar 
dificultosa tanto a leitura do documento quanto sua compreensão. 
● Confusão de requisitos: requisitos funcionais e não-funcionais, 
metas de sistema e informações de projeto podem não estar 
claramente diferenciados. 
● Fusão de requisitos: pode haver situações em que diferentes 
requisitos são expressos juntos como um único requisito. 
● A compreensão da linguagem natural depende do uso das mesmas 
palavras para os mesmos conceitos pelos leitores e pelos 
elaboradores da especificação. Isso pode resultar em mal 
80
entendidos devido à ambiguidade da linguagem natural. 
● A especificação em linguagem natural é muito flexível, pois é 
possível dizer a mesma coisa de maneiras diferentes. Cabe ao 
leitor descobrir quando os requisitos são os mesmos e quando são 
distintos. 
● Não existe uma maneira fácil de padronizar os requisitos em 
linguagem natural. Pode ser difícil encontrar requisitos 
relacionados e, para descobrir as consequências de uma mudança, 
pode ser necessário verificar todos os requisitos em vez de apenas 
um grupo de requisitos relacionados. 
As especificações de requisitos escritas em linguagem natural são 
propensas a mal entendidos e muitos requisitos não são descobertos 
até as fases finais do processo de software, tornando a solução 
onerosa. 
 
3. Requisitos de usuárioe Requisitos de sistema 
 
Os requisitos de usuário de um sistema devem descrever os 
requisitos funcionais e não funcionais, de modo que eles sejam 
compreensíveis pelos usuários do sistema que não possuem 
conhecimento técnico detalhado. Eles devem especificar apenas o 
comportamento externo do sistema e evitar, sempre que possível, 
características de projeto do sistema. Consequentemente, na elicitação 
de requisitos de usuário não se deve utilizar jargões de software, 
notações estruturadas ou formais ou descrever os requisitos por meio da 
implementação do sistema. Deve-se utilizar a linguagem simples, com 
tabelas e formulários simples e diagramas intuitivos. 
Os requisitos de sistema são versões expandidas dos requisitos 
de usuários usados pelos engenheiros de software como ponto de 
81
partida para o projeto do sistema. Eles adicionam detalhes e explicam 
como os requisitos de usuário devem ser fornecidos pelo sistema. 
Podem ser usados como parte do contrato para a implementação do 
sistema e devem, portanto, ser uma especificação completa e 
consistente de todo o sistema. 
De forma ideal, os requisitos de sistema devem simplesmente 
descrever o comportamento externo do sistema e suas restrições 
operacionais. Eles não devem estar relacionados a como o sistema pode 
ser projetado ou implementado. Entretanto, para especificar 
completamente um sistema de software complexo no nível de 
detalhamento necessário, é impossível, na prática, excluir todas as 
informações de projeto. 
A compreensão tanto das necessidades do cliente ou usuário 
quanto das características do sistema não é, por si só, suficiente para 
comunicar exatamente ao desenvolvedor o que o sistema deve fazer. É 
preciso um nível adicional de especificidade que traduza estas 
necessidades e características em especificações que se possa projetar, 
implementar e testar, determinando a conformidade do sistema. E para 
se alcançar este nível de especificidade é necessário haver negociação 
envolvendo os requisitos funcionais e não funcionais do sistema. 
Apesar da dissociação entre requisitos de usuários e de sistemas 
possuir alguma relevância acadêmica, em termos práticos esta divisão 
não é importante. Neste conteúdo, a abordagem única sem distinção 
envolvendo os dois tipos de requisitos é considerada a mais didática 
para o aluno. 
 
 
 
 
82
 
Referências 
 
SOMMERVILLE, I. Engenharia de software. 8.ed. São Paulo: Pearson 
Addison-Wesley, 2007. 
 
PRESSMAN, R. S. Engenharia de Software. São Paulo: McGraw-Hill, 
2006. 
 
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML – Guia do usuário. Rio 
de Janeiro: Editora Campus, 2000. 
 
KRUCHTEN, P. Introdução ao RUP – Rational Unified Process. Rio de 
Janeiro : Editora Ciência Moderna, 2003. 
 
Rational Unified Process: Disciplinas. Fundação da Universidade Federal 
do Paraná (FUNPAR). Setembro, 2013. Disponível em: 
http://www.funpar.ufpr.br:8080/rup/process/workflow/ovu_core.htm 
 
 
84
http://www.google.com/url?q=http%3A%2F%2Fwww.funpar.ufpr.br%3A8080%2Frup%2Fprocess%2Fworkflow%2Fovu_core.htm&sa=D&sntz=1&usg=AFQjCNGuRVp3UUOJXLAQz82q1cHh-UVsKQ

Mais conteúdos dessa disciplina