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