Conceitos sobre projetos - Decomposição de software
Neste artigo irei falar um pouco sobre conceitos relativos a projetos e a decomposição de software. |
O que é um projeto Orientado a objetos ? Quais seus objetivos ?
Respondendo esta pergunta podemos dizer que os objetivos de um projeto OO são :
Definir a arquitetura geral da aplicação
identificar classes de software que serão implementadas
definir atributos e métodos
Para atingir estes objetivos com certeza estaremos envolvidos com as seguintes tarefas :
definir métodos das classes de domínio do problema (usar diagramas de colaboração)
Introduzir classes de implementação ( interface , banco de dados , etc.)
usar padrões de projeto (design patterns)
usar casos de usos reais
Expondo assim até parece que o assunto é simples . Mas não é . Na verdade temos um grande problema...
Como tratar a complexidade inerente a sistemas de software ?
A solução clássica nos leva a famosa regra - Dividir para reinar - "divide at impera" da Engenharia de Software
Usamos então a decomposição de software da seguinte forma :
Dividir o sistema em partes menores
Cada parte deve ser refinada independentemente das demais
Cada parte pode ser compreendida independentemente das demais
Nesta tarefa podemos tomar basicamente dois caminhos distintos:
1- A decomposição algorítmica (a solução estruturada)
2- A decomposição Orientada a objetos (OO)
A decomposição algorítmica
O projeto e a programação estruturada: O algoritmo é decomposto na forma 'top-down' (de cima para baixo)
Abaixo temos um exemplo para um caso de uso - Registrar Venda
A decomposição estruturada leva aos seguintes problemas :
Como não existe uma única
forma de decompor o resultado final vai depender do projetista com isto temos
que o software final : é mais difícil de manter e mais difícil de
entender.
A decomposição OO
O sistema é decomposto de acordo com conceitos abstratos encontrados no problema e é visto como uma série de agentes autônomos (os objetos) que colaboram entre si para atingir um objetivo.
Olhando
para o modelo acima poderíamos perguntar :
Onde devemos colocar o método para
calcular o imposto de uma venda ?
Para saber devemos fazer a pergunta: Quem é que sabe de vendas ? A resposta óbvia seria: "Ora a classe venda ".
Então o método deve ser colocado nesta classe.!
O paradigma da OO trás as seguintes vantagens:
Sistema menores , com reuso de componentes
maior estabilidade por estar mais próximo da realidade modelada
Até breve...
Referências: