O que realmente é um módulo em engenharia de software? [fechadas]


18

De acordo com Stephen Schach, “Engenharia de software clássica e orientada a objetos”, capítulo 6:

um módulo consiste em um único bloco de código que pode ser chamado da maneira que um procedimento, função ou método é chamado

Isso parece muito vago e amplo. Então, alguém poderia explicá-lo claramente e mostrar alguns exemplos reais de como quebrar um requisito em módulos? Obrigado.

Respostas:


16

Um módulo

  • encapsula código e dados para implementar uma funcionalidade específica.
  • possui uma interface que permite aos clientes acessar sua funcionalidade de maneira uniforme.
  • é facilmente conectável a outro módulo que espera sua interface.
  • geralmente é empacotado em uma única unidade para que possa ser facilmente implantado.

Por exemplo, dapper.net encapsula o acesso ao banco de dados. Possui uma API para acessar sua funcionalidade. É um único arquivo que pode ser conectado a uma árvore de origem a ser criada.

O conceito de módulo vem do paradigma de programação modular que defende que o software deve ser composto de componentes separados e intercambiáveis ​​chamados módulos, dividindo as funções do programa em módulos, cada um dos quais realiza uma função e contém tudo o necessário para realizar isso.


se tivermos vários requisitos para que cada requisito possa ser considerado como um módulo? Por exemplo: o requisito "Adicionando funcionário" pode ser um módulo?
Hoan

1
Não ou depende. As funções do programa devem ser divididas em unidades coesas. Se os requisitos puderem ser discriminados dessa maneira, pode ser sim. Mas ainda não vi nada assim. Além disso, "Adicionando funcionário" não deve ser candidato ao módulo. Normalmente, os módulos são estruturas de nível superior que decompõem programas em unidades logicamente coerentes.
theD

12

Módulo pode ser um termo sobrecarregado, tanto que a Wikipedia o descreve sob o termo Programação Modular ao discutir seu uso em relação ao software. Eles discutem isso em termos de programação estruturada, baseada em uma abordagem de projeto de cima para baixo. Principais características da modularidade relacionadas ao uso de baixo acoplamento e alta coesão .

Meu uso é que, em uma linguagem como C ou C ++, um módulo está relacionado à definição de uma unidade compilada separadamente a partir de um arquivo de origem (.c ou .cpp) e, normalmente, de um arquivo de cabeçalho associado (.h). Outras linguagens usam o módulo como uma descrição, e a linguagem Modula-2 coloca a estruturação em torno dos módulos na frente e no centro em seu nome e abordagem.

Historicamente, o módulo tem outras implicações, conforme descrito no documento DL Parnas "Sobre os critérios a serem usados ​​na decomposição de software em módulos" . Ele está preocupado principalmente em discutir os benefícios da substituição da decomposição funcional pela decomposição orientada a dados, o que foi um grande passo em direção ao nosso estado da arte atual, que é a decomposição orientada a objetos.

As linguagens orientadas a objetos são organizadas em torno de classes, então talvez o termo módulo seja menos importante e menos preciso nesse contexto.


7

Não existe uma definição formal de módulo, e o que é um módulo (ou não) no contexto do seu projeto depende em grande parte da natureza e do design do projeto.

De um modo geral, um módulo é um trecho de código independente que fornece funcionalidade específica e fortemente acoplada. Os módulos definem e aplicam limites lógicos no seu código.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.