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 |