Escolar Documentos
Profissional Documentos
Cultura Documentos
ApostilaUML2.0 Cap1 PDF
ApostilaUML2.0 Cap1 PDF
Introduo .....................................................................................................................................8
1. Modelando o escopo do sistema com Casos de Uso ............................................................9
1.1. Para qu Casos de Uso? ...............................................................................................9
1.2. Diagrama de Casos de Uso (ud)..................................................................................10
1.3. Atores ..........................................................................................................................10
1.4. Caso de Uso................................................................................................................12
1.5. Narrativa do Caso de Uso............................................................................................13
1.6. Relacionamento include entre Casos de Uso...........................................................15
1.7. Fluxos Alternativos.......................................................................................................17
1.8. O que so cenrios?....................................................................................................22
1.9. Precondio e Ps-condies......................................................................................23
1.10. Relacionamento extend entre Casos de Uso ...........................................................24
1.11. Tpicos no abordados sobre Casos de Uso ..............................................................27
2. Modelando o fluxo de informaes com Diagramas de Atividade ........................................29
2.1. Fluxos de informaes e modelo de processos ...........................................................29
2.2. InitialNode, ControlFlow, Activity, Action e ActivityFinalNode.......................................30
2.3. DecisionNode e MergeNode ........................................................................................31
2.4. ForkNode e JoinNode: tarefas sendo executadas no mesmo tempo ...........................34
2.5. Passando Objetos como parmetros ...........................................................................35
2.6. ActivityPartition: organizando tarefas em seus responsveis .......................................36
2.7. Tpicos no abordados sobre o Diagrama de Atividades ............................................37
3. Conceitos de Programao e Anlise Orientada a Objetos .................................................39
3.1. Classes e Objetos........................................................................................................39
3.2. Associaes ................................................................................................................40
3.3. Operaes ...................................................................................................................40
3.4. Encapsulamento ..........................................................................................................41
3.5. Herana .......................................................................................................................43
3.6. Polimorfismo................................................................................................................45
3.7. Interfaces e Classes Abstratas ....................................................................................45
4. Diagrama de Classes, Objetos e Pacotes ...........................................................................48
4.1. Comment .....................................................................................................................49
4.2. Compartimento do Nome e uso de Stereotypes na Classe ..........................................49
4.3. Visibilidade ..................................................................................................................53
4.4. Multiplicidade ...............................................................................................................54
4.5. Compartimento de Atributos ........................................................................................57
4.6. Compartimento de Operaes .....................................................................................59
4.7. Herana .......................................................................................................................62
4.8. Interfaces.....................................................................................................................63
4.9. Associaes ................................................................................................................64
4.10. Dependencies..............................................................................................................71
4.11. Pacotes (packages) .....................................................................................................73
4.12. Tpicos no abordados sobre Classes ........................................................................74
5. Interao entre Objetos .......................................................................................................76
5.1. Realizao de Casos de Uso.......................................................................................76
5.2. Diagrama de Seqncia ..............................................................................................77
5.3. Diagrama de Viso Geral da Interao ........................................................................84
5.4. Diagrama de Comunicao..........................................................................................85
5.5. Tpicos no abordados sobre Interaes ....................................................................86
6. O Ciclo de Vida do Objeto (Diagrama de Mquina de Estado) ............................................87
6.1. Uso da Mquina de Estados ........................................................................................87
6.2. Estado Inicial e Final....................................................................................................88
6.3. Transies ...................................................................................................................89
6.4. Compartimento de Transies Internas .......................................................................90
6.5. Estados Compostos.....................................................................................................91
6.6. Pseudo-estados...........................................................................................................91
6.7. Tpicos no abordados sobre a Mquina de Estados..................................................93
7. Modelando a Arquitetura do Sistema...................................................................................94
7.1. Diagrama de Componentes (id) ...................................................................................94
7.2. Diagrama de Implantao/Deployment (dd).................................................................97
7.3. Tpicos no abordados sobre Diagramas de Arquitetura ............................................99
ndice de figuras
8
1. Modelando o escopo do sistema com Casos de Uso
1.1. Para qu Casos de Uso?
Quem est iniciando projetos usando objetos e UML pode questionar sobre a importncia
de Casos de Uso bem modelados e detalhados, talvez por no entender direito por que e para qu
definir bonequinhos e elipses com nomes de funcionalidades e o que isso adiciona ao projeto.
Olhando para um diagrama de Casos de Uso, pela sua simplicidade, um analista poder
observar rapidamente as funcionalidades envolvidas no sistema, os usurios envolvidos e
integraes com sistemas externos. O propsito maior do Caso de Uso fornecer uma descrio
do comportamento do sistema do ponto de vista do usurio.
O Caso de Uso uma adio muito importante para a abordagem da Anlise Orientada a
Objetos e para o Processo Interativo de Engenharia de Software. A modelagem do diagrama de
Casos de Uso simples e muitos autores ensinam sobre as mais variadas tcnicas para descrever
em texto um Caso de Uso (destacando o timo livro de Alistair Cockburn Writing Effective Use
Cases). Modelando ou escrevendo, o principal para entender a importncia do Caso de Uso so
os objetivos dele:
Definir Escopo: Um conjunto de Casos de Uso define o escopo do sistema de uma maneira
simples. Se no diagrama aparece um Caso de uso chamado Plantar Batata, os usurios no
podero dizer que plantar couve est no escopo do sistema.
Organizar e dividir o trabalho: O Caso de Uso uma importante unidade de organizao do
trabalho dentro do projeto, geralmente nas equipes de projeto comum ouvir que o Z est
trabalhando no Caso de Uso X e o Joo est com o Caso de Uso Y. A unidade do Caso de Uso
divide o trabalho da equipe entre as pessoas, fora isso, comum dizer que o Caso de Uso est em
Anlise, em Programao ou em Teste. Casos de Uso tambm so entregues separadamente aos
usurios em conjuntos divididos em fases ou iteraes no projeto. Ento, dizemos que a primeira
iterao (ou entrega) ter os Casos de Uso X, Y, Z e W e na segunda iterao ter os Casos de
Uso T, H, I e J.
Estimar o tamanho do projeto: O Caso de Uso fornece mtricas para definir o tempo de
desenvolvimento. Uma das mtricas que pode ser aplicada sobre Casos de Uso a UCP (Use
Case Point) que consiste em classificar os Casos de Uso em nvel de complexidade e somando
todos os Casos de Uso do projeto (e mais alguns fatores) voc consegue estimar o esforo do
projeto em horas. Alm do UCP, podem ser aplicadas as tcnicas de Pontos de Funo (Function
Points) que so mais padronizadas e completas.
Direcionar os testes: Os testes do sistema (essencialmente os funcionais que so os mais
importantes) so derivados do Caso de Uso. Essa caracterstica uma das mais importantes e
geralmente desprezada, pois com Casos de Uso, os testes so planejados no incio do projeto e
no no fim, diminuindo os riscos. A partir dos Casos de Uso, Casos de Teste so criados para
validar o funcionamento do software.
Uma das questes em aberto sobre os Casos de Uso a confuso que fazem com o
diagrama e a narrativa (texto) do Caso de Uso. Isso porque a UML define somente como deve
ser o Diagrama de Casos de Uso, e no a narrativa. Desse modo, no h um consenso geral
sobre como descrever a narrativa, existem muitas tcnicas e difcil julgar que uma tcnica certa
e a outra errada, depende muito do projeto, dos seus processos e ferramentas que voc tem
disposio.
9
1.2. Diagrama de Casos de Uso (ud)
Bom, antes de comear a discutir sobre como definir uma narrativa onde no h consenso,
vamos nos focar no diagrama que a UML especifica direitinho as regras de como ele deve ser:
ud caso de uso
Caso de Uso
Ator
1.3. Atores
O Ator, em um diagrama de Casos de Uso (ud), tambm pode ser confuso para os novatos
na abordagem, mas para todo e qualquer efeito bom sempre ter em mente que um Ator um
PAPEL DESEMPENHADO POR ALGUMA COISA EXTERNA ao sistema (no necessariamente
uma pessoa). At mesmo o tempo pode ser um Ator para tarefas que ocorrem com freqncia
temporal.
Essa definio ainda aparenta no ser to simples, vou demonstrar os erros mais comuns a
respeito dos Atores:
Componentes internos do sistema no so Atores: comum o analista imaginar que porque
sistemas externos podem ser atores, o banco de dados da aplicao que est sendo desenvolvida
deve ser um ator tambm, mas isso errado, lembre que Ator um papel de responsabilidade
externa ao sistema. O que deve funcionar dentro da responsabilidade do sistema no pode ser
extrado como um Ator.
Hardwares internos do sistema no so Atores: Voc pode imaginar que um servidor
externo ao sistema, ou uma impressora em um Caso de Uso que precise imprimir alguma coisa
externa ao sistema tambm, porm, esses itens externos ao sistema so componentes que o
software pressupe que existem e cumpriro seu papel. Ento, so como os componentes do
funcionamento interno do software (como o banco de dados da aplicao) e assim sendo, no so
Atores. Alguns tipos de hardwares podem ser Atores, mas somente quando for importante para a
anlise do sistema destacar a presena desse hardware. Por exemplo, softwares para controles
industriais podem ter alguns sensores que indicam algum tipo de problema na linha de produo e
disparam algum comportamento (Caso de Uso) no sistema. Este sim pode ser um hardware que
um Ator no sistema, pois importante destacar isso para o funcionamento do Caso de Uso. Outro
hardware que pode ser um Ator seria a catraca do controle de ponto (entrada e sada de
funcionrios) para um sistema de Administrao de Pessoal. Ela desempenha um papel no
sistema, seria um Ator.
10
A definio de Atores (e Casos de Uso) no o controle de acessos da aplicao: Esse
erro tambm comum: confundir a definio de Atores com o que os usurios podem ou no fazer
dentro do sistema. No essa a idia! A representao do Ator somente destaca o papel que um
usurio assume ao usar o Caso de Uso.
ud pedido
Emitir Pedido
Vendedor
Aprov ar Pedido
Gerente de Vendas
Neste exemplo, o diagrama de Casos de Uso somente diz que para Emitir Pedido o
usurio dever assumir o papel de Vendedor, isso no implica que um usurio que possui o
cargo de vendedor na organizao no possa Aprovar Pedido.
O que consideramos mais importante na definio de Atores dar nome aos papis que
pessoas assumiro ao usar o sistema e informar integraes com sistemas externos. Enfim, em
90% dos casos um Ator ser uma pessoa (usurio do sistema) ou um sistema externo. Isso serve
para dar clareza a quem l o diagrama deixando as coisas o mais simples possvel.
Tambm possvel definir uma herana entre Atores para estabelecer generalizaes de
Atores. Veja o conceito geral de generalizao no Captulo 4 - Diagrama de Classes.
ud generalizao de ator
Vendedor
A generalizao de Atores serve para passar a idia de algo em comum entre papis no
sistema. Assim, se um Caso de Uso requer um Vendedor, vendedores remotos e locais se
encaixam no papel pela herana. Essa notao tambm no muito comum, pois para pessoal
no tcnico, o conceito de generalizao no fcil de compreender.
11
1.4. Caso de Uso
A representao do Caso de Uso no Diagrama simples: a elipse representa uma forma
que o sistema se comporta do ponto de vista do Ator. O nome do Caso de Uso uma forma de
elucidar esse comportamento do sistema, assim sendo, o nome do caso de uso define o
OBJETIVO do Ator, isto , o que ele quer fazer no sistema.
ud pedido
Emitir Pedido
Vendedor
ud Sistema de Pedidos
Manter Produtos
Emitir Pedido
Gerente de Vendas
Consultar Preos
Aprov ar Pedido
Vendedor
Consultar Pedido
Despachar Pedido
Dar nomes aos Casos de Uso com o objetivo do Ator a maneira de tornar o diagrama
claro para o pessoal menos tcnico saber exatamente o que ser possvel fazer no sistema. A
narrativa (texto) do Caso de Uso deve ser consistente com esse objetivo definido pelo seu nome.
12
1.5. Narrativa do Caso de Uso
importante citar que quando dizemos Caso de Uso, estamos mais preocupados com a
narrativa do Caso de Uso do que com o desenho da elipse no diagrama, ou o prprio diagrama.
Isso porque nos projetos, associamos o termo Caso de Uso ao texto, narrativa, e no ao
desenho. a narrativa do Caso de Uso que importante, ela que permite os benefcios j
citados, e no o desenho. O desenho serve mais para organizar os Casos de Uso e representar
graficamente (que mais amigvel do que o texto) as funcionalidades do sistema.
13
Para exemplificar uma narrativa, vamos descrever o Caso de Uso Emitir Pedido em texto:
Note que o Caso de Uso no revela sobre como o sistema dever resolver algumas
questes difceis como calcular preos e impostos. Pode ter certeza esses pontos envolvem regras
complexas e clculos com vrias informaes de diversas tabelas do sistema, porm, os detalhes
de como sero resolvidos internamente o Ator no consegue ver. Nesse ponto do projeto nosso
trabalho se limita ao que o sistema deve fazer (escopo), e no como ele ir fazer (implementao).
Essa regra de escrever somente o que o usurio v importante para agilizar a fase de
anlise do sistema e principalmente esta regra que permite derivar os Casos de Teste a partir da
narrativa, pois sabendo o que o sistema deve fazer possvel planejar como testar a
funcionalidade independente de como ficar a implementao.
14
1.6. Relacionamento include entre Casos de Uso
Vamos descrever tambm o Caso de Uso Consultar Preo:
ud Sistema de Pedidos
Consultar Preos
Vendedor
ud include
Emitir Pedido
include
Selecionar Produtos
Vendedor include
Consultar Preos
15
Este novo Caso de Uso Selecionar Produtos seria assim:
provvel que voc esteja questionando: Isso no quebrar o objetivo em Casos de Uso
menores ou decomposio funcional? Eu respondo que no. A tcnica de extrair um Caso de Uso
de dentro de outro s deve ser aplicada quando visar reutilizao do comportamento que est
sendo extrado. Como foi descrito no exemplo, o Caso de Uso Consultar Preo possua um
trecho de comportamento que j existia em Emitir Pedido, por esse motivo o Caso de Uso
Selecionar Produtos foi extrado. Se no existisse Consultar Preo, o comportamento de
selecionar produtos ainda ficaria dentro de Emitir Pedido.
Ou ento voc poderia perguntar: Agregaria algum valor para o usurio entregar o Caso
de Uso Selecionar Produtos isoladamente? Observe melhor o diagrama da figura 6, o Caso de
Uso Selecionar Produtos no est relacionado com nenhum Ator diretamente, assim sendo, ele
no pode ser utilizado fora de Emitir Pedido ou Consultar Preos. Deste modo, ele no pode ser
entregue sozinho para o usurio, o escopo no define que um Ator pode utiliz-lo diretamente.
Do mesmo modo, outro conceito que deve ser levado em considerao so as
dependncias no modelo UML. Exploraremos melhor este conceito no Captulo 4 - Diagrama de
Classes, adiantando, a linha tracejada que liga os Casos de Uso com o relacionamento include
significa que o elemento que est lanando a seta depende do elemento que est sendo atingido
pela seta. Assim, o Caso de Uso Emitir Pedido depende de Selecionar Produtos. Emitir
Pedido s pode ser testado e entregue aos usurios aps ou juntamente com Selecionar
Produtos. No possvel atingir o objetivo do Ator em Emitir Pedido sem Selecionar Produtos,
o mesmo acontece com Consultar Preos.
Aps a criao do relacionamento, o Caso de Uso Consultar Preos ficaria assim:
16
A mesma alterao se aplica ao Emitir Pedido:
17
Vamos continuar nossa anlise com o prximo Caso de Uso Consultar Pedido:
Julgando que o Caso de Uso estaria finalizado, o analista foi checar se a sua narrativa
estaria atendendo a todos os requisitos que o Caso de Uso deveria atender. Ele deixou escapar o
seguinte pargrafo dos requisitos:
O sistema dever permitir consulta do pedido por nmero ou atravs de uma lista de
pedidos por cliente, nesse ltimo caso, a lista dever ter todos os pedidos no faturados do cliente
em ordem cronolgica decrescente para seleo.
A narrativa que ele descreveu no atende a este requisito. O usurio pode escolher entre o
Caso de Uso do jeito que est e atravs de uma lista de pedidos do cliente. Usaremos um Fluxo
Alternativo para atender essa necessidade:
Nesse exemplo, o fluxo alternativo foi provocado por uma escolha do Ator no passo 3. O
fluxo do Caso de Uso foi desviado para A1 e aps esse desvio, voltou para o Fluxo Bsico ( veja o
passo A1 - 3.2). Assim, vemos que um Fluxo Bsico pode ser desviado para um Fluxo Alternativo
devido a uma escolha ou ao do Ator.
18
Fora o desvio causado pela escolha do Ator, existe somente mais um modo do fluxo do
Caso de Uso ser desviado: uma ocorrncia de sistema ou o estado do sistema. Imagine que o
nosso analista novamente achou mais um requisito do sistema que o Caso de Uso dele deveria
atender:
Pedidos cancelados no podem ser consultados.
Vamos criar mais um fluxo alternativo:
Nesse caso, no foi opo do Ator o desvio no passo 4 para A2, e sim o estado do pedido
dentro do sistema que provocou esse desvio.
Outra diferena que deve ser notada que A2 solicitou que fosse retornado para o passo 2
no fluxo bsico. J o fluxo alternativo A1 solicitou que o fluxo bsico continuasse. Uma outra
situao que pode ocorrer um fluxo alternativo solicitar que o Caso de Uso seja encerrado.
Vamos demonstrar:
19
Fluxo Alternativo A1 Consultar por Cliente
3. O Ator informa um cliente;
3.1. O Sistema exibe uma lista de pedidos do cliente selecionado em ordem cronolgica
decrescente;
3.2. O Ator seleciona um pedido do cliente; volta ao fluxo bsico;
O Fluxo A3, assim como o A2, ocorreu pelo estado do sistema (o sistema no possui
pedidos para consulta), e no por opo do Ator. O Fluxo A3 encerra o Caso de Uso.
IMPORTANTE: Note que em toda narrativa do Caso de Uso esto descritas vrias regras de
condies para que fluxos alternativos ocorram, mas voc no consegue encontrar em todo o texto
uma s ocorrncia da palavra se como: se o Ator fizer isso, ento ocorrer aquilo. Todas as
alternativas esto em forma de afirmao.
Casos de Uso bem descritos no possuem a palavra se para definir o rumo dentro dos fluxos
possveis. Toda ocorrncia da palavra se pode ser substituda por um Fluxo Alternativo para
permitir a decomposio de todos os caminhos possveis do Caso de Uso (cenrios). Cenrios so
importantes para a criao dos Casos de Teste que validaro a funcionalidade implementada. Os
cenrios extrados da narrativa para teste so TODAS as combinaes vlidas de caminhos
possveis. Todas as maneiras possveis de se navegar em um Caso de Uso so testadas.
20
Uma ferramenta importante para o entendimento dos Cenrios do Caso de Uso o
Diagrama de Atividades que ser explicado no Captulo 2. Somente para que o quadro acima seja
mais bem entendido, verifique o diagrama a seguir:
ad Consultar Pedido
inicio
A3 Passo 1
Passo 2
fim
Passo 3 A2 A1
Passo 4
fim
21
1.8. O que so cenrios?
Uma demonstrao importante para o entendimento dos Fluxos Alternativos do Caso de
Uso so os Cenrios. Veja a figura a seguir:
Essa ilustrao nos mostra o Fluxo Bsico como a seta preta. a maneira mais usual do
ator atingir o seu objetivo no Caso de Uso. As outras setas so os Fluxos Alternativos. Essas setas
avanam ou retornam no Fluxo Bsico ou encerram o Caso de Uso (ver o indicador X). Os
cenrios so todos os caminhos possveis que o Caso de Uso pode ter desde o Fluxo Bsico at
todos os Fluxos Alternativos combinados entre si.
Vamos verificar quais seriam alguns cenrios do Consultar Pedido.Analisando todas as
possibilidades dos caminhos que o Caso de Uso pode tomar, nesse exemplo simples, os cenrios
existentes so:
22
O cenrio 1 o mais simples, pois o prprio Fluxo Bsico. O cenrio 2 seria o seguinte:
23
importante ressaltar que a precondio um elemento opcional da narrativa do Caso de
Uso. O que descrevemos na precondio deve ser importante e agregar um valor observvel
anlise. Fazemos essa observao, pois muito comum achar alguns escritos "bvios" nas
precondies, veja alguns exemplos:
24
Essa tcnica permitiu a soluo do problema que eles tinham e abriu tambm outras
possibilidades importantes para os Casos de Uso. Mesmo para Casos de Uso ainda em
construo, possvel acrescentar vrios comportamentos simplesmente abrindo uma extension
point. Como um exemplo vale mais que palavras, vamos diagramar:
ud extension point
Aprov ar Pedido
Extension points:
help
{usurio selecionou "Help"}
Gerente de Vendas
extend
Consultar Help
Os usurios do sistema solicitaram que fosse criado um Help para o Caso de Uso
Aprovar Pedido. A qualquer momento em Aprovar Pedido o usurio poder selecionar o Help.
Assim, Consultar Help observa Aprovar Pedido, se a condio destacada {usurio selecionou
Help} for satisfeita o Caso de Uso Aprovar Pedido ir parar (simplesmente parar, e no
encerrar) e o Consultar Help iniciar. Quando Consultar Help for encerrado Aprovar Pedido
continuar de onde parou.
Para direcionar melhor o uso do relacionamento extend, podemos afirmar que voc
usar esta tcnica quando necessitar que a qualquer momento dada uma condio, o Caso de
Uso base dever ser interrompido e outro Caso de Uso dever assumir o controle.
Geralmente um extend utilizado quando o Caso de Uso que est estendendo (que
atira a seta) um servio assncrono que pode ser utilizado se a condio descrita ocorrer no
Caso de Uso base (que foi atingido pela seta).
Para exemplificar a narrativa, vamos descrever o Caso de Uso base:
25
Note como no existe qualquer meno ao Caso de Uso que est estendendo Consultar
Help, vamos descrev-lo:
Neste exemplo 2 do Caso de Uso, a condio {usurio selecionou Help} s seria avaliada
no passo 3.
26
1.11. Tpicos no abordados sobre Casos de Uso
Gerente
Notao alternativa para Casos de ud example Um caso de uso tambm pode ser
Uso retratado como retngulo.
Use Case
Aprov ar Pedido
extension points
help
Use Case1
Use Case2
Use Case3
27
Generalizao de Caso de Uso ud example A UML tambm permite que Casos
de Uso sejam generalizados,
porm, esta tcnica complica o
diagrama e o escopo para pessoal
Caso de Uso Genrico
no tcnico que desconhece o
conceito de herana. As formas
que existem de abordar essa
generalizao na narrativa tambm
complicada e difcil de manter.
Caso de Uso
Especfico
28