terça-feira, abril 22, 2008

Disciplina de Construção de Componentes de Software no SENAC-SP

Lecionarei a disciplina de Construção de Componentes de Software I e II (20 aulas ao todo) na pós-graduação do SENAC-SP. Estou utilizando uma bibliografia novíssima e trabalhando no coração de como desenvolver sistemas realmente orientados a objetos. Além disso achei importante fornecer técnicas para manter código legado (veja a definição de código legado em meu artigo sobre qualidade interna do software), já que na maior parte do tempo estamos mantendo código existente e não construindo novos sistemas.

A seguir, os tópicos que serão vistos e também a bibliografia. Creio que o pessoal vai gostar bastante, já que percebo poucos ministrando disciplinas que abordam esses temas em profundidade. A idéia é elevar o patamar dos desenvolvedores e ajudá-los a compreender de uma forma didática os conceitos fundamentais e avançados da orientação a objetos. Também falar sobre princípios e práticas para se tornar um desenvolvedor mais eficiente e eficaz, um ás do código de qualidade :-) !

- Fundamentos do design emergente e a natureza do desenvolvimento de software
(Os exemplos de códigos da disciplina estão em Java e C# e eventualmente em C++, C e Visual Basic)

- Qualidades de um bom código OO através de exemplos
• Encapsulamento
• Coesão
• Acoplamento
• Redundância
• Testabilidade
• Legibilidade

- Patologias

- Princípios OO através de exemplos
• Separando uso da criação
• Single-Responsibility Principle
• Liskov-Substitution Principle
• Interface Segregation Principle
• Open-Closed Principle
• Dependency Inversion Principle
• Encapsulamento dos conceitos variáveis
• Dicas da GoF

- Práticas
• Estilo de codificação consistente
• Programação por intenção
• Encapsulamento de construtor
• Análise de Variabilidade

- Tranformando código procedural em código OO através de patterns (Parte 1)

- Tranformando código procedural em código OO através de patterns (Parte 2)

- Dicas para criar rotinas de alta qualidade

- Programação defensiva

- Processo de programação baseada em pseudocódigo

- Técnicas para uso de variáveis

- O poder dos nomes de variáveis

- Uso dos tipos de dados fundamentais

- Organizando código

- Idéias gerais para controle em código

- Usando condições

- Controlando Loops

- Métodos Table-Driven

- Layout e Estilo

- Código auto-documentado

- Técnicas para code tuning

- Medindo a qualidade interna do código

- Estratégias de Integração

- Técnicas de build e release

- Reuso Estratégico de Software e Asset-Based Development

- Testes unitários automatizados e Test-Driven Development

- Refactoring (Parte 1)

- Refactoring (Parte 2)

- Refactoring para Patterns

- Trabalhando com código legado (Parte 1)

- Trabalhando com código legado (Parte 2)

- Domain Driven Design

- Inversão de Controle e Injeção de Dependências – Exemplificado com Google Guice e Unity .NET DI

- MVC e MVC 2 para Web – Exemplificado com Struts 2

- Mapeamento objeto-relacional – Exemplificado com Hibernate e LINQ

- Persistência com o Pattern Transaction Script – Exemplificado com iBatis

- Bancos de dados orientados a objetos – Exemplificado com o db4o

- Trabalhando de forma iterativa com o banco de dados – Refatorando o banco de dados


Bibliografia Básica

1. Steve McConnell, Code Complete, 2nd Edition, Microsoft Press, 2004.
2. Martin Fowler, Refactoring, Addison-Wesley, 1999. (Complemento: http://www.refactoring.com)
3. Scott Bain, Emergent Design, Addison-Wesley, 2008.

Bibliografia Adicional

1. Robert Martin, Agile Principles, Patterns and Practices in C#, Prentice Hall, 2006.
2. David Astels,Test-Driven Development: A Practical Guide, Prentice Hall, 2003.
3. Lasse Koskela, Test Driven, Manning, 2008.
4. Alan Shalloway, Design Patterns Explained, 2nd Edition, 2004.
5. Floyd Marinescu, Domain Driven Design Quickly, 2006.
6. Gary Pollice, Head First OOAD, O’Reilly, 2006.
7. Eric Freeman, Head Fist Design Patterns, O’Reilly, 2004.
8. Craig Walls, Spring in Action, 2nd Edition, Manning, 2007.
9. Robbie Vanbrabant, Google Guice, Apress, 2008.
10. Gavin King, Java Persistence with Hibernate, Manning, 2007.
11. Clinton Begin, iBatis in Action, Manning, 2007.
12. Erik Hatcher, Ant in Action, 2nd Edition, Manning, 2007.
13. Paul Duvall, Continuous Integration, Addison-Wesley, 2007.
14. Chris Richardson, POJOs in Action, Manning, 2005.
15. Kent Beck, Implementation Patterns, Addison-Wesley, 2007.
16. Michael Feathers, Working Effectively with Legacy Code, Prentice-Hall, 2004.
17. Ian Roughley, Practical Apache Struts 2 Projects, Apress, 2007.
18. Jimmy Nilsson, Applying DDD and Patterns with Examples in C#, Addison-Wesley, 2006.
19. Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
20. Scott Ambler, Refactoring Databases, Addison-Wesley, 2006.
21. Joshua Kerievski, Refactoring to Patterns, Addison-Wesley, 2004.
22. Joe DeCarlo et al., Strategic Reuse with Asset-Based Development, IBM Redbooks, 2008.

Marcadores:

2 Comentários:

At 11:25 AM, Anonymous Roberto disse...

Parabéns pela iniciativa do curso. Seria bom que fosse aplicado já nas graduações, o problema é encontrar bons professores. Ainda hoje encontramos "mestres" ensinando UP em "cascata". Senti falta do Bertrand Meyer na sua bibliografia. Se fosse indicar apenas um livro, seria o dele.

 
At 11:06 AM, Blogger joellobo disse...

Bem lembrado Roberto! Talvez não tenha entrado na lista porque custa $100.00 na amazon. :)

 

Postar um comentário

Links para este artigo:

Criar um link

<< Home


Veja as Estatísticas