|
Sumário |
|
Prefácio |
7 |
|
1
Introdução à Modelagem Orientada a Objetos
|
17 |
|
1.1 Análise e Projeto Orientados a
Objetos |
18 |
|
1.2 Requisitos para uma Especificação
de Projeto Completa |
20 |
|
1.3 Vertentes das Metodologias de
Análise e Projeto Orientadas a Objetos
|
22 |
|
1.4 Os Princípios da Abordagem de
Modelagem Proposta |
25 |
|
1.5 As Etapas de Modelagem |
26 |
|
1.6 Organizar e Aprimorar os
Diagramas Produzidos |
27 |
|
2 Modelagem Estrutural e Dinâmica em
Alto Nível de Abstração |
29 |
|
2.1 O Início do Processo de Modelagem
OO |
29 |
|
2.2 Primeiro Esforço de Modelagem
Estrutural |
31 |
|
2.3 Primeiro Esforço de Modelagem
Dinâmica |
34 |
|
2.3.1 Modelagem com Diagrama de Casos
de Uso |
35 |
|
2.3.2 Modelagem com Diagrama de Visão
Geral de Interação |
39 |
|
2.4 Resultados Parciais após a
Primeira Etapa do Processo de Modelagem
|
41 |
|
2.5 Sumário da
Primeira Etapa do Processo de Modelagem
|
42 |
|
3
Primeiro Refinamento Estrutural |
45 |
|
3.1 Identificação de Características
dos Elementos do Domínio do Problema |
46 |
|
3.2 Características Estruturais
Inferidas dos Casos de Uso |
47 |
|
3.3 Resultados Parciais até a Segunda
Etapa do Processo de Modelagem |
48 |
|
3.4 Sumário da Segunda
Etapa do Processo de Modelagem |
49 |
|
4
Refinamento de Casos de Uso |
51 |
|
4.1 Alternativas para o Refinamento
de Casos de Uso |
51 |
|
4.1.1 Primeira Possibilidade: Caso de
Uso, Direto ao Código |
53 |
|
4.1.2 Segunda Possibilidade: Refinamento
Textual |
53 |
|
4.1.3 Terceira Possibilidade:
Refinamento Diagramático |
53 |
|
4.1.4 Quarta Possibilidade:
Refinamentos Textual e Diagramático |
55 |
|
4.2 O Processo de Refinamento dos
Casos de Uso |
56 |
|
4.2.1 Os Estágios do Processo |
56 |
|
4.2.2 O que Fazer: Modelagem com
Diagrama de Atividades |
57 |
|
4.2.2.1 Primeira Modelagem em
Diagrama de Atividades |
57 |
|
4.2.2.2 Detalhamento da Primeira
Modelagem em Diagrama de Atividades |
58 |
|
4.2.2.3 Avaliação da Influência dos Demais
Casos de Uso Sobre a Modelagem de Cada Caso de Uso |
59 |
|
4.2.2.4 Critérios a Aplicar na
Modelagem com Diagrama de Atividades |
64 |
|
4.2.2.5 Possibilidade de Explicitar o
Diálogo com Elementos Externos na Modelagem com Diagrama de Atividades |
66 |
|
4.2.3 Ênfase a Quem Faz (Cenário
Principal): Modelagem com Diagrama de Comunicação |
67 |
|
4.2.3.1 A Identificação dos Métodos
das Classes durante a Construção do Diagrama de Comunicação |
67 |
|
4.2.3.2 Um Exemplo de Refinamento de Diagrama
de Atividades Associado a Caso de Uso, por Meio de Diagrama de Comunicação |
68 |
|
4.2.4 Ênfase a quem Faz (todos os
cenários): Modelagem com Diagrama de Seqüência |
76 |
|
4.2.4.1 O Uso Conjunto dos Diagramas
de Seqüência e de Comunicação |
76 |
|
4.2.4.2 A Identificação dos Métodos
das Classes durante a Construção do Diagrama de Seqüência |
77 |
|
4.2.4.3 Um Exemplo de Refinamento de
Caso de Uso por Meio de Diagrama de Seqüência |
78 |
|
4.2.4.4 Detalhamento do Caso de Uso no
Escopo do Diagrama de Seqüência |
80 |
|
4.2.4.5 Detalhamento de Diagrama de
Seqüência em Outro Diagrama de Seqüência |
83 |
|
4.2.4.6 A Conclusão do Esforço de
Refinamento de Caso de Uso em Diagrama de Seqüência |
85 |
|
4.3 Efeitos Colaterais do Refinamento
de Casos de Uso |
88 |
|
4.4 Resultados Parciais até a
Terceira Etapa do Processo de Modelagem
|
90 |
|
4.5 Sumário da
Terceira Etapa do Processo de Modelagem
|
91 |
|
5
Modelagem de Estados Associada a Classe
|
93 |
|
5.1 Um Ponto de Vista Diferente em
Relação às Etapas Anteriores |
93 |
|
5.2 Passos e
Critérios do Esforço de Modelagem de Estados
|
95 |
|
5.2.1Avaliação da Adequação da
Modelagem de Estados para cada Classe |
95 |
|
5.2.2 Definição da Ênfase Adequada na
Modelagem de Estados |
96 |
|
5.2.3 Identificação de Estados |
97 |
|
5.2.4 Identificação de Possíveis
Percursos de Transição de Estados |
97 |
|
5.2.5 Avaliação dos Atributos e Respectivos
Valores Associados a cada Estado |
100 |
|
5.3 A Obtenção de Algoritmos Bem
Estruturados por Meio da Modelagem de Estados
|
102 |
|
5.4 Resultados Parciais até a Quarta
Etapa do Processo de Modelagem |
109 |
|
5.5 Sumário da Quarta
Etapa do Processo de Modelagem |
109 |
|
6
Introdução de Elementos do Domínio da Solução Computacional |
111 |
|
6.1 A Fronteira Entre a Análise e o
Projeto |
111 |
|
6.2 O Tratamento dos Elementos do
Domínio da Solução Computacional |
113 |
|
6.2.1 Acrescentar ou Alterar? |
115 |
|
6.2.2 A Identificação das
Necessidades Computacionais |
116 |
|
6.3 Exemplos de Inserção de Elementos
do Domínio da Solução Computacional no Escopo da Modelagem do Jogo-da-velha |
117 |
|
6.3.1 Exemplo 1: Interface para o Jogo-da-velha |
117 |
|
6.3.2 Exemplo 2: Persistência para o Jogo-da-velha |
122 |
|
6.3.3 Generalização da Prática
Aplicada aos Exemplos |
127 |
|
6.4 Resultados Parciais até a Quinta
Etapa do Processo de Modelagem |
129 |
|
6.5 Sumário da
Quinta Etapa do Processo de Modelagem |
129 |
|
7
Destaque de Situações Especiais na Modelagem |
131 |
|
7.1 Modelagem da
Dinâmica de Interfaces Gráficas |
132 |
|
7.2 Destaque de
Arranjos Estruturais |
134 |
|
7.2.1 Destaque do Relacionamento
entre Objetos |
134 |
|
7.2.2 Destaque de Vínculos de
Composição |
135 |
|
7.2.3 Destaque de Arranjos Funcionais
|
137 |
|
7.3 Modelagem dos Elementos que
Compõem a Implementação |
138 |
|
7.4 Modelagem de Restrições
Temporais |
139 |
|
7.5 Resultados Parciais até a Sexta
Etapa do Processo de Modelagem |
140 |
|
7.6 Sumário da
Sexta Etapa do Processo de Modelagem |
141 |
|
8
Modelagem de Algoritmo de Método |
143 |
|
8.1 Desenvolvimento Iterativo
Apoiado nos Quatro Pontos de Vista Fundamentais |
143 |
|
8.2 O Momento de Modelar Algoritmos
de Métodos |
148 |
|
8.3 Comandos de Métodos e os
Elementos Sintáticos do Diagrama de Atividades |
148 |
|
8.3.1 Comandos Representáveis com um Único
Elemento Sintático do Diagrama de Atividades |
148 |
|
8.3.2 Comandos Correspondentes a
Invólucros de Coleções de Comandos |
149 |
|
8.3.3 Comandos sem Correspondência em
Linguagens de Programação |
150 |
|
8.3.4 Linguagem Formal para a Parte
Textual |
151 |
|
8.4 A Busca de Subsídios para os
Algoritmos no Restante da Modelagem |
151 |
|
8.4.1 Influência dos Diagramas de
Seqüência nos Métodos |
152 |
|
8.4.2 Influência dos Diagramas de
Máquina de Estados nos Métodos |
153 |
|
8.4.3 Juntando as Influências para
Definir Algoritmo de Método |
155 |
|
8.5 Quais Métodos Devem ser Modelados
e Como Modelá-los? |
156 |
|
8.6 Resultados Parciais até a Sétima
Etapa do Processo de Modelagem |
159 |
|
8.7 Sumário da Sétima
Etapa do Processo de Modelagem |
160 |
|
9
Geração de Código e o Desenvolvimento Iterativo |
163 |
|
9.1 Geração de
Código |
163 |
|
9.1.1 Tradução da Especificação
Produzida |
164 |
|
9.1.2 O Quinto Ponto de Vista |
164 |
|
9.2 Iterar até Quando? |
170 |
|
9.3 Resultados Parciais até a Oitava
Etapa do Processo de Modelagem |
171 |
|
9.4 Sumário da
Oitava Etapa do Processo de Modelagem |
172 |
|
10
Desenvolvimento Orientado a Componentes |
173 |
|
10.1 Desenvolvimento Orientado
a Componentes e Desenvolvimento Orientado a Objetos |
174 |
|
10.2 Componente,
Interface, Porto |
175 |
|
10.3 A Estrutura de um Artefato de
Software Baseado em Componentes |
177 |
|
10.4 Os Primórdios do Desenvolvimento
Orientado a Componentes |
177 |
|
10.5 Demandas da Descrição de
Componentes |
179 |
|
10.6 Diferentes Pontos de Vista na
Modelagem Envolvendo Componentes |
181 |
|
10.7 Visão
Externa de um Componente com UML |
182 |
|
10.7.1 Modelagem Estrutural de
Interface de Componente |
182 |
|
10.7.2 Modelagem Comportamental de
Interface de Componente |
184 |
|
10.7.3 Modelagem Funcional de
Interface de Componente |
190 |
|
10.8 Especificação
Estrutural de um Software Baseado em Componentes |
193 |
|
10.8.1 Componentes Utilizados e suas Dependências
|
193 |
|
10.8.2 A Organização dos Componentes |
194 |
|
10.9 Especificação
Arquitetônica de Software Baseado em Componentes |
196 |
|
10.10 Avaliação de
Compatibilidade entre Componentes |
197 |
|
10.10.1 Avaliação de Compatibilidade Estrutural
|
197 |
|
10.10.2 Avaliação de Compatibilidade
Comportamental |
198 |
|
10.10.3 Avaliação de Compatibilidade
Funcional |
203 |
|
10.11 Compatibilização de
Componentes |
204 |
|
10.11.1 Compatibilização de
Componentes por Empacotamento |
204 |
|
10.11.2 Compatibilização de
Componentes por Colagem |
205 |
|
10.12 Projeto de
Componente com UML |
205 |
|
10.12.1 Especificação de
Características da Interface de um Componente |
206 |
|
10.12.2 Interface de Componente como um
Artefato de Software Orientado a Objetos |
207 |
|
10.12.3 Projeto da Estrutura Interna
de um Componente |
215 |
|
10.13 A Concepção de Software
Orientado a Componentes |
216 |
|
10.13.1 Iniciando com a Modelagem de
Casos de Uso |
216 |
|
10.13.2 A Definição do Conjunto de
Componentes |
217 |
|
10.13.3 A Definição dos Portos,
Métodos e Interfaces |
220 |
|
10.13.4 Finalização da Visão Externa
dos Componentes |
221 |
|
10.13.5 Desenvolvimento dos
Componentes |
222 |
|
10.13.6 Integração dos Componentes |
222 |
|
10.14 Sumário do
Desenvolvimento Orientado a Componentes |
223 |
|
10.14.1 Desenvolvimento de Aplicação
Orientada a Componentes |
223 |
|
10.14.2 Desenvolvimento de Componente
|
224 |
|
11 Organização
da Especificação Orientada a Objetos |
227 |
|
11.1 A Especificação Orientada a
Objetos Organizada como Árvore |
228 |
|
11.2 Alta
Complexidade nos Elementos da Raiz |
229 |
|
11.3 Um Caso Especial no Tratamento
da Alta Complexidade na Raiz |
232 |
|
11.4 Os Outros Elementos Além da Raiz
|
233 |
|
11.4.1 Pacote Modelagem de Classes |
235 |
|
11.4.2 Pacote Modelagem de Casos de
Uso |
236 |
|
11.4.3 Pacote Especificidades de Implementação |
237 |
|
11.4.4 Organização de Software
Baseado em Componentes |
238 |
|
11.5 Sumário da
Organização de Elementos da Especificação |
239 |
|
12 Avaliação
de Consistência da Especificação de Projeto |
241 |
|
12.1 Busca
de Inconsistência em Diagramas do Mesmo Tipo |
241 |
|
12.1.1 Avaliação da Modelagem em
Diagrama de Classes |
241 |
|
12.1.2 Avaliação da Modelagem em
Diagrama de Casos de Uso |
243 |
|
12.1.3 Avaliação da Modelagem em
Diagrama de Visão Geral de Interação |
243 |
|
12.1.4 Avaliação da Modelagem em
Diagrama de Atividades |
244 |
|
12.1.5 Avaliação da Modelagem em
Diagrama de Comunicação e de Seqüência |
245 |
|
12.1.6 Avaliação da Modelagem em
Diagrama de Máquina de Estados |
246 |
|
12.1.7 Avaliação da Modelagem em
Diagrama de Pacotes, de Objetos e de Estrutura Composta |
247 |
|
12.1.8 Avaliação da Modelagem em
Diagrama de Utilização |
247 |
|
12.1.9 Avaliação da Modelagem em
Diagrama de Componentes |
247 |
|
12.1.10 Avaliação da Modelagem em
Diagrama de Temporização |
247 |
|
12.2 Busca de
Inconsistência entre Diagramas de Diferentes Tipos |
248 |
|
12.2.1 Busca de Inconsistência na
Estruturação da Especificação |
248 |
|
12.2.2 Busca de Inconsistência no
Refinamento de Casos de Uso |
248 |
|
12.2.3 Busca de Inconsistência na Modelagem
de Algoritmos |
249 |
|
12.3 Avaliação da
Correspondência entre Projeto e Código |
250 |
|
12.4 Automatização do
Procedimento de Busca de Inconsistências |
251 |
|
13 Incremento
da Qualidade da Especificação de Projeto |
253 |
|
13.1 Os Benefícios da Boa
Estruturação |
253 |
|
13.1.1 Manutenibilidade
|
253 |
|
13.1.2 Reusabilidade |
254 |
|
13.2 Indicadores de Boas
Características |
254 |
|
13.2.1 Acoplamento |
255 |
|
13.2.2 Coesão |
257 |
|
13.2.3 Complexidade |
257 |
|
13.2.4 Encapsulamento
de Dados |
258 |
|
13.3 A Busca das Boas Características
|
259 |
|
13.3.1 Herança e Polimorfismo |
259 |
|
13.3.2 Delegação |
260 |
|
13.4 Situações a Considerar no
Esforço de Aprimoramento da Especificação |
261 |
|
13.4.1 Oportunidades de Quebra de
Complexidade |
261 |
|
13.4.2 Oportunidades de Explorar
Herança e Polimorfismo |
265 |
|
13.4.3 Oportunidades de Reorganização
|
268 |
|
13.5 Estratégia de
Separação de Contextos |
270 |
|
13.6 Automatização do Procedimento
de Busca de Qualidade Suspeita |
271 |
|
14 Frameworks Orientados a Objetos e
Padrões |
273 |
|
14.1 Frameworks Orientados a Objetos |
274 |
|
14.1.1 Entendendo o que Exatamente é
um Framework Orientado a Objetos |
274 |
|
14.1.2 Delegação, Herança e
Polimorfismo em Frameworks Orientados a Objetos |
280 |
|
14.1.3 Oportunidades e Desafios dos
Frameworks Orientados a Objetos |
281 |
|
14.2 Padrões |
283 |
|
14.2.1 Padrões de Projeto |
284 |
|
14.2.2 Padrões de Análise e Antipadrões
|
291 |
|
14.2.3 Delegação, Herança e
Polimorfismo em Padrões |
292 |
|
14.3 Delegação,
Herança e Polimorfismo na Prática de Desenvolvimento |
293 |
|
Referências |
295 |
|
Apêndice A - Visão Geral de UML |
299 |
|
1 Estrutura
da Especificação de UML |
299 |
|
2
Organização dos Diagramas de UML |
299 |
|
3
Diagramas de UML |
301 |
|
3.1 Diagrama de
Classes |
301 |
|
3.2 Diagrama de
Objetos |
302 |
|
3.3 Diagrama de
Pacotes |
302 |
|
3.4 Diagrama de
Estrutura Composta |
303 |
|
3.5 Diagrama de
Componentes |
304 |
|
3.6 Diagrama de
Utilização |
305 |
|
3.7 Diagrama de
Casos de Uso |
305 |
|
3.8 Diagrama de
Seqüência |
306 |
|
3.9 Diagrama de
Comunicação |
307 |
|
3.10 Diagrama de
Máquina de Estados |
307 |
|
3.11 Diagrama de
Atividades |
308 |
|
3.12 Diagrama de
Visão Geral de Interação |
309 |
|
3.12 Diagrama de
Temporização |
310 |
|
3.14 Classificação dos
Diagramas de UML Segundo o Critério dos Quatro Pontos de Vista |
311 |
|
Apêndice B - Especificação de Requisitos
do Programa Tratado nos Exemplos |
313 |
|
1
Introdução |
313 |
|
2
Visão Geral |
313 |
|
3
Requisitos de Software |
314 |
|
3.1 Requisitos Funcionais |
314 |
|
3.2 Requisitos Não Funcionais |
315 |
|
Apêndice C - Visão Geral das Etapas do
Processo de Modelagem |
317 |
|
1 O
Conjunto de Etapas |
317 |
|
2
Atividades de cada Etapa |
319 |