软件模块化设计
模块化设计的产品举例 互联⽹产品迭代速度极快,⼈员变更频繁,对底层承载业务的系统带来的影响则是:⼀个系统可能会有成百⼈在改造它,⼀个系统糅合了 N 多⼈的编程思想,然⽽每个⼈的编程风格不同、设计理念不同,这些差异性会导致系统的可读性变差、可维护性降低,新增业务的成本变⾼。⽽模块化就是根据属性或者特性将程序分割成⼀个个有良好定义的边界的组件,同时附带有相对详细的⽂档说明,从⽽在某种程度上减少程序的复杂性。
⼀般来说模块化后的程序组件可以单独开发、编译并相互联系。组件内的细节只对改组件内的代码展⽰,⽽其他组件只能看到该组件明确公开的部分。模块化的最终⽬标呢就是减少维护成本。就⽐如我们常见java类其实就是模块化的体现,他对⾃⾝的代码细节很完善,但是对外我们只能看到⼀些公开参数。
模块化也并⾮是⾮常⽅便的模式,当遇到⼀些较⼤的项⽬时,我们不能对项⽬模块化的特别细致,因为这样会导致系统膨胀的异常巨⼤,只能根据⼀些⽐较⼤的特性来进⾏系统性的模块化,⽐如对游戏这个模式进⾏分割,我们不可能单独分割成欢乐⽃地主、⿇将、和平精英等等等等,我们只能将其分化为休闲游戏、射击游戏之类的,如果分的太细,⼜导致系统庞⼤带来了⼀定的复杂性。系统开发中我们常见的mvc模式就是这样的例⼦。
我们如何来对业务进⾏模块化呢?⼀般分为以下步骤
1.分析问题,明确需要解决的任务,对问题进⾏归类和抽象。
2.对任务进⾏逐步分解和细化,分成若⼲个⼦任务,每个⼦任务只完成部分完整功能,并且可以通过函数来实现
3.确定模块(函数)之间的调⽤关系
4.优化模块之间的调⽤关系
5.在主函数中进⾏调⽤实现
在模块化设计中,归类和抽象是最为重要的思想,那么什么是归类和抽象呢?举个例⼦,我们在⼀个系统中,可以将上传⽂本和上传图⽚统称为上传,这叫归类;上传⽂本是只允许上传⽂本类⽂件,上传图⽚是只允许上传图⽚格式的⽂件,这叫抽象。通过归类和抽象后,我们再进⾏开发⽂件展⽰、⽂件维护时我们⼜可以对不同的模块进⾏联系划分,有了⽂件维护,⽂件才能展⽰,这样对⽂件功能区的调⽤关系就进⾏了明确化,同时开发程序是对应的调⽤关系也得到了明确。通过这些关系呢,我们可以归结出⼀张联系图,后续的新的需求我们也可以根据归类和抽象和联系图进⾏⽐较,分析出是属于哪个部分的需求。
模块化的五个基本特征
1.层次分明,可以理解为设计⼀个层级分明的树状结构
2.抽象和细分,抽象就是对需求进⾏分析,不考虑实现部分,细分就是对需求进⾏逐级分级,对上⼀部分添加⼀定的细节
3.组成独⽴,除了必要的接⼝,尽量减少模块间、分系统、⼦系统之间的逻辑依赖,这样在后期进⾏维护升级时,就可以不⽤⼲涉其他不相关的部分
4.⾯向数据结构
5.⾼内聚,低耦合
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论