Академический Документы
Профессиональный Документы
Культура Документы
DO PROBLEMA AO SISTEMA
Caque Cardoso
Incluindo o ClassBuilder e
o DMS (Documento de
Modelagem do Sistema)
CINCIA MODERNA
Caque Cardoso
UML
na prtca
do problema ao sistema
EDITORA
CINCIA MODERNA
,,;:...:.
" '"
-l livro a minha mulher Rita pelo amor e compreenso e aos meus filhos Bruno e Carla por
1 ' MN
i oportunidades
' '1'Oltunidades que
aim tenho
tfinhnnara
anranHariTirvi
r, u r.
ifliw
para aprender
com eles.
Algumas Marcas Registradas aparecem no decorrer deste livro. Mais do que simplesmente listar esses
nomes e informarquem possui seus direitos de explorao, ou ainda imprimir os logotipos das mesmas,
o editor declara estar utilizando tais nomes apenas para fins editoriais, em benefcio exclusivo do dono
da Marca Registrada, sem inteno de infringir as regras de sua utilizao.
FICHA CATALOGRAFICA
Cardoso, Caque
UML na prtica: do problema ao sistema
Rio de Janeiro: Editora Cincia Moderna Ltda., 2003.
L inguagem de programao; modelagem de dados
l Ttulo
ISBN: 85-7393-232-5
DEDICATRIA
CDD 001642
SUMRIO
cio
i n 11RODUO
i i (:OMO O DESENVOLVIMENTO DE SOFTWARE HOJE
A ENGENHARIA DE SOFTWARE E O SURGIMENTO DA UML
ORIENTAO A OBJETOS
1,1 O OU E ?
M ; CLASSES, OBJETOS E INSTNCIAS
| i Al RIBUTOS E OPERAES
l Hl l ACIONAMENTOS
8.4.1 Herana
f.4.2 Agregao, composio e dependncia
. 4.3 Multiplicidade
1,5 POLIMORFISMO
8.5.1 Polimorfismo esttico
8.5.2 Polimorfismo dinmico
3 CAPTURANDO REQUISITOS
3,1 REQUISITOS DO CLIENTE X CLASSES DE PROJETO OU DO PROBLEMA AO
HISTEMA
II'.' COMO CAPTURAR OS REQUISITOS ?
;i,() REQUISITOS DE DADO
.'M GERENCIAMENTO DE REQUISITOS
M.!. EXEMPLO DE REQUISITOS
.15.1 ERaF0001.1 - Sacar dinheiro
3.5.2 ERaF0001.2 - Movimentar valores entre contas
3.5.3 ERaF0001.3 - Emitir extraio com saldo da conta
e extraio completo por perodo
3.5.4 ERal0001.4 - Propaganda dos produtos do banco
IX
1
1
2
5
5
6
7
7
8
8
9
10
10
10
13
13
13
14
15
15
15
16
16
16
VI
Sumrio
17
18
19
19
20
25
25
26
27
28
29
5.1 DEFINIO
5.2 CLASSES DE FRONTEIRA
5.3 CLASSES DE ENTIDADE
5.4 CLASSES DE CONTROLE
5.5 AVALIAO
29
30
31
32
32
6. DIAGRAMAS DE INTERAO
35
'HTE8
17
35
35
36
37
37
39
39
39
43
43
44
44
44
45
46
47
48
49
51
54
... 57
lu
59
INTRODUO
l IISTE DE CLASSE
1 1 ' . 1 1 D E STRESS
l USTE DE FUNCIONALIDADE
59
60
60
60
61
10,1 INTRODUO
l IML PARA SISTEMAS DE TEMPO REAL
M.', ; Cpsula
\o:>.2Port
10. '..'f Protocolos
IQ.HI XEMPLO: SISTEMA DE RECONHECIMENTO
i - i CHAMADA TELEFNICA
1 1 MODELAGEM DE COMPONENTES
l
i
i
i
i
VII
61
61
61
62
63
63
65
65
65
67
68
71
71
75
77
II ANEXOS...
81
PREFCIO
A l IML tem se tornado a cada dia um padro para anlise e projeto de software, mas quem
'iilo usa os diagramas da UML? Quem compreende quais as contribuies dos diagramas
o di .envolvimento? Alguns anos atrs, depois de muito tempo desenvolvendo projetos orieni ohjoto, fiz o primeiro contato com a UML e os diagramas e o que mais me impressionou foi o
mui do classes e a possibilidade da modelagem das classes e a gerao de cdigo (ou do
i< 'to" do cdigo) automaticamente e ainda podendo-se atualizar este mesmo cdigo sem perder
ii ilngom. O meu primeiro contato com ferramenta para UML foi justamente o ClassBuilder (includo
1 < |uo acompanha o livro) e que permite trabalhar com modelagem e engenharia reversa de uma
11 mito produtiva.
1
n, - .1. livro apresentada em cada captulo uma parte do PRISM (exceto o captulo 2, que apresen onceitos de Orientao a Objetos e que a base da UML e obviamente do PRISM) de forma
nclal, ou seja, se voc seguir captulo a captulo ir poder tomar contato com cada parte do
i Inutu ivolvimento.
A palavra "prtico" tem um significado muito especial, uma vez que a criao do PRISM foi feita
ii ido como referncia o conhecimento terico, porm sempre verificando a utilizao em projetos
< i.s, fazendo com que os conceitos fossem consistentes com o dia a dia de um grupo que trabalhe
i HM i li s:;i 'iivolvimento de software.
l INTRODUO
l l Como o desenvolvimento de software hoje
< > Insonvolvimento de software uma atividade extremamente complexa e subjetiva, pois envol! !< jia muito recente a aparente iluso de que tudo possvel de ser desenvolvido. Alm disso,
i In o rolacionamento entre clientes e desenvolvedores sem um procedimento definido, o que gera
MI lados e no raro leva a discusses que terminam em quebra de contrato e prejuzo para ambas
1
Caque Cardoso
l Ima tentativa de organizar o desenvolvimento foi a criao de um modelo estruturado e baseado
' i * in ii juagens como Cobol, Fortran, C entre outras. O desenvolvimento estruturado baseado no fluxo
i^uo do sistema e nele difcil a mudana aps o incio da implementao. O uso de um
I MI u i i In nunto estruturado no natural, o que dificulta muito a mudana e, via de regra, o cliente muda
i i iiiiio muitas vezes depois do incio do desenvolvimento, principalmente porfalta de conhecimento
IH i n K:I -ssidades reais do sistema que deseja utilizar ou da dificuldade de priorizar o que realmente
H n| i. M lante para o sistema.
lompos mais tarde, e tentando fazer com que o desenvolvimento fosse mais prximo do mundo
H ii. loi desenvolvida a tcnica de desenvolvimento orientado a objetos, onde dados e operaes
sfti i armazenados em classes que possuem um comportamento claro. As principais linguagens so
.lava e C++. As tcnicas de desenvolvimento vm evoluindo muito nos ltimos anos, o que
immiitiu o desenvolvimento de novas tcnicas e, mais recentemente, a criao de uma linguagem
yirtllca chamada UML (Unified Modeling Language), que ser apresentada de uma forma prtica
tmnlo livro.
impossvel desenvolver um sistema que satisfaa a todas as necessidades de uma s vez,
r i n K ipalmente se essas necessidades vo surgindo enquanto se desenvolve.
importante estar preparado para administrar e gerenciar as necessidades do cliente. mais fcil
ti M um modelo que preveja as mudanas e incluso de requisitos do que tentar congelar as necessidai lus em um determinado momento, ou seja, no d para escolher e definir o que o cliente precisa.
Alm do cliente, temos um problema na outra ponta, ou seja, a equipe de desenvolvimento. Uma
nxpresso que ouvi faz algum tempo diz que o desenvolvedor de software discpulo de Ivonsaf.
Imaginei que fosse mais um desses "papas" da engenharia de software, mas no. a sigla para a
"irresistvel vontade de sair fazendo". Isto talvez seja uma caracterstica normal engenharia, principalI1 n mie a novas engenharias, como a engenharia de software, em funo da facilidade de se iniciar um
Introduo
A 11M l , apesar de baseada em estudos com mais de 10 anos, bastante recente, o que faz com
iii! iii cursos e profissionais ainda no tenham tido tempo de adquirir o conhecimento e as
i i i IML no dia a dia do desenvolvimento. A UML apresentada como um conjunto de
i
MKIS finalidades, porm sem nenhuma ligao ou sequncia definida pela linguagem, o
nlirita o processo de desenvolvimento.
2. ORIENTAO A OBJETOS
2.1 O que ?
Iciscnvolvimento de software sofreu evolues que marcaram os rumos e geraram correntes
i desenvolvimento estruturado, que ainda hoje utilizado, principalmente para sistemas emH lou, porm o desenvolvimento estruturado artificial, ou seja, o desenvolvimento estruturado
1 1 raciocnio do desenvolvedor. Cada caso um caso especfico, o que torna difcil a formao
.noas com o mesmo conhecimento e tcnica, enfim, que falem a mesma lngua e, conforme o
' 11.1 cresce, fica cada vez mais complicada a manuteno e a continuidade do desenvolvimento.
l ima das correntes mais importantes e que tem evoludo muito o desenvolvimento orientado a
';, que se apresenta de forma mais natural, onde as responsabilidades so divididas entre
< >:; que se relacionam e se comunicam. Para exemplificar, podemos imaginar o desenvolvimento
i software que simulasse uma agncia bancria simples. Em um projeto estruturado, definirailijumas estruturas como, por exemplo, cliente, caixa e conta, que iriam armazenar os dados e,
, i lusenvolveramos mtodos que manipulariam estes dados para executar funes como pai ilo, retirada, depsito etc. O sistema se comporta em um looping, onde os mtodos so chama11 uma determinada sequncia para executar as operaes necessrias.
Atributos: onde so armazenados os dados do objeto. Como no caso da classe vaca, pode -i 11| ilificar o nome, a idade, a produo mdia de leite, entre outras.
ily
A UML criou uma notao especfica para representar uma classe e podemos ver o exemplo a
. mn
Nome da classe
Vaca
Atributos
- m_sNome: string
- m_ildade: int
- m jjProducaoMediaDeLeita: double
+ Vaca()
+ produziLeiteQ: double
Operaes
+ pastarQ: void
+ ruminar(): void
Classe
i
bvio que a classe vaca real bem mais complexa que o nosso modelo, porm o modelo deve ser
ulldente para a representao da classe, do ponto de vista de desenvolvimento de software ou do que
a l irotende que o sistema faa.
Objetos
2.4 Relacionamentos
Mimosa
Fartura
Malhada
Como foi dito anteriormente, os objetos se relacionam entre si e, como o que fazemos modelar os
i il i|otos, muito importante que os objetos possuam operaes que permitam o relacionamento. Imagino um objeto da classe fazendeiro que possui uma operao chamada retirar leite, que executado
i|iiando o fazendeiro se relaciona com o objeto da classe vaca, ou seja, importante que o modelo
contemple a operao produzir leite para a classe vaca, caso contrrio, este relacionamento no ser
possvel. A seguir so apresentados os principais relacionamentos entre classes.
2.4.1 Herana
mjdade : int
Mamlero()
Uma classe pode possuir um relacionamento de herana com outra classe. Nestes casos, dizemos
que a classe "me" menos especializada, ou seja, mais genrica e a classe "filha" mais especializada..ste relacionamento conhecido como " um tipo", ou " do tipo"; por exemplo, "vaca um tipo de
mamfero"; portanto, podemos dizer que a classe vaca possui um relacionamento de herana com a
classe mamfero, ou tambm, que a classe vaca derivada da classe mamfero. A representao de
um relacionamento de herana feito atravs de uma seta que vai da classe filha para a classe me,
como mostrado na figura a seguir.
m_sNome : string
m_dProducaoMediaDeLeite : double
l.moO
mliinil .ll() : double
Vacaf)
Virtual produzLeite() : double
pastarf) : void
ruminar() : void
Mamfero
- m ildade: int
+ MamiferoQ
+ Virtual produziLeiteQ: double
Vaca
.Irt uma dependncia quando uma classe depende de outra, porm isto ocorre esporadicamente
h n. u ilo a vida dos objetos. o exemplo da vaca e da vacina que ela recebe do veterinrio, ou o prprio
vnlwlnrio. Existe um relacionamento de dependncia entre a vaca e a vacina.
l -stes conceitos facilitam o desenvolvimento da modelagem, porm na maioria dos casos prticos,
n gorao do cdigo, que o que em ltima anlise estamos buscando, pode mudar pouco e isto ainda
IN n Io linguagem para linguagem, mas a compreenso do modelo fundamental para o desenvolvilo e comunicao entre os desenvolvedores. So os relacionamentos que iro determinar, a
i 'MM' ipio, as operaes que uma classe dever possuir para satisfazer ao relacionamento. Esta uma
ilmi lormas de se determinar quais operaes deveremos ter.
m_sNome: string
- m dProducaoMediaDeLeita: double
+ Vaca()
+ Virtual produziLeiteQ: double
+ pastarQ: void
,+ ruminarO : void
2.4.3 Multiplicidade
No relacionamento entre duas classes existe uma determinada multiplicidade. Por exemplo, um
trt/ondeiro pode possuir vrias vacas, portanto o relacionamento chamado ordenhar, que est
uxi nnplificado na figura a seguir, do tipo "1 para muitos". A princpio no se pode definir de antemo
i |i imitas vacas um fazendeiro ter que ordenhar, ento deixamos o relacionamento em relao vaca
com o smbolo "*" (que a notao de UML para muitos) e do lado do fazendeiro "1" que est em
iloslaque na figura a seguir. Existem outros relacionamentos possveis (todo fazendeiro tambm
mnmfero, por exemplo), mas que no so relevantes para o modelo. Devemos nos concentrar no
ci nnportamento que cada objeto deve ter para atender s necessidades do sistema.
Fazendeiro
- rrLsNome strinq
f FazendeiroQ
- retirarLeiteQ: double
Ordenhar
Vaca
- m_sNome: string
- m_dProducaoMediaDeLeite: double
O + Vaca()
10
2.5 Polimorfismo
- iX:int
- iA:int
Este conceito no de simples compreenso e vou mais uma vez vamos lanar mo de um
exemplo para explicar. Imaginemos uma classe chamada Data que armazena os dados de dia, ms e
ano, alm de hora, minuto e segundo, como mostrado a seguir.
+ Desenhar():void
11
FormaGeomtrica
- iY:int
-iLint
Esta classe possui uma operao chamada Desenhar, porm, como desenhar uma forma geom.') no sabemos exatamente como ela ? Esta operao chamada de operao abstraia (o que
>m que a classe FormaGeomtrica seja chamada de classe abstraa), ou seja, serve como
i icia, porm no implementada; a implementao fica a cargo da classe filha (classe derivada),
... P u i representado na figura a seguir.
iMinuto:int
iSegundo:int
AjustaData(Data:string):void
AjustaData(iDia:int, iMes:int, iAno:int):void
FormaGeomtrica
- iX:mt
- iY:int
-iLint
- iA:int
Ao chamar a operao AjustaData, a operao exata que ir ser executada depender dos
parmetros que so passados, ou seja:
E a classe que se relaciona com a classe Data no necessita saber os detalhes da operao
AjustaData, deve simplesmente usar a que melhor lhe convier.
A vantagem disso que a classe pode atender a vrios usurios da classe e cada um pode
"enxerg-la" de maneira diferente. Os objetos do mundo real tambm executam as mesmas atividades,
porm com formas de atender diferentes usurios, dependendo da forma como e quais "parmetros"
so passados.
+ Desenhar():void
Retngulo
+ Desenhar():void
Crculo
+ Desenhar():void
12
Imagine que temos dois objetos (ou instanciao da classe) Retngulo e Crculo e o ponteiro para
FormaGeomtrica:
Retngulo R;
Crculo C;
FormaGeomtrica "pFG;
U. CAPTURANDO REQUISITOS
void DesenharQ
{
pFG = &R;//Oponteiro aponta para o objeto retngulo.
pFG->Desenhar();// desenhado um retngulo.
pFG = &C;//Oponteiro aponta para o objeto crculo.
pFG->Desenhar();// desenhado um crculo.
A (ibteno dos requisitos no uma atividade trivial, uma vez que quem os fornecer muitas vezes
Min i :;;ibe exatamente como o sistema dever funcionar, ou seja, sabe qual o problema, mas no tem
li li i M lo como a soluo e por essas e outras razes que se deve dedicar uma ateno muito grande
>l>ter os requisitos. , normalmente, durante a obteno dos requisitos que os responsveis pelo
nvolvimento interagem com os problemas e necessidades do cliente e acabam conhecendo e
'i !' ! idcndo sobre o negcio no qual o sistema estar envolvido, o que fundamental.
O responsvel pelo desenvolvimento deve ser capaz e estar disposto.a mergulhar o mais profundo
pimtifvel nos problemas do cliente, j que muito mais difcil o cliente analisar do ponto de vista de
i Imionvolvimento de software. No se deve deixar nenhum tipo de requisito de fora do levantamento, por
mui que parea impossvel de realiz-lo no momento. Esta avaliao deve ser feita em um outro
11 n n i icnto e nestes casos deve ser negociado para que estes requisitos se transformem em requisitos
14
futuros, bvio que isto s possvel, caso estes requisitos no sejam prioritrios. Nesses casos,
deve-se deixar claro que este requisito ter urTimpacto muito grande no desenvolvimento do projeto,
devendo ter grande influncia no prazo de entregado sistema. .
Uma forma de facilitar a especificao dos requisitos dividi-los nos seguintes tipos:
15
Altssima
Alta
Mdia
Baixa
Baixssima
i minado requisito (que pode surgir a qualquer momento) ir criar um impacto no prazo final do
i M . ,|( >io. A documentao, identificao e anlise de risco associado ao requisito servem de base para
B yorncia de requisitos, a fim de minorar os problemas quanto mudana de requisitos. Este trabalho
fundamental, pois um erro neste ponto ir se propagar durante o projeto e gerar um srie de
pioblemas que, na maioria das vezes, leva ao cancelamento do projeto e ao reprojeto em novas
IMBOS, o que sempre desastroso, caro e desgastante tanto para o cliente quanto para a equipe.
16
Descrio do risco
Risco
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer
as informaes a respeito das contas do usurio.
e descritos.
17
Prioridade
Baixo.
Mdia.
Risco
Descrio do risco
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer
as informaes a respeito das contas do usurio.
Prioridade
Altssima.
Altssimo.
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer as informaes a respeito das contas do usurio.
Descrio do risco
Risco
Prioridade
Mdio.
Alta.
Risco
O sistema dever permitir apresentar propaganda dos produtos do banco quando o sistema de
caixa eletrnico no estiver em uso.
Descrio do risco
Prioridade
Altssimo.
O sistema~dever permitir que a qualquer momento do uso de uma opo (servio) do caixa
eletrnico, o usurio possa ser auxiliado no uso e nas informaes que esto sendo solicitadas.
Altssima.
Descrio do risco
Risco
A implementao no totalmente conhecida. Existe pessoal disponvel para o desenvolvimento e o prazo para
desenvolvimento razovel.
Prioridade
Baixo.
Alta.
16
Descrio do risco
Risco
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer
as informaes a respeito das contas do usurio.
e descritos.
17
Prioridade
Baixo.
Mdia.
Risco
Descrio do risco
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer
as informaes a respeito das contas do usurio.
Prioridade
Altssima.
Altssimo.
A implementao depende da definio da forma de comunicao entre o caixa e o sistema servidor que fornecer as informaes a respeito das contas do usurio.
Descrio do risco
Risco
Prioridade
Mdio.
Alta.
Risco
O sistema dever permitir apresentar propaganda dos produtos do banco quando o sistema de
caixa eletrnico no estiver em uso.
Descrio do risco
Prioridade
Altssimo.
O sistema~dever permitir que a qualquer momento do uso de uma opo (servio) do caixa
oletrnico, o usurio possa ser auxiliado no uso e nas informaes que esto sendo solicitadas.
Altssima.
Descrio do risco
Risco
A implementao no totalmente conhecida. Existe pessoal disponvel para o desenvolvimento e o prazo para
desenvolvimento razovel.
Prioridade
Baixo.
Alta.
18
Descrio do risco
Risco
Prioridade
Baixo.
Alta.
3.6 Avaliao
Os requisitos apresentados so alguns exemplos de requisitos para o desenvolvimento de um
sistema de caixa eletrnico e, neste caso, esto colocados somente os requisitos funcionais. Os
requisitos apresentados tm nveis diferentes de risco. O modelo apresentado neste livro (PRISM)
indica que devemos avaliar os requisitos de mais alto risco e eliminar o risco o mais rpido possvel. Por
exemplo, para o requisito ERaFOOO! .1 - Sacar dinheiro, deve-se desenvolver prottipos ainda na fase
de levantamento e especificao de requisitos e negociar com o cliente qual a melhor soluo encontrada para atender ao requisito antes de iniciar a fase de implementao do sistema (note que o risco deste
requisito est associado a outros requisitos). Alm dos requisitos de alto risco, deve-se desenvolver
prottipos de interface, ou seja, janelas de interface com o usurio para que possa ser avaliada pelo
cliente como uma prvia do produto final.
Uma vez especificados os requisitos (vale salientar que no necessrio obter e especificar todos
os requisitos do sistema, pode-se iniciar a determinao de use case em funo da estratgia de
desenvolvimento) inicia-se o processo de especificao de use case que foi introduzido por Ivar
Jacobson e que veremos com mais detalhes neste captulo.
4.1 Afores
Um ator qualquer pessoa ou sistema externo (SE) que tenha interao com o sistema que est em
desenvolvimento; o nome ideal seria papel e no ator, pois isto tem confundido alguns projetistas que
acabam identificando somente as pessoas que acessam o sistema e no levam em considerao que
outros SEs podem e devem ser representados como ator. Alm do nome, foi definido para a UML um
smbolo que ajuda nesta associao com pessoas interagindo com o sistema, como mostrado na figura
u seguir.
A identificao dos atores o primeiro passo para a criao de use cases, pois um ator representa
uma classe fora do sistema que se envolve de alguma forma com o mesmo. O uso do conceito classe
t'i Importante porque o ator no um objeto, ou seja, no uma pessoa (ou SE) em particular que ir
ulllizar o sistema, sim o papel que essa pessoa (ou SE) especfica ou conjunto de pessoas represenli ti n para o sistema.
Um ator pode ser representado atravs de um diagrama de especializao (ou generalizao)
mino utilizamos com classes. A figura a seguir representa um diagrama de atores com relacionamento do especializao. Neste exemplo, estamos identificando alguns dos possveis atores do caixa
20
MM identificarmos os atores do sistema, devemos iniciar a identificao das use case, de modo
.lorrnar os requisitos do sistema passado pelo cliente em algo que possa ser entendido pelo
< ilvodor. Esta passagem representa o elo de ligao entre o processo de desenvolvimento e
T.sidades do cliente. A identificao das use cases baseada nos requisitos no uma atividai.il, uma vez que cada sistema necessariamente diferente do outro, porm representa um
i do ponto de vista do processo de desenvolvimento, pois qualquer identificao, por mais
1.1 que seja, melhor do que nenhuma e, como o processo de desenvolvimento incremental,
M, o analista ter oportunidade de passar outras vezes por este trabalho, existe sempre a
i! iilidnde de se corrigir e aprofundar o detalhamento das use cases.
eletrnico de banco. Um ator o cliente do banco, porm temos neste caso trs tipos diferentes de
atores que derivam do ator genrico cliente de banco. So eles:
Cliente VIP
Cliente Especial
Cliente Padro
Estes clientes possuem papis comuns, porm em funo da forma de atendimento, existem
caractersticas que so especficas para cada tipo de cliente do banco e, por consequncia, do
caixa eletrnico.
21
Analisar e agrupar todos os requisitos do ponto de vista das funcionalidades (requisitos funcionais) do sistema a ser desenvolvido. Ou seja, imagine um ciclo completo de uso do sistema e
i lotermine quais requisitos esto associados a este ciclo.
l, Uma vez agrupados, determine quais atores interagem com este ciclo de uso.
I. Descreva o fluxo timo para este ciclo, ou seja, o fluxo onde nada de errado acontece e a
ontrada do ator levar ao resultado final sem erros ou problema.
Cliente do banco
4. Descreva os fluxos alternativos ou de exceo para este ciclo, ou seja, quando e onde algo
pode dar errado.
I.
Cliente VIP
/\e padro
Cliente especial
Figura 4.2 - Diagrama de especializao (generalizao) de atores.
O primeiro passo para identificar os atores realizado entre o analista e o cliente, que identificam os
usurios e os organizam em categorias (classes) de atores. Dois critrios so importantes para identificar um ator:
Deve ser possvel identificar pelo menos um usurio que represente o ator candidakvpois
isto ajuda a encontrar somente os atores relevantes e ignorar os atores imaginrios.
Deve existir um mnimo de sobreposio de papis entre os diferentes atores que se relacionam com o sistema. No devem existir dois atores com papis semelhantes em relao ao ,
sistema. Se isto ocorrer, devemos combin-los em um ator ou tentar utilizar a generalizao.
O analista, aps identificar os atores, deve dar um nome e fazer uma breve descrio dos papis
de cada ator no sistema., muito importante definir nomes que representem o maior nmero de papis
'de um determinado ator. Isto ir facilitar a identificao.
Use case
f
|
_JJm conjunto de funcionalidades de um sistema, representado por fluxos de eventos
l iniciados por um ator e apresentando um resultado de valor a um ator.
Caso o fluxo seja complexo, por exemplo, existe mais de um fluxo timo, necessrio
desenvolver um diagrama de atividades para este ciclo. Sempre que possvel interessante gerar um diagrama de atividades para demonstrar o fluxo de eventos graficamente.
, Partes de uma use case podem aparecer em outras use cases. Por exemplo, a use case para
Identificar o login do usurio analisando nome e senha. Desta forma, interessante dividir a use
case em partes para no repetir a descrio. Existem trs tipos de relacionamento entre use
cases, que so:
1. Herana: equivalente herana entre classes ou atores. As use cases podem
herdar o comportamento da use case da qual deriva.
2. Incluso: a use case que includa sempre executada, ou seja, o fluxo de eventos
desta use case sempre acessado.
3. Extenso: a use case estende o comportamento da use case, sendo que o fluxo de
eventos da use case pode ou no ser acessado.
() desenvolvimento dos seis itens apresentados representa os passos para a criao de uma use
i importante ao final da criao de cada use case reunir-se com o cliente no sentido de discutir se
i' M analisado est de acordo com as necessidades. As use cases e os prottipos, como as janelas
i iniorface com o usurio, fazem parte da primeira viso do cliente sobre o produto final e tm
IMI| i. MiAncia fundamental no desenvolvimento do projeto. No se deve tentar detalhar todas as use
.. M > n lusmo tempo. Da mesma forma que foi feito para os requisitos, deve-se determinar qual use
DAM fundamental para o incio do desenvolvimento do sistema e detalh-la ao mximo na primeira
(n A determinao de quais use cases sero trabalhadas deve ser feita pelo arquiteto do sistema,
p M M li >vo possuir uma viso completa do sistema que ser desenvolvido e que ir basear a avaliao
uiridades e riscos que iro compor a use case.
22
Considerando os atores do caixa eletrnicos, sabemos que uma use case Sacar dinheiro, portanto podemos descrev-la da seguinte forma:
'"" i-(:obidas
Aes realizadas
Breve descrio: esta use case responsvel pelo ciclo que se inicia quando o usurio solicita ao
caixa eletrnico o saque de dinheiro e se encerra, no fluxo timo, quando o usurio recebe o dinheiro e
o documento de saque.
Senha incorreta
A^Oim recebidas
Aes realizadas
Incio da use case: esta use case inicia quando o usurio solicita o saque de dinheiro do caixa
2. Avalia a senha.
3. Verifica que a senha no vlida e solicita
que o usurio digite novamente a senha.
eletrnico.
Fluxo timo
6. Solicita a senha.
4. Volta ao ponto 7 do fluxo timo e aps a terceira tentativa, o sistema informa que no poder mais executar qualquer operao com
este carto por um prazo de 24 horas.
Aes realizadas
(continuao)
Aes recebidas
23
Saldo insuficiente
AyOo recebidas
A quantia digitada pelo usurio.
Aes realizadas
8. Avalia a senha.
Fluxos alternativos
Carto invlido ou passado de forma incorreta pelo leitor
Aes recebidas
Aes realizadas
24
25
O usurio solicita o
\e de dinheiro
/'
V.
O terminal l os
Cliente do banco
\s do carto
Sistema central
Observaes:
Pura a use case "Sacar dinheiro" existem mais trs atores:
A senha digitada
incorreta
pelo usurio
Equipamento de liberao de dinheiro, que responsvel, como o prprio nome diz, pela
liberao das notas correspondentes ao valor solicitado pelo usurio.
A criao de use case de derivao ou incluso permite fragmentar uma use case e deve ser feito
luas situaes:
A quantia digitada
pelo usurio
Como j foi dito anteriormente, alm da derivao, as use cases podem ser divididas por incluso
i iso que sero detalhados a seguir.
\4t\m do fluxo
4.3.1 Incluso
A Incluso representa um fluxo de eventos que se repete em outras use cases. Desta forma,
|iimnlvol criar a use case uma nica vez e inclu-la nas outras que tenham o mesmo fluxo de eventos.
M 1 1 - ii iola de fluxo de eventos, quando for necessrio citar o fluxo, deve-se colocar o texto: incluir a
u i i .i:;o [Nome da use case]. Um exemplo o fluxo de eventos que avalia a senha do usurio do
nnlxn oletrnico. Esta use case ser utilizada por outras use cases do sistema e sempre ser
iiocirnsrio execut-la.
26
Sacar dinheiro
Sacar dinheiro
Cliente do banco
-fi
/
Cliente do banco
Sistema central
Sistema central
extend
include
\o insuficiente
Validar usurio
Figura 4.5 - Use case includa.
Figura 4.6 - Use case estendida.
Desta forma, o fluxo de eventos de "Verificar senha" ser independente da use case "Saca
dinheiro", porm includo nesta e se chama "Validar usurio".
AyOo recebidas
Use case Validar usurio
Aes realizadas
Aes recebidas
Aes realizadas
2. A senha solicitada.
4.3.2 Extenso
4,3.3 Derivao
A dnrivao entre use case semelhante derivao em classes, ou seja, a use case filha
.IB propriedades da use case me. Para exemplificar, imagine que tenhamos dois tipos de
u i do usurio. Uma seria atravs da senha e outra atravs de identificao das impresses
- i l < > usurio. Neste caso, temos a use case "Validar usurio" dividida em duas, como mostrain|uraaseguir.
Quando um fluxo de eventos faz parte de uma use case, mas nem sempre este fluxo executado,!
pode-se retir-lo da use case e coloc-lo como uma extenso da use case. Como ocorre para incluso,!
deve-se quebrar a use case, caso o fluxo de eventos se repita em outra(s) use case(s). Um exemplo!
seria a use case Saldo insuficiente, que no executada quando existe saldo na conta do usurio, j
Validar usurio
Verificar senha
28
4.4 Avaliao
A anlise dos requisitos e transformao em use case um passo muito importante, porque i
o ltimo contato do cliente com o sistema at que se inicie o desenvolvimento, por isso deve sei
discutido com o cliente e revisitado sempre que alguma dvida a respeito do sistema surgir!
Lembre-se que o fluxo de eventos que representa, na forma de tabela, um conjunto de requisitoaf
do cliente; portanto, pea que seja avaliado com o mximo critrio possvel. A subdiviso da usd
case depende do nvel de complexidade e deve ser avaliada quanto e se deve ser feita. A figura i
seguir mostra o diagrama completo da use case "Sacar dinheiro".
6. CLASSES DE ANLISE
r 1 Definio
Sacar dinheiro
Cliente do banco
fl
^ Sistema central
/ . , . \
/mclude\
Validar usurio
Saldo insuficiente
Verificar senha
'i a definio das use caseque atendem aos requisitos funcionais do cliente, o passo seguinte
i nu iiar a use case em classes de anlise. Classes de anlise representam uma abstrao de uma
"i classes de projeto e/ou subsistemas. As classes de anlise possuem as seguintes caracters M "liminares:
As classes de anlise representam o comportamento relacionado aos requisitos funcionais no
Inicio da anlise e vo adquirindo novas funcionalidades com a sequncia do projeto.
l
30
31
Observaes:
l xltlom mais trs classes de fronteira: uma que interage com a impressora que imprime o
mt;ll)o de liberao de dinheiro, outra responsvel por enviar as informaes para o equipainnnlo que libera o dinheiro e uma para a leitura do carto magntico, mas para facilitar a
nnpreenso e simplicidade do modelo, estas trs classes no sero modeladas.
Fronteira
Figura 5.1 - Smbolo para classe de fronteira.
Para o exemplo de use case "Sacar dinheiro", identificamos na primeira anlise que existem du
classes de fronteira que so:
.
Janela de interface com o usurio, que ir ser responsvel por obter e enviar informaes pari
o usurio.
Interface de comunicao com o sistema central, que ser responsvel por buscar informa
coes do cliente no sistema central, onde se encontram os dados dosicorrnTtstas:
Entidade
Figura 5.3 - Smbolo para classe de entidade.
Avnliando a use case "Sacar dinheiro" identificamos as seguintes classes de entidade:
Usurio, que responsvel por armazenar as informaes do usurio durante o processo de
tique de dinheiro no caixa eletrnico.
Carto, que responsvel por armazenar as informaes da conta e do carto do usurio
Uianto o processo de saque de dinheiro no caixa eletrnico.
Usurio
Conta
32
Controle
Sacar
Figura 5.6 - Exemplo de classes de controle.
5.5 Avaliao
chamada de realizao de use case a determinao das classes de anlise relacionadas a estl
use case e ao relacionamento entre estas classes. Este passo permite passar fase seguinte, deterf
minando os comportamentos do relacionamento entre as classes.
A figura a seguir mostra a realizao de use case "Sacar dinheiro".
Conta
Usurio
h
.Inniila de interface com o usurio
o sistema central
33
6. DIAGRAMAS DE INTERAO
i.1 As relaes entre as classes de anlise
l h na vez determinadas as classes de anlise devemos, tendo em mos os fluxos de evento das
i".os (e/ou um diagrama de atividades), trabalhar no relacionamento entre estas classes, ou
i, ontre os objetos de anlise, uma vez que o relacionamento existe entre objetos. Ou seja, na
iliiln iii,, 10 de classes e objetos, vimos que a classe vaca tem a propriedade de "produzir leite", porm
HUWIM produz mesmo a Mimosa ou a Malhada, por exemplo. Vaca uma classe e, portanto, abstraia,
IIHululo do raciocnio humano. No existe no mundo real e, portanto, no pode produzir leite. Neste
i ilo, estamos interessados nas mensagens que so enviadas de um objeto para outro e nos
>; realizados. Estas mensagens e servios esto, de alguma forma, descritas no fluxo de
, da use case. Esta fase , inclusive, importante para validar o fluxo de eventos e verificar se
ii n dos requisitos deixou de ser atendido pela use case. A UML define dois diagramas de interao:
Diagrama de sequncia
Diagrama de colaborao
36
de sequncia com este exemplo de instanciao. Quando o objeto envia uma mensagem a si
prprio isto representado por uma linha de ida e volta como no caso do exemplo da mensagem
chamada "automensagem" no objeto controlar. O diagrama de sequncia deve ser depurado ate
o momento onde todos os comportamentos necessrios e conhecidos foram representados nc
diagrama. E neste momento que iniciamos o processo de desenvolvimento das classes de
projeto. Porm no existe uma linha divisria, trabalha-se em um e em outro diagrama, deper
do das necessidades do desenvolvimento.
: Ator
Fronteira
Mensagem!
10: Automensagem
2: Mensagem 2
:Controlar 5:Mensagem!
: Ator 1
: Fronteira
: Fronteira
: Controlar
37
: Ator 2
:Entidade
8:Resposta2
-^
^
:Ent
Mensagem 3
mens
Mensagem 5
Respostas
Resf
Al
T
l
6.5 Avaliao
Como o diagrama de sequncia representa a "ponte" entre a anlise e o projeto, o seu uso
unental. Nas primeiras verses, o diagrama conter somente mensagens em texto, porm com
(lontinuao do trabalho, as mensagens vo se transformando em operaes da classe que est
imulo representada pelo objeto no diagrama.
A modelagem dinmica completa do sistema com todos os cenrios relevantes em conjunto com
i IN i lingramas de classe representam a documentao mais poderosa para se compreender e realiM - 1 implementao do sistema e, conseqentemente, para melhorias ou correes futuras.
lr
38
LJ
Sacar
V,
Carto
getMoneyO
passCardt)
. Validar carto
7. SUBSISTEMAS
Mensagem da Ern
Dados do Usurio
; Contai,^
siore
" ClienteO
l store()
checkPasswordO
7.1
.1 Desenvolvimento
Des(
paralelo
Com a criao do Diagrama de sequncia, possvel iniciar a implementao do sistema, porm
ompre possvel implementar todo o projeto simultaneamente. necessrio avaliares diagrama no sentido de dividi-los em partes que podem ser implementadas por grupos ou pessoas e para
:;istema deve ser dividido em pacotes ou subsistemas. Esta diviso no possui uma regra
' i iva. importante avaliar os recursos humanos e tcnicos (como subsistemas j existentes)
nveis para dar incio implementao do projeto.
Senha correia? ,
Redigitar senha
[Se>3bloqueiacartoj
Solicita valor
[Se senha correia]
. verityBalancel)
Existe saldo?
M
A administrao do desenvolvimento paralelo permite realizar um conjunto de tarefas simultne iii que se perca no trabalho. A definio de subsistemas permite definir a fronteira entre os
liai Milhos, de modo a garantir a no interferncia entre os subprojetos, ou seja, define-se um contrato
I|H i omunicao entre pacotes ou subsistemas que garanta um desenvolvimento adequado. Caso
n|n necessrio mudar o contrato, negocia-se novamente, porm mantendo sincronismo entre as
'iites partes do sistema.
; - Cliente()
7.2 Subsistemas
1 ' '.ubsistema um tipo especial de pacote. A grande diferena que um subsistema possui um
"rortamento definido, ou seja, tem responsabilidades claras e uma forma conhecida de ser
.u ia. A esta forma, d-se o nome de interface. Do ponto de vista de conceito, um subsistema
HS|I'I n meio caminho entre um pacote e uma classe. A figura a seguir mostra a representao para
(lllmliitemas na UML.
40
Captulo 7 - Subsistemas
41
subsytem
Subsistema
Interface
Sistema central
Interface
IHIO isolaria o acesso ao sistema central do banco, o que provavelmente ser utilizado por outnas
l" " em outras use cases.
Documentar os elementos.
importante definir uma lista de avaliao para verificar se todos os comportamentos necessric
foram atendidos.
As responsabilidades de um subsistema so representadas pelas operaes de interface quel
devem ser claras e bem definidas para facilitar a reutilizao e interessante que esta documen-l
taco seja focada nas responsabilidades e na interface, detalhando e exemplificando. desejvel}
desenvolver programas-exemplo que facilitem a compreenso do uso prtico do subsistema.
Os subsistemas devero ter ao final do desenvolvimento (assim como um sistema) os diagrama
de sequncia e classes de projeto com relacionamento entre as classes.
Um exemplo de subsistema para o projeto de caixa eletrnico e para a use case Sacar dinheiro
o que faz a interface com o sistema central do banco para buscar informaes do cliente do banco.l
8. CLASSES DE PROJETO
8.1 Classes de projeto
Uma vez trabalhado o diagrama de sequncia no sentido de levantar todas as possveis classes e
subsistemas que iro compor a use case, inicia-se a montagem das classes de projeto que represenInm o ltimo passo antes da gerao de cdigo. Vale lembrar que o aprofundamento do trabalho no
illnsjrama de sequncia vai depender da complexidade e do conhecimento tcnico. As classes foram
iniioduzidas no captulo Orientao a Objetos, porm neste captulo iremos analisar as classes do
ponto de vista de projeto, ou seja, como desenvolv-las a partir das use case, classes de anlise e do
i llnsjrama de sequncia.
Para identificarmos as classes de projeto devemos:
45
UML na prtica:
prtica: do problema,
problema ao sistema
UML
Uma classe deve possuir um propsito bem definido e deve ser responsvel por fazer uma coisa e
.lahom
faz-labem.
Sabemos que o aprofundamento do estudo do diagrama de sequncia ir gerar em ltima anlise
um conjunto de classes dos tipos: fronteira, controle ou entidade. Desta forma, importante estabelecer
critrios que facilitem a implementao destas classes. As estratgias para esta implementao esto
i :imos, a distribuio do controle pode ser muito complexa e seria necessrio dividi-la em duas ou mais.
Como foi colocado no tpico anterior, talvez as responsabilidades de algumas (ou todas) classes de entidade
l H iiisam ser transferidas s classes de controle.
A deciso do que fazer est relacionado com a complexidade, probabilidade de mudanas, performance,
i lltilribuio do comportamento ou gerenciamento da transao. As classes de controle podem tambm
i Ininparecer e se transformar em operaes em uma outra classe, normalmente de entidade.
apresentadas a seguir.
8.2 Operaes
Muitas operaes viro diretamente do diagrama de sequncia, que quanto mais trabalhado for,
tunls ir fornecer informaes que determinaro as operaes. No necessrio obter todas as
i iporaes diretamente do diagrama de sequncia, uma vez que outras operaes necessariamente
imo surgir da modelagem do diagrama de classes de projeto. E esta modelagem das classes de projeto
importante porque outras operaes sero descobertas atravs do estudo do comportamento da
lilusse, como:
Operaes de gerenciamento.
Clculos necessrios com os atributos da classe.
Operaes de teste.
Operaes internas que facilitem a compreenso e a distribuio das funcionalidades.
Uma caracterstica muito importante de uma operao o nome que deve ser apropriado, indicando
finalidade e levar em conta a perspectiva do cliente da classe, ser consistente e relativo responsahllldade da operao.
Deve-se tambm definir claramente a assinatura da operao. Por assinatura da operao, entenil-se os tipos dos parmetros (inteiro, string etc) e os prprios parmetros que so passados
uporao, alm do nome e tipo de retorno da operao. Deve-se definirse os parmetros so opcionais
> u no. Se forem, devero possuir um valor default (caso no se envie nenhum valor, este ser
> iiiii/,- ido). Por exemplo, int iValue=10, onde 10 o valor default. Deve-se definirse os parmetros devem
sm passados por valor, por referncia ou por ponteiro:
Por valor: o valor do parmetro o prprio parmetro. Deve ser utilizado quando se deseja
simplesmente utilizar o valor.
Por referncia: o valor passado o prprio parmetro, que poder ser alterado dentro da
operao. Este uso tem vantagens para parmetros (ou objetos) pequenos. Caso contrrio,
interessante a passagem de ponteiro.
Por ponteiro: o valor passado o endereo de onde est armazenado o parmetro. Deve ser
utilizado quando se necessita alterar o valor do parmetro dentro da operao.
No caso de muitos parmetros a serem passados para a operao, deve-se utilizar um objeto com
Indi >.' os dados que os representem e que permitam uma assinatura mais clara e limpa.
As operaes possuem visibilidade que permitem reforar o encapsulamento na classe e podem
BUI i Io trs tipos:
+ pblica: so operaes que podom ser acossadas por operaes de outras classes e que
representam a intorfnco d.i cl.iv.m um .r.. l. r.ss cliente (+ o smbolo da UML para operaes pblicas).
46
Classe
Classe
^OpPblicaO
PrivadaQ
A figura a seguir mostra uma classe com um exemplo de cada tipo de atributo. Neste exemplo, ao
Invs do caractere determinado pela UML, utilizado um cone que tambm previsto.
A figura a seguir mostra uma classe com um exemplo de cada tipo de operao. Nesi
invs do caractere determinado pela UML, utilizado um cone que tambm possvel
^Op ProtegidaQ
47
PblicaQ: void
ProtegidaQ: void
Privada(): void
Classe
Classe
j>Pblico
^Privado
"^Protegido
+ m_Pblico: int
>OpPblica()
<^5>OpProtegida()
p PrivadaQ
# m_Protegido: int
- m_Privado: int
+ PblicaQ: void
# ProtegidaQ: void
- PrivadaQ: void
Uma vez determinadas as operaes, deve-se definir os mtodos, ou seja, deve-se descrever e
implementar o corpo de uma operao. A palavra mtodo muitas vezes utilizada no mesmo sentido de
operao (o que a princpio no faz muita diferena), mas mtodo a construo da operao. Nesta
construo, devem ser avaliados algoritmos especiais, que outros objetos ou operaes sero utilizadas, como os atributos sero utilizados, como ser implementado o relacionamento entre as classes e
como isto reflete no mtodo.
8.3 Atributos
Normalmente, os atributos e as operaes de uma classe s iro existir quando a classe for
Instanciada, ou seja, se transforme em um objeto, porm existe a possibilidade de se ter um atributo ou
operao que seja relacionado com a classe. Um exemplo de atributo de escopo o mximo de um
i liilorminado valor; no sistema para Sacar dinheiro poderia ser o valor mximo retirado do caixa por vez
i iu o tempo mnimo entre um saque e outro. Nestes exemplos, estes valores no esto relacionados ao
olijoto e sim ao sistema. O mtodo que permitisse ler ou alterar um valor de escopo teria que ser
(Balizado por um mtodo de escopo.
A figura a seguir mostra um exemplo de varivel de escopo que na UML representado por um
tributo sublinhado. Como a varivel de escopo est associada com todo o sistema, ela pode ser
publica. Independente da criao ou no do objeto, este parmetro de escopo pode ser utilizado.
Classe
Classe
Os atributos possuem uma representao determinada por um nome, um tipo e um valor padro
(default) que opcional. importante na representao dos atributos seguir normas que facilitem a
<> Pblico
G<> Privado
^Protegido
+ m_Pblico: int
identificao.
Os atributos, assim como as operaes, possuem visibilidade que so:
+ pblicos: so atributos que podem ser acessados por operaes de outras classes. No
recomendado o uso de atributos pblicos, porque isto ir degradar consideravelmente o
encapsulamento da classe. Se houver necessidade de uma informao ou de alterar o valor de um '
atributo, deve-se desenvolver uma operao pblica que permita acessar o atributo (+ o smbolo
da UML para atributos pblicos).
# protegidos: so atributos que podem ser acessados pelas operaes da prpria classe e pelas
classes derivadas (especializao) (# o smbolo da UML para atributos protegidos).
- privados: so atributos que podem ser acessados somente pelas operaes da prpria classe,
sendo totalmente encapsulados (- o smbolo da UML para atributos privados).
^>OpPblica()
^>OpProtegida()
# m_Protegido: int
- m_Privado: int
+ m ESCOPO : int
Pblica(): void
# ProtegidaQ: void
- PrivadaQ: void
+
49
48
8.5.1 Dependncia
A dependncia se caracteriza por uma relao leve entre dois objetos, ou seja, a relao no
iiutrutural. Nos relacionamentos por instncia, existe sempre afigura do objeto fornecedor e do objeto
cliente, ou seja, um objeto ir fornecer um determinado servio que ser consumido pelo cliente. Para
determinar o tipo de relacionamento, importante avaliar como cliente e fornecedor se relacionam e
como o cliente visvel ao fornecedor.
l - _. ~l*n jf
no devem existir atributos pblicos.
Considerando o relacionamento de herana (especializao/generalizao), podemos demonstrar
Fornecedor 1
Um atributo da classe.
Na figura a seguir, Cliente tem um relacionamento de dependncia com o Fornecedorl, uma assouiao com o Fornecedor2 e esta a forma de representao na UML.
Fornecedor 2
cionamento.
Por classe: neste tipo, existe um relacionamento de herana (generalizao/ especializao)
entre as classes e, neste caso, o relacionamento no por objeto.
Fornecedor 1
50
51
Voidop1()
{
double dValue;
Fornecedor 1 Fornecedor;
Fornecedor.lerDadosQ;
dValue = Math.cos(SO);
Math
<fe cos (dAngle : double): double
Cliente
Uma classe utilitria uma classe de auxlio e normalmente no modelada, ou seja, no aparece
no modelo. Este relacionamento poder aparecer em vrias classes que ir poluir o diagrama. As
classes utilitrias so representadas na UML com o lado direito e inferior com uma faixa cinza.
A dependncia nem sempre deve ser modelada e isto deve ser avaliado para no poluir o diagrama
8.5.2 Associao
de classes de projeto.
Como j foi dito anteriormente, uma associao um relacionamento duradouro e pode ser dividido
nm composio e agregao. Em alguns casos, implementado como um atributo da classe e no
modelado. Em outros casos, modelado no diagrama (apesar de que na gerao de cdigo a mesma
coisa). importante determinar qual a navegabilidade, ou seja, que classe conhece a outra ou se as
duas classes se conhecem, ou seja, podem acessaros servios uma da outra e a multiplicidade que
ilotermina quantos objetos de uma classe est associada outra classe. Outra caracterstica importanlo determinar se necessrio o desenvolvimento de uma classe de associao que ser responsvel
polo relacionamento.
pFornecedor->lerDados();
8.5.2.1 Composio
Composio uma associao muito forte e representa que o tempo de vida entre os objetos
coincide. Uma f rase representa este relacionamento:
Cliente
Op 1 (pFornecedor: Fornecedor"!'
Um exemplo a classe rvore, que composta de galhos. Ento valeria dizer que um galho no vive
Miirn a rvore e isto verdade.
52
53
Uma classe de associao contm as propriedades do relacionamento, existindo uma instncia por
n ilacionamento. A classe de associao sugerida quando se tem uma associao mltipla (um para
muitos 1 -> *) para composio ou agregao. As classes de associao para este tipo de relacionainonto normalmente so listas de objetos e so responsveis pela passagem de parmetros entre os
i ibjetos e pela manuteno dos objetos nesta lista. Uma forma de implementar uma lista utilizar classes
parametrizadas (template) que so classes que definem outras classes e que so implementas em
li impo de compilao. Representam classes conhecidas como container, por exemplo: listas, pilhas,
lllus etc. Uma classe de template apresentada na UML como a seguir:
de quem.
Uma pergunta que se deve fazer se devemos utilizar atributos ou composio e devemos seguir
f argumento
as seguintes regras:
Usamos composio quando:
As classes necessitam de modelagem independente.
Classe parametrizada
8.5.2.2 Agregao
Uma agregao uma associao de fora mdia em que o tempo de vida no coincide e os objetos l
podem existir independentes um do outro. Como exemplo, podemos dizer que os pssaros esto agregados floresta, assim como s rvores (em tese, rvores e pssaros podem existir sem florestas).
1 para 1 (1 -> 1) - Um objeto de uma classe possui relacionamento com um objeto da outra
classe.
1 para muitos (1 -> *) ou (1 -> n) - Um objeto de uma classe possui relacionamento com vrios
objetos da outra classe.
Muitos para muitos (* -> *) ou (n -> n) - Muitos objetos de uma classe possuem relacionamento
com vrios objetos da outra classe. Esta opo deve ser evitada, optando-se por uma classe de
associao entre as classes de tal forma que temos:
Classe 1
Classe 2
^
n
Classe 1
n
A agregao representada na UML como um losango branco como mostrado na figura anterior. 9
importante ter em mente que o modelo representa um mundo real, mas sem expressar todos oa
detalhes do mundo real. Seria impossvel, portanto, modelar o que realmente importante para qud
possamos entender completamente o que se deseja do sistema. Use o bom senso sempre que estiver
modelando. No exagere nos relacionamentos, porm no deixe de fora relacionamentos importantes
para a compreenso, evoluo ou manuteno do sistema.
Classe associao
Hj.
Classe 2
55
54
8.5.2.4 Navegabilidade
IIIUCIUV.
A
que a
a ciaooc
classe w
de origem
tem visibilidade da classe destino e se no houver
A navegabilidade
navegabilidade indica
indica que
~, ,a *
-' -"'
a o. itra Um exemplo de composio bidirecional
direo identificada, as classes podem visualizar uma a outra. Um exemplo de com
de 1 para 1 pode ser implementado em C++ da seguinte forma:
c/ass Fornecedor
Floresta
.***--.
'-^
-v
prvate:
Arvore
*-'
Cliente *m_pCliente;
public:
){m_pC,iente=PC,iente};//Construtorcom,i9aocomo
clientel
c/ass Cliente
{
prvate:
Fornecedor *m_pFornecedor;
public:
Cliente(){
m_pFomecedor= new Fomecedorfthis);
//Construtor inicializando objeto do fornecedor
Cedro
Anjico
Jalob
Peroba
Uma classe muito ulilizada em generalizao a classe abslrala. Classes abslralas represenlam
otimportamentos genricos, mas se instanciarmos estas classes, elas no lm como implemenlaro
iiomporlamenlo. Para isso, ser necessrio que uma classe concreta faa o trabalho. Por exemplo,
abemos que uma rvore tem o comportamento de gerar frutos, porm, se formos instanciar a classe
Aivore, no saberemos como implementar este comportamento, s podemos criar a operao. Caso a
nliifise seja Jalob, esle comportamento conhecido.
Em C++ no existe o conceito de interface, por isso podemos utilizar classes abstraias para
Implementar uma interface.
};
Forma
-CHenteQ;
* abslracl draw()
O que indica que uma composio que o fornecedor no existe sem o cliente e bidirecional,]
porque ambos os objetos podem chamar mtodos de um para o outro. O relacionamento um para um, j
ou seja, um objeto de uma classe ter um objeto da outra classe.
8.5.3 Generalizao
Uma classe pode compartilhar a estrutura e/ou o comportamento de outra classe e este
compartilhamento chamado de generalizao que tambm conhecido como " um tipo de" ou " um",
ou seja, quando ao descrever a classe se utilizar esta expresso, provavelmente existir um relacionamento de generalizao entre as classes. Se utilizarmos o exemplo de florestas e rvores, sabemoj
que florestas so compostas por Jatobs, Cedros, Anjico, Peroba e por a vai. Estes exemplos so
todos tipos de rvore e Jatob uma rvore.
Quadrado
Crculo
Tringulo
^ drawQ
S>draw()
^draw()
57
V
Floresta
rvore
f
Anjico
*>
^>
Jatob
Galho
9. TESTES
9.1 Introduo
Desde o primeiro cdigo gerado, deve-se realizar e documentar os testes. Existem vrios estudos
e ferramentas para facilitar a execuo de testes que detectem o quanto antes os famosos "bugs"de
toftware, que podem comprometer todo o desenvolvimento e, conseqentemente, todo o produto,
l xiste um consenso que diz que todo software tem algum bug que pode nunca ser descoberto, porm
n funo do teste permitir que um sistema seja consistente e confivel o bastante para ser utilizado. O
Inste representa o final do ciclo (ou final do incremento) quando o executvel gerado. Os testes de
ilstema dependem fundamentalmente do tipo de sistema que est em desenvolvimento, por isso so
ugeridos trs tipos de teste que devem ser utilizados, dependendo do tipo de sistema. Para todos os
li As tipos de teste, deve-se preencher a seguinte tabela:
Responsvel:
Data:
Recursos necessrios:
Inclua a especificao de hardware e software da(s) mquina(s) envolvida(s) no teste.
Hardware
Configurao
Procedimentos:
Descreva os procedimentos para a execuo do teste.
Resultados:
Doscreva os resultados obtidos ao final do teste.
Software
60
atribudas.
Para este fim so desenvolvidos mtodos especficos para teste, que devem ser diferenciados dos
demais com, por exemplo, a incluso da palavra test antes do nome do mtodo. A criao de mtodos
especficos para teste facilita que aps cada incremento os testes sejam repetidos para verificar se o
10.1 Introduo
9.4
^.4 Teste de funcionalidade
funcionalidade
O teste de funcionalidade L "---*-)<-
baseado r\oc
nas llfif*
use Cf
cases desenvolvidas para o sistema. Os fluxos d<
evento timos e alternativos so aplicados ao sistema, a fim de garantir o funcionamento de acordo cort
as use cases (ou requisitos funcionais) trabalhadas no incremento, que se est finalizando e repetindc
para as use cases, ou test case, dos incrementos anteriores, se for o caso. A utilizao de use cs
para testes normalmente chamada de test case, ou caso de teste, o que, na prtica, representa utiliz;
os fluxos de eventos das use cases e verificar se o sistema os atende.
63
62
:
r
?i ;
Protocolo
1
Entrada
| Diagrama de sequncia ]
Mquina de estado
1 ..*
1 ..*
| Tipos de protocolo |
<->
Cpsula
11
Sinal
1..*
|'Oi
Sada
l 0 ..*
Cpsula
0..*
0..*
Class< passiva
Port
Figura 10.1 - Cpsula.
10.2.2 Port
Prximo nmero (O a i
| Considera-se:
| Caractere OxOA -> Ring
Caractere 0x06 > Fim de nmero
Caracteres 0x00 a 0x09 -> Nmeros de telefone
Figura
10.2.3 Protocolos
O protocolo uma lista de tipos de mensagem de entrada e de sada que pode seguir um padr
definido, padro aberto ou pode ser proprietrio, ou seja, desenvolvido pelo dono do sistema. C
protocolos proprietrios devem ser cuidadosamente documentados, uma vez que no existe outro loc
onde esta informao possa ser encontrada.
11.2 Componentes
Os componentes so as partes reais que compem o produto como, por exemplo, arquivos
nxocutveis, bibliotecas como DLL, ActiveX, componentes COM, COM+ ou DCOM ou, ainda, componentes Java como, por exemplo, JavaBeans ou Java Enterprise Beans. Estes componentes so
losponsveis pelo funcionamento do sistema, principalmente quando se trata de um sistema que
funciona em camadas, em especial sistemas para Internet e como o desenvolvimento de sistemas
illiitribudos para este ambiente est crescendo a cada dia (principalmente com o surgimento de
Incnologias como .NET e J2EE). fundamental a modelagem dos componentes para facilitar a distribuiVto do comportamento das use cases, o que ser apresentado em detalhes mais adiante. O momento
11 lazer esta modelagem vai depender do conhecimento das necessidades do sistema, o quanto antes
imilhor, porm talvez seja necessrio aprofundar o desenvolvimento para definir o modelo de compoiitmtes. s vezes, necessrio realizar o primeiro incremento para definir corretamente este modelo.
68
layer
Cliente
69
layer
Cliente
layer
Middleware
layer
Server
Em f u
(que originalmente estavam na camada servidor) que podem estar em qualquer lugar
Lso da camada server (como mostra a figura a seguir) em duas partes.
. camada de negcio, que responsve, pelo tratamento dos dados que so env,ados ou rece-
bidos do cliente e
camada de dados, que responsvel pela interface com o repos,tor,o de dados.
70
73
72
Sistema: o sistema a concluso da montagem de cada cdigo gerado e testado em cada ciclo
de desenvolvimento. Cada ciclo ser responsvel por uma parte de cdigo (testado o mximo
possvel), que adicionado ao cdigo j existente, testado e, ao final, quando todas as use
cases forem realizadas ou todos os requisitos forem atendidos, representa o sistema.
Modelagem de sistemas de tempo real: normalmente, os sistemas que dependem de informaes de um outro sistema, principalmente se esse outro sistema representar um hardware
dedicado com um firmware, ser necessrio desenvolver um diagrama de estado que fornecer a viso de comportamento dinmico do objeto relacionado com estas informaes.
~~~
A figura a seguir mostra um diagrama de atividades com todas as atividades de cada fase do PRISM
e quais diagramas sero gerados em cada fase e ainda como feita a ligao entre os diagramas, ou
seja, qual diagrama serve de entrada na construo de um outro.
74
75
79
[39] Rosemberg, D., Scott, K., "Driving Design with Use Cases", Software Development Magazine,
2000, On-line de http://www.sdmagazine.com
http://www.sdmagazine.com
[17] Fowler, M. "The New Methodology", Martin Fowler web site, 2001, On-line de http://
[40] Rosemberg, D., Scott, K. "GiveThem WhatThey Want", Software Development Magazine,
2001, On-line de http://www.sdmagazine.com
www.martinfowler.com
[18] Fowler, M., Scott, K.,"UMLDistilled", Addison-Wesley, 1998
[19] Fleisch, W., "Applying Use Cases for the Requirements Validation of Component-Based RealTime Software", lEEETransaction Software Engineer, 1999, pp. 75-84
[41] Rosemberg, D., Scott, K., "Sequence Diagram: One Step at aTime", Software Development
Magazine, 2001, On-line de http://www.sdmagazine.com
[20] Gamma, E., Helm, R., Johnson, R.Vlissides, J., "Design Patterns",, Addison-Wesley, 1997
[43] Rosemberg, D., Scott, K. ,'TopTen Use Case Mistakes", Software Development Magazine,
2001, On-line de http://www.sdmagazine.com
[21] Hantos, R, "A Systems Engineering View of Requirements Management for Software-intensive
Systems", lEEETransaction Software Engineer, 1999, pp.620-621
[22] Henderson-Sellers, B., Collins, G., Graham, l."UML-Compatible Process", lEEETransaction
Software Engineer, 34th Hawaii International Conference on System Sciences, 2001.
[42] Rosemberg, D., Scott, K.,"Successful Robustness Analysis", Software Development Magazine, 2001, On-line de http://www.sdmagazine.com
[44] Rumbaugh, J., Blaha, M. Premerlani, W., Eddy, F, Lorensen, W., "Object-Oriented Modeling and
Design", Prentice Hall International Editions, 1991.
[23] Heverhagen.T.Tracht, R., "Implementing Function Block Adapters", Rational Corporation, 2001,
[45] Saeki, M, "Reusing Use Case Descriptions for Requirements Specification:Towards Use Case
Patterns", lEEETransaction Software Engineer, 1999, pp.309-316
On-line de http://www.rational.com
[24] Jeffries, R., "RecordMap, Test First", X Programming, XP Magazine, 2002, On-line de http://
[46] Sawyer, R, Sommerville, l., Viller, S., "CapturingThe Benefits of Requirements Engineering",
lEEETransaction Software Engineer, 1999, pp.78-85
www.xprogramming.com
[25] Jeffries, R., "XP and Reliability", X Programming, XP Magazine, 2001, On-line de http://
[47] Schneider, G., Winters, J., "Applying Use Cases", Addison-Wesley, 2001.
www.xprogramming.com
[26] Kiedaisch, F., Pohl, M., Bauer, S. Ortmann, S., "Requirements Archaeology: From Unstructured
Information to High Quality Specifications", lEEETransaction Software Engineer, 2001, pp. 304-305
[27] Keuffel, W. ,"Best Practices Actually Applied", Software Development Magazine, 2000, On-line
de http://www.sdmagazine.com
[28] Korson, M. "Constructing Useful Use Case", McGregor Korson web site, 2000, On-line de http:/
/www.korson-mcgregor.com
[29] Kruchten, P., 'The Rational Unified Process, an Introduction", Addison-Wesley, 2000.
[30] Larman, C., "Utilizando UML e Padres", Bookman, 2000
[31] McConnelI, S., "Rapid Development", Microsoft Press, 1996
[32] McGregor, J., Major, M., "SelectingTest Case Based on User Priorities", Software Developme
Magazine, 2000, On-line de http://www.sdmagazine.com
[54] Unified Modeling Language Specification Version 1.3, Object Management Group (OMG), 1999
[56] Wiegers, K., "Karl Wiegers Describes 10 Requirements Traps to Avoid", Process Impact,
Software Testing & Quality Engineering, 2000, On-line de http://www.processimpact.com
2001
[35] Paulk, M., Weber, C. Curtis, B., Chrissis, M., 'The Capability Maturity Model", Addison-Wesley,
[57] Wiegers, K., "Writing Quality Requirements", Process Impact, 1999, On-line de http://
www.processimpact.com
1997.
[36] Phillips, C., Kemp, E., Sai, K., "Extending UML Use Case Modeling to Support Graphical User
Interface Design", lEEETransaction Software Engineer, 2001, pp.48-52
[37] Pressman, R., "Software Engineering", McGraw-Hill, 2001
[38] Rosemberg, D., Scott, K., "Driving Design:The Problem Domain", Software Development Magazine, 2001, On-line de http://www.sdmagazine.com
[55] What Is OMG-UML And Why Is It Important, OMG, 2001, On-line de http://www.omg.org
14. ANEXOS
Neste anexo, est a base do documento a ser utilizado durante o desenvolvimento do sistema.
chamado Documento de Modelagem de Sistema - DMS, que acompanha todo o projeto do sistema e
serve de referncia para futuras melhorias. O DMS totalmente baseado no texto apresentado neste
livro. O documento para Word est no CD do livro.
Verso:
[NOME DO SISTEMA]
[AUTORES]
TABELA DE REVISES
Esta tabela contm um histrico das revises do documento. As entradas na tabela abaixo servem
apenas como carater ilustrativo. As demais entradas devero ser apagadas at que a reviso a que ela
se referir tenha sido criada.
Verso
principais autores
descrio da verso
data de trmino
V[x.x]
[nome]
[descrio da verso]
[dd/mm/aa]
V[x.x]
[nome]
[descrio da verso]
[dd/mm/aa]
PREFACIO
O prefcio contm uma introduo ao documento e principalmente ao sistema que est em
desenvolvimento.
NDICE
Este ndice foi criado de forma automtica. Caso voc tenha alterado, criado ou retirado algum item
do corpo deste documento, atualize-o posicionando o cursor em qualquer lugar do ndice e pressione a
tecla F9. Se voc deseja que este documento seja fcil de ser mantido, nunca altere o contedo deste
ndice de forma manual.
1. LISTA DE FIGURAS
91
2. LISTA DE TABELAS
93
3. INTRODUO
95
3.1 FINALIDADE
3.2 ESCOPO
3.3 DEFINIES, ACRNIMOS E ABREVIATURAS
3.4 REFERNCIAS
3.5 DETALHES DO SISTEMA
4. ESPECIFICAO DE REQUISITOS
4.1 ESPECIFICAO DOS REQUISITOS
4.1.1 ER[fla][FIDIIIN].N
95
95
95
96
96
97
97
97
99
99
99
99
99
100
100
103
..103
90
7. PERSISTNCIA DE DADOS
7.1 DADOS DA TABELA N
8. CLASSES DE ANLISE
8.1.1 Classes de anlise da [Nome da Use Case N].
9. CAMADAS E PACOTES
9.1.1 Diagrama de camadas (ou pacotes)
9.1.2 Camada (ou pacote) [Nome da camada (ou do pacote)]
10. COMPORTAMENTO DINMICO
10.1 DIAGRAMAS DE SEQUNCIA DA USE C4SE[NOME DA USE CASE]
10.1.1 [Nome do Diagrama de Sequncia N]
105
,105
.107
.107
.109
111
111
111
113
115
1. LISTA DE FIGURAS
109
109
115
...117
117
117
118
119
119
119
120
Sempre que for inserida uma nova figura ao documento, ela dever possuir uma legenda do tipo
figura, para que este ndice possa ser atualizado corretamente. Para atualizar este ndice de figuras,
coloque o cursor em qualquer lugar da mesma e pressione a tecla F9. Se voc deseja que este ndice
seja fcil de ser mantido, nunca o altere manualmente.
101
105
2. LISTA DE TABELAS
Sempre que for inserida uma nova tabela ao documento, ela dever possuir uma legenda do tipo
tabela, para que este ndice possa ser atualizado corretamente. Para atualizareste ndice de tabelas,
coloque o cursor em qualquer lugar da mesma e pressione a tecla F9. Se voc deseja que este ndice
seja fcil de ser mantido, nunca o altere manualmente.
Esta seopode ser excluda se o documento no contiver tabelas.
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
99
102
105
107
119
121
121
122
3. INTRODUO
Este tpico descreve uma viso geral de todo o documento. Nenhum texto necessrio entre este
item e o prximo, a menos que necessrio.
3.1 Finalidade
Descreva a finalidade a que se prope este documento e seu pblico alvo.
O texto abaixo serve de base, podendo ser alterado, se necessrio.
Este documento apresenta a modelagem do sistema <nome>, utilizando como referncia o
livro UML na prtica: do problema ao sistema. O pblico alvo deste documento inclui pessoas
envolvidas com o desenvolvimento (analistas de sistemas e programadores), testes do sistema e avaliadores do projeto.
3.2 Escopo
Inclua uma breve descrio sobre a aplicao deste documento; o que ser afetado ou influenciado
por este documento.
O texto abaixo serve de base, podendo ser alterado, se necessrio.
O Documento de Modelagem de Sistema prov uma viso completa dos modelos do sistema <nome>. Ele produzido e utilizado pelos desenvolvedores da equipe para documentar os
requisitos, modelos e arquitetura do sistema.
96
3.4 Referncias
Liste todos os documentos e outros materiais referenciados neste documento. Esta seo similat
a uma bibliografia.
4. ESPECIFICAO DE REQUISITOS
II!
il
tpico.
4.1.1 ER[fla][FIDIIIN].N
Preencha a tabela de especificao para cada requisito levantado junto ao cliente do sistema.
Consulte o livro para tirar dvidas de como preencher as tabelas.
ER[fla][FIDIIIN].N
Descrio
Descrio do risco
Risco
D um
qualificador
para o risco.
Ex:.altssimo.
Prioridade
D um
qualificador
para a
prioridade.
Ex:altssima.
98
(continuao)
e use cases.
100
Fluxo alternativo N
Aes recebidas
(continuao)
Aes realizadas
Descrio
Requisitos associados
Liste os requisitos que esto sendo atendidos por esta use case.
Se existir uma ou mais pr-condies, descreva-as aqui.
Ps condies
Atores
101
6. INTERFACES
Uma interface uma descrio lgica e conceituai de como uma ou mais use cases so providas
pela interface do usurio, se foro caso, incluindo a interao requerida entre o(s) ator(es) e o sistema.
Em geral, janelas representam as interfaces necessrias para entender, do ponto de vista macro, os
requisitos da interface do usurio.
1.1 Interface N
Requisitos relacionadas com a interface
Faa o desenho das interfaces grficas referenciando os campos com etiquetas como no exemplo
abaixo.
|x
Cadastro do usurio
Nome do usurio:
e-mai):
rQ]
H]
'[H]
TEJ
Senha:
Confirmar senha:
Cadastrar
"*[LiJ
Cancelar
'f 12.
104
7. PERSISTNCIA DE DADOS
Esta seo descreve o armazenamento dos dados do sistema que devem ser persistidos e, de
uma maneira geral, a organizao destes dados em tabelas, vises, ndices e procedimentos usados
para manter a persistncia do sistema.
Esta seo opcional para aqueles sistemas onde h pouco ou nenhum dado persistente.
8. CLASSES DE ANALISE
Este tpico dever apresentaras classes de anlise para cada use case.
Consulte o captulo 5 do livro para saber mais detalhes sobre classes de anlise
9. CAMADAS E PACOTES
Este tpico dever apresentar as camadas e pacotes determinados para o sistema. Caso no
exista, o tpico deve ser suprimido.
Este tpico dever apresentares diagramas de classe que representem o comportamento esttico
das classes de anlise.
13. TESTES
Este tpico dever apresentar os tipos de testes a serem aplicados, os recursos e os procedimentos necessrios para a execuo do teste do componente em questo. Consulte o captulo 9 do livro
para saber mais detalhes sobre tipos de teste e como execut-los.
Responsvel:
Data:
Nome do mtodo:
Inclua o nome do mtodo que ir testara classe. Este nome deve comear com a palavra "tesferr
letra minscula, seguido do nome da classe. Suponhamos, por exemplo, que a classe a ser testado
se chame "Line". Ento o mtodo para o teste ter o nome "testLine".
118
Testes
Procedimentos:
119
(continuao)
Inclua, se necessrio, uma breve descrio sobre a aplicao do teste; o que ser afetado ou
Influenciado por este documento.
Resultados:
Descreva os resultados obtidos ao final do teste.
Para executar o teste, utiliza-se o Fluxo de evento principal, completando a tabela abaixo:
Responsvel:
Data:
Recursos necessrios:
Inclua a especificao de hardware e software da(s) mquina(s) envolvida(s) no teste.
O programa de teste deve ser includo na coluna relacionada ao Software.
Hardware
Configurao
Software
Final:
Responsvel:
Inclua o nome da pessoa responsvel pela
execuo do teste.
Incio:
Inclua a data e a hora Inclua a data e a hor
de incio do teste n final do teste no formata,
formato dd/mm/aa - dd/mm/aa - hh:mm.
hh:mm.
Procedimentos:
Descreva os procedimentos para a execuo do teste.
Resultados:
Recursos necessrios:
Inclua a especificao de hardware e software da(s) mquina(s) envolvida(s) no teste. interessante
desenvolver um programa de teste especialmente para este fim. O nome do programa poder ser c
mesmo do componente a ser testado, acrescido da palavra Tester".
Hardware
Configurao
Software
Procedimentos:
Descreva os procedimentos para a execuo do teste.
Responsvel:
Data:
Resultados:
Recursos necessrios:
Inclua a especificao de hardware e software da(s) mquina(s) envolvida(s) no teste.
O programa de teste deve ser includo na coluna relacionada ao software.
120
Hardware
Configurao
Software (continuao)
Procedimentos:
Descreva os procedimentos para a execuo do teste.
Resultados:
Descreva os resultados obtidos ao final do teste.
Tabela 7 - Teste de funcionalidade do Fluxo de evento alternativo [N].
Responsvel:
Data
Recursos necessrios:
Inclua a especificao de hardware e software da(s) mquina(s) envolvida(s) no teste.
O programa de teste deve ser includo na coluna relacionada ao Software.
Configurao
Hardware
Software
Procedimentos:
Descreva os procedimentos para a execuo do teste.
Resultados:
Descreva os resultados obtidos ao final do teste.
Tabela 8 - Teste de funcionalidade do Fluxo de evento exceo [N].