最新消息:

模块化设计的三个特征(模块化设计是指什么)

媒体模版 admin 浏览 评论

三个基本特征是:封装、继承、多态。

1、封装

封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2、继承

面向对象编程(OOP)语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些OOP语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

1)实现继承是指使用基类的属性和方法而无需额外编码的能力;

2)接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

3)可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee是一个人,Manager也是一个人,因此这两个类都可以继承Person类。但是Leg类却不能继承Person类,因为腿并不是一个人。

抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface而不是Class。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成)→用类与实例进行设计和实现几个阶段。

3、多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。”

那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

.瀑布模型

它提出了软件开发的系统化的、顺序的方法。其流程从系统开始,随后是需求分析、设计、编码、测试、支持。这种模型是最早也是应用最广泛的软件过程模型(虽然这种模型会引起“堵赛状态”)。

优点:

1.它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。

2.虽然有不少缺陷但比在软件开发中随意的状态要好得多。

缺点:

1.实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。

2.经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。

3.客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。

4.采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。

适用范围:

1.用户的需求非常清楚全面,且在开发过程中没有或很少变化

2.开发人员对软件的应用领域很熟悉

3.用户的使用环境非常稳定

4.开发工作对用户参与的要求很低

显著特点:

按工序将问题化简,将功能的实现与设计分开,便于分工协作

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.增量模型

这种模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

优点:

1.采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源

2.如果核心产品很受欢迎,则可增加人力实现下一个增量

3.可先发布部分功能给客户,对客户起到镇静剂的作用

缺点:

1.并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构

2.增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性

适用范围:

1.进行已有产品升级或新版本开发,增量模型是非常适合的

2.对完成期限严格要求的产品,可以使用增量模型

3.对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的

显著特点:

引进了增量包的概念,无须等到所有需求都出来,只要某个需求增量包出来即可进行开发

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.螺旋模型

这是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐步产生。螺旋模型被划分为若干框架活动,也称为任务区域

优点:

1.设计上的灵活性,可以在项目的各个阶段进行变更

2.以小的分段来构建大型系统,使成本计算变得简单容易

3.客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性

4.随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互

5.客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品

缺点:

1.采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失

2.过多的迭代次数会增加开发成本,延迟提交时间

3.很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求

适用范围:

对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更,螺旋模型只适合于大规模的软件项目

显著特点:

引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

4.RAD模型

快速应用开发(RAD)是一个线性顺序的软件开发模型,强调极短的开发周期。RAD模型是线性顺序模型的一个“高速”变种,通过使用基于构件的建造方法获得了快速开发

优点:

1.开发速度快,质量有保证

2.对信息系统特别有效

缺点:

1.对大型项目而言,RAD需要足够的人力资源

2.开发者和客户都要实现承诺,否则将导致失败

3.并非所有系统都适合:不能合理模块化的系统、高性能需求并且要调整构件接口的系统均不适合

适用范围:

1.不适合技术风险很高的开发,不适合系统需求是高性能,并且需要通过调整构件接口的方式来提高性能的产品开发。

2.适用于工期紧张,又可细分功能,还要有合适的构件

显著特点:

使用基于构件的建造方法获得了快速开发,使得一个开发组能够在很短时间内(如60到90天)创建出“功能完善的系统”

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

5.迭代模型

迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集

优点:

1.降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费

2.降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙

3.加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率

4.由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些

缺点:

在项目早期开发可能有所变化,需有一个高素质的项目管理者和一个高技术水平的开发团队

适用范围:

1.在项目开发早期需求可能有所变化

2.分析设计人员对应用领域很熟悉

3.高风险项目

4.用户可不同程度地参与整个项目的开发过程

5.使用面向对象的语言或统一建模语言

6.使用CASE工具

7.具有高素质的项目管理者和软件研发团队

显著特点:

能显著减少风险

机械产品的模块化设计始于20世纪初的1920年左右。模块化设计原理开始于机床设计,到20世纪50年代,欧美一些国家正式提出“模块化设计”概念,把模块化设计提到理论高度来研究。模块化设计与产品标准化设计、系列化设计密切相关,即所谓的“三化”。“三化”互相影响、互相制约,通常合在一起作为评定产品质量优劣的重要指标,是现代化设计的重要手段。目前,模块化设计的思想已渗透到许多领域,例如,机床、家电、计算机等。在每个领域中,模块及模块化设计都有其特定的含义,本书特指机械产品的模块化设计。

为开发具有多种功能的不同产品,不必对每种产品施以单独设计,而是精心设计出多种模块,将其经过不同方式的组合来构成不同的产品,以解决产品品种、规格与设计制造周期、成本之间的矛盾,这就是模块化设计的含义。模块是指一组具有同一功能和接合要素(指联结部位的形状、尺寸,联结件间的配合与啮合等),但性能、规格或结构不同却能互换的单元。

机床夹具、联轴器可称为模块,有些零件如插头、插座,从广义上来说也可以称为模块,但不如称为标准件好。在模块化设计中,也用到大量的标准件,但模块多指标准件之外、仍需被设计而又可以用于不同的组合、从而形成具有不同功能的设备单元。

模块化设计是指在对产品进行市场预测、功能分析的基础上,划分并设计出一系列通用的功能模块;并根据用户的要求,对这些模块进行选择组合,就可以构成不同功能或功能相同但性能不同、规格不同的产品,如图4-25所示。

图4-25计算机风扇模块化设计模块标准化是指模块结构标准化,尤其是模块接口标准化。模块化设计所依赖的是模块的组合,即连接或啮合,又称为接口。显然,为了保证不同功能模块的组合和相同功能模块的互换,模块应具有可组合性和可互换性两个特征,而这两个特征主要体现在接口上,必须提高其标准化、通用化、规格化的程度。例如,具有相同功能、不同性能的单元一定要具有相同的安装基面和相同的安装尺寸,才能保证模块的有效组合。在计算机行业中,由于采用了标准的总线结构,来自不同国家和地区厂家的模块均能组成计算机系统并协调工作,使这些厂家可以集中精神,大量生产某些特定的模块,并不断进行精心改进和研究,促使计算机技术达到空前发展。相比之下,机械行业针对模块化设计所做的标准化工作就逊色一些。机械产品中模块化设计仅应用于为数不多的行业。

模块化设计的原则是力求以少数模块组成尽可能多的产品,并在满足要求的基础上使产品精度高、性能稳定、结构简单、成本低廉,且模块结构应尽量简单、规范,模块间的联系尽可能简单。因此,如何科学地、有节制地划分模块,是模块化设计中具有艺术性的一项工作,既要照顾制造管理方便,具有较大的灵活性,避免组合时产生混乱,又要考虑到该模块系列将来的扩展和向专用、变形产品的辐射。模块划分的好坏直接影响到模块系列设计的成功与否。

随着计算机应用技术向各行各业的渗透及以计算机辅助设计为主体的现代设计的发展,模块化设计形成了以计算机为工具,以模块化设计为目标的各种学科交叉融合的新型技术领域,如计算机辅助模块化设计、模糊模块化设计、智能模块化设计、优化模块化设计等,这些手段反过来又促进了模块化设计思想的发展。

转载请注明:片头模版 » 模块化设计的三个特征(模块化设计是指什么)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()