Modularização
A programação estruturada é um paradgma para o desenvolvimento de software. Ela envolve dois conceitos básicos para a elaboração de programas:
- a técnica de refinamento sucessivos
- a modularização de programas
O desenvolvimento de algoritmos através de refinamentos sucessivos conduz a modularização da solução do problema.
A modularização de algoritmos envolve a decomposição de algorítmos em módulos tendo em vista a organizar o processo de programação permitindo assim o controle da complexidade do programa. Um módulo é um grupo de comandos que executa uma função bem definida. Pode-se imaginar um módulo como sendo uma caixa-preta que executa uma função. Desse modo, um programa pode ser visto como um conjunto de várias caixas-pretas interagindo-se entre si normalmente sob a supervisão de um módulo principal.
A figura abaixo pode traduzir a idéia de como seria um algoritmo decomposto em módulos:
Pelo diagrama acima pode-se observar que ele descreve uma estrutura hierárquica. O controle da execução do algoritmo fica sob a responsabilidade do módulo principal e os outros módulos respondem por rotinas específicas do problema. Quando os módulos de um programa respondem por realizar rotinas específicas que contribuem para a solução do problema diz-se que realizou-se uma decomposição funcional, isto é, o módulo executa alguma função específica do problema. Há outras formas de decomposição de um algoritmo.
As linguagens de programação dispõem de recursos que permitem a criação de módulos. Na orientação do interpretador Hall os módulos são implementados como funções. Traduzindo o diagrama acima para a sintaxe do interpretador poderemos ver algo como:
Pode-se observar no diagrama hierárquico acima que o módulo principal é a função algoritmo() uma vez que no interpretador tudo são funções. O diagrama hierárquico de módulos lembra a estrutura em árvore dos diretórios de um sistema operacional no qual o diretório principal de nível mais alto é o diretório raiz. O módulo principal também é denominado de módulo raiz.
Características do módulo
As seguintes características são desejáveis em um módulo:
1. deve ser pequeno. Módulos grandes são difíceis de ser compreendidos.
2. deve implementar uma única funcionalidade.
3. deve implementar ou definir suas próprias estruturas de dados.
4. as estruturas de dados do módulo devem ser necessárias e suficientes apenas para executar a funcionalidade específica do mesmo.
Benefícios
A decomposição do algoritmo em módulos funcionais traz benefícios tais como:
1. manutenção mais simples pois a independência do módulo evita efeitos colaterais em outros pontos do algoritmo.
2. o módulo pode ser elaborado de forma independente do restante do algoritmo.
3. o módulo pode ser elaborado em época diferente do restante do algoritmo.
4. promove-se a divisão do trabalho onde programadores podem elaborar diferentes módulos do algoritmo.
5. os módulos podem ser testados separadamente.
6. promove-se a reutilização de código pois um módulo pode ser utilizado em outros algoritmos que requeiram a mesma funcionalidade.
Nenhum comentário:
Postar um comentário