Você está na página 1de 18

Princpios de anlise

e projeto de sistemas
com
UML
Eduardo Bezerra

Princpios de anlise
e projeto de sistemas
com
UML
Consultoria Editorial

Lorenzo Ridolfi
Gerente Snior Accenture

Srgio Colcher
Professor do Departamento
de Informtica da PUC-Rio

3 edio totalmente revista e atualizada


2 edio totalmente revista e atualizada
2015, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.


Nenhuma parte deste livro, sem autorizao prvia por escrito da editora, poder ser reproduzida ou transmitida,
sejam quais forem os meios empregados: eletrnicos, mecnicos, fotogrficos, gravao ou quaisquer outros.

Copidesque: Gabriel Pereira


Editorao Eletrnica: Mojo Design

Elsevier Editora Ltda.


Conhecimento sem Fronteiras
Rua Sete de Setembro, 111 16o andar
20050-006 Rio de Janeiro RJ
Rua Quintana, 753 8o andar
04569-011 Brooklin So Paulo SP

Servio de Atendimento ao Cliente


0800 026 53 40
atendimento1@elsevier.com

ISBN: 978-85-352-2626-3
ISBN (verso digital): 978-85-352-2627-0

Nota: Muito zelo e tcnica foram empregados na edio desta obra. No entanto, podem ocorrer erros de digitao,
impresso ou dvida conceitual. Em qualquer das hipteses, solicitamos a comunicao nossa Central de
Atendimento, para que possamos esclarecer ou encaminhar a questo.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens,
originados do uso desta publicao.

Cip-Brasil. Catalogao-na-fonte
Sindicato Nacional dos Editores de Livros, RJ
B469p
3. ed.
Bezerra, Eduardo, 1972-
Princpios de anlise e projeto de sistemas com UML / Eduardo Bezerra.
- [3. ed.] - Rio de Janeiro : Elsevier, 2015.
416 p. : il. ; 24 cm.

ISBN 978-85-352-2626-3

1. Mtodos orientados a objetos (Computao). 2. UML (Computao).


3. Anlise de sistemas. 4. Projeto de sistemas. I. Ttulo.

14-18048 CDD: 005.117 CDU: 004.414.2


Agradecimentos

J se passaram 12 anos desde o lanamento da primeira edio deste


livro. Durante todo esse tempo, diversas pessoas me ajudaram a esclare-
cer meu entendimento sobre os assuntos de que trato neste livro. A todas
elas, devo meus sinceros agradecimentos. Comeo por agradecer aos diversos
leitores das duas primeiras edies, que contriburam com crticas e sugestes
para o melhoramento da mesma. Agradeo tambm a meus alunos, nas diver-
sas instituies de ensino pelas quais passei. Certamente a tarefa de professar
uma das melhores maneiras de aprender. Devo agradecimentos tambm a
todos os meus colegas professores com os quais troquei ideias e ensinamentos
sobre o problema da modelagem de sistemas de software: Ronaldo Goldschmidt,
Carmem de Queirz, Jorge Soares, Ismael Humberto, Leandro Chernicharo,
Ricardo Choren, dentre outros. Obrigado tambm equipe editorial da Elsevier,
por toda a pacincia e profissionalismo durante o tempo em que trabalhamos
na produo desta edio. Finalmente, e no menos importante, agradeo a
toda a minha famlia, pelo carinho e incentivo. Em especial, agradeo a meus
irmos, Jos, Edmar, Emanuel e Helton, minha querida esposa Aline, ao meu
filho, Felipe, e ao Janu.
Sumrio

Prefcio XIII

1 Viso geral1
1.1 Modelagem de sistemas de software2
1.2 O paradigma da orientao a objetos4
1.2.1 Classes e objetos7
1.2.2 Operao, mensagem e estado7
1.2.3 O papel da abstrao na orientao a objetos8
1.3 Evoluo histrica da modelagem de sistemas13
1.4 A Linguagem de Modelagem Unificada (UML)15
1.4.1 Vises de um sistema 16
1.4.2 Diagramas da UML 17

2 O processo de desenvolvimento de software21


2.1 Atividades tpicas de um processo de desenvolvimento 22
2.1.1 Levantamento de requisitos 22
2.1.2Anlise 26
2.1.3 Projeto (desenho)29
2.1.4Implementao 30
2.1.5Testes 30
2.1.6Implantao 31
2.2 O componente humano (participantes do processo)32
2.2.1 Gerentes de projeto32
2.2.2Analistas32
2.2.3Projetistas 34
2.2.4 Arquitetos de software 34
2.2.5Programadores 34
2.2.6 Especialistas do domnio35
2.2.7 Avaliadores de qualidade 36
2.3 Modelos de ciclo de vida 36
2.3.1 O modelo de ciclo de vida em cascata 36
2.3.2 O modelo de ciclo de vida iterativo e incremental 38
VIII princpios de anlise e proje to de sistemas com uml 3/E

2.4 Utilizao da UML no processo iterativo e incremental 42


2.5Prototipagem42
2.6 Ferramentas CASE43

3 Mecanismos gerais47
3.1Esteretipos 47
3.2 Notas explicativas 48
3.3 Etiquetas valoradas (tagged values) 49
3.4Restries 50
3.5Pacotes 50
3.6OCL52

4 Modelagem de casos de uso 53


4.1 Modelo de casos de uso 54
4.1.1 Casos de uso 54
4.1.2Atores 60
4.1.3Relacionamentos61
4.2 Diagrama de casos de uso 69
4.3 Identificao dos elementos do MCU73
4.3.1 Identificao de atores 74
4.3.2 Identificao de casos de uso 74
4.4 Construo do modelo de casos de uso 77
4.4.1 Construo do diagrama de casos de uso78
4.4.2 Documentao dos atores 80
4.4.3 Documentao dos casos de uso 80
4.5 Documentao suplementar ao MCU 84
4.5.1 Regras do negcio 84
4.5.2 Requisitos de desempenho 86
4.5.3 Requisitos de interface grfica87
4.6 O MCU em um processo de desenvolvimento iterativo87
4.6.1 O MCU nas atividades de anlise e projeto 88
4.6.2 O MCU e outras atividades do desenvolvimento 90
4.7 Estudo de caso 91
4.7.1 Descrio da situao 91
4.7.2 Regras do negcio92
4.7.3 Documentao do MCU93

5 Modelagem de classes de anlise109


5.1 Estgios do modelo de classes 111
5.2 Diagrama de classes112
5.2.1Classes112
Sumrio IX

5.2.2Associaes113
5.2.3 Generalizaes e especializaes129
5.3 Diagrama de objetos 136
5.4 Tcnicas para identificao de classes 138
5.4.1 Anlise textual de Abbott 139
5.4.2 Anlise dos casos de uso140
5.4.3 Tcnicas baseadas em responsabilidades 145
5.4.4 Padres de anlise 156
5.4.5 Outras tcnicas de identificao160
5.4.6Discusso160
5.5 Construo do modelo de classes163
5.5.1 Definio de propriedades163
5.5.2 Definio de associaes 165
5.5.3 Organizao da documentao166
5.6 Modelo de classes no processo de desenvolvimento168
5.7 Estudo de caso169
5.7.1 Anlise do caso de uso: Fornecer Grade de Disponibilidades 170
5.7.2 Anlise do caso de uso: Realizar Inscrio 171
5.7.3 Anlise do caso de uso: Lanar Avaliaes174
5.7.4 Anlise das regras do negcio 175
5.7.5 Documentao das responsabilidades 177
5.7.6 Glossrio de conceitos 178

6 Passagem da anlise para o projeto183


6.1 Detalhamento dos aspectos dinmicos185
6.2 Refinamento dos aspectos estticos e estruturais185
6.3 Projeto da arquitetura 186
6.4 Persistncia de objetos187
6.5 Projeto de interface grfica com o usurio 188
6.6 Projeto de algoritmos 188
6.7 Padres de software189

7 Modelagem de interaes 191


7.1 Elementos da modelagem de interaes193
7.1.1Mensagens195
7.1.2Atores 199
7.1.3Objetos 199
7.1.4Classes 200
7.1.5 Colees de objetos201
7.2 Diagrama de sequncia 203
7.2.1 Linhas de vida 204
X princpios de anlise e proje to de sistemas com uml 3/E

7.2.2Mensagens 205
7.2.3 Ocorrncias de execuo 206
7.2.4 Criao e destruio de objetos 206
7.3 Diagrama de comunicao 208
7.4 Modularizao de interaes 210
7.4.1Quadros 211
7.4.2 Diagrama de viso geral da interao 216
7.5 Construo do modelo de interaes 217
7.5.1 Responsabilidades e mensagens 217
7.5.2 Coeso e acoplamento218
7.5.3Encapsulamento221
7.5.4 Procedimento de construo do modelo de interaes 226
7.6 Modelo de interaes em um processo iterativo231
7.7 Estudo de caso 234
7.7.1 Operaes de sistema 234
7.7.2 Observaes gerais 234
7.7.3 Modelos de interaes 235
7.7.4 Viso geral das interaes em um caso de uso 250

8 Modelagem de classes de projeto 255


8.1 Reso: padres, frameworks, bibliotecas, componentes 256
8.2 Especificao de atributos 260
8.2.1 Notao da UML para atributos 260
8.3 Especificao de operaes 263
8.3.1 Notao da UML para operaes 266
8.3.2 Dicas prticas 265
8.3.3 Projeto por contrato 265
8.3.4 Operaes de criao e destruio de objetos 268
8.3.5 Seletores e modificadores 268
8.3.6 Outras operaes tpicas 269
8.4 Especificao de associaes 270
8.4.1 O conceito de dependncia 270
8.4.2 Transformao de associaes em dependncias272
8.4.3 Navegabilidade de associaes272
8.4.4 Implementao de associaes 274
8.5Herana279
8.5.1 Tipos de herana279
8.5.2 Classes abstratas 280
8.5.3 Operaes polimrficas 282
8.5.4Interfaces 284
8.5.5 Acoplamentos concreto e abstrato 288
Sumrio XI

8.5.6 Reso por delegao 290


8.5.7 Classificao dinmica 291
8.6 Padres de projeto293
8.6.1Composite 294
8.6.2Observer 295
8.6.3Strategy 296
8.6.4 Factory Method297
8.6.5Mediator 299
8.6.6Faade 299
8.7 Modelo de classes de projeto em um processo iterativo 300
8.8 Estudo de caso 302

9 Modelagem de estados 311


9.1 Diagrama de transio de estado 312
9.1.1Estados 312
9.1.2Transies 314
9.1.3Eventos 314
9.1.4 Condio de guarda 316
9.1.5Aes 316
9.1.6Atividades 317
9.1.7 Ponto de juno 317
9.1.8 Clusulas entry, exit e do 318
9.1.9 Transies internas320
9.1.10Exemplo321
9.1.11 Estados aninhados321
9.1.12 Estados concorrentes322
9.2 Identificao dos elementos de um diagrama de estados 323
9.3 Construo de diagramas de transies de estados 324
9.4 Modelagem de estados no processo de desenvolvimento326
9.5 Estudo de caso 327

10 Modelagem de atividades331
10.1 Diagrama de atividade 331
10.1.1 Fluxo de controle sequencial332
10.1.2 Fluxo de controle paralelo333
10.1.2.1 Raias de natao333
10.2 Diagrama de atividade no processo de desenvolvimento iterativo 334
10.2.1 Modelagem dos processos do negcio335
10.2.2 Modelagem da lgica de um caso de uso335
10.2.3 Modelagem da lgica de uma operao complexa335
10.3 Estudo de caso335
XII princpios de anlise e proje to de sistemas com uml 3/E

11 Arquitetura do sistema 339


11.1 Arquitetura lgica 340
11.1.1 Conceito de camada de software342
11.1.2 Camadas tpicas de um sistema de informao 344
11.1.3 O padro MVC e sua relao com a arquitetura lgica352
11.2 Arquitetura fsica 355
11.2.1 Alocao de camadas lgicas aos ns de processamento356
11.2.2 Alocao de componentes aos ns de processamento359
11.2.3 Padres e tecnologias para distribuio de objetos362
11.3 Projeto da arquitetura no processo de desenvolvimento 363

12 Mapeamento de objetos para o modelo relacional 365


12.1 Projeto de banco de dados 366
12.1.1 Conceitos do modelo de dados relacional 367
12.1.2 Mapeamento de objetos para o modelo relacional 369
12.1.3 Classes e seus atributos 370
12.1.4Associaes371
12.1.5 Agregaes e composies 374
12.1.6 Associaes reflexivas 374
12.1.7 Associaes ternrias375
12.1.8 Classes associativas375
12.1.9Generalizao 376
12.2 Construo da camada de persistncia 379
12.2.1 Acesso direto ao banco de dados381
12.2.2 Uso de um SGBDOO ou de um SGBDOR381
12.2.3 Padro DAO 383
12.2.4 Frameworks ORM 385

Referncias391
ndice 395
Prefcio

S eja bem-vindo terceira edio de Princpios de Anlise e Projeto de Sistemas


com UML . Este livro uma introduo aos conceitos fundamentais
necessrios para se realizar a anlise e o projeto de sistemas de
software orientados a objetos com o uso da Linguagem de Modelagem
Unificada (UML). Desde o lanamento da 1 edio desta obra, j existiam
bons livros disponveis aqui no Brasil discutindo a modelagem de sistemas
orientados a objetos com UML. No entanto, uma razo que me levou a escrever
esta obra foi o fato de alguns desses livros darem uma nfase maior descrio
da UML em si.
De fato, a UML define uma notao padro que pode ser utilizada por
desenvolvedores de software orientado a objetos. Sem dvida o domnio dessa
notao importante para qualquer desenvolvedor que queira aproveitar todas
as capacidades que a UML fornece. Mas, igualmente importante, em especial
para iniciantes no desenvolvimento de software, o entendimento de como
aplicar a notao da UML na modelagem. esse enfoque que procurei dar nes-
te livro. Em vista disso, esta obra no fornece uma referncia completa sobre
a notao definida pela UML. Em vez disso, ela descreve uma parte dessa
notao e tambm como realizar a anlise e o projeto de sistemas orientados
a objetos atravs de parte da notao mais utilizada.
Durante todo o livro, exemplos so utilizados para demonstrar a aplica-
o da UML em situaes prticas de modelagem. Ao fim de cada captulo
XIV princpios de anlise e proje to de sistemas com uml 3/E

so fornecidos exerccios para testar o contedo apreendido pelo leitor. Alm


disso, um estudo de caso, o Sistema de Controle Acadmico (SCA), desen-
volvido para os principais tpicos abordados com o objetivo de exemplificar a
aplicao dos procedimentos e dicas de modelagem que so apresentadas em
cada captulo.

Pblico-alvo
Este livro destinado a estudantes de cursos tcnicos, de graduao ou ps-
graduao em informtica, computao, sistemas de informao ou engenharia
de software que devem cursar uma ou mais disciplinas de anlise e projeto
orientados a objetos. Esta obra tambm pode ser utilizada como guia por
estudantes no desenvolvimento de seus projetos finais de curso. Profissionais
que desenvolvem sistemas segundo outros paradigmas (que no o orientado a
objetos) tambm podem encontrar neste livro uma boa iniciao aos conceitos
da orientao a objetos e da sua aplicao modelagem de sistemas de software.
Em todos os casos, o livro pode servir como uma fonte de referncia e dicas
prticas sobre a aplicao da UML e de outras tcnicas no desenvolvimento de
um sistema de software orientado a objetos.
O conhecimento de alguma linguagem de programao orientada a objetos
(p. ex., Java, C#, C++ etc.) desejvel (mas no obrigatrio) para o bom entendi-
mento dos assuntos tratados neste livro. Mais especificamente, este livro fornece
diversos exemplos de trechos de cdigo-fonte em linguagem Java. Entretanto,
esses exemplos devem ser facilmente entendidos por profissionais familiariza-
dos com outras linguagens orientadas a objetos.

Organizao dos captulos


O Captulo 1 apresenta uma breve introduo utilizao do paradigma da
orientao a objetos e da UML. O objetivo deste captulo fornecer uma viso
geral sobre a anlise e o projeto de sistemas de software sob o ponto de vista
de orientao a objetos. Os principais conceitos do paradigma da orientao a
objetos so introduzidos neste captulo.
O Captulo 2 descreve as principais atividades constituintes de um processo
de desenvolvimento de software. Tambm descrevemos os principais profissio-
nais envolvidos nesse processo, juntamente com suas respectivas atribuies.
O processo de desenvolvimento em cascata apresentado com o objetivo de
motivar o surgimento do processo incremental e evolutivo. Em seguida, este
ltimo tambm descrito e apresentado como a forma atual de se desenvolver
sistemas orientados a objetos. Na maioria dos captulos seguintes so feitas
aluses utilizao da UML em um processo de desenvolvimento incremental
e evolutivo.
Prefcio XV

O Captulo 3, o menor deste livro, apenas uma apresentao dos meca-


nismos de uso geral da UML. Essa apresentao se faz necessria em virtude
de esses mecanismos serem utilizveis em diversos diagramas da UML. Nos
captulos posteriores, fazemos uso e estendemos os conceitos introdutrios
apresentados neste captulo.
No Captulo 4, apresentamos o modelo de casos de uso e os diversos ele-
mentos do diagrama de casos de uso da UML. Alm disso, so fornecidas
diversas dicas prticas que podem ser utilizadas na construo desse modelo.
Esse captulo tambm enfatiza o modelo de casos de uso como um ponto cen-
tral de um processo de desenvolvimento que utilize a UML como linguagem
de modelagem.
O Captulo 5 descreve a construo do modelo de classes de anlise de
um sistema de software orientado a objetos (SSOO). Os principais elementos
de notao definidos pela UML para a construo do diagrama de classes so
descritos. Tambm apresentado o conceito de responsabilidade de um objeto.
Descrevemos, alm disso, diversas tcnicas teis na identificao das classes
iniciais de um SSOO, como a anlise textual de Abbot, a anlise de casos de
uso e o uso de padres de anlise. Nesta 3 edio, adiciono a este captulo
uma pequena introduo aos padres tticos do DDD (Domain Driven Design)
no contexto de identificao de classes do domnio.
O Captulo 6 serve como uma apresentao do contedo dos captulos que
o seguem. A partir desse captulo, a descrio das atividades de projeto comea
a tomar o lugar da descrio das atividades de anlise.
A modelagem de interaes entre objetos em um SSOO discutida no
Captulo 7. Nesse captulo, apresento a ideia de que as construes do modelo
de classe e do modelo de interaes so interdependentes: a construo de um
modelo fornece informaes para a construo do outro e vice-versa. Seguin-
do a filosofia das edies anteriores, no me preocupei em apresentar todos
os elementos de notao, mas apenas os que, na minha viso, so os mais
importantes e relevantes em situaes prticas de modelagem. Nessa 3 edio,
estendi o contedo desse captulo com a descrio de boas prticas e princ-
pios de projeto relevantes para a construo correta do modelo de interaes.
O Captulo 8 retoma a discusso sobre o modelo de classes, agora com um
enfoque nas caractersticas de modelagem referentes fase de projeto. Con-
ceitos fundamentais ao projeto de um SSOO so apresentados: classe abstrata,
interface, polimorfismo, tipos de acoplamento, projeto por contrato etc. Na 2
edio, apresentei uma pequena introduo a um assunto um tanto avanado,
mas cada vez mais sedimentado no desenvolvimento de um SSOO: padres
de projeto. Essa descrio sobre padres de projeto continua nesse captulo,
mas aprofundada em outras partes do livro.
O Captulo 9 descreve a sintaxe, a semntica e a construo dos diagramas
de transies de estados.
X VI princpios de anlise e proje to de sistemas com uml 3/E

O Captulo 10 finaliza a apresentao dos diagramas da UML relacionados


parte comportamental do sistema. Esse captulo descreve os diagramas de
atividades.
O Captulo 11 faz uma introduo aos conceitos relacionados arquitetura
de um sistema de SSOO. Termos como subsistema, componente e camada so
descritos. Outros diagramas da UML so apresentados: o de componentes,
o de pacotes e o de implantao. Nesta 3 edio, esse captulo foi estendido
com um maior detalhamento acerca das camadas tipicamente encontradas na
arquitetura em um sistema de informao.
Finalmente, o Captulo 12 descreve alternativas de representao de obje-
tos em um mecanismo de armazenamento persistente como um sistema de
gerncia de bancos de dados relacional. feita tambm uma introduo a
questes relacionadas implementao de uma camada de persistncia em
um SSOO.

Recursos na web
Como informao suplementar contida neste livro, fornecido um site na
prpria editora Elsevier. Acesse a pgina da Editora (www.elsevier.com.br).
Nesse endereo, o leitor pode obter informaes e material relacionado ao
livro. Entre os recursos que podem ser encontrados no site, esto os seguintes:

Solues de alguns dos exerccios propostos no livro. O leitor pode encon-


trar diversos exerccios resolvidos no material disponibilizado no site
da editora.
Complementos ao estudo de caso apresentado no livro. O estudo de caso
que desenvolvo no livro denominado Sistema de Controle Acadmico (SCA).
No final de alguns captulos, forneo diversos exemplos de modela-
gem no contexto do SCA. Um problema que surge como continuar e
complementar esses exemplos. Uma soluo que adoto a partir dessa
segunda edio utilizar a Internet como fornecedora de novos mate-
riais acerca deste estudo de caso.
Outras fontes de informao. O material disponvel no site da editora
contm tambm endereos para outras fontes interessantes sobre mode-
lagem de sistemas de software orientados a objetos. Seguindo a natureza
dinmica da Internet, o contedo do site ser modificado de tempos em
tempos. O leitor tambm pode utilizar esse site para entrar em contato
comigo, com o objetivo de trocar ideias sobre o livro.
Prefcio X VII

Convite ao leitor
Finalmente, convido o leitor a prosseguir pelo restante desta obra. Espero
que as informaes contidas neste livro o ajudem de alguma forma, e que a lei-
tura seja a mais agradvel possvel. Tentei dar o meu melhor para produzir um
texto cuja leitura seja aprazvel e didtica. Entretanto, pelo fato de a produo
de um livro ser uma tarefa bastante complexa, tenho conscincia de que erros
e inconsistncias ainda se escondem por entre as linhas que o compem. Para
os que quiserem entrar em contato comigo para trocar ideias e fornecer crticas
e sugestes, fiquem vontade para enviar uma mensagem.

Eduardo Bezerra
Rio de Janeiro
ebezerra@cefet-rj.br
18 de agosto de 2014

Você também pode gostar