Buscar

ANÁLISE DE SISTEMAS ORIENTADOS A OBJETOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 65 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 65 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 65 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sumário 
Sumário 1 
1. INTRODUÇÃO À ANÁLISE DE SISTEMAS 4 
1.1 Introdução 4 
1.2 Sistemas de informação x software 4 
2. PROJETO DE DESENVOLVIMENTO 6 
2.1 Processo de desenvolvimento de software 6 
2.2 Modelos de processos de software 6 
2.2.1 Modelo cascata 6 
2.2.2 Modelo incremental 7 
2.2.3 Modelo espiral 9 
2.2.4 Processo unificado (UP) 9 
2.3 Processo x pessoas 10 
2.4 O paradigma da orientação a objetos 12 
2.5 A linguagem de modelagem unificada 13 
3. ENGENHARIA DE REQUISITOS (ER) 15 
3.2 Introdução à Engenharia de Requisitos 15 
3.2 Classificação de requisitos 16 
3.2.1 Requisitos funcionais (RF) 16 
3.2.2 Requisitos não funcionais (RNF) 16 
3.3 Processo de Engenharia de Requisitos 19 
3.3.1 Elicitação de requisitos 20 
3.3.2 Análise de requisitos 20 
3.3.3 Documentação de requisitos 21 
3.3.4 – Validação de requisitos 22 
3.3.5 - Gerenciamento de requisitos 22 
Controle de versão 23 
Rastreabilidade 23 
4. MODELAGEM DE CASOS DE USO 25 
4.1 Casos de uso e atores 25 
4.2 Descrição de casos de uso 26 
4.3 Diagrama de caso de uso 28 
4.4 Estrutura do diagrama de caso de uso 28 
4.4.2 Relacionamento entre atores 31 
5. MODELAGEM DE PROCESSO DE NEGÓCIO 34 
5.1 Introdução à modelagem de processo de negócio 34 
5.2 O papel do analista de negócio 34 
5.3 Regras de negócio 36 
5.4 Métodos de modelagem de processos de negócio 36 
5.4.1 UML 36 
5.4.1.1 Diagrama de processo 36 
5.4.1.2 Diagrama de atividade 40 
5.4.1.3 Adornos da UML 43 
6. AS VISÕES DA UML 44 
7. VISAO ESTRUTURA ESTÁTICA 45 
7.1 Conceitos fundamentos da orientação a objetos 45 
7.2 Modelo de classe de domínio 47 
7.2.2 Relacionamento entre classes 48 
7.2.2.1 Dependência 48 
7.2.2.2 Associação 48 
7.2.2.3 Agregação 50 
7.2.2.4 Composição 50 
7.2.2.5 Classes associativas 51 
7.2.3 Herança 51 
7.2.4 Diagramas de classes 53 
7.2.5 Diagrama de objetos 54 
8. VISÃO ESTRUTURAL DINÃMICA 56 
8.1 Realização de casos de uso 56 
8.2 Classes de análise 56 
8.2.1 Entidade 57 
8.2.2 Fronteira 57 
8.2.3 Controle 57 
8.3 Comportamento de objetos 57 
8.3.1 Representando métodos 58 
8.3.2 Polimorfismo 58 
8.3.3 Visibilidade de atributos e métodos 59 
8.3.4 Interfaces 59 
8.3.5 Ciclo de vida de objetos 60 
8.4 Comunicação entre objetos 61 
8.4.1 Mensagem 61 
8.4.2 Diagrama de sequência 61 
Mensagens síncronas 63 
Mensagens assíncronas 64 
Autodelegação de mensagens 64 
 
 
 
 
 
 
 
 
1. INTRODUÇÃO À ANÁLISE DE SISTEMAS 
 1.1 Introdução 
 1.2 Sistemas de informação x software 
Sistema de informação é a composição de informações (ou dados), pessoas, 
processos e tecnologias que tem por objetivo apoiar ou melhorar o processo de negócio de 
uma corporação. 
Tem foco na informação gerada em um processo organizacional, de tal forma a 
originar valor a esse processo (BEZERRA, 2006) 
 
 
Rezende (2005) observa que todo sistema que gera e armazena 
informação pode ser considerado um sistema de informação, independentemente se utiliza 
tecnologia ou não. 
• É importante ter em mente quais são os objetivos que o sistema deve atingir, 
pois eles servem de norte para todo o restante. 
• É importante o mapeamento do processo a ser executado. 
o Qual é a sequência de atividades a serem executadas a partir do 
momento que inicia o processo? 
o Quem são as pessoas que executam cada atividade? 
o Qual informação é gerada no decorrer do processo? 
 
Te
cn
o
lo
gi
a 
d
e 
si
st
em
aa
s 
d
e 
in
o
fr
m
aç
ão
Infraestrutura
Servidores
Computadores
Sistemas 
Operacionas
Sistemas de 
Software
 
Na plataforma tecnológica, deveríamos nos atentar a detalhes como e onde essa 
informação seria armazenada e qual o melhor projeto de rede para suportar o tráfego dessa 
informação. 
Pensar também qual parte do processo seria automatizada por um sistema de 
software. 
Um sistema de software também pode ser identificado como o conjunto de vários 
componentes (componentes de software) que, quando executados, produzem um resultado 
previamente desejado. Estes componentes são desenvolvidos utilizando métodos e 
processos que estabelecem uma relação entre a necessidade do cliente e um código 
executado em uma máquina (PRESSMAN, 2006). 
 
 
Engenharia de 
Software
Fornece técnica para especificar, 
projetar, manter e gerir um sistema
Métodos
Enfase no cmo fazer para 
desenvolver um sistema de software
Ferramentas
Fornecem suporpte para processo 
de desenvolvimento de software
Processos
Definem quando e onde fazer e 
quem dever ser o respons=avel
2. PROJETO DE DESENVOLVIMENTO 
2.1 Processo de desenvolvimento de software 
O processo de desenvolvimento de software resume-se a um conjunto de atividades 
(etapas da Engenharia de Software ou paradigmas da Engenharia de Software) 
executadas em uma determinada sequência. 
 
 
 
Cada atividade possui: 
• Pré e pós-condições; 
• Papéis 
• Produtos 
 
2.2 Modelos de processos de software 
 
 2.2.1 Modelo cascata 
 
Também chamado de waterfall ou também citado na literatura como clico de vida 
clássico, o modelo cascata é composto de cinco atividades: 
Análise de requisitos: Elicitação e documentação dos requisitos do sistema 
Projeto: definição dos componentes do software e como eles irão interagir para 
atingir os requisitos elicitados, bem como definição das necessidades e as restrições de 
software e hardware. Nesse momento que a arquitetura do sistema começa a ser definida. 
Codificação: componentes do software são desenvolvidos em linguagem de 
máquina. Nesta fase são feitos os testes unitários, ou também chamados de testes de 
desenvolvimento. 
Testes: validação com o objetivo de encontrar e corrigir possíveis não 
conformidades 
Implantação e manutenção: fase mais longa do ciclo de vida de um software e 
tem início quando o sistema é colocado para uso por parte do usuário final. 
Uma das importantes características que um sistema de software deve possuir é 
ser manutenível, ou seja, capacidade e facilidade de adaptação de um software 
 
No modelo cascata, as atividades são executadas de forma sequencial. Assim, uma 
atividade não é iniciada até que sua predecessora seja completamente finalizada. Esta é a 
fraqueza desse modelo. 
Esse cenário nos expõe duas situações: 
• Alto custo em cada atividade: 
• Alto custo de retrabalho 
 
 2.2.2 Modelo incremental 
 
Também chama de iterativo (no sentido de repetição), é, em sua essência, bem 
parecido com o modelo cascata. 
No modelo iterativo, as atividades e a sequência de execução são exatamente as 
mesmas do modelo cascata. 
A diferença é que no modelo incremental não é necessário que todos os requisitos 
estejam mapeados para se iniciar o ciclo de desenvolvimento. 
Não diminui o custo total do projeto, mas reduz o custo de cata atividade. Possui 
menor tempo de execução 
Apresenta redução do retrabalho. 
A chave para aumentarmos a eficiência na produção de um sistema de software 
utilizando o modelo incremental é: bom planejamento. 
O modelo incremental serviu de base para muitos outros processos largamente 
utilizados e debatidos na literatura, como: prototipagem, modelo espiral e processo unificado 
2.2.2 Prototipagem 
 
Em Engenharia de Software prototipagem é a primeira versão de um sistema de 
software (SOMMERVILLE, 2020). 
Finalidades: 
• Verificar e demonstrar se os requisitos mapeados estão de acordo com a 
necessidade do usuário 
• Validar uma solução de projeto 
É utilizada com o objetivo de antecipar mudanças que possam vir a ser mais custosas 
no desenvolvimento de um sistema de software. 
O modelo de prototipagem possui quatro atividades: 
• planejamento; 
• definição das funcionalidades; 
• construção; 
• validação. 
 
 
 
Protótipo de baixa fidelização – da ênfase na interação com o usuário e na 
estrutura geral do sistema de software, não se preocupando em fazer protótipos que 
produzissem uma imagem real do sistema. (ROSEMBERG, 2008) 
Outro fato interessanteobservado foi a viabilidade econômica do protótipo: barato 
na construção e na alteração. 
Alguns dos bons resultados obtidos nesse projeto: rapidez no processo de 
captação dos requisitos e antecipação dos problemas. 
 
 2.2.3 Modelo espiral 
 
Também conhecido como modelo de Boehm (1988), tem como raiz o modelo 
iterativo incremental e como preocupação central a mitigação de riscos. 
A diferença do modelo espiral para os outros modelos é que cada ciclo completo, ou 
cada iteração, não produz ou implementa um sistema ou 
uma parte do sistema de software. 
O model espiral é composto de quatro fases: 
• Definição dos objetivos 
• Mitigação dos riscos 
• Desenvolvimento do produto 
• Planejamento da próxima fase 
 
 
 
 
 
 2.2.4 Processo unificado (UP) 
 
Tem em seu fundamento a estrutura do modelo iterativo incremental 
Composto por quatro fases: 
 
• Iniciação; definição do escopo do projeto, que é a relação das necessidades 
que serão atendidas no projeto de software e aquelas que não serão. 
• Elaboração: detalhamento do escopo, produzindo o modelo de requisitos 
dos sistemas. Nesta fase, pode-se produzir o plano de projeto, ou plano de 
desenvolvimento, que consiste no mapeamento dos requisitos, as soluções de 
software desenvolvidas para solução de cada requisito e o planejamento dos 
riscos associados para cada solução. 
• Construção: associada ao desenvolvimento do projeto, que consiste em 
projetar, codificar e testar o sistema de software 
• Transição: o sistema de software é entregue para o usuário final, sendo 
comum que existam correções e adaptações a serem feitas. 
Segundo os próprios autores, o UP é baseado em três pilares: 
• Dirigido por caso de uso – descrição detalhada dos requisitos de um 
sistema de software que seguem uma determinada metodologia e um 
determinado padrão 
• Centrado na arquitetura 
• Iterativo e Incremental 
 
 
RUP (Rational Unified Process) é uma variação do UP, um modelo de processos, 
desenvolvido pela Rational, que associou o Modelo de Processo Unificado às melhores 
práticas da engenharia de Software, que são: 
 
• Desenvolva iterativamente 
• Gerencie requisitos 
• Use arquitetura de componentes 
• Modele visualmente 
• Verifique continuamente a qualidade 
• Gerencie mudanças 
 
O modelo proposto pela Rational especifica, de forma sistemática, a sequência que 
as atividades, ou também chamadas de disciplinas, devem ser realizadas dentro de cada fase, 
quem são os responsáveis e quais produtos são resultantes de cada atividade. 
As fases da RUP são as mesmas definidas na UP: Iniciação, elaboração, construção e 
transição. 
RUP utiliza a orientação a objetos como boa prática de Engenharia de Software 
 
2.3 Processo x pessoas 
 
Qualquer modelo de processo de Engenharia de Software se preocupa em definir 
quem produz o que, como e quando: 
Quais as responsabilidades de uma equipe dentro de um projeto? Qual é o papel da 
pessoa dentro do processo de desenvolvimento? 
O RUP, por exemplo, não tem ênfase no individuo, mas sim no papel. O papel é o 
responsável pela execução de uma determinada tarefa, que é responsável por um 
determinado artefato. 
Segundo a empresa Wthereex (s.d) o papel “define o comportamento e as 
responsabilidade de um indivíduo ou de um conjunto de indivíduos que trabalham juntos como 
uma equipe, no contexto de uma organização de engenharia de software”. 
Bezerra (2006) tem ideia semelhante e destaca que o componente humano é fator 
importante no desenvolvimento de um sistema de software, uma vez que ele é composto de 
tarefas “altamente cooperativas” 
 
Papéis desempenhadas em um projeto de desenvolvimento de software: 
Gerente de projetos: 
 
Gere, coordena, acompanha as atividades do projeto e aloca as pessoas para as 
funções determinadas 
 
Analista 
 
Muitas vezes chamado de analista de negócios, é responsável por captar as 
necessidades do negócio e transformá-las em requisitos dos sistemas de software. 
Alguns conhecimentos são necessários, como: conhecimento ou familiaridade com 
o negócio, boa capacidade de comunicação oral e escrita, conhecimento de computação, 
entre outros. 
 
Projetista 
 
Responsável por produzir uma solução computacional para os problemas 
identificados. 
 
Arquiteto de software 
 
Responsável pela elaboração da arquitetura do sistema. Como e quais serão os 
componentes internos do sistema de software e como esses componentes irão se comunicar 
para tender a uma determinada necessidade. 
Geralmente, o arquiteto trabalha em contato com o gerente de projetos, ajudando a 
organizar o desenvolvimento e estimando tamanho e tempo de desenvolvimento, e com o 
corpo técnico, orientando decisões técnicas de desenvolvimento. 
Desenvolvedores 
 
Também chamados de programadores, os desenvolvedores têm a responsabilidade 
de implementar o projeto. Transformar a arquitetura e a solução do projeto em solução 
computacional. 
 
Clientes 
 
O usuário é parte fundamental do processo de desenvolvimento, ele precisa estar 
envolvido e com foco desde o momento do levantamento de requisitos até a validação. 
 
Avaliadores de qualidade 
 
São responsáveis por garantir que o sistema de software atenda a todas as 
necessidades do negócio. 
 
2.4 O paradigma da orientação a objetos 
 
Um paradigma é um conjunto de regras que estabelecem fronteiras entre o que é 
certo e errado, entre o que é verdadeiro e o que é falso, entre o que se deve fazer e o que não 
se deve fazer [...] 
O paradigma da orientação a objetos é uma forma de se desenvolver um sistema de 
software que o enxerga como um conjunto de componentes que interagem entre si para 
resolver um determinado problema. 
Em orientação a objetos, cada objeto também possui características, denominadas 
atributos, e a ação a ser executada por esse objeto, que tem o nome de método 
Na orientação a objetos, dois objetos interagem entre si para executar uma 
determinada tarefa computacional por meio da troca de mensagens. Uma mensagem pode 
ser interpretada como requisição que um objeto faz a outro objeto para que ele execute um 
determinado serviço. 
Bezerra (2006) interpreta a orientação a objetos como uma técnica para modelar 
sistemas que diminui a diferença semântica entre a realidade sendo modelada e os modelos 
construídos. 
Antes do paradigma orientação a objetos, no início da década de 90, o paradigma 
estruturado era amplamente utilizado para modelagem de sistemas, e é baseado em dois 
elementos: informações (dados) e processos. Esse paradigma apresentava um grande 
problema, a atomicidade dos processos. O que levava a sistemas muitos complexos e de 
difícil manutenção. 
 
Vantagens da orientação a objetos: 
• A modelagem próxima ao mundo real gera modelos mais fáceis de entender 
e manter 
• Aumento do reuso de códigos 
• Aumento da manutenibilidade: sistemas mais manuteníveis, mudanças nos 
requisitos não implica necessariamente na alteração do sistema todo. 
 
O paradigma da OO é baseado nos seguinte pilares: 
• Classes; 
• Objetos; 
• Abstração; 
• Encapsulamento; 
• Herança; 
• Polimorfismo; 
 
2.5 A linguagem de modelagem unificada 
 
É uma linguagem para modelar sistemas orientados a objetos 
Por se tratar de uma linguagem, ainda que visual, também é composta por elementos 
(gráficos) que também seguem algumas regras 
• Regra de sintaxe: padronização dos elementos 
• Regra de semântica: significado do elemento dentro de um contexto 
A UML surgiu da necessidade de se desenvolver uma linguagem que fosse padrão 
para modelagem de sistemas orientados a objetos e que fosse interpretável por qualquer um: 
usuários, desenvolvedores, arquiteto e gerentes. 
Segundo os criadores da UML, Booch, Jacobson e Rumbaugh (2006), um sistema de 
software pode ser dividido em cinco visões, sendo que, dependendo da complexidade, nem 
todas precisam ser desenvolvidas: 
 
• Caso de Uso: representa o sistema de umponto de vista externo, como ele 
interage com agentes externos, como usuários ou outros sistemas. 
• Projeto: representa a arquitetura do sistema de software. 
• Implementação: representa os componentes e subsistemas. 
• Implantação: representa a distribuição física do sistema e seus 
componentes e como estes irão se comunicar. 
• Processo: dá ênfase na representação do paralelismo e sincronização dos 
componentes do sistema 
Cada visão é composta por um ou mais diagramas UML. Um diagrama UML é uma 
composição de elementos gráficos com o objetivo de representar alguma perspectiva do 
sistema 
 
3. ENGENHARIA DE REQUISITOS (ER) 
 
3.2 Introdução à Engenharia de Requisitos 
 
A engenharia é um conjunto de métodos, procedimentos e ferramentas (MPF) 
que tem por objetivos resolver um determinado problema. 
Requisitos, segundo Sommerville (2010), são serviços que um sistema deve prestar 
e suas restrições de funcionamento. Eles devem necessariamente refletir as necessidades do 
cliente. 
Engenharia de Requisitos é um conjunto de MPF que tem por objetivo descobrir 
analisar, documentar, verificar e validar esses requisitos (SOMMERVILLE, 2010). 
Sob a ótica da Engenharia de Software, a Engenharia de Requisitos é um ramo da 
Engenharia de Software que envolve, dentro do ciclo de vida de um software, atividades 
relacionadas a requisitos (KOTONYA; SOMMERVILLE, 1998). 
Desafios da ER: 
• A definição de requisitos inconsistentes leva a problemas que se estendem por 
todo ciclo de vida do software. 
• A ER proporciona estimar com maior precisão o tempo e o custo de um projeto. 
Requisitos mal definidos geram um projeto com maior custo e maior tempo de 
desenvolvimento. 
• A ER proporciona melhor gerência das mudanças, comuns em projetos. Em 
contrapartida, falhas nesse processo geram sistemas de software com altos 
custos de manutenção. 
Dentro do projeto as pessoas mais interessadas (Stakeholders) pelos requisitos 
é o cliente e o usuário, com papéis diferentes. 
• O cliente é o contratante do projeto, 
• O usuário é quem vai, efetivamente, usar o sistema, quem detém o maior 
conhecimento do negócio. 
É importante que o cliente e o usuário sejam parte integrante do projeto, que se 
envolvam e se motivem com o projeto 
Além do usuário e do cliente, são considerados interessados pelos requisitos: 
• analista de sistemas, 
• desenvolvedores, 
• arquitetos e 
• gerentes de projeto. 
 
 3.2 Classificação de requisitos 
 
Separar os requisitos a partir do seu nível de descrição: 
 
• Requisitos de usuários: segundo Sommerville (2010, p 83), são declarações 
em linguagem natural com diagramas de quais serviços o sistema deverá 
fornecer a seus usuários e as restrições com as quais ele deve operar. Eles 
dever ser direcionados aos clientes, usuários, gerentes do projeto e 
arquiteto de sistema, pois definem em alto nível as necessidades, o que 
define, entre outras coisas, o escopo do projeto. 
• Requisitos de sistemas: segundo Sommerville, são “descrições mais 
detalhadas das funções, serviços e restrições operacionais do sistema de 
software”. Eles devem ser direcionados aos usuários, arquitetos de sistemas 
e desenvolvedores, pois podem definir uma sequência de implementação, o 
que influencia diretamente na solução dada. 
 
A diferença entre os níveis de descrição está ligada à quantidade e à qualidade da 
informação que cada interessado deve possuir do requisito. Em contrapartida, requisitos não 
devem contemplar informações de gestão do projeto, detalhes da arquitetura, projeto ou 
implementação, bem como informações sobre como o sistema será validado. 
Os requisitos de software devem dar ênfase no comportamento do software 
que será construído e mantido. 
Além da classificação em níveis, os requisitos também são categorizados em: 
requisitos funcionais e requisitos não funcionais. 
 
 3.2.1 Requisitos funcionais (RF) 
 
Descrevem o comportamento esperado de um sistema de software, explicita o 
que o sistema deve fazer e idealmente o que o sistema não deve fazer (SOMMERVILLE, 2010) 
Requisitos funcionais, como o detalhamento da interação entre o sistema de 
software e o seu ambiente/USUÁRIO (PFLEEGER 2004). 
 
 3.2.2 Requisitos não funcionais (RNF) 
 
Descrevem restrições sobre os serviços oferecidos pelo sistema de software 
(SOMMERVILLE, 2010) 
Os requisitos funcionais são insuficientes para descrever o sistema de software, 
pois é necessário descrever outros aspectos: atributos do sistema e atributos do ambiente do 
sistema, normalmente classificados como requisitos não funcionais. 
 
 
 
 
A classificação acima é feita a partir da origem dos requisitos não funcionais, que 
são: 
• Requisitos Organizacionais (DAO – Desenvolvimento, Ambientais, 
Organizacionais): provenientes da organização do cliente, como 
padronização de uma linguagem de desenvolvimento. 
• Requisitos de Produto (CUSPE TReES - Confiabilidade, Usabilidade, 
Proteção, Eficiência: Tempo de resposta e Espaço.) são aqueles que 
restringem o comportamento do sistema de software, com o espaço em disco 
que ele irá ocupar. 
• Requisitos Externos (LER – Legais, Éticos e Reguladores): são requisitos de 
fora da fronteira do sistema de software, como requisitos legais, de 
cumprimento da legislação. 
 
Além da proposta de Sommerville (2010), a norma ISO/IEC 25010:2011 trata da 
classificação e da definição de requisitos não funcionais. 
 
 
 
Fui Confiar E fiz Uso Manual da Porta 
 
Fui - Funcionalidade 
Confiar – Confiabilidade 
E fiz - Eficiência 
Uso - Usabilidade 
Manual da - Manutenibilidade 
Porta – Portabilidade 
 
Os requisitos não funcionais, em geral, são levantados de maneira informal e 
abstrata e logo são colocados em segundo plano no processo de elicitação de requisitos. São, 
em geral, altamente complexos em sua documentação, rastreabilidade e validação. 
O fator de sucesso deve‑se ao fato de que todo requisito não funcional 
especificado deve fornecer subsídios numéricos para que seja validado. 
Enquanto requisitos funcionais são facilmente verificáveis, requisitos não 
funcionais nos parecem, em um primeiro momento, mais abstratos. 
É importante que tenhamos em mente que não importa o tipo do requisito, 
funcional ou não funcional, ele sempre deve ser verificável e validado (BOURQUE; 
FAIRLEY, 2004). 
 
 3.3 Processo de Engenharia de Requisitos 
 
Tem como objetivo obter requisitos definidos, especificados e modelos de 
sistemas a partir de fontes de requisitos (BOURQUE; FAIRLEY, 2004). As fontes de requisitos 
poder ser, segundo Kotonya e Sommerville (1998) 
• Sistemas de informações existentes. 
• Necessidade dos interessados (stakeholders) 
• Padrões da organização. 
• Informações do Domínio 
• Regulamentos (ou legislações) 
 
 
O processo de engenharia de requisitos possui cinco atividades principais: 
 
 
 
 
 
 
 
 
 
. 
 
 3.3.1 Elicitação de requisitos 
 
A qualidade dos requisitos é influenciada diretamente pelas técnicas empregadas 
durante a elicitação de requisitos (HICKEY; DAVIS, 2002). 
A elicitação de requisitos tem como objetivo a descoberta dos requisitos e das 
fronteiras do sistema, que determinam o escopo do projeto. Nesta fase, é fundamental que 
haja uma interação e uma cooperação grande entre todos os interessados – clientes, usuários 
e analista. E uma atividade de grande dependência do fator humano. 
Um dos grandes problemas é a confiança depositada em demasia na figura 
do analista de requisitos. 
Para esclarecer essa situação, Cristel e Kung (1992 apud PRESSMAN, 2006) citam 
alguns dos problemas identificados durante o levantamento: 
✓ Problemas de escopo 
✓ Problemas de entendimento 
✓ Problema de volatilidade 
Técnicas de Elicitação: 
▪ Entrevistas 
▪ Cenários 
▪ Protótipos 
▪ Reuniões facilitadas (brainstorming) 
▪ Análise de documentos 
 
 3.3.2 Análise de requisitos 
 
Com os requisitos identificados, é necessário explicitar as informaçõesobtidas na 
elicitação. Esse processo auxilia no entendimento dos requisitos elicitados, eliminando 
possíveis ambiguidades e problemas que possam ter passado despercebidos pelo processo 
de elicitação. 
É comum que na fase de análise dos requisitos elicitados, surjam requisitos 
conflitantes, esses conflitos precisam ser resolvidos por um processo de negociação. Uma 
negociação envolve três fases: 
▪ Discussão 
▪ Priorização 
▪ Concordância 
Explicitar os requisitos significa especificar as características operacionais do 
software, descrever suas restrições e suas interações com outros sistemas a fim de 
estabelecer um modelo conceitual do problema (PFLEEGER, 2004) 
Os modelos produzidos na análise de requisitos são importantes, pois (PRESSMAN, 
2006): 
▪ Sistematizam e facilitam a análise de requisitos, pois ajudam o analista e os 
interessados a entenderem a função e o comportamento do software. 
▪ São chaves para a validação da especificação. 
 
 3.3.3 Documentação de requisitos 
 
Tem por objetivo formalizar os requisitos e modelos definidos nas etapas 
anteriores (BOURQUE; FAIRLEY, 2004) 
Mais do que isso, documentos têm a finalidade de comunicar. Nesse ponto, 
devemos estar atentos aos diferentes papéis de interessados em cada tipo de requisito. 
Temos diferentes interessados com necessidades e pontos de vistas diferentes. O 
Swebok (BOURQUE; FAIRLEY, 2004) sugere três documentos de visão: 
▪ Documento de definição de sistema – pode incluir requisitos não funcionais 
e modelos conceituais 
▪ Especificação de requisitos do sistema: - contém requisitos na visão 
sistêmica 
▪ Especificação de requisitos de software: pode ser utilizado como base para 
o desenvolvimento e para as futuras validações. 
 
 
 3.3.4 – Validação de requisitos 
 
Todos os documentos de requisitos estão sujeitos a passarem por procedimentos 
de verificação e validação (BOURQUE; FAIRLEY, 2004). O objetivo do processo de validação 
é assegurar que o trabalho de elicitação, análise e documentação dos requisitos está 
consistente com o domínio do projeto. 
Existe uma série de questionamentos que devem ser feitos nesta fase 
(SOMMERVILLE, 2010): 
→ Os requisitos descritos são consistentes? Ou seja, não entram em conflito? 
→ Os requisitos descritos são completos? Ou seja, definem todas as 
funcionalidades e restrições previstas na elicitação? 
→ Os requisitos são passíveis de serem implementados? 
→ Os requisitos são verificáveis? Ou seja, podemos escrever testes que possam 
verificar que o sistema implementado atende a cada requisito elicitado? 
Requisitos que não podem ser testados não são requisitos, mas sim apenas 
desejos (BOURQUE; FAIRLEY, 2004). 
 
Métodos para validação de requisitos: 
• Revisão de requisitos 
• Prototipação 
• Teste de aceitação 
 
 3.3.5 - Gerenciamento de requisitos 
 
Na engenharia de requisitos, devemos nos acostumar com a ideia de que 
requisitos podem (e quase sempre) mudam. Inevitavelmente, requisitos podem ser 
incompletos e inconsistente, bem como novos requisitos podem surgir. 
A meta da gerência de requisitos é o controle da mudança dos requisitos ao 
longo do processo de engenharia de requisitos (PRESSMAN, 2006). Controlar mudanças 
significa, entre outras coisas, analisar o impacto dessas mudanças. 
Além de controlar a mudança dos requisitos, a gerência de requisitos tem mais 
dois objetivos: 
• Gerenciar o relacionamento entre requisitos. 
• Gerenciar o relacionamento entre requisitos e os documentos produzidos durante 
todo o projeto. 
Uma boa gestão de requisitos passa principalmente pela definição de uma 
política organizacional, que muitas vezes é impactada pelo nível de maturidade dessa 
organização. 
Para definição de uma política organizacional de produção de software com 
qualidade, existem alguns modelos de processo que definem de maneira completa e 
complexa todas as atividades, artefatos a serem produzidos. Dois dos modelos mais 
difundidos atualmente são: CMMI (Capability Maturity Model for Software) e o MPS.BR 
(Melhoria de Processo do Software Brasileiro). 
Duas das atividades fundamentais no processo de gestão de requisitos, citadas 
tantos nos modelos CMMI e MPS.BR quanto por Wiegers (2003), que são: controle de 
versão e rastreabilidade. 
 
 Controle de versão 
 
Um documento de requisitos e os documentos que o compõem são considerados 
a base para o desenvolvimento. Essa base pode ser considerada uma versão. É importante 
que tenhamos sob controle, por qualquer mecanismo que seja, quais documentos fazem 
parte de uma versão base, uma vez que, a partir da mudança de um requisito, é gerada uma 
nova versão. 
 
 Rastreabilidade 
 
Rastreabilidade especifica as dependências de um requisito para com outro e de 
um requisito com cada artefato gerado ao longo do projeto. Quando falamos de artefatos, não 
estamos falando apenas dos gerados durante a engenharia de requisitos, mas sim em todo o 
projeto, como qual requisito está relacionado à qual solução de software (SOMMERVILLE, 
2010). 
Esse controle pode ser feito utilizando uma matriz de rastreabilidade, que tem 
por objetivo cruzar um requisito com outro dependente ou um requisito com um artefato. 
Existem diversas matrizes de requisitos. Entre as mais utilizadas, podemos 
destacar (KOTONYA; SOMMERVILLE, 1998): 
• Matriz que indica o relacionamento requisito x requisito. 
• Matriz que indica o relacionamento requisito x fonte do requisito. 
• Matriz que indica o relacionamento requisito x subsistemas, que descreve 
quais subsistemas atendem àquele requisito. 
• Matriz que indica o relacionamento entre um requisito elicitado e um artefato 
produzido no processo da Engenharia de Software, como um caso de teste ou um 
documento de requisitos 
 
 
4. MODELAGEM DE CASOS DE USO 
 
O objetivo agora é apresentar a modelagem de caso de uso como uma 
abordagem que combina método e ferramenta e que cumpra com os objetivos a serem 
atingidos na fase de análise de requisitos. 
A análise de requisitos tem como objetivo explicitar os requisitos 
elicitados, o que significa especificar as características operacionais do software, 
descrever suas restrições e suas interações com outros sistemas a fim de estabelecer 
um modelo conceitual do problema (PFLEEGER, 2004). 
Lembremos ainda que esse modelo conceitual pode ser interpretado como uma 
“maquete da realidade”, utilizada para representar o domínio do problema. Além disso, 
esses modelos são utilizados na comunicação entre clientes, arquiteto, gerentes de projeto e 
desenvolvedores. 
Segundo Bezerra (2006, p. 45), “modelo de casos de uso é uma representação 
das funcionalidades externamente observáveis do sistema e dos elementos externos ao 
sistema que interagem com ele” 
A definição do professor Eduardo Bezerra, corrobora com a visão dos criadores 
da modelagem de casos de uso, que diz que não existem sistemas de software que existam 
isoladamente (BOOCH; JACOBSON; RUMBAUGH, 2006). Todo sistema de software interage 
com algum agente externo a ele, seja um usuário ou outro sistema, com o objetivo de realizar 
uma determinada ação. 
 
 4.1 Casos de uso e atores 
 
Caso de uso é a descrição de uma sequência de atividades executadas por 
um agente externo ao sistema sem que sejam revelados detalhes do funcionamento 
interno ao sistema, por isso dizemos que o caso de uso mostra a visão comportamental 
externa ao sistema (BEZERRA, 2006). 
Se bem descritos e definidos, casos de uso definem um denominador comum, de 
conhecimento do domínio do problema e das funcionalidades do sistema, que pode ser 
interpretado facilmente por usuários, analistas e desenvolvedores (BOOCH; JACOBSON; 
RUMBAUGH, 2006). 
Atores são os agentes externos ao sistema que executam uma determinada ação 
e que esperam algum resultado, ou seja, interagem diretamente com o sistema a partir dos 
casos de uso. 
Algumas considerações importantes a respeito de atores:▪ Ator é qualquer entidade externa que interage com o sistema: usuários, 
outros sistemas de software ou até mesmo dispositivos de hardware. 
▪ Um ator nunca é um componente interno do sistema, ou mesmo qualquer 
detalhe interno ou componente de implementação dele. 
▪ Um sistema nunca é um ator de si mesmo. 
 
 4.2 Descrição de casos de uso 
 
Muitas são as discussões na literatura a respeito do nível de detalhamento 
necessário para se descrever um caso de uso. Podemos considerar a descrição em linguagem 
natural, desde que sequencial, como uma descrição de caso de uso. 
 
 
 
 
 
Um requisito deve ser completo. Voltando ao nosso exemplo, onde está 
descrito o comportamento do sistema ou do cliente, caso o cliente não possua saldo em conta 
corrente, não informe a senha correta ou ainda não possuam notas disponíveis no terminal? 
Pensando na completude do modelo, Cockburn (2005) propõe um modelo de 
descrição de caso de uso contendo alguns elementos que nos guiam a especificar um caso de 
uso completo. 
 
 
 
 
 4.3 Diagrama de caso de uso 
 
Diagrama de casos de uso é um diagrama da UML que tem por objetivo mostrar, 
a partir de um ponto de vista estático, o conjunto de casos de uso, atores e seus 
relacionamentos (BOOCH; JACOBSON; RUMBAUGH, 2006). 
Visão estática é o termo usado para descrever uma parte do sistema sob o 
ponto de vista estrutural 
 
 4.4 Estrutura do diagrama de caso de uso 
 
4.4.1 Relacionamento entre casos de uso 
 
Podemos utilizar três tipos de relacionamento entre casos de uso: inclusão, 
extensão e herança. 
 
 
Inclusão 
Significa que o comportamento definido no caso de uso de inclusão é 
incorporado ao comportamento do caso de uso base, ou seja, para que este seja executado, 
obrigatoriamente o caso de uso de inclusão também deverá ser executado (BOOCH; 
JACOBSON; RUMBAUGH, 2006) 
 
 
 
Extensão 
 
Significa que o comportamento definido no caso de uso de extensão pode ou 
não ser incorporado ao comportamento do caso de uso base, ou seja, para que este seja 
executado, o caso de uso de extensão pode ou não ser executado (BOOCH; JACOBSON; 
RUMBAUGH, 2006). 
 
 
Por exemplo, na figura a seguir, podemos interpretar que o cliente pode 
solicitar um empréstimo pessoal durante uma operação de saque, o que quer dizer que existe 
uma condição para execução, ou não, do caso de uso “solicitar empréstimo pessoal”. 
 
 
 
Herança 
Significa que o caso de uso filho herda o comportamento e o significado do caso 
de uso pai, acrescentando ou mudando seu comportamento (BOOCH; JACOBSON; 
RUMBAUGH, 2006 
 
 
 
Na figura a seguir, por exemplo, podemos interpretar que a validação de acesso 
por biometria ou por senha são especializações da validação de segurança de acesso. Os 
casos de uso filho: “Validar Segurança Acesso por Senha” e “Validar Segurança Acesso por 
Biometria” possuem exatamente o mesmo comportamento do caso de uso “Validar 
Segurança Acesso” pai, todavia, possuem comportamentos diferentes. 
 
 
 
 
 
 4.4.2 Relacionamento entre atores 
 
 
Diferentemente dos casos de uso, atores possuem apenas um tipo de 
relacionamento: herança. 
Significa que o ator filho herda o comportamento e o significado do ator pai, 
acrescentando ou mudando seu comportamento. Em suma, o ator filho pode executar todos 
os casos de uso do ator pai e mais aqueles que apenas ele executa (BOOCH; JACOBSON; 
RUMBAUGH, 2006) 
 
 
Na figura a seguir, por exemplo, podemos interpretar que o Cliente Pessoa Jurídica 
pode “Efetuar Saque”, “Contratar Empréstimo Pessoal” e “Aumentar Limite de Crédito”. 
Podemos afirmar que o ator Cliente não executa o caso de uso “Aumentar Limite de Crédito”, 
mas somente “Efetuar Saque” e “Contratar Empréstimo Pessoal”. 
 
 
 
 
 
 
5. MODELAGEM DE PROCESSO DE NEGÓCIO 
 5.1 Introdução à modelagem de processo de negócio 
 
Processo de negócio são atividades relacionadas a um determinado 
negócio, que são executadas em uma determinada sequência e que produzem um 
determinado resultado ou objetivo. 
Atividades são executadas por agentes de uma determinada forma, em um 
determinado espaço de tempo, em uma determinada condição de ambiente e com uma 
determinada finalidade. 
É o que podemos encontrar na literatura, como 5W1H, do inglês cinco W´s 
(What, Who, When, Where, Why) e um H (How) (ZACHMAN, 1987). 
 
 
Como vimos, um modelo pode ser considerado a representação de uma 
realidade, que pode ser utilizado de diversas maneiras. No caso do modelo conceitual, 
estamos preocupados em representar o domínio do nosso problema para utilizarmos em 
uma determinada função. 
Existem diversas formas de se representar, de se modelar, a mesma coisa. 
Todavia, cada modelo representa uma visão diferente e é utilizado de formas diferentes. 
Modelagem de um processo de negócio é a representação dos diversos 
aspectos de um processo de negócio sob diferentes pontos de vista e para determinados 
objetivos dentro de um projeto de software. 
 
 5.2 O papel do analista de negócio 
 
Segundo o Babok (INTERNATIONAL INSTITUTE OF BUSINESS ANALISYS, 
2008), o analista de negócio é o profissional responsável por captar as reais necessidades 
dos stakeholders e não apenas seus desejos expressos. Ele estabelece um elo entre o usuário 
do sistema de informação e o sistema de informação propriamente dito, estabelece a ligação 
entre a área de negócio e a área de TI. 
A função de analista de negócio pode ser desempenhada por qualquer pessoa 
ou profissional, independentemente do seu cargo na organização. Existem diversas 
nomenclaturas para o papel de analista de negócio, a depender da organização, como analista 
de processo, analista de processo de negócio ou gerente de processo. 
O analista de negócio atua nas seguintes áreas de conhecimento: 
▪ análise de requisitos; 
▪ análise corporativa; 
▪ avaliação e validação da solução; 
▪ elicitação; 
▪ gestão e comunicação de requisitos; 
▪ planejamento e monitoramento da análise de negócio. 
O Professor Belloquim (2007), aponta cinco competências fundamentais para o 
analista de negócio: 
▪ Profundo conhecimento do negócio. 
▪ Formação ampla. Apenas o conhecimento na área de 
desenvolvimento de sistemas não basta, são necessários 
conhecimentos de finanças, marketing, governança, marcos 
regulatórios, entre outros. 
▪ Habilidades interpessoais e pensamento sistêmico, importante para 
se estabelecer as relações entre as áreas. 
▪ Dominar técnicas necessárias para entender, modelar, analisar e 
documentar processos de negócio e requisitos de sistemas, como a 
UML. 
▪ Compreensão das possibilidades oferecidas pela tecnologia 
disponível, ou seja, não é necessário que o analista seja um especialista 
em uma determinada tecnologia, mas é necessário que tenha uma 
visão geral sobre suas capacidades e limitações. 
 
 5.3 Regras de negócio 
 
Um conjunto de restrições que definem como um processo de negócio de uma 
organização deve ser executado, que, além de representar determinados conhecimentos a 
respeito de um processo, também representam importantes aspectos restritivos na execução 
deste processo (BUSINESS RULES GROUP, 2000), 
Segundo Ross (2003), existem alguns princípios básicos nos quais devemos estar 
atentos quando estamos trabalhando na elicitação das regras de negócio, com ênfase 
principalmente na descrição e detalhamento delas. Alguns desses princípios são: 
▪ Princípio da unicidade: regras de negócio devem ser únicas. 
▪ Devem ser escritas e expressas de forma explícita e com linguagem clara, 
diminuindo possíveis ambiguidades. 
▪ Preferencialmente devem ser especificadas pelas pessoas com maior 
conhecimento. 
▪ Como estão em constantes mudanças, regras de negócio devem ser gerenciáveis. 
Regras de negócio restringem a execução dos casos de uso. 
Regras de negócio são passíveis de mudanças, logo, podem gerar mudanças nos 
casos de uso. Tratamos sobre gestão de mudançae matriz de rastreabilidade de casos de uso. 
Existem diversas maneiras de descrevermos uma regra de negócio, sendo que 
uma das mais utilizadas é a descrição por linguagem natural. Aqui o ponto de preocupação 
está em relação à completude do que queremos descrever, com o objetivo de diminuirmos 
possíveis ambiguidades. 
 5.4 Métodos de modelagem de processos de negócio 
 
A modelagem de processos de negócios mais usada é a abordagem de 
Eriksson e Penker (2000), que tem como base a UML, e a abordagem BPMN (Busines Process 
Modeling Ntoation) 
É importante termos sempre em mente que, independentemente da 
abordagem utilizada, um modelo sempre deve representar uma visão do processo de 
negócio, que sempre deve estar relacionada ao 5W1H. 
 
 5.4.1 UML 
 5.4.1.1 Diagrama de processo 
 
A extensão Eriksson-Penker, em 2000, segue a proposta fundamental da 
UML, ou seja, é composta por elementos gráficos que também seguem regras de sintaxe e 
semântica. 
Os elementos de um processo de negócio a serem representados, segundo 
Eriksson e Penker (2000) são: 
▪ Recursos: representam os objetos de uma organização, como pessoas, 
materiais e informações, que são usados, consumidos refinados ou produzidos 
em um processo de negócio. 
▪ Processos: representam atividades executadas em uma organização. 
▪ Objetivos: representam o resultado que se deseja alcançar, as metas da 
organização. 
▪ Regras: representam as particularidades que restringem algum aspecto do 
negócio e representam conhecimento do negócio. 
▪ Eventos: representam a mudança de estado do negócio. Um evento pode ser 
gerado por um processo, que, inclusive, pode estar fora do negócio e é recebido 
por um ou mais processos 
 
 
 
 
 
 
 
Processo - denota um fluxo de execução da esquerda para a direita, no qual na esquerda 
colocamos as entradas da atividade, um evento, por exemplo, e na direita representamos as 
saídas do processo 
 
 
Objeto de negócio - Em geral, são utilizados estereótipos para diferenciar e explicitar 
melhor os tipos de objeto de negócio, que são: <<objetivo>> quando o objeto representa 
uma meta ou um objetivo do processo; <<Pessoa>> quando o objeto representa uma pessoa; 
e <<recurso>> quando o objeto representa um recurso utilizado pelo processo. 
 
 
 
Objeto de informação - identifica informações produzidas ou consumidas pelo processo. 
Nesta representação podemos ou não adicionar o estereótipo<<informação>>, mas 
obrigatoriamente devemos identificar textualmente o descritivo da informação que estamos 
representando. 
 
 
Dependência - A conexão utilizando linha tracejada e seta indica dependência entre os 
componentes do modelo, sendo que a direção da seta indica a direção da dependência. É 
comum adicionarmos estereótipos às setas para esclarecer a natureza da dependência, como 
mostra o exemplo a seguir. 
 
 
 
 
Podemos ainda representar um ou mais processos dentro do mesmo diagrama. 
Pode-se utilizar um recurso chamado de raias, que normalmente são utilizadas para 
descrever onde as atividades são executadas dentro da organização. 
 
 
Segundo a abordagem de Eriksson e Penker (2000), são três os diagramas 
utilizados na modelagem de processos de negócio: 
- Diagrama de caso de uso. 
- Diagrama de modelo de processo. 
- Diagrama de atividade 
 
 5.4.1.2 Diagrama de atividade 
 
Definido na UML, o diagrama de atividade representa um fluxo de atividades que 
tem como objetivo atingir um determinado objetivo. 
O diagrama de atividade é muito semelhante ao fluxograma tradicional, pois 
ambos representam o fluxo sequencial de atividades de um processo. Todavia, o diagrama de 
atividade, além de representar o fluxo sequencial e suas possíveis ramificações, assim como 
o fluxograma, representa também o paralelismo e a concorrência na execução dessas 
atividades (BOOCH; JACOBSON; RUMBAUGH, 2006). 
Segundo Booch, Jacobson e Rumbaugh (2006), os diagramas de atividades são 
utilizados para representação de aspectos dinâmicos do sistema e comumente são utilizados 
em duas situações: 
✓ Modelagem de fluxo de trabalho: dá ênfase no processo de negócio sob 
o ponto de vista dos atores que interagem com o sistema. 
✓ Modelagem de operação: expõe a visão computacional da 
implementação de um caso de uso 
 
 
O diagrama de atividades compartilha das mesmas características que os outros 
diagramas da UML que vimos até agora, sendo acrescidos apenas os elementos particulares 
a este diagrama. 
 
 
 
 
 
 
 
 
 
 
 
 
 5.4.1.3 Adornos da UML 
 
Adornos são mecanismos ou elementos da linguagem UML utilizados com o único 
intuito de facilitar o entendimento ou ratificar o significado de algo que estamos querendo 
representar. 
Nós já vimos um exemplo de adorno quando tratamos sobre os estereótipos. 
Estereótipos são notações que utilizamos para especificar e diferenciar um tipo 
de objeto ou de ratificar um tipo de relacionamento, como vimos no modelo de processo de 
negócio. 
Além do estereótipo, outro adorno é extremamente utilizado em todos os 
diagramas da UML: a nota. 
Uma nota é uma representação gráfica para comentários, observações ou 
restrições que associamos a um determinado elemento da modelagem. 
 
 
 
 
6. AS VISÕES DA UML 
Segundo a abordagem de Kruchten (1995), um sistema de software pode ser 
organizado em cinco visões e cada visão possui um conjunto de diagramas UML que 
representam aspectos particulares desse sistema. 
 
 
 
 
 
 
 
 
 
 
7. VISAO ESTRUTURA ESTÁTICA 
 
A visão de caso de uso produz modelos que representam as necessidades do negócio, 
que são traduzidas nas funcionalidades de um sistema de software. 
No projeto desse sistema de software, necessitamos tanto especificar as 
funcionalidades, quanto especificar como os problemas serão resolvidos. 
É na fase de projetos, também chamada de fase de design, que definimos como os 
problemas do sistema de software serão resolvidos e como as funcionalidades serão 
implementadas. 
Definir como as funcionalidades serão implementadas em um sistema de software é 
definir os componentes desse sistema, suas responsabilidades e como eles irão interagir 
entre si para resolver um determinado problema. 
Quando estamos falando do paradigma da orientação a objetos, ou seja, de sistemas 
de software orientados a objetos, os componentes do sistema podem ser interpretados como 
objetos e a comunicação entre eles visa à execução de uma determinada tarefa. 
À representação desses objetos e à relação entre eles, dá‑se o nome de visão 
estrutural, que basicamente é a representação da estrutura dos objetos e a relação entre eles 
(BEZERRA, 2006). Também chamado de aspecto estrutural estático, a visão estrutural 
estática representa a estrutura interna do sistema, quais são os objetos, suas 
responsabilidades e relacionamentos. O termo estrutural se dá pela representação da 
estrutura do sistema e o estático se dá pelo fato de que nesse aspecto não temos a 
representação de informações desses objetos dentro de uma linha de tempo de execução 
(BEZERRA, 2006). 
 
7.1 Conceitos fundamentos da orientação a objetos 
 
Podemos dizer que o paradigma da orientação a objetos é uma forma de se 
desenvolver um sistema. Nesse paradigma o software é visto como um conjunto de 
componentes que interagem entre si para resolver um determinado problema, a cada 
componente dá‑se o nome de objeto. 
O principal motivador e diferenciador do paradigma orientado a objetos dos 
demais paradigmas de desenvolvimento de sistemas está na tentativa de aproximar o 
software do mundo real. 
Devemos ter sempre em consideração que um objeto não é simplesmente um 
elemento do mundo real, mas, sim, que é um objeto do mundo real que possui relevância 
para solução de um determinado problema. Assim como no mundo real, um objeto possui 
características e executa determinadas ações, ou possui determinados comportamentos. 
Às característicasde um objeto, damos o nome de atributos, e aos 
comportamentos, de métodos. 
O paradigma da orientação a objetos é baseado nos seguintes pilares: 
• Classes - Podemos definir classe, ou classe de objetos, como um grupo 
de objetos com mesmas propriedades (atributos), comportamento 
(operações), relacionamentos e semântica. Uma classe deve possuir 
responsabilidades bem‑definidas, cada responsabilidade representa 
um contrato ou obrigações dela. 
Classe é uma especificação do objeto 
 
• Encapsulamento – Deixar visível apenas o que é necessário. 
• Abstração - Abstração é um dos principais conceitos aplicados à 
resolução de problemas, que é fundamental para a modelagem da 
estrutura de um sistema de software. Abstração está ligada à nossa 
capacidade de selecionar determinados aspectos do problema e isolar 
o que é importante para algum propósito, ou seja, é dar ênfase àquilo 
que é necessário. 
A melhor forma de se representar a estrutura estática de um sistema orientado a 
objetos é utilizando o modelo de classes, são três os modelos utilizados (BEZERRA, 2006): 
• Modelo de classe de domínio: desenvolvido na fase de análise, o 
modelo de classe de domínio representa os objetos, ou classes, inerentes ao 
domínio do problema que queremos resolver, deixando de lado, nessa visão, 
detalhes tecnológicos da solução do problema. 
• Modelo de classe de especificação: construído na fase de 
desenvolvimento, o modelo de classe de especificação adiciona ao modelo 
de classes de domínio, objetos ou classes específicas para a solução do 
problema sob o aspecto tecnológico, ou seja, é uma extensão do modelo de 
classe de domínio. 
• Modelo de classe de implementação: o modelo de implementação nada 
mais é que a implementação das classes, especificadas no modelo de 
especificação, construídas ou codificadas em alguma linguagem de 
desenvolvimento orientada a objetos, como a linguagem Java ou a 
linguagem C#. 
 
 7.2 Modelo de classe de domínio 
 
O modelo de classes de domínio representa os objetos, ou classes, inerentes ao 
domínio do problema que queremos resolver, deixando de lado, nessa visão, detalhes 
tecnológicos da solução do problema. 
 
7.2.1 Conceitos fundamentais do modelo de domínio 
 
Normalmente identificamos uma classe pelo que ela representa dentro do 
domínio do negócio em que estamos trabalhando, por exemplo: a classe Cliente Pessoa Física 
representa todos os clientes do tipo pessoa física que podem efetuar saques em nosso 
terminal de autoatendimento. 
 
 
 
 
 
 7.2.2 Relacionamento entre classes 
 
Existem cinco tipos de relacionamento entre objetos. Quatro deles, 
estudaremos na sequência. São eles: dependência, associação, agregação e composição. O 
quinto e último tipo, a herança, será debatido separadamente. 
 
 7.2.2.1 Dependência 
 
Segundo Booch, Jacobson e Rumbaugh (2006), dependência é um 
relacionamento em que um objeto depende de informações de outro objeto para a execução 
de um determinado comportamento. 
Na UML, representamos a dependência utilizando uma seta tracejada, como 
mostra a figura a seguir. Ainda na imagem, podemos fazer a leitura de que a Classe A depende 
da Classe B. 
 
 7.2.2.2 Associação 
 
A associação mostra que um objeto pode se relacionar com outro, que existe 
uma conexão entre esses objetos. Existem dois tipos de associação: 
☺ Associação binária: amplamente utilizada, é a associação entre duas 
classes apenas. 
☺ Associação enésima: raramente utilizada, é a associação entre mais de 
duas classes (BOOCH; JACOBSON; RUMBAUGH, 2006). 
 
Na UML, representamos a associação como uma reta, ou uma linha, que 
conecta as classes que se associam de alguma forma. 
 
 
Para quantificar essa associação, utilizamos o conceito de multiplicidade, que 
nada mais é que a representação da quantidade que um objeto pode possuir numa relação 
de associação. 
 
O conceito de multiplicidade é muito semelhante ao conceito de cardinalidade, 
que pode ser observado no MER (Modelo Entidade Relacionamento) quando do 
desenvolvimento do modelo conceitual de um banco de dados. Mas é importante ter em 
mente que é uma semelhança apenas, uma vez que são utilizados em momentos e para 
finalidades distintas no projeto. 
Existe ainda outra variação de associação, chamada associação reflexiva, que é 
quando objetos da mesma classe são associados, sendo que nessa associação esses objetos 
possuem papéis distintos, como mostra a figura a seguir. 
 
 
Ainda a partir da figura, podemos tirar as seguintes conclusões: 
• Um objeto X do tipo Classe A está associado a um objeto Y da mesma 
Classe A. No entanto, ambos desempenham papéis distintos nessa 
associação. 
• Como observa Bezerra (2006), essa representação não significa que um 
objeto se associa com ele mesmo. 
 
 
 7.2.2.3 Agregação 
 
A agregação é utilizada para representar uma conexão entre dois objetos, sendo que 
essa conexão define uma relação todo-parte entre esses objetos, ou seja, um objeto está 
contido no outro (BEZERRA, 2006). 
Na UML, representamos agregação utilizando uma reta saindo da classe que 
representa a parte e se conectando a um losango, também chamado de diamante, na classe 
que representa o todo. 
 
 
 
 7.2.2.4 Composição 
 
A composição tem exatamente o mesmo conceito da agregação, ou seja, estabelece 
uma relação todo-parte entre dois objetos. 
A única diferença entre composição e agregação é que a classe que representa a 
parte da relação, para existir, depende da classe que representa o todo, ou seja, o ciclo de vida 
do objeto da classe parte depende do ciclo de vida do objeto da classe todo. 
 
 
Assim como na associação e na agregação, na composição também temos o 
conceito de multiplicidade, que define a quantidade de objetos compostos na relação 
todo-parte. 
 
 7.2.2.5 Classes associativas 
 
Classes associativas são associações que possuem propriedades de classe 
(BOOCH; JACOBSON; RUMBAUGH, 2006), ou, como observa Bezerra (2006), são classes que, 
em vez de estarem ligadas à outras classes, estão ligadas a uma associação. 
Normalmente utilizamos classes associativas quando desejamos armazenar 
informações importantes de uma associação. 
 
 
 
 
 7.2.3 Herança 
 
Um objeto pode herdar atributos e métodos de outro objeto 
Classe mãe, ou superclasse, possui atributos e métodos que podem ser 
herdados por uma ou mais classes filhas, também chamadas de subclasses. 
Na UML, representamos herança com uma seta direcional, sendo que a ponta 
da seta é cheia 
 
• As subclasses A e B herdam atributos e métodos da superclasse. No 
entanto, podem ter seus próprios atributos e métodos, que não serão 
compartilhados entre elas ou com a superclasse 
 
A figura anterior mostra um exemplo claro de herança simples, no qual uma 
classe filha herda atributos e métodos de apenas uma classe mãe. No caso, as subclasses A e 
B herdam atributos e métodos apenas da superclasse. 
Todavia, existe ainda outro tipo de herança: a herança múltipla. 
Diferentemente da herança simples, na herança múltipla uma classe filha pode herdar 
atributos e métodos de duas ou mais classes mãe. 
 
 
Quando falamos em herança de classes, estamos falando em criar uma 
hierarquia, na qual são comuns os termos “um tipo de”, “generalização” e “especialização”, 
como pode ser notado anteriormente. 
Hierarquia de classes pressupõe uma relação de “um tipo de”, na qual uma 
classe filha é um tipo de uma classe mãe, ou seja, ela possui todas as características da classe 
mãe e mais as suas próprias 
A herança é dos principais conceitos da orientação a objetos, pois fecha com 
um dos principais benefícios do paradigma: o reuso. 
 
 7.2.4 Diagramas de classes 
 
Segundo Booch, Jacobson e Rumbaugh (2006), diagrama de classes é um 
diagrama UML que tem como objetivo representar a estrutura estática das classes de um 
sistema de software. 
Resumindo, um diagrama de classes é a representaçãodas classes, seus 
atributos, métodos e o relacionamento entre essas classes, que debatemos na seção anterior 
No entanto, é importante que saibamos algumas diferenças entre modelo de 
classes e diagrama de classes. 
O modelo de classes é mais abrangente. Nele não representamos apenas as 
classes, mas também devemos nos atentar em descrever detalhadamente o que cada classe 
representa dentro do domínio do problema. 
Assim sendo, podemos considerar que um modelo de classes se utiliza do 
diagrama de classes como ferramenta para representar uma determinada visão ou um 
determinado tipo do modelo de classes. 
A Figura a seguir mostra um exemplo de diagrama de classes e o quadro em 
seguida mostra os conceitos e as interpretações do modelo de classes representado pelo 
diagrama de classe da figura 
 
 
 
 7.2.5 Diagrama de objetos 
 
O objetivo de um diagrama de objetos é representar instâncias de classes, ou 
seja, objetos e suas respectivas ligações ou associações. Podemos dizer, então, que a base do 
diagrama de objetos é o diagrama de classes. 
O diagrama de objetos fornece uma visão dos objetos, suas informações e seus 
relacionamentos em um determinado cenário em determinado momento de execução desse 
cenário. 
A figura a seguir mostra três possíveis representações para objetos, instâncias: 
 
 
A) A classe ClasseA foi identificada no modelo de classes como sendo do domínio e possui 
atributos e métodos. 
B) Representa um objeto de nome Objeto A, que é uma instância da classe ClasseA. Essa é a 
representação mais utilizada de objetos: 
Nome do Objeto + Separador : + Nome da Classe 
C) Representa um objeto não identificado, também chamado de anônimo, que é uma 
instância da classe ClasseA. 
D) Representa um objeto de nome Objeto A cuja classe não foi especificada. Esse tipo de 
representação é pouco utilizado pelo grau de ambiguidade que acaba gerando. Utilizamos 
essa notação normalmente em um determinado momento da modelagem, quando ainda não 
temos a definição pronta da classe e desejamos fazer uma simulação de um determinado 
cenário do qual esse objeto faz parte. 
 
8. VISÃO ESTRUTURAL DINÃMICA 
 
Um sistema de software, dentro do paradigma da orientação a objetos, pode ser 
considerado como uma coleção de objetos que possuem atributos e métodos e que interagem 
entre si para resolver um determinado problema 
A visão estrutural dinâmica, também chamada de visão comportamental, tem 
como objetivo representar a interação dos objetos para atingir um determinado objetivo. 
O objetivo a ser atingido por um conjunto de objetos, como vimos, está 
representado nos casos de uso, nas regras de negócio. Logo, podemos dizer que um conjunto 
de objetos interage entre si para a realização de casos de uso e a forma como essa interação 
se dá é representada pelo modelo estrutural dinâmico. 
 
 8.1 Realização de casos de uso 
 
O fundamental para a realização de casos de uso é saber que essa realização se 
dá a partir da interação entre objetos, todavia, apenas isso não basta. 
Em orientação a objetos, em primeiro lugar precisamos definir as 
responsabilidades de cada objeto. A abordagem para definição de responsabilidades de 
objetos é chamada de método dirigido a responsabilidades, que se baseia em um dos 
conceitos fundamentais da orientação a objetos: encapsulamento do comportamento e 
das características do objeto (WIRFS-BROCK e WILKERSON, 1989). 
 
 8.2 Classes de análise 
 
Como observa Bezerra (2006), a responsabilidade de um objeto é a “obrigação” 
que ele deve cumprir no sistema de software do qual faz parte. Todavia, em alguns casos, o 
objeto não consegue cumprir com a sua “obrigação” de forma autônoma, precisando da 
colaboração de outros objetos. 
Os objetos são divididos e categorizados em três grupos de acordo com seu tipo 
de responsabilidade: classe entidade, classe de controle e classe de fronteira. 
A forma de organizar essas classes, também chamadas de classes de análise, 
vai ao encontro de um dos princípios fundamentais da orientação a objetos: divisão de 
responsabilidades. 
A divisão de responsabilidades é uma das características fundamentais em uma 
boa modelagem de sistemas. Objetos com responsabilidades bem definidas aumentam a sua 
capacidade de reuso. 
No caso, a divisão de responsabilidades pode ser encarada como um padrão de 
projeto com o objetivo de aumentar o reuso e diminuir o acoplamento entre objetos de um 
sistema. Esse conceito é a base para o padrão de projeto MVC (Model-View-Controller) 
 8.2.1 Entidade 
 
Uma entidade, classe de entidade ou ainda objeto de entidade, são objetos mais 
próximos do domínio do mundo real que o sistema representa, são abstrações do mundo real 
que normalmente conseguimos identificar nos casos de uso. 
Esses objetos têm como objetivo principal manter informações referentes ao 
domínio de problema que queremos resolver. 
 
 8.2.2 Fronteira 
 
Classes de fronteira ou objetos de fronteira, como o próprio nome já diz, têm como 
responsabilidade dividir o ambiente interno do sistema e suas interações externas. 
Podemos interpretar interações externas a um sistema como toda e qualquer 
comunicação que um sistema faz com atores do sistema ou ainda alimentar informações de 
outros sistemas. 
 
 8.2.3 Controle 
 
Classes de controle, objetos de controle ou ainda controladores são objetos que 
têm como objetivo realizar o sequenciamento da execução de um caso de uso na estrutura 
de objetos do sistema, fazer a coordenação entre as camadas internas do sistema, 
representadas pelas classes de entidade, com as camadas externas ao sistema, representadas 
pelas classes de fronteira. Alguns autores também chamam esse movimento de orquestração. 
 
 8.3 Comportamento de objetos 
 
Comportamentos, ou métodos de objetos, possuem certos aspectos a serem 
conceituados, como a forma que os representamos e características próprias da orientação a 
objetos 
 
 8.3.1 Representando métodos 
 
Representamos métodos da mesma forma que representamos funções. Um 
método, bem como uma função, possui um nome que o identifique e pode ou não possuir 
parâmetros de entrada e ou saídas com determinados tipos de dados. 
 
 8.3.2 Polimorfismo 
 
É quando um objeto tem um comportamento diferente para a mesma 
É quando uma classe filha herda um método de uma classe mãe, ou seja, o método 
na classe filha possui a mesma assinatura do método da classe mãe, todavia possuem 
implementações diferentes, reagem de maneiras diferentes à mesma ação. 
Polimorfismos nos conferem duas características importantes na orientação a 
objetos (LARMAN, 2007): 
• Facilidade na introdução de novas implementações, possibilitando 
manutenibilidade e extensão ao sistema. 
• Encapsulamento das variações de implementação. 
Na UML, não temos uma representação específica para polimorfismo, como 
mostra a figura a seguir. No entanto, vale ressaltar que a especificação do método polimórfico 
pode não constar literalmente no diagrama de classes da UML, mas deve necessariamente 
estar documentado no modelo de classes. 
 
 8.3.3 Visibilidade de atributos e métodos 
 
Visibilidade indica quando e em que nível um atributo ou um método de um 
objeto pode ser acessível aos objetos que se relacionam com ele. Em orientação a objetos, 
temos três níveis de visibilidade de atributos e métodos: Público (+), Privado (-), Protegido 
(#). 
 
 8.3.4 Interfaces 
 
Uma interface, em orientação a objetos, pode ser definida como um contrato que 
define quais métodos devem ser implementados por uma classe. Uma interface define o que 
deve ser implementado, mas não como deve ser implementado, define a assinatura de um 
método, mas não a forma de implementação, que fica a cargo da classe. 
 Resumindo, interface é um contrato que contém apenas assinaturas de métodos 
(não contém atributos) e que podem ser implementados por mais de uma classe. 
Na UML, representamos interfaces com oestereótipo <<interface>> e, como boa 
prática, o nome sempre começa com a letra I (interface), como mostra a figura a seguir. 
 
 
 8.3.5 Ciclo de vida de objetos 
 
Dentro de um sistema de software, um objeto é criado, utilizado e destruído, 
obrigatoriamente nessa sequência. Isso é o que chamamos de ciclo de vida de objetos e que 
envolvem alguns conceitos. 
Construtor é um método da própria classe que tem como objetivo a criação da 
estrutura do objeto em memória. 
Geralmente, nas linguagens de desenvolvimento orientado a objetos, não há a 
necessidade do desenvolvedor efetivamente implementar um construtor manualmente, 
basta saber alguns conceitos básicos: 
• Um construtor é um método da própria classe. 
• Um construtor é um método público. 
• Um construtor não possui saída. 
• Um construtor pode ou não receber parâmetros de entrada. 
 
Se para construir um objeto temos o construtor, para destruir o objeto temos o 
destrutor, que tem como objetivo remover o objeto da memória. Assim como o construtor, 
o destrutor também é um método da própria classe. 
Diferentemente do construtor, o destrutor obrigatoriamente não possui saída e 
não possui parâmetros de entrada. 
Na UML, raramente necessitamos representar um destrutor, isso porque, na 
maioria das linguagens e plataformas de desenvolvimento orientadas a objeto, a destruição 
de objetos da memória fica a cargo da própria plataforma. Todavia, caso haja necessidade de 
representação, o destrutor é representado da mesma forma que o construtor, porém 
acrescido de um ~ (til). 
 
 
 8.4 Comunicação entre objetos 
 
Basicamente, a comunicação entre objetos se dá pela chamada de métodos. Para 
isso, é fundamental os conceitos de encapsulamento e visibilidade de métodos. 
 
 8.4.1 Mensagem 
 
Uma mensagem pode ser considerada um meio de comunicação entre objetos e 
tem como objetivo a ativação de um processamento. 
Uma mensagem pode ter três significados (STADZISZ, 2002): 
• Chamada de função ou procedimento: é o tipo mais utilizado de 
mensagem. Significa que um objeto está solicitando a execução de um 
método de outro objeto. 
• Envio explícito de mensagem utilizando um tipo de serviço bem específico 
e especializado para envio e recebimento de mensagens, por exemplo: 
Message Queue (fila de mensagens). 
• Evento: quando uma mensagem é enviada para um objeto do sistema 
originária de um evento externo ao sistema. É comum que esse tipo de 
mensagem seja próprio da comunicação entre atores e objetos. Por 
exemplo: um clique de mouse pode ser considerado um evento externo ao 
sistema e que deve ser interpretado por um objeto .interno do mesmo 
sistema. 
 
 8.4.2 Diagrama de sequência 
 
O diagrama de sequência da UML representa a interação de um conjunto de 
objetos, a troca de mensagens entre eles para resolver um problema específico. Uma 
característica positiva do diagrama de sequência é que podemos visualizar a troca de 
mensagens de forma sequencial e encaixada em uma linha de tempo. 
Em um diagrama de sequência podemos representar todos os objetos e atores 
que fazem parte do cenário do problema que desejamos representar. Idealmente, 
representamos em um diagrama de sequência um cenário específico de um problema 
que queremos resolver, podemos fazer uma quebra por casos de uso ou por regras de 
negócio, a depender da complexidade de cada um, com o intuito de deixar o diagrama de 
sequência o mais inteligível possível. 
 
 
 
 
 
Existe dois tipos de mensagens 
 
 Mensagens síncronas 
 
Criam uma dependência do estado do objeto que enviou uma mensagem com o 
estado do objeto que a recebe. Isso significa que o objeto que enviou a mensagem não tem 
seu estado alterado, não executa nenhuma ação, até que o objeto que recebeu a mensagem 
permita. 
 
 Mensagens assíncronas 
Ao contrário das mensagens síncronas, as assíncronas não criam uma 
dependência do estado do objeto que enviou a mensagem com o estado do objeto que a 
recebe. Ou seja, o objeto que enviou a mensagem pode executar qualquer ação 
independentemente da reação do objeto que recebeu a mensagem. 
 
Criação e destruição de objetos 
 
 
 
Em orientação a objetos, quando um objeto cria outro para utilizá-lo ou para 
enviar-lhe uma mensagem, dizemos que o primeiro possui uma referência à instância do 
objeto criado. 
 
 Autodelegação de mensagens 
 
Todavia, um objeto pode enviar uma mensagem para ele mesmo, solicitando a 
execução de um método privado. Esse movimento é chamado de autodelegação 
 
 
Notação de estruturas de decisão e de repetição

Continue navegando