|
Encomendar |
Desenvolvimento orientado por objectos - Domain-Driven Design, Testes
Unitários e Refactoring
Autores: João Hugo Miranda, José António Almeida
Nº Páginas: 232
ISBN: 989-615-013-3
Dep Legal: 234.045/05
Preço (papel): 17,21 Euros
Preço (digital): Não existe em e-book
Data da 1ª Edição: Out/2005
Colecção: Tecnologias |
|
|
|
|
Neste livro são abordados temas actuais que têm ganho uma
crescente relevância na comunidade de desenvolvimento de software, entre os
quais o 'Emergent Design', 'Desenvolvimento Test-Driven' e 'Refactoring'. Embora
o livro se encontre direccionado principalmente a programadores mais experientes
que produzam software com desenvoltura ao longo de todo o processo de
desenvolvimento, o leitor mais inexperiente poderá igualmente beneficiar das
questões aqui abordadas quando complementadas com as referências mencionadas.
Para o programador mais experiente, os temas aqui abordados permitem aprofundar
o conhecimento de conceitos com os quais o leitor lida diariamente, como os
conceitos inerentes à programação orientada por objectos. Estes conceitos são
aqui desenvolvidos no contexto do 'Domain-Driven Design'. Adicionalmente são
apresentadas técnicas como o 'Refactoring' e o 'Desenvolvimento Test-Driven',
com o objectivo de apoiar o programador na realização deste desenho. Todos estes
conceitos são
ilustrados ao longo do livro com exemplos práticos integrados na implementação
de uma aplicação de exemplo, permitindo ao leitor percepcionar como as
diferentes técnicas podem ser usadas ao longo do ciclo de vida do
desenvolvimento de software.
Como um todo, o livro mune o leitor de um conjunto de abordagens pragmáticas que
lhe permitem endereçar de forma eficaz problemas de desenvolvimento de software
com qualquer grau de complexidade.
|
|
|
|
|
|
INTRODUÇÃO
1.1 Objectivos e temática
1.1.1 Objectivos
1.1.2 Algumas considerações
1.2 Audiência
1.3 Motivação
1.3.1 O Desenho Planeado
1.3.2 O Desenho Emergente
1.3.3 Um Programador Completo
1.4 Organização
PARTE I
2 O OBJECTO
2.1 A História e a Filosofia dos Objectos
2.1.1 Simula
2.1.2 Smalltalk
2.1.3 C++
2.1.4 Java
2.1.5 .Net
2.2 O que são Objectos?
2.2.1 Pensar em Objectos
2.3 Conceitos fundamentais
2.3.1 Objecto
2.3.2 Responsabilidade
2.3.3 Mensagem
2.3.4 Interface
2.3.5 Encapsulamento
2.3.6 Polimorfismo
2.4 Pontos-chave 3 DOMAIN-DRIVEN DESIGN
3.1 Compreender o domínio do problema
3.1.1 Comunicação eficiente
3.1.2 A importância da Comunicação
3.2 Linguagem Ubíqua
3.2.1 Uma linguagem omnipresente
3.2.2 Uma língua comum em todo o Projecto
3.2.3 Linguagem Ubíqua e Documentação
3.3 Elementos do domínio da solução
3.3.1 Entidades (Entity)
3.3.2 Objectos-Valor (Value Objects)
3.3.3 Serviços (Services)
3.3.4 Associações
3.3.5 Módulos
3.4 Pontos-chave
PARTE II
4 DESENVOLVIMENTO TEST-DRIVEN
4.1 Testes Unitários
4.1.1 Granularidade dos testes
4.1.2 Quando implementar os testes?
4.1.3 Reforço positivo
4.2 O que é Desenvolvimento Test-Driven?
4.2.1 Um teste simples
4.2.2 Mais um teste
4.2.3 Alterações ao processo de desenvolvimento
4.3 Pontos-chave 5 DESENVOLVIMENTO TEST-DRIVEN AVANÇADO
5.1 Mock Objects
5.1.1 Pesquisa de livros através de um web service
5.2 Injecção de dependências
5.2.1 Injecção de dependências através do construtor
5.2.2 Injecção de dependências através de uma propriedade
5.2.3 Injecção de dependências através de injecção de interfaces
5.3 Mock Objects estáticos
5.3.1 Persistência de livros
5.4 Quando utilizar Mock Objects?
5.5 Pontos-chave 6 DESENVOLVIMENTO DE INTERFACES DE UTILIZAÇÃO
6.1 Interfaces de Utilização
6.2 Model View Controller
6.3 Implementação de clientes Web
6.3.1 Page Controller
6.4 Implementação de clientes ricos
6.4.1 Model View Presenter
6.5 Pontos-chave 7 INTRODUÇÃO AO REFACTORING
7.1 O que é o Refactoring?
7.1.1 Refactorings mais comuns
7.1.2 As origens
7.1.3 Pré-requisitos
7.1.4 Refactoring Automático
7.2 Refactoring no Processo de Desenvolvimento
7.2.1 Refactoring e Desenho
7.2.2 Refactoring e Performance
7.2.3 Refactoring e Aplicações Legadas
7.2.4 Refactoring e Paradigmas não Orientados-a-Objectos
7.3 Pontos-chave 8 REFACTORING APLICADO
8.1 A aplicação Catálogo de Livros
8.2 Corrigindo Código Doente
8.2.1 Métodos demasiado grandes
8.2.2 Comentários
8.2.3 Eliminando Métodos Longos e Comentários
8.2.4 Código duplicado
8.2.5 Classes demasiado grandes
8.2.6 Eliminando Código Duplicado e Classes grandes
8.2.7 Alterações divergentes
8.2.8 Eliminando alterações divergentes
8.2.9 Longas listas de parâmetros
8.2.10 Blocos de dados
8.2.11 Eliminando longas listas de parâmetros e blocos de dados
8.2.12 “Inveja”
8.2.13 Eliminando as “Invejas”
8.2.14 Classe de Dados
8.2.15 Eliminando Classes de Dados
8.2.16 Obsessão por Primitivas
8.2.17 Eliminando a obsessão por Primitivas
8.2.18 Alterações Transversais
8.2.19 Eliminando alterações transversais
8.2.20 Switches
8.2.21 Eliminando Switches
8.2.22 Generalização especulativa
8.3 Pontos-chave 9 CONCLUSÕES E PASSOS FUTUROS
9.1 O que aprendemos
9.1.1 Os Objectos
9.1.2 Domain-Driven Design
9.1.3 Desenvolvimento Test-Driven
9.1.4 Refactoring
9.2 Próximos passos
9.2.1 Beber das fontes originais
9.2.2 Padrões de Desenho e Refactoring
9.3 Palavras finais REFERÊNCIAS
ÍNDICE REMISSIVO
|
|
|
|
José Almeida é licenciado em Engenharia
Informática pela FCT/UNL.
Actualmente, exerce funções de consultor na área de desenvolvimento
aplicacional na Microsoft Consulting Services. Na sua actividade como
consultor define, desenha e implementa soluções empresariais, e apoia
clientes na optimização dos seus processos internos de desenvolvimento de
software, promovendo a adopção de boas práticas da indústria. Nos seus
interesses profissionais contam-se o desenho aplicacional e a investigação
de técnicas de apoio à construção de software, como a automação de processos
de construção, verificação e distribuição.
João Hugo Oliveira Senos Miranda é licenciado em
Engenharia Informática e de Computadores pelo IST/UTL. Actualmente, exerce
funções de engenheiro de software no Banco BPI. Ao longo da sua carreira
exerceu funções de análise e desenvolvimento de software, sobretudo baseado
em tecnologias Web.
Actualmente, assume funções de I&D tendo por objectivo a investigação e
análise de metodologias, práticas e tecnologias que permitam melhorar a
produtividade da equipa que integra e a qualidade do software por ela
desenvolvido. O seu maior interesse profissional é o estudo de soluções que
possibilitem o desenvolvimento de software com qualidade, em tempo útil e
que possam ser aplicadas com eficiência e eficácia no ambiente extremamente
competitivo das empresas de Tecnologias de Informação. |
Se o leitor não souber o que é desenvolvimento orientado a objectos,
domain-driven design ou refactoring e tiver curiosidade em aprender
sobre estes temas, então este livro é para si. Se, inclusivé, for
um programador que não saiba exactamente como planear um projecto que
pretenda começar, então vai encontrar muitas respostas neste livro.
É recomendado a estudantes de programação e programadores profissionais,
obviamente. Pode ainda ser recomendado a gestores de projectos,
analistas ou responsáveis técnicos já que parte do texto, especialmente
os primeiros capítulos, estabelece o enquadramento conceptual das
temáticas de batidas ao longo dos restantes capítulos.
Revista PROGRAMAR, Janeiro/2007
Este livro aborda, de forma estimulante e madura, vários aspectos de
engenharia de software, em particular aqueles mais ligados ao desenho e à
programação orientada por objectos como, por exemplo, aspectos de desenho
conduzido pelo domínio, desenvolvimento conduzido por testes, e refactoring.
O livro segue um estilo reflexivo, crítico e por vezes também didáctico. Os
autores, para além de descreverem factos e abordagens, contam histórias,
apresentam exemplos práticos, mas também adjectivam referências bibliográficas,
reflectem e discutem os factos. É por tudo isto um livro estimulante. Por outro
lado, a sua leitura pressupõe um razoável nível de experiência e de atenção,
pois ao abordar essa grande abrangência de temas, com grande domínio de
conhecimento e maturidade, nem todo esse conhecimento será captado numa primeira
leitura por estudantes ou engenheiros porventura mais inexperientes.
É definitivamente um livro para suscitar reflexão, discussão e a aplicação das
melhores práticas no contexto da engenharia de software.
Alberto Silva
Professor do Instituto Superior Técnico |
|
|
|
|