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 :

Para atingir estes objetivos com certeza estaremos envolvidos com as seguintes tarefas :

  1. definir métodos das classes de domínio do problema (usar diagramas de colaboração)

  2. Introduzir classes de implementação ( interface , banco de dados , etc.)

  3. usar padrões de projeto (design patterns)

  4. 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 :

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:

Até breve...

 

 

Referências:


José Carlos Macoratti