世界是复杂的,值得幸运的是,复杂的世界是由小生大,由简入繁。人类研究复杂世界的方法是将复杂的事物逐一分解成已经了解的简单事物,并且研究这些简单事物的相互作用产生的系统特性。人类认识世界的方式如此,在此基础上构建的知识体系如此,而人类发明和构建工具的方式同样如此。在现代工程中,这种方式被称为基于模型的设计(Model Based Design)或者模块化设计(modularization Design)。模型是心智性的,模块是事物性的。
现代社会的产品大多数是采用基于组件的方法设计和制造出来的。以电子产品为例,各种集成电路构成印刷电路板,多块印刷电路板构成机箱,多个机箱构成机柜。
在软件领域,为了构建复杂的软件系统,同样导入了各种模块化设计方法, 基于组件(Component)的软件设计就是其中一种。它是在面向对象设计原则之上更高级别的抽象方法。
可扩展性
可以从现有组件扩展组件以提供新行为。
可替换性
很容易地用其他类似组件代替。
封装
组件公开了使用方法,隐藏了内部的细节。
可重用
在不同应用中的不同场景中重复使用。
独立性
对其它组件的依赖性小,可以由独立的专业化机构或者个人设计和制造。
不依赖特定场合
在不同的环境和上下文中运行。特定信息(如状态数据)应传递给组件,而不是包含在组件中或由组件访问。
整体软件转化为组件
使用组件将整体式架构转变为软件构建块。这些组件可以组合、重用和版本控制。
构建组件仓库
购买不构建
首选方法是使用现成的组件创建一个系统,并采用购买不构建的心态。仅在必要时构建自定义组件,而不是从头开始构建整个系统。
团队自治
组件团队在没有外部帮助或干扰的情况下创建组件。在这种情况下,组件是独立的,但不会影响系统。这将导致组建自治团队,因为他们有很大的自由、灵活性和问责制来决定如何保持项目顺利进行。
使用组件进行系统应用设计时,可以使用图形,表格来描述组件的属性和相互关系。从而实现图形化编程,组态编程和少代码编程方法。数据结构、接口和算法的设计应符合既定的准则, 帮助我们避免引入错误。
下面是IEC61499 基于功能块网络的图形化设计图。功能块是一种软件组件。它们使用类似硬件芯片的图形化表示。
2 运行时(runTime)
由组件运行时程序解析组件网络执行。在执行过程中,组件通常以动态库的方式被调用。
3 少代码方式
使用少量代码调用功能块
自动化领域的梯形图,功能块,IEC61499 功能块本质上都是基于组件设计的图形化表示。
在分布式异构计算系统中,使用组件为基础的设计。
Web 前端设计中导入了基于组件的设计方法。