软件项目的模块化有多重要

时间:2009-08-10 16:59:01

标签: architecture modularization

模块化在软件项目中显然很重要,但我想知道人们对 重要性以及原因重要性的看法。自从我问这个问题以来,我显然已经有了自己的想法,但是把它想象成一个应该模块化软件项目的原因的“共同头脑风暴”......

5 个答案:

答案 0 :(得分:5)

当涉及到同时掌握复杂问题时,我们人类是有限的。但是,我们有能力将复杂的问题分解为(可能非常大的)个别问题,这些问题并不太复杂,无法解决大问题。

这从根本上推动了诸如“重用”,“关注点分离”,“更容易维护”等问题。

所有这些原因都是正确的,无论是一个人打破一个复杂的问题来逐个解决,还是一个人为了分散复杂性而打破它的团队。

答案 1 :(得分:4)

我认为其中一个主要方面是重用。当你模块化地构建东西时,几乎没有这样的事情:“哦,我之前已经完成了这个,但是为了使用它,我还必须得到这个和这个功能,这与我的应用程序完全无关”。

此外,更容易理解。我无法同时记住大量的事情。当代码是模块化的时,更容易建立一个自己有意义的事物的“区域”。一旦这个区域变小,我就能把它理解为整体,而不是它的一部分。

最后,当事情变得更小时,更容易进行测试和维护。此外,一旦测试只测试应用程序的一小部分,您的测试就会更快地指出错误。

答案 2 :(得分:2)

将代码放入不同模块的主要原因:

  • 关注点分离:我觉得如果将类组织成不同的模块,就可以更容易地限制不同级别或不同任务的类内部知识。如果隐藏得很好,依靠内部的感觉会更“肮脏”。
  • 更容易维护更小的组件:如果我处理的代码文件较少的项目,我通常会发现开发环境响应更快,而不是项目包含数百个文件。 / LI>
  • 防止命名空间冲突:正确模块化后,例如:使用Java中的命名空间,您可以为相同的功能使用相同的函数名称,而不必担心Foo组件中的printout()函数将与Bar组件中的printout()函数冲突。
  • 安全问题的分离:当一个组件踩到另一个组件的脚趾时,更容易将潜在的损坏降到最低。根据所使用的技术,您可以限制每个模块在内存中的播放位置。

答案 3 :(得分:1)

模块化和解耦很重要,原因有很多,其中一些是:

  • 重用:重用专用于特定目的的软件模块要容易得多
  • 管理复杂性:处理分离的模块(编写代码,调试,维护等)使您专注于某个域问题,而不会被应用程序或软件系统的其他方面分散注意力。

答案 4 :(得分:0)

它也可以被视为Application Architecture的基本活动:

  • 采用一些业务和功能规范
  • 将主要功能分组到应用程序中,同时识别非功能模块和纯技术横向模块

这就是为什么“金融投资组合计算”实际上将分为:

  • 计算模块
  • 调度程序模块(因为投资组合太大而无法在一台服务器上计算)
  • 一个启动器模块(用于试验所有计算)
  • 一个GUI(看看实际发生了什么)

加上几个横向的:

  • KPI日志记录
  • 例外管理

将这种功能需求视为一个庞大的单片模块会迫使开发人员将所有子程序按顺序实现为全部。
鉴于具有清晰的应用程序体系结构,您可以开始处理更通用和横向的模块,同时仍然可以改进其他更面向业务的模块。

它还会强制您定义更多接口,并分析不同模块必须解决的通信间问题(直接n-to-n类型?总线?,...)