谈软件工程中的面向对象软件设计

  • 格式:doc
  • 大小:25.00 KB
  • 文档页数:6

谈软件工程中的面向对象软件设计
摘要本文软件从工程学习的角度,概括的阐述了面向对象软件
设计的特点、步骤、原则等方面的内容。

关键词面向对象;软件设计;ood
中图分类号tp311.5 文献标识码a 文章编号
1674-6708(2010)22-0220-02
the object-oriented software design in software engineering
song ailin
abstract from the view of software engineering learning, this paper generally introduce the characteristics of object-oriented software design, and it’s steps and principles, etc.
keywords object-oriented;software design;ood
随着20世纪80年代末面向对象技术的兴起,传统设计方法不能满足现代软件工程的需要,学习软件工程必须要重视面向对象的软件设计。

1 面向对象设计概述
面向对象(oo, objected oriented)方法是1979年以后发展起来的,它是一种系统的软件方法学。

有学者认为面向对象技术与方法包括面向对象分析、面向对象设计、面向对象编程、面向对象测试和面向对象维护5个阶段。

面向对象设计(ood, objected oriented design)并不是指用一种具体语言去直接编写代码,而是建立在前期的面向对象分析建模基础上,主要考虑“如何实现”问题,焦点从问题空间转到解空间,着重完成各种不同层次的模块设计。

但是有一点与传统设计有很大区别,面向对象设计和分析没有明显的分界线,二者采用相同的符
号表示,它们往往反复迭代地进行。

设计对分析模型进行调整并补充与实现有关的部分,形成面向对象设计模型。

2 面向对象设计过程
2.1 系统设计
系统设计确定实现系统的策略和目标系统的高层结构,要将系统分解为若干子系统,在定义和设计子系统时应使其具有良好的接口,通过接口和系统的其余部分通信。

主要步骤有:划分子系统,确定需要并发运行的子系统并分配处理器,描述子系统之间的通信,确定
系统资源的管理和控制,确定人机交互构件,选择实现数据管理和
任务管理的基本策略。

2.2 对象设计
面向对象设计阶段是扩充、完善和细化对象模型的过程,设计类中的服务、实现服务的算法是面向对象设计的重要任务,还要设计类的关联、借口形式及进行设计的优化。

一般步骤是:对象描述,设计类中的服务,设计类的关联,链属性的实现,设计的优化。

2.3领域对象设计
ood阶段的一个重要内容是实现角度对领域模型做补充或修改。

例如,增添、合并或分解类对象,调整继承关系等等。

领域对象设计一般包括:调整需求,复用已有的组建,引入父类、分组管理领域类,增添一般化类以建立协议,调整ooa模型,设计复审。

3 面向对象设计的原则
3.1 单一职责原则
就一个类而言,应该仅有一个引起它的变化的原因。

最有效类的职责简单而且集中,避免相同的职责分散到不同的类之中,避免一个类承担过多的职责减少类之间的耦合当需求变化时,只修改一个地方。

3.2 开放封闭原则
包含两个要点:一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。

同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。

换言之,指当需求改变时设计人员扩展模块增加新功能,而不需要改动原来的代码。

3.3 liskov替换原则 lsp
lsp是主要针对继承的设计原则,所有派生类的行为功能必须和客户程序对其基类所期望的保持一致。

简单的说,如果一个软件实体使用的是基类的话那么也一定适用于子类,但反过来的代换不成立。

3.4 依赖倒置原则dip
idp原则规定:1)高层模块不应依赖于底层模块,两者都应该依赖于抽象;2)抽象不应该依赖于细节,细节应该依赖于抽象。

3.5 接口隔离原则——isp
从客户的角度来说:一个类对另外一个类的依赖性应当是建立在最小的接口上的。

如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。

提供接口意味着向客户端承诺,过多的承诺会给系统的维护造成不必要的负担。

4 面向对象设计的软件
4.1 设计软件概述
20世纪80年代以来,出现了几十种支持软件开发的面向对象方法。

其中,booch, coad/yourdon、omt和jacobson的方法在面向对象软件开发界得到了广泛的认可。

目前主要使用的是统一建模语言uml(unified modeling language)进行建模,该方法结合了booch、omt和jacobson方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。

uml1.1版本于1997年被omg组织接纳确定为基于面向对象技术的标准建模语言。

4.2 具体的设计模型
第一,用例模型,它是从用户的角度描述系统需求。

一般先将用例按优先级分类,再区分用例在体系结构方面的风险大小,最后对用
例所需的工作量进行估算。

第二,静态模型,它是描述系统的元素,即元素间的关系,定义了类、对象和它们之间的关系及组件模型,可以使用用例图、类图、包图、对象图、构件图、部署图等。

第三,
动态模型,它描述系统随时间的推移发生的行为,可以使用的uml图有状态图、顺序图、活动图、协作图。

第四,实现模型,它包括构件图和部署图,它们描述了系统实现时的一些特性。

构件图显示代码本身的逻辑结构;部署图显示系统运行时的结构。

5 面向对象设计的评价
我们在关注面向对象思想进行开发的易维护、质量高、效率高、易扩展优点的同时,也必须充分认识其不足,尤其是关于效率的问题。

有研究者发现,成功的操作系统没有一个是使用面向对象语言开发的,成功的搜索引擎也是如此。

由于比较脱离底层,因此在一些嵌入式等跟硬件打交道较多的地方不太适合使用。

因而,有评论认为在效率极其关键、或者处理超大规模数据的情况下,面向对象思想毫无用处,面向过程的开发才是最适合的。

虽然面向对象设计原则上不依赖于特定的实现环境,但是实现结果和实现成本却在很大程度上取决于实现环境。

因此,笔者认为直接支持面向对象设计范式的面向对象程序语言、开发环境及类库,对于面向对象实现来说是非常重要的,作为软件工程的学习、研究人员有必要熟悉一门面向对象程序语言。

参考文献
[1]史济民,等.软件工程原理、方法与应用[m].北京:高等教育出版社.
[2]任红卫.面向对象技术与软件复用技术的关系[j].电脑与
信息,2008(5):77-78,81.
[3]任胜兰.面向对象的ooa、ood软件开发技术分析[j].忻州师范学院学报,2009(10):39-42.
[4]陆惠恩.实用软件工程[m].北京:清华大学出版社,
2006,5.
[5]张勇.asp环境中面向对象技术的研究与应用[j].计算机与现代化,2008(6):113-115.
[6]汪作文.试论面向对象的设计模式[j].科技信息,
2009(28):244-246.。