Você está na página 1de 96

Princpios de Anlise

e Projeto de Sistemas
com UML
2 edio

Eduardo Bezerra

Editora Campus/Elsevier
Captulo 5
Modelagem de Classes de Anlise

O engenheiro de software amador est sempre procura da


mgica, de algum mtodo sensacional ou ferramenta cuja
aplicao promete tornar trivial o desenvolvimento de software.
uma caracterstica do engenheiro de software profissional
saber que tal panacia no existe -Grady Booch
Tpicos

Introduo
Diagrama de classes
Diagrama de objetos
Tcnicas para identificao de classes
Construo do modelo de classes
Modelo de classes no processo de desenvolvimento

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 3


Introduo
As funcionalidades de um SSOO so realizadas internamente atravs de
colaboraes entre objetos.
Externamente, os atores visualizam resultados de clculos, relatrios
produzidos, confirmaes de requisies realizadas, etc.
Internamente, os objetos colaboram uns com os outros para produzir os
resultados.
Essa colaborao pode ser vista sob o aspecto dinmico e sob o aspecto
estrutural esttico.
O modelo de objetos representa o aspecto estrutural e esttico dos objetos
que compem um SSOO.
Dois diagramas da UML so usados na construo do modelo de objetos:
diagrama de classes
diagrama de objetos

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 4


Introduo

Na prtica o diagrama de classes bem mais utilizado que o


diagrama de objetos.
Tanto que o modelo de objetos tambm conhecido como modelo de
classes.
Esse modelo evolui durante o desenvolvimento do SSOO.
medida que o SSOO desenvolvido, o modelo de objetos
incrementado com novos detalhes.
H trs nveis sucessivos de detalhamento:
Anlise  Especificao (Projeto)  Implementao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 5


Objetivo da Modelagem de Classes

O objetivo da modelagem de classes de anlise


prover respostas para as seguintes perguntas:
Por definio um sistema OO composto de objetos...em
um nvel alto de abstrao, que objetos constituem o
sistema em questo?
Quais so as classes candidatas?
Como as classes do sistema esto relacionadas entre si?
Quais so as responsabilidades de cada classe?

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 6


Modelo de Classes de Anlise
Representa termos do domnio do negcio.
idias, coisas, e conceitos no mundo real.
Objetivo: descrever o problema representado pelo sistema a ser
desenvolvido, sem considerar caractersticas da soluo a ser utilizada.
um dicionrio visual de conceitos e informaes relevantes ao sistema
sendo desenvolvido.
Duas etapas:
modelo conceitual (modelo de domnio).
modelo da aplicao.
Elementos de notao do diagrama de classes normalmente usados na
construo do modelo de anlise:
classes e atributos; associaes, composies e agregaes (com seus adornos);
classes de associao; generalizaes (herana).

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 7


Modelo de Anlise: Foco no Problema

O modelo de anlise no representa detalhes da soluo do


problema.
Embora este sirva de ponto de partida para uma posterior definio das
classes de software (especificao).
Venda Anlise
Pagamento data
1 Pago-por 1
quantia hora

Projeto (Especificao)
Venda
Pagamento -data:Date
1 Pago-por 1
-hora:Time
-quantia: Currency
+getTotal():Currency
+getValor(): Currency
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 8
5.2 Diagrama de classes
Classes

Uma classe descreve esses objetos atravs de atributos e


operaes.
Atributos correspondem s informaes que um objeto armazena.
Operaes correspondem s aes que um objeto sabe realizar.
Notao na UML: caixa com no mximo trs
compartimentos exibidos.
Detalhamento utilizado depende do estgio de desenvolvimento e do
nvel de abstrao desejado.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 10


Exemplo (classe ContaBancria)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 11


Associaes

Para representar o fato de que objetos podem se relacionar uns


com os outros, utilizamos associaes.
Uma associao representa relacionamentos (ligaes) que so
formados entre objetos durante a execuo do sistema.
Note que, embora as associaes sejam representadas entre
classes do diagrama, tais associaes representam ligaes
possveis entre os objetos das classes envolvidas.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 12


Notao para Associaes
Na UML associaes so representadas por uma linha que liga
as classes cujos objetos se relacionam.
Exemplos:

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 13


Multiplicidades

Representam a informao dos limites inferior e superior da


quantidade de objetos aos quais outro objeto pode se associar.
Cada associao em um diagrama de classes possui duas
multiplicidades, uma em cada extremo da linha de associao.

Nome Simbologia na UML


Apenas Um 1..1 (ou 1)
Zero ou Muitos 0..* (ou *)
Um ou Muitos 1..*
Zero ou Um 0..1
Intervalo Especfico li..ls

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 14


Exemplos (multiplicidade)

Exemplo
Pode haver um cliente que esteja associado a vrios pedidos.
Pode haver um cliente que no esteja associado a pedido algum.
Um pedido est associado a um, e somente um, cliente.

Exemplo
Uma corrida est associada a, no mnimo, dois velocistas
Uma corrida est associada a, no mximo, seis velocistas.
Um velocista pode estar associado a vrias corridas.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 15
Conectividade

A conectividade corresponde ao tipo de associao entre duas


classes: muitos para muitos, um para muitos e um para
um.
A conectividade da associao entre duas classes depende dos
smbolos de multiplicidade que so utilizados na associao.
Conectividade Em um extremo No outro extremo
Um para um 0..1 0..1
1 1
Um para muitos 0..1 *
1 1..*
0..*
Muitos para muitos * *
1..* 1..*
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 16
0..* 0..*
Exemplo (conectividade)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 17


Participao

Uma caracterstica de uma associao que indica a necessidade


(ou no) da existncia desta associao entre objetos.
A participao pode ser obrigatria ou opcional.
Se o valor mnimo da multiplicidade de uma associao igual a 1
(um), significa que a participao obrigatria
Caso contrrio, a participao opcional.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 18


Acessrios para Associaes

Para melhor esclarecer o significado de uma associao no


diagrama de classes, a UML define trs recursos de notao:
Nome da associao: fornece algum significado semntico a mesma.
Direo de leitura: indica como a associao deve ser lida
Papel: para representar um papel especfico em uma associao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 19


Classe associativa

uma classe que est ligada a uma associao, em vez de estar


ligada a outras classes.
normalmente necessria quando duas ou mais classes esto
associadas, e necessrio manter informaes sobre esta
associao.
Uma classe associativa pode estar ligada a associaes de
qualquer tipo de conectividade.
Sinnimo: classe de associao

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 20


Notao para Classes Associativas
Notao semelhante utilizada para classes ordinrias. A
diferena que esta classe ligada a uma associao por uma
linha tracejada.
Exemplo: para cada par de objetos [pessoa, empresa], h duas
informaes associadas: salrio e data de contratao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 21


Associaes n-rias

Define-se o grau de uma associao como a quantidade de


classes envolvidas na mesma.
Na notao da UML, as linhas de uma associao n-ria se
interceptam em um losango.
Na grande maioria dos casos prticos de modelagem, as
associaes normalmente so binrias.
Quando o grau de uma associao igual a trs, dizemos que a
mesma ternria.
Uma associao ternria so uma caso mais comum (menos raro) de
associao n-ria (n = 3).

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 22


Exemplo (associao ternria)

Na notao da UML, as linhas de uma associao n-ria se


interceptam em um losango nomeado.
Notao similar ao do Modelo de Entidades e Relacionamentos

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 23


Associaes reflexivas

Tipo especial de associao que representa ligaes entre


objetos que pertencem a uma mesma classe.
No indica que um objeto se associa a ele prprio.
Quando se usa associaes reflexivas, a definio de papis
importante para evitar ambigidades na leitura da associao.
Cada objeto tem um papel distinto na associao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 24


Agregaes e Composies

A semntica de uma associao corresponde ao seu


significado, ou seja, natureza conceitual da relao que existe
entre os objetos que participam daquela associao.
De todos os significados diferentes que uma associao pode
ter, h uma categoria especial de significados, que representa
relaes todo-parte.
Uma relao todo-parte entre dois objetos indica que um dos
objetos est contido no outro. Podemos tambm dizer que um
objeto contm o outro.
A UML define dois tipos de relacionamentos todo-parte, a
agregao e a composio.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 25


Agregaes e Composies

Algumas particularidades das agregaes/composies:


so assimtricas, no sentido de que, se um objeto A parte de um
objeto B, o objeto B no pode ser parte do objeto A.
propagam comportamento, no sentido de que um comportamento que
se aplica a um todo automaticamente se aplica s suas partes.
as partes so normalmente criadas e destrudas pelo todo. Na classe do
objeto todo, so definidas operaes para adicionar e remover as partes.
Se uma das perguntas a seguir for respondida com um sim,
provavelmente h uma agregao onde X todo e Y parte.
X tem um ou mais Y?
Y parte de X?

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 26


Exemplos

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 27


Agregaes e Composies
As diferenas entre a agregao e composio no so bem
definidas. A seguir, as diferenas mais marcantes entre elas.
Destruio de objetos
Na agregao, a destruio de um objeto todo no implica
necessariamente na destruio do objeto parte.
Pertinncia
Na composio, os objetos parte pertencem a um nico todo.
Por essa razo, a composio tambm denominada agregao no-
compartilhada.
Em uma agregao, pode ser que um mesmo objeto participe como
componente de vrios outros objetos.
Por essa razo, a agregao tambm denominada agregao
compartilhada.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 28


Restries sobre associaes

Restries OCL podem ser adicionadas sobre uma associao


para adicionar a ela mais semntica.
Duas das restries sobre associaes predefinidas pela UML so
subset e xor.
O modelador tambm pode definir suas prprias restries em OCL.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 29


Restries sobre associaes (cont)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 30


Restries sobre associaes (cont)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 31


Generalizaes e Especializaes
O modelador tambm pode representar relacionamentos entre
classes.
Esses denotam relaes de generalidade ou especificidade entre as
classes envolvidas.
Exemplo: o conceito mamfero mais genrico que o conceito ser
humano.
Exemplo: o conceito carro mais especfico que o conceito veculo.
Esse o chamado relacionamento de herana.
relacionamento de generalizao/especializao
relacionamento de gen/espec

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 32


Generalizaes e Especializaes

Terminologia
subclasse X superclasse.
supertipo X subtipo.
classe base X classe herdeira.
classe de especializao X classe de generalizao.
ancestral e descendente (herana em vrios nveis)
Notao definida pela UML

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 33


Semntica da Herana

Subclasses herdam as caractersticas de sua superclasse


como se as caractersticas da superclasse estivessem definidas
tambm nas suas subclasses
Alm disso, essa herana transitiva e anti-simtrica
Note a diferena semntica entre a herana e a associao.
A primeira trata de um relacionamento entre classes, enquanto que a
segunda representa relacionamentos entre instncias de classes.
Na associao, objetos especficos de uma classe se associam entre si
ou com objetos especficos de outras classes.
Exemplo:
Herana: Gerentes so tipos especiais de funcionrios.
Associao: Gerentes chefiam departamentos.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 34


Herana de Associaes

No somente atributos e operaes, mas tambm associaes


so herdadas pelas subclasses.
No exemplo abaixo, cada subclasse est associada a Pedido,
por herana.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 35


Propriedades da Herana

Transitividade: uma classe em uma hierarquia herda


propriedades e relacionamentos de todos os seus ancestrais.
Ou seja, a herana pode ser aplicada em vrios nveis, dando origem a
hierarquia de generalizao.
uma classe que herda propriedades de uma outra classe pode ela prpria
servir como superclasse.
Assimetria: dadas duas classes A e B, se A for uma
generalizao de B, ento B no pode ser uma generalizao
de A.
Ou seja, no pode haver ciclos em uma hierarquia de generalizao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 36


Propriedades da Herana

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 37


Classes Abstratas
Usualmente, a existncia de uma classe se justifica pelo fato de
haver a possibilidade de gerar instncias da mesma
Essas so as classes concretas.
No entanto, podem existir classes que no geram instncias
diretas.
Essas so as classes abstratas.
Classes abstratas so utilizadas para organizar e simplificar
uma hierarquia de generalizao.
Propriedades comuns a diversas classes podem ser organizadas e
definidas em uma classe abstrata a partir da qual as primeiras herdam.
Subclasses de uma classe abstrata tambm podem ser
abstratas, mas a hierarquia deve terminar em uma ou mais
classes concretas.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 38


Notao para classes abstratas
Na UML, uma classe abstrata representada com o seu nome
em itlico.
No exemplo a seguir, ContaBancria uma classe abstrata.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 39


Refinamento do Modelo com Herana

Critrios a avaliar na criao de subclasses:


A subclasse tem atributos adicionais.
A subclasse tem associaes.
A subclasse manipulada (ou reage) de forma diferente da
superclasse.
Se algum subconceito (subconjunto de objetos)
atenda a tem algum(ns) das critrios acima, a criao
de uma subclasses deve ser considerada.
Sempre se assegure de que se trata de um
relacionamento do tipo -um: X um tipo de Y?
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 40
Refinamento do Modelo com Herana

A regra -um mais formalmente conhecida como regra da


substituio ou princpio de Liskov.

Regra da Substituio: sejam duas classes A e


B, onde A uma generalizao de B. No
pode haver diferenas entre utilizar instncias
de B ou de A, do ponto de vista dos clientes
de A.

Barbara Liskov (http://www.pmg.csail.mit.edu/~liskov/)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 41


Restries sobre gen/espec

Restries OCL sobre relacionamentos de herana podem ser


representadas no diagrama de classes, tambm com o objetivo
de esclarecer seu significado.
Restries predefinidas pela UML:
Sobreposta X Disjunta
Completa X Incompleta

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 42


Restries sobre gen/espec

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 43


5.3 Diagrama de objetos
Diagrama de objetos
Alm do diagrama de classes, A UML define um segundo
tipo de diagrama estrutural, o diagrama de objetos.
Pode ser visto com uma instncia de diagramas de classes
Representa uma fotografia do sistema em um certo
momento.
exibe as ligaes formadas entre objetos conforme estes interagem e
os valores dos seus atributos.

Formato Exemplo
nomeClasse Pedido

nomeObjeto: NomeClasse umPedido: Pedido

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 45


Exemplo (Diagrama de objetos)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 46


Exemplo (Diagrama de objetos)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 47


5.4 Tcnicas para identificao de classes
Apesar de todas as vantagens que a OO pode
trazer ao desenvolvimento de software, um
problema fundamental ainda persiste: identificar
corretamente e completamente objetos (classes),
atributos e operaes.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 49


Tcnicas de Identificao

Vrias tcnicas (de uso no exclusivo) so usadas


para identificar classes:
1. Categorias de Conceitos
2. Anlise Textual de Abbott (Abbot Textual Analysis)
3. Anlise de Casos de Uso
Categorizao BCE
4. Padres de Anlise (Analisys Patterns)
5. Identificao Dirigida a Responsabilidades

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 50


Categorias de Conceitos
Estratgia: usar uma lista de conceitos comuns.
Conceitos concretos. Por exemplo, edifcios, carros, salas de aula, etc.
Papis desempenhados por seres humanos. Por exemplo, professores,
alunos, empregados, clientes, etc.
Eventos, ou seja, ocorrncias em uma data e em uma hora particulares.
Por exemplo, reunies, pedidos, aterrisagens, aulas, etc.
Lugares: reas reservadas para pessoas ou coisas. Por exemplo:
escritrios, filiais, locais de pouso, salas de aula, etc.
Organizaes: colees de pessoas ou de recursos. Por exemplo:
departamentos, projetos, campanhas, turmas, etc.
Conceitos abstratos: princpios ou idias no tangveis. Por exemplo:
reservas, vendas, inscries, etc.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 51


Anlise Textual de Abbott

Estratgia: identificar termos da narrativa de casos


de uso e documento de requisitos que podem sugerir
classes, atributos, operaes.
Neste tcnica, so utilizadas diversas fontes de informao
sobre o sistema: documento e requisitos, modelos do negcio,
glossrios, conhecimento sobre o domnio, etc.
Para cada um desses documentos, os nomes (substantivos e
adjetivos) que aparecem no mesmo so destacados. (So
tambm consideradas locues equivalentes a substantivos.)
Aps isso, os sinnimos so removidos (permanecem os
nomes mais significativos para o domnio do negcio em
questo).
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 52
Anlise Textual de Abbott (cont.)
Cada termo remanescente se encaixa em uma das situaes a
seguir:
O termo se torna uma classe (ou seja, so classes candidatas);
O termo se torna um atributo;
O termo no tem relevncia alguma com ao SSOO.
Abbott tambm preconiza o uso de sua tcnica na identificao
de operaes e de associaes.
Para isso, ele sugere que destaquemos os verbos no texto.
Verbos de ao (e.g., calcular, confirmar, cancelar, comprar, fechar,
estimar, depositar, sacar, etc.) so operaes em potencial.
Verbos com sentido de ter so potenciais agregaes ou composies.
Verbos com sentido de ser so generalizaes em potencial.
Demais verbos so associaes em potencial.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 53
Anlise Textual de Abbott (cont.)

A ATA de aplicao bastante simples.


No entanto, uma desvantagem que seu resultado (as classes
candidatas identificadas) depende de os documentos utilizados
como fonte serem completos.
Dependendo do estilo que foi utilizado para escrever esse documento,
essa tcnica pode levar identificao de diversas classes candidatas
que no geraro classes.
A anlise do texto de um documento pode no deixar explcita uma
classe importante para o sistema.
Em linguagem natural, as variaes lingsticas e as formas de
expressar uma mesma idia so bastante numerosas.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 54


Anlise de Casos de Uso
Essa tcnica tambm chamada de identificao dirigida por
casos de uso, e um caso particular da ATA.
Tcnica preconizada pelo Processo Unificado.
Nesta tcnica, o MCU utilizado como ponto de partida.
Premissa: um caso de uso corresponde a um comportamento especfico
do SSOO. Esse comportamento somente pode ser produzido por
objetos que compem o sistema.
Em outras palavras, a realizao de um caso de uso responsabilidade
de um conjunto de objetos que devem colaborar para produzir o
resultado daquele caso de uso.
Com base nisso, o modelador aplica a tcnica de anlise dos casos de
uso para identificar as classes necessrias produo do
comportamento que est documentado na descrio do caso de uso.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 55


Anlise de Casos de Uso

Procedimento de aplicao:
O modelador estuda a descrio textual de cada caso de uso para
identificar classes candidatas.
Para cada caso de uso, se texto (fluxos principal, alternativos e de
exceo, ps-condies e pr-condies, etc.) analisado.
Na anlise de certo caso de uso, o modelador tenta identificar classes
que possam fornecer o comportamento do mesmo.
Na medida em que os casos de uso so analisados um a um, as classes
do SSOO so identificadas.
Quando todos os casos de uso tiverem sido analisados, todas as classes
(ou pelo menos a grande maioria delas) tero sido identificadas.
Na aplicao deste procedimento, podemos utilizar as
categorizao BCE...
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 56
Categorizao BCE

Na categorizao BCE, os objetos de um SSOO so agrupados


de acordo com o tipo de responsabilidade a eles atribuda.
objetos de entidade: usualmente objetos do domnio do problema
objetos de fronteira: atores interagem com esses objetos
objetos de controle: servem como intermedirios entre objetos de
fronteira e de entidade, definindo o comportamento de um caso de uso
especfico.
Categorizao proposta por Ivar Jacobson em1992.
Possui correspondncia (mas no equivalncia!) com o framework
model-view-controller (MVC)
Ligao entre anlise (o que; problema) e projeto (como; soluo)
Esteretipos na UML: boundary, entity, control
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 57
Objetos de Entidade

Repositrio para informaes e as regras de negcio


manipuladas pelo sistema.
Representam conceitos do domnio do negcio.
Caractersticas
Normalmente armazenam informaes persistentes.
Vrias instncias da mesma entidade existindo no sistema.
Participam de vrios casos de uso e tm ciclo de vida longo.
Exemplo:
Um objeto Pedido participa dos casos de uso Realizar
Pedido e Atualizar Estoque. Este objeto pode existir por
diversos anos ou mesmo tanto quanto o prprio sistema.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 58
Objetos de Fronteira
Realizam a comunicao do sistema com os atores.
traduzem os eventos gerados por um ator em eventos relevantes ao
sistema  eventos de sistema.
tambm so responsveis por apresentar os resultados de uma interao
dos objetos em algo inteligvel pelo ator.
Existem para que o sistema se comunique com o mundo
exterior.
Por conseqncia, so altamente dependentes do ambiente.
H dois tipos principais de objetos de fronteira:
Os que se comunicam com o usurio (atores humanos): relatrios,
pginas HTML, interfaces grfica desktop, etc.
Os que se comunicam com atores no-humanos (outros sistemas ou
dispositivos): protocolos de comunicao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 59


Objetos de Controle

So a ponte de comunicao entre objetos de fronteira e


objetos de entidade.
Responsveis por controlar a lgica de execuo
correspondente a um caso de uso.
Decidem o que o sistema deve fazer quando um evento de
sistema ocorre.
Eles realizam o controle do processamento
Agem como gerentes (coordenadores, controladores) dos outros
objetos para a realizao de um caso de uso.
Traduzem eventos de sistema em operaes que devem ser
realizadas pelos demais objetos.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 60


Importncia da Categorizao BCE
A categorizao BCE parte do princpio de que cada objeto em um SSOO
especialista em realizar um de trs tipos de tarefa, a saber:
se comunicar com atores (fronteira),
manter as informaes (entidade) ou
coordenar a realizao de um caso de uso (controle).
A categorizao BCE uma receita de bolo para identificar objetos
participantes da realizao de um caso de uso.
A importncia dessa categorizao est relacionada
capacidade de adaptao a eventuais mudanas.
Se cada objeto tem atribuies especficas dentro do sistema, mudanas
podem ser menos complexas e mais localizadas.
Uma modificao em uma parte do sistema tem menos possibilidades
de resultar em mudanas em outras partes.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 61
Vises de Classes Participantes

Uma Viso de Classes Participantes (VCP) um diagrama das


classes cujos objetos participam da realizao de determinado
caso de uso.
uma recomendao do UP (Unified Process). UP: definir uma VCP
por caso de uso
Termo original: View Of Participating Classes (VOPC).
Em uma VCP, so representados objetos de fronteira, de
entidade e de controle para um caso de uso particular.
Uma VCP definida atravs da utilizao da categorizao BCE
previamente descrita...vide prximo slide.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 62


Estrutura de uma VCP

Uma VCP representa a estrutura das classes que participam da


realizao de um caso de uso em particular.

entidade

fronteira controle entidade

entidade
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 63
Construo de uma VCP

Para cada caso de uso:


Adicione uma fronteira para cada elemento de interface grfica
principal, tais com uma tela (formulrio) ou relatrio.
Adicione uma fronteira para cada ator no-humano (por exemplo, outro
sistema).
Adicione um ou mais controladores para gerenciar o processo de
realizao do caso de uso.
Adicione uma entidade para cada conceito do negcio.
Esses objetos so originrios do modelo conceitual.
Os esteretipos grficos definidos pela UML podem ser
utilizados.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 64


VCP (exemplo) Realizar Inscrio

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 65


Regras Estruturais em uma VCP

Durante a fase de anlise, use as regras a seguir para


definir a VCP para um caso de uso.
Atores somente podem interagir com objetos de fronteira.
Objetos de fronteira somente podem interagir com
controladores e atores.
Objetos de entidade somente podem interagir (receber
requisies) com controladores.
Controladores somente podem interagir com objetos de
fronteira e objetos de entidade, e com (eventuais) outros
controladores.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 66


Padres de Anlise

Aps produzir diversos modelos para um mesmo domnio,


natural que um modelador comece a identificar caractersticas
comuns entre esses modelos.
Em particular, um mesmo conjunto de classes ou
colaboraes entre objetos costuma recorrer, com algumas
pequenas diferenas, em todos os sistemas desenvolvidos
para o domnio em questo.
Quantos modelos de classes j foram construdos que possuem os
conceitos Cliente, Produto, Fornecedor, Departamento, etc?
Quantos outros j foram construdos que possuam os conceitos
Ordem de Compra, Ordem de Venda, Oramento, Contrato, etc?

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 67


Padres de Anlise
A identificao de caractersticas comuns acontece em
conseqncia do ganho de experincia do modelador em
determinado domnio de problema.
Ao reconhecer processos e estruturas comuns em um domnio,
o modelador pode descrever (catalogar) a essncia dos
mesmos, dando origem a padres de software.
Quando o problema correspondente ao descrito em um padro
de software acontecer novamente, um modelador pode utilizar
a soluo descrita no catlogo.
A aplicao desse processo permite que o desenvolvimento de
determinado aspecto de um SSOO seja feito de forma mais
rpida e menos suscetvel a erros.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 68


Padres de Anlise
Um padro de software pode ento ser definido
como uma descrio essencial de um problema
recorrente no desenvolvimento de software.

Each pattern describes a problem which occurs over and over


again in our environment, and then describes the core of the
solution to that problem, in such a way that you can use this
solution a million times over, without ever doing it the same
way twice
http://www.patternlanguage.com/leveltwo/ca.htm

Cada padro descreve um problema que ocorre freqentemente


no nosso ambiente, e ento descreve o ncleo de uma soluo
para tal problema. Esse ncleo pode ser utilizado um milho de
vezes, sem que haja duas formas de utilizao iguais.
Christopher
Princpios de Anlise e Projeto de Sistemas com UML - 2 edioAlexander 69
Padres de Anlise

Padres de software podem ser utilizados em diversas


atividades e existem em diversos nveis de abstrao.
Padres de Anlise (Analysis Patterns)
Padres de Projeto (Design Patterns)
Padres Arquiteturais (Architectural Patterns)
Idiomas (Idioms)
Anti-padres (Anti-patterns)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 70


Padres de Anlise

Um padro de software pode ento ser definido como uma


descrio essencial de um problema recorrente no
desenvolvimento de software.
Padres de software vm sendo estudados por anos e so
atualmente utilizados em diversas fases do desenvolvimento.
Padres de software utilizados na fase de anlise de um SSOO
so chamados padres de anlise.
Um padro de anlise normalmente composto, dentre outras
partes, de um fragmento de diagrama de classes que pode ser
customizado para uma situao de modelagem em particular.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 71


Exemplo 1 Padro Party

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 72


Exemplo 2 Padro Metamodel

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 73


Identificao Dirigida a Responsabilidades

Nesta tcnica, a nfase est na identificao de classes a partir


de seus comportamentos relevantes para o sistema.
O esforo do modelador recai sobre a identificao das
responsabilidades que cada classe deve ter dentro do sistema.
Mtodo foi proposto por Rebecca Wirfs-Brock et al (RDD).
O mtodo dirigido a responsabilidades enfatiza o encapsulamento da
estrutura e do comportamento dos objetos.
Essa tcnica enfatiza o princpio do encapsulamento:
A nfase est na identificao das responsabilidades de uma classe que
so teis externamente mesma.
Os detalhes internos classe (como ela faz para cumprir com suas
responsabilidades) devem ser abstrados.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 74


As responsabilidades de um SSOO devem ser alocadas
aos objetos (classes) componentes do mesmo.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 75


Responsabilidades de uma Classe
Em um SSOO, objetos encapsulam comportamento.
O comportamento de um objeto definido de tal forma que ele possa
cumprir com suas responsabilidades.
Uma responsabilidade uma obrigao que um objeto tem
para com o sistema no qual ele est inserido.
Atravs delas, um objeto colabora (ajuda) com outros para que os
objetivos do sistema sejam alcanados.
Na prtica, uma responsabilidade alguma coisa que um
objeto conhece ou sabe fazer (sozinho ou pedindo ajuda).
Se um objeto tem uma responsabilidade com a qual no pode
cumprir sozinho, ele deve requisitar colaboraes de outros
objetos.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 76


Responsabilidades e Colaboradores
Exemplo: considere clientes e seus pedidos:
Um objeto Cliente conhece seu nome, seu endereo, seu telefone, etc.
Um objeto Pedido conhece sua data de realizao, conhece o seu cliente,
conhece os seus itens componentes e sabe fazer o clculo do seu total.
Exemplo: quando a impresso de uma fatura requisitada em um sistema
de vendas, vrios objetos precisam colaborar:
um objeto Pedido pode ter a responsabilidade de fornecer o seu valor total
um objeto Cliente fornece seu nome
cada ItemPedido informa a quantidade correspondente e o valor de seu subtotal
os objetos Produto tambm colaboraram fornecendo seu nome e preo unitrio.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 77


Responsabilidades e Colaboraes
Um objeto cumpre com suas responsabilidades atravs das
informaes que ele possui ou das informaes que ele
pode derivar a partir de colaboraes com outros objetos.

Pense em um SSOOPrincpios
como uma sociedade
de Anlise onde
e Projeto de os cidados
Sistemas (colaboradores)
com UML - 2 edio so objetos.
78
Modelagem CRC

A identificao dirigida a responsabilidades normalmente


utiliza uma tcnica de modelagem que facilita a participao
de especialistas do domnio e analistas.
Essa tcnica denominada modelagem CRC (CRC modeling).
CRC: Class, Responsibility, Collaboration
A modelagem CRC foi proposta em 1989 por Kent Beck e
Ward Cunningham.
A princpio, essa tcnica de modelagem foi proposta como uma forma
de ensinar o paradigma OO a iniciantes.
Contudo, sua simplicidade de notao a tornou particularmente
interessante para ser utilizada na identificao de classes.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 79


Sesso CRC

Para aplicar essa tcnica, esses profissionais se renem em


uma sala, onde tem incio uma sesso CRC.
Uma sesso CRC uma reunio que envolve cerca de meia
dzia de pessoas.
Entre os participantes esto especialistas de domnio,
projetistas, analistas e o moderador da sesso.
A cada pessoa entregue um carto de papel que mede
aproximadamente 10cm x 15cm.
Uma vez distribudos os cartes pelos participantes, um
conjunto de cenrios de determinado caso de uso
selecionado.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 80
Sesso CRC

Ento, para cada cenrio desse conjunto, uma sesso CRC


iniciada.
(Se o caso de uso no for to complexo, ele pode ser analisado em uma
nica sesso.)
Um carto CRC dividido em vrias partes.
Na parte superior do carto, aparece o nome de uma classe.
A parte inferior do carto dividida em duas colunas.
Na coluna da esquerda, o indivduo ao qual foi entre o carto deve listar
as responsabilidades da classe.
Na coluna direita, o indivduo deve listar os nomes de outras classes
que colaboram com a classe em questo para que ela cumpra com suas
responsabilidades.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 81


Modelagem CRC

Normalmente j existem algumas classes candidatas para


determinado cenrio.
Identificadas atravs de outras tcnicas.
A sesso CRC comea com algum dos participantes simulando
o ator primrio que dispara a realizao do caso de uso.
Na medida em que esse participante simula a interao do ator
com o sistema, os demais participantes encenam a colaborao
entre objetos que ocorre internamente ao sistema.
Atravs dessa encenao dos participantes da sesso CRC, as
classes, responsabilidades e colaboraes so identificadas.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 82


Estrutura de um Carto CRC

Nome da classe
Responsabilidades Colaboradores
1a responsabilidade 1o colaborador
2a responsabilidade 2o colaborador
... ...
n-sima responsabilidade m-simo colaborador

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 83


Exemplos de cartes CRC

Aluno
Responsabilidades Colaboradores
1. Conhecer seu nmero de registro Participao
2. Conhecer seu nome
3. Conhecer as disciplinas que j cursou

Disciplina
Responsabilidades Colaboradores
1. Conhecer seus pr-requisitos Disciplina
2. Conhecer seu cdigo
3. Conhecer seu nome
4. Conhecer sua quantidade de crditos

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 84


Criao de Novos Cartes

Durante uma sesso CRC, para cada responsabilidade


atribuda a uma classe, o seu proprietrio deve questionar se tal
classe capaz de cumprir com a responsabilidade sozinha.
Se ela precisar de ajuda, essa ajuda dada por um colaborador.
Os participantes da sesso, ento, decidem que outra classe
pode fornecer tal ajuda.
Se essa classe existir, ela recebe uma nova responsabilidade necessria
para que ela fornea ajuda.
Caso contrrio, um novo carto (ou seja, uma nova classe) criado para
cumprir com tal responsabilidade de ajuda.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 85


5.5 Construo do modelo de classes
Construo do modelo de classes

Aps a identificao de classes, o modelador deve verificar a


consistncia entre as classes para eliminar incoerncias e
redundncias.
Como dica, o modelador deve estar apto a declarar as razes de
existncia de cada classe identificada.
Depois disso, os analistas devem comear a definir o
mapeamento das responsabilidades e colaboradores de cada
classe para os elementos do diagrama de classes.
Esse mapeamento resulta em um diagrama de classes que apresenta
uma estrutura esttica relativa a todas as classes identificadas como
participantes da realizao de um ou mais casos de uso.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 87


Definio de propriedades
Uma responsabilidade de conhecer mapeada para um ou
mais atributos.
Operaes de uma classe so um modo mais detalhado de
explicitar as responsabilidades de fazer.
Uma operao pode ser vista como uma contribuio da classe para
uma tarefa mais complexa representada por um caso de uso.
Uma definio mais completa das operaes de uma classe s pode
ser feita aps a construo dos diagramas de interao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 88


Definio de associaes
O fato de uma classe possuir colaboradores indica que devem
existir relacionamentos entre estes ltimos e a classe.
Isto porque um objeto precisa conhecer o outro para poder lhe fazer
requisies.
Portanto, para criar associaes, verifique os colaboradores de uma classe.
O raciocnio para definir associaes reflexivas, ternrias e
agregaes o mesmo.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 89


Definio de classes associativas

Surgem a partir de responsabilidades de conhecer que o


modelador no conseguiu atribuir a alguma classe.
(mais raramente, de responsabilidades de fazer)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 90


Organizao da documentao

As responsabilidades e colaboradores mapeados para


elementos do modelo de classes devem ser
organizados em um diagrama de classes e
documentados, resultando no modelo de classes de
domnio.
Podem ser associados esteretipos predefinidos s
classes identificadas:
<<fronteira>>
<<entidade>>
<<controle>>

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 91


Organizao da documentao

A construo de um nico diagrama de classes para todo o


sistema pode resultar em um diagrama bastante complexo.
Um alternativa criar uma viso de classes participantes
(VCP) para cada caso de uso.
Em uma VCP, so exibidos os objetos que participam de um
caso de uso.
As VCPs podem ser reunidas para formar um nico diagrama
de classes para o sistema como um todo.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 92


5.6 Modelo de classes no processo
de desenvolvimento
Modelo de classes no processo de
desenvolvimento
Em um desenvolvimento dirigido a casos de uso, aps a
descrio dos casos de uso, possvel iniciar a identificao
de classes.
As classes identificadas so refinadas para retirar
inconsistncias e redundncias.
As classes so documentadas e o diagrama de classes inicial
construdo, resultando no modelo de classes de domnio.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 94


Modelo de classes no processo de
desenvolvimento
Inconsistncias nos modelos devem ser verificadas e
corrigidas.
As construes do modelo de casos de uso e do modelo de
classes so retroativas uma sobre a outra.
Durante a aplicao de alguma tcnica de identificao, novos casos
de uso podem ser identificados
Pode-se identificar a necessidade de modificao de casos de uso
preexistentes.
Depois que a primeira verso do modelo de classes de anlise
est completa, o modelador deve retornar ao modelo de casos
de uso e verificar a consistncia entre os dois modelos.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 95


Modelo de classes no processo de
desenvolvimento
Interdependncia entre o modelo de casos de uso e o
modelo de classes.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio 96

Você também pode gostar