博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我对模块化的理解
阅读量:6658 次
发布时间:2019-06-25

本文共 1283 字,大约阅读时间需要 4 分钟。

http://blog.csdn.net/horkychen/article/details/8293178

模块化是一个"发现"

模块化(Modularity)这个概念与其说是一种创新,不如说是一个"发现"。这正是人们在解决问题时常用的行为方式和思维过程。它不是单纯的技术问题,更深深地影响着整个社会生活。可以读读<<设计原则:模块化的力量>>, 在<<Unxi编程艺术>>第4章也提到了这本书!
 
我们获取知识有两个重要的方式:归纳(conclude)和演绎(deduce),不用多解释。它们其实就是自下而上和自上而下的差别。人类有与生俱来的抽象思维能力,沟通问题时使用隐喻会大大提升效率。太多的琐事常常影响我们的判断力,所以我们总是在追求分理主次,简化问题。社会的发展带来了越来越多样的社会分工,在亚当.斯密的<<国富论>>讲到了社会分工的必然性。整个世界都在分分合合中保持着一种稳定,发展形势上也有自下而上和自上而下之分。
 
所以模块化正是我们思维习惯的体现,它的发现是一个必然的结果。它的目的可以概括为:
  1.信息隐藏 (抽象,黑盒)。
  2.分工 (正交性,聚合)。
分工同时可以更容易实现并行开发,带来开发效率的提升。而信息隐藏则降低了对程序员的要求,能够更好地掌握模块内的复杂度。而最终是一个经济目的:低成本。
 
经济上定义了公司的一个决策行为,当内部生产的成本高于在开放市场上购买的成本时,就不会自己生产,而是转向购买。 也就是分工合作。模块就像不同的公司,上下游之间有着各式各样的互动。当公司/模块独立运作(低耦合)时,只关注公司/模块间的契约或合同(信息隐藏),这就是模块化。可以宏观的看(不同的公司或国家),也可以微观的看(不同的部门或器官)。并且模块化本身是动态的过程,合合分分。 当发现两个公司产品线相互紧密依赖(内部生产的成本优于在市场上采购)或相似(整合会产生规模效应),就会出现并购。当公司内部某个产品线与其它产品线开始分化(更好或更差,或者经营目标等不一致时),就可能会分拆。
 

模块化的要素

模块化的第一要素是角色和责任(Role&Responsibility, HR上的一个概念,能引起一些思考.)。如果焦点只关注在模块,容易造成局部最优,但整体不佳的问题。这也正是约束理论要解决的问题。所以还要有标准。从系统的层级定义一个模块的目标功能,划分好角色,来约束模块的演进,以保证整体系统的最优。
 
模块化的第二个要素是接口,包括静态的接口定义(职责)和动态的交互定义(行为方式,如何协作,异常处理等),也可以概括为契约(contract),在技术上则称为接口(interface)。
 
所以模块化设计要从大的系统视角规划角色,又要从小的模块视角设计协作的细节,中间一定不断有冲突,要经过不断演化来达到一个相对稳定的结构,这取决于时间和成本上的考虑。
 
*在软件开发中,模块化和语言无关,关键是领域,也就是业务面的问题。这也和敏捷与否无关,不同的只是模块化程度的问题。
 
转载请注意出处:http://blog.csdn.net/horkychen
你可能感兴趣的文章
Python 生成器和迭代器
查看>>
The Loss of Bounding Box Regression
查看>>
backup exec 恢复用户单个邮件
查看>>
myeclipse 修改编码方式
查看>>
App Store 经验贴,新手必看(包括申请流程、市场推广、销售数据、工具软件等等) ...
查看>>
iptables规则备份和恢复、linux防火墙-firewalled介绍和相关操作
查看>>
华为路由器PPPoE配置
查看>>
对amazon Cookie Stuffing的作弊研究过程
查看>>
linux下mysql忘记root密码解决方案
查看>>
android之AsncTask异步任务使用
查看>>
ZABBIX(七) Zabbix 选择适合的监控类型
查看>>
lamp编译安装
查看>>
ZS6366芯片技术解析
查看>>
SQL*loader实验
查看>>
Linux 下开启和关闭IPv6的方法
查看>>
借开发小工具做工作感悟
查看>>
bad ELF interpreter: No such file or directory
查看>>
php基础教程:变量
查看>>
iOS不使用第三方平台,发送推送消息
查看>>
MFC分组Radio Button的使用
查看>>