软件的复用技术及开发方法

合集下载

软件复用的几种方式

软件复用的几种方式

软件复⽤的⼏种⽅式软件复⽤的好处有很多⼀、提⾼⼯作效率这条⾃不必说,⽐如在项⽬A中你写⼀个,A完⼯后启动了项⽬B,在B中就可以直接复⽤项⽬A的模块了。

⼀个可复⽤的软件可以为将来节省费⽤,被服⽤的频率越⾼,组件的初始开发成本就越低。

⼆、提⾼软件质量可复⽤的软件总⽐不能复⽤的有更多的质量保障。

因为可复⽤的软件在不断的复⽤过程中把⼀些bug,缺陷都很快的排除了。

因此可复⽤的软件⼀定是利于系统的可维护性的。

按抽象程度的⾼低,可以划分为如下的复⽤级别:代码的剪贴复制利⽤编辑器(IDE)可以很⽅便的做到减少抄写代码的⼈⼒成本。

这可能是⼊门级程序员习惯的,⾃发的复⽤软件的形式。

把⼀个写好的⼯具函数⾃发的拷贝到另⼀个功能或项⽬中。

这种⽅式有着明显的缺点就是他造成很多重复冗余的代码。

尤其在Web前端开发中,JavaScript 资源的量⼤⼩影响着客户端下载速度。

好⼀点的复⽤⽅式可以采⽤。

算法的复⽤各种算法⽐如排序都已经得到了⼤量的研究。

⼏乎不需要你重新去写⾃⼰的算法,各种语⾔通常也实现了这些常⽤算法。

因此你只需要直接复⽤。

数据结构的复⽤与算法⼀样,类似数组、队列、栈、列表等得到了透彻的研究,只需要直接复⽤。

以上是传统的复⽤种类,下⾯是更⾼级的复⽤⽅式设计的复⽤设计结果⽐源程序的抽象级别更⾼,因此它的复⽤受实现环境的影响较少,从⽽使可复⽤构件被复⽤的机会更多,并且所需的修改更少。

这种复⽤有三种途径,第⼀种途径是从现有系统的设计结果中提取⼀些可复⽤的设计构件,并把这些构件应⽤于新系统的设计;第⼆种途径是把⼀个现有系统的全部设计⽂档在新的软硬件平台上重新实现,也就是把⼀个设计运⽤于多个具体的实现;第三种途径是独⽴于任何具体的应⽤,有计划地开发⼀些可复⽤的设计构件。

分析的复⽤这是⽐设计结果更⾼级别的复⽤,可复⽤的分析构件是针对问题域的某些事物或某些问题的抽象程度更⾼的解法,受设计技术及实现条件的影响很少,所以可复⽤的机会更⼤。

软件工程中的软件复用技术分析

软件工程中的软件复用技术分析

软件工程中的软件复用技术分析在当今快速发展的信息技术领域,软件工程面临着越来越高的要求和挑战。

为了提高软件开发的效率、质量和降低成本,软件复用技术逐渐成为软件工程中的重要手段。

软件复用,简单来说,就是在软件开发过程中,重复使用已有的软件资源,包括代码、设计、文档等。

这就好比在建造房屋时,不是每次都从制作砖头开始,而是可以直接使用已经生产好的砖头,从而节省时间和精力。

软件复用技术具有诸多显著的优势。

首先,它能够显著提高软件开发的效率。

通过复用已有的成熟组件和模块,开发人员无需从头开始构建每一个功能,从而大大缩短了开发周期。

想象一下,如果每次开发一个新的应用程序都要重新编写登录模块、用户管理模块等常见功能,那将是多么耗时费力的事情。

而有了软件复用,这些常见的功能模块可以直接拿来使用,或者在其基础上进行少量的修改和定制,就能满足新的需求。

其次,软件复用有助于提高软件的质量。

被复用的软件组件往往经过了多次的测试和优化,其稳定性和可靠性相对较高。

使用这些经过验证的组件,能够降低新开发软件中出现错误和缺陷的风险。

再者,软件复用还能降低开发成本。

由于减少了重复开发的工作量,相应的人力、时间和资源投入也会降低,从而使软件开发的成本得到有效控制。

在软件工程中,常见的软件复用形式多种多样。

代码复用是最基本的一种形式,开发人员可以直接复用他人编写的函数、类或者模块。

设计复用则是在更高层次上的复用,例如复用软件的架构设计、算法设计等。

还有一种是组件复用,这就像是在搭积木,将各种预定义好的组件组合在一起,构建出复杂的软件系统。

然而,要实现有效的软件复用,并非一帆风顺,也面临着一些挑战和问题。

首先是复用资源的查找和评估问题。

在庞大的软件资源库中,如何快速准确地找到符合需求的复用资源,并且评估其质量和适用性,是一个难题。

这需要建立有效的检索机制和评估标准。

其次,复用资源的适应性和兼容性也是需要考虑的。

不同的软件项目可能有不同的需求和环境,复用的资源可能需要进行一定的修改和调整才能适应新的情况。

如何进行有效的代码复用

如何进行有效的代码复用

如何进行有效的代码复用代码复用是软件开发中非常重要和常见的概念。

有效的代码复用可以提高开发效率、减少冗余代码、提升代码质量等方面带来诸多好处。

本文将从代码复用的定义、优点、实现方法以及实践建议等几个方面,探讨如何进行有效的代码复用。

一、代码复用的定义及意义代码复用是指在软件开发中,通过使用现有的模块、类、函数等已经实现过的代码,来构建新的软件系统或者模块。

它可以帮助开发人员减少重复开发相同或相似功能的代码,提高开发效率,并且降低了出错的可能性。

有效的代码复用有以下几点意义:1. 提高开发效率:代码复用可以减少开发人员进行重复工作的时间,极大地提高开发效率。

2. 减少冗余代码:通过复用现有代码,可以避免多次编写相同或相似功能的代码,减少了冗余代码的产生,使代码更加简洁和易于维护。

3. 提升代码质量:复用经过测试和验证的代码,在一定程度上能够提高代码质量和稳定性,降低出错的可能性。

4. 促进协作与沟通:代码复用可以使开发人员更好地协同工作,提高团队合作能力和共享知识的机会。

二、代码复用的优点代码复用作为一种软件开发的常用技术手段,具有以下几个明显的优点:1. 避免重复开发:通过复用已有的代码,避免了重复开发相同或相似功能的代码,提高了开发效率。

2. 提高可维护性:通过代码复用,可以将常见的功能模块封装成独立的组件,使得代码更加模块化和易于维护。

3. 降低出错风险:复用经过充分测试和验证的代码,减少了出错的可能性,提高了软件的稳定性。

4. 加快开发速度:通过复用可靠的代码库,可以减少新代码的编写量,从而加快了开发速度。

三、代码复用的实现方法代码复用可以通过以下几种方式实现:1. 函数或方法复用:将常用的代码逻辑封装成函数或方法,供其他模块或类进行调用。

在设计函数或方法时,要尽量使其功能单一、可重用。

2. 类和对象复用:通过面向对象的方式,将常用的功能封装到类中,其他模块或类可以通过实例化对象来实现功能的复用。

复用设计解释

复用设计解释

复用设计解释复用设计是一种软件设计方法,它的目的是通过将已有的软件组件或模块进行重复利用,来提高软件开发的效率和质量。

复用设计可以帮助开发人员快速构建出高质量的软件系统,同时也可以减少开发成本和维护成本。

本文将从复用设计的定义、优点、实现方法和应用场景等方面进行解释。

一、复用设计的定义复用设计是指在软件开发过程中,将已有的软件组件或模块进行重复利用,以提高软件开发的效率和质量的一种软件设计方法。

复用设计可以将已有的软件组件或模块进行抽象和封装,形成可重用的软件库,供其他开发人员在开发过程中使用。

二、复用设计的优点1. 提高软件开发效率复用设计可以将已有的软件组件或模块进行重复利用,避免了重复开发相同的功能,从而提高了软件开发的效率。

2. 提高软件质量复用设计可以将已有的软件组件或模块进行抽象和封装,形成可重用的软件库,这些组件或模块经过多次使用和测试,已经被证明是可靠的,可以提高软件的质量。

3. 减少开发成本和维护成本复用设计可以避免重复开发相同的功能,从而减少了开发成本。

同时,由于复用的组件或模块已经被证明是可靠的,因此可以减少维护成本。

三、复用设计的实现方法1. 抽象和封装复用设计的核心是将已有的软件组件或模块进行抽象和封装,形成可重用的软件库。

抽象是指将组件或模块的功能进行概括和归纳,形成一个抽象的接口。

封装是指将组件或模块的实现细节进行隐藏,只暴露出抽象的接口。

2. 继承和多态继承和多态是实现复用设计的重要手段。

继承是指子类继承父类的属性和方法,从而可以重复利用父类的代码。

多态是指同一个接口可以有不同的实现方式,从而可以根据不同的需求选择不同的实现方式。

3. 设计模式设计模式是一种通用的解决问题的方法,它可以帮助开发人员快速构建出高质量的软件系统。

设计模式包括创建型模式、结构型模式和行为型模式等,每种模式都有其特定的应用场景和解决问题的方法。

四、复用设计的应用场景1. 框架开发框架是一种通用的解决问题的方法,它可以帮助开发人员快速构建出高质量的软件系统。

软件工程中的软件复用

软件工程中的软件复用

软件工程中的软件复用软件复用是指在软件开发过程中,重复使用已有的软件组件、模块、库或其他可重用的资源来构建新的软件系统。

它是提高软件开发效率和质量的重要手段之一。

本文将从软件复用的定义、优势、实施方法以及存在的挑战等方面进行讨论。

一、软件复用的定义软件复用是指在软件开发过程中,通过合理组合已有的软件组件、模块、库等可重用资源,使得新的软件系统能够更高效、更快速地开发出来。

软件复用旨在降低开发成本、加快开发进度、提高软件质量和可靠性。

它可以通过不同的方式实现,如通过代码重用、组件复用、模块复用等。

二、软件复用的优势1. 提高开发效率:软件复用可以避免从头开始编写相同或相似功能的代码,减少了开发时间和工作量,提高了开发效率。

2. 提高软件质量:通过复用已经经过测试和验证的软件组件,可以减少错误和缺陷的可能性,提高软件的质量和可靠性。

3. 降低成本:软件复用避免了重复开发相同功能的成本,节约了开发资源和时间,并且可以通过合理的复用策略降低软件维护的成本。

4. 加快上市时间:软件复用可以减少开发周期,使得软件能够更快速地上市,占领市场先机,增加竞争力。

三、软件复用的实施方法1. 代码重用:通过将已经编写好的代码模块作为库文件或软件包,供其他项目重复使用,实现代码的复用。

2. 组件复用:将可独立使用的业务组件打包成可重用的组件库,由多个项目共享使用,避免重复研发相同的组件。

3. 模块复用:将软件系统中的功能模块抽象出来,形成独立的模块,供多个系统复用,实现模块级的复用。

四、软件复用存在的挑战1. 适用性问题:不是所有的软件都适合进行复用,有些软件需求特殊或定制化程度高,不适合直接进行复用。

2. 维护问题:复用的软件组件可能需要进行维护和升级,需要投入额外的人力和时间进行支持和维护。

3. 版本管理问题:多个项目同时复用同一个软件组件时,版本管理可能成为一个挑战,需要具备良好的版本管理机制。

4. 知识和沟通问题:开发团队需要具备相应的知识和技能才能进行有效的复用,同时需要加强团队间的沟通和协作。

举例说明复用技术

举例说明复用技术

举例说明复用技术复用技术是指在软件开发过程中,通过将已有的代码、组件或模块等进行整合和重复利用,从而提高开发效率、降低开发成本、减少代码冗余和提高软件质量的一种技术手段。

下面我将举例说明复用技术的应用。

1. 函数库的复用:开发人员可以自己编写一些常用的函数,并将其封装成函数库,以供其他开发人员在开发过程中复用。

例如,开发人员可以编写一个用于计算两个数相加的函数,该函数可以被多个项目中的不同模块调用,从而实现代码的复用。

2. 类库的复用:类库是一组相关的类的集合,其中包含了一些常用的功能和方法。

开发人员可以将类库封装成独立的组件,供其他开发人员在不同的项目中进行调用。

例如,开发人员可以编写一个实现数据缓存功能的类库,供多个项目中的不同模块进行调用,以减少重复开发相同的功能。

3. 组件的复用:组件是一种独立的、可重用的软件单元,它可以封装一些特定的功能和界面。

开发人员可以将组件作为独立的软件模块,供其他开发人员进行复用。

例如,开发人员可以编写一个用于实现用户登录功能的组件,该组件可以被多个项目中的不同页面进行调用,实现用户登录功能的复用。

4. 模板的复用:模板是一种定义了特定结构和格式的文件,可以通过替换其中的变量来生成不同的输出结果。

开发人员可以编写一些通用的模板,供其他开发人员在不同的项目中复用。

例如,开发人员可以编写一个用于生成网页的模板,其中包含了网页的基本结构和样式,供多个项目中的不同页面进行复用。

5. 框架的复用:框架是一种提供了一整套解决方案的软件架构,包括了一些常用的功能和设计模式。

开发人员可以使用框架来加速项目的开发过程,并提高代码的可维护性和可扩展性。

例如,开发人员可以使用Spring框架来构建Java应用程序,从而复用框架中提供的事务管理、依赖注入等功能。

6. 插件的复用:插件是一种可以扩展其他软件的功能的软件模块,可以通过将插件添加到主程序中来实现功能的扩展。

开发人员可以编写一些常用的插件,供其他开发人员在不同的项目中进行复用。

如何进行软件开发中的可复用性设计

如何进行软件开发中的可复用性设计

如何进行软件开发中的可复用性设计在软件开发中,可复用性设计被认为是一种非常重要的设计原则。

通过可复用性设计,开发人员可以尽量避免重复的代码编写,提高代码的可读性和可维护性。

本文将介绍如何进行软件开发中的可复用性设计。

1. 模块化设计在软件开发中,模块化设计是实现可复用性的重要手段之一。

开发人员应该将代码模块化,确保每个模块只实现一个具体功能。

这样做可以使得代码更加清晰、易于维护和扩展。

例如,在一个电商网站的开发中,我们可以将购物车模块、商品展示模块、订单管理模块等分别实现为不同的代码模块,这样在后期进行代码的维护和升级时,我们只需要对相应的模块进行修改即可,而不需要对整个系统进行大规模的改动。

2. 抽象设计在软件开发中,抽象设计也是实现可复用性的重要手段之一。

抽象设计可以将相同的功能抽象出来,形成一个通用的接口,从而使得这个功能可以在不同的应用场景中得到复用。

例如,在一个视频播放器的开发中,我们可以将不同的视频格式的解码、播放等功能抽象出来,形成一个视频解码器的接口。

这样可以使得这个功能可以在不同的应用场景中得到复用,而不需要在每个场景下重新编写这个功能。

3. 组件化设计在软件开发中,组件化设计也是实现可复用性的重要手段之一。

组件化设计可以将常用的组件封装成为一个库文件,以便在不同的应用场景中得到复用。

例如,在一个Android 应用的开发中,我们可以将常见的弹窗、输入框、进度条等常用组件封装成为一个库文件,以便在不同的应用中得到复用。

4. 制定规范在软件开发中,制定规范也是实现可复用性的重要手段之一。

通过制定相应的开发规范,可以使得代码更加规范和易于维护。

例如,在一个大型的团队开发中,我们可以制定相应的代码风格、命名规范、注释规范等,以便开发人员编写出更加规范的代码,从而使得代码更加易于维护和扩展。

以上就是软件开发中实现可复用性设计的几种手段,通过这些手段可以使得代码更加清晰、易于维护和扩展,提高代码的可读性和可维护性,从而在软件开发过程中得到更好的效果。

软件复用技术的分析复用

软件复用技术的分析复用

全国分站北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨手机电脑数码家电硬件外设企业办公游戏手机安极4GWP专区配件移动电源笔记本超极本平板一体机台式机商用工作站知本家可穿戴相机摄像机单电单反海极社行摄频道GPS潮生活国产平板电视冰箱洗衣机空调净化器盒子厨卫投影生活家电CPU主板显示器音频机电键鼠显卡内存硬盘服务器信息化开发办公打印网络设备商喷方案云计算游戏手机游戏下载游戏硬件动漫网页游戏编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且愉悦了每个人的内在情感。

但它也是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动,对许多人而言,其中乐趣远大于苦恼。

An———— FREDERICK P . BOORKS 《人月神话》摘要:复用即软件复用,是今年来被越来越多程序员重视的技术。

本文通过对软件复用技术的分析,介绍了复用技术在提高软件效率、减轻软件开发压力方面的作用。

软件复用的定义软件复用(或软件重用)是指充分利用过去软件开发中积累的成果、知识和经验,去开发新的软件系统,使人们在新系统的开发中着重于解决出现的新问题、满足新需求,从而避免或减少软件开发中的重复劳动。

软件复用可分为产品式复用和生成式复用。

产品式复用是指对软件开发中中间制品(程序代码,各阶段中的文档或模型,测试用例等)的复用,其实现途径关键是将可复用的程序代码组装(或集成)而生成软件应用系统,因此产品式复用亦称组装式复用;生成式复用主要是将软件的需求进行规约化(或形式化)描述,然后利用可复用的应用程序生成器自动或半自动地生成所需的软件系统。

目前组装式复用是软件复用的主流方式。

在目前主流复用技术中,有一个关键性的名词:软件构件,复用技术中的代码复用过程主要是依赖软件构件来实现复用的。

软件构件(也称软件组件)是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。

软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。

在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。

软件复用包括构造可复用软件和用可复用软件进行构造。

构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。

Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。

这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。

实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。

设计层软件复用是指对已有的软件系统的设计信息进行复用。

而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。

可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。

面向对象的软件复用机制主要有两种:继承和对象组合。

(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。

作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。

作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。

这些面向对象的主要机制是:数据的抽象化、封装和多态性。

通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。

这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。

换言之,复用的焦点发生了“倒转”。

发生复用焦点的倒转并不是因为实现细节的复用并不重要,而是因为这些细节上的复用己经做的很好了,并且这种复用在提高复用性的同时提高了软件的可维护性。

由于继承关系直接继承的是接口,同时也继承实现,因而实际上父类的内部实现对子类而言是可见的,属于白盒复用方式。

(2)对象的组合对象组合是指新的复杂功能可以通过组装或组合对象来获得。

这种复杂的功能由对象组合来获得的设计思想与过程化程序设计思想是相似的,在过程化程序设计中,一个复杂的功能模块可以分解为更细小的和更简单的功能模块,整体功能是各个局部功能的聚集。

在面向对象系统中,系统是由对象构成,因此复杂的功能或者说能完成更复杂功能的对象,可以通过功能较简单的对象的组装或组合来实现。

对象组合方式是从整体与局部的角度来考虑软件复用思想的。

对象组合要求对象具有良好的接口定义,使用对象的接口来使用对象的功能,并往往运用赋值多态来获得具体对象,对象的内部功能是不可见的,对象只以“黑盒”的形式出现,属于黑盒复用方式。

面向对象的软件复用过程有以下步骤:①抽象:对软件制品进行抽象,抽象层次越高,复用的机会就越大;②选择:一般通过分类和编目方案组织和检索可复用的软件制品;③特殊化:即将上步选定了的一个一般化的软件制品进行特殊化,以满足特定领域的要求;④集成:集成需要在软件体系结构或框架的指导下,将选定的、特殊化了的模块集合组成一个完整的软件系统。

要有效地将可复用制品集成为一个软件系统,使用者必须清楚地理解该模块的接口。

而从复用的使用角度上看,软件复用的使用行为可能发生在三个维上。

①平台维:以某平台上的软件为基础,修改它与运行平台相关的部分,使其能够运行在新的平台,即软件移植;②时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护;③应用维:将某软件或其中构件用于其他系统中,新系统具有不同功能和用途,即真正的软件复用。

这三种行为中都重复使用了现有的软件,但是真正意义的软件复用指的是应用维上的软件复用,即“使用为复用而开发的软件”来更快更好地开发新的应用系统。

通过软件复用,消除了许多重复劳动,降低了软件开发的时间。

同时,复用高质量的己有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。

2.2软件的开发方法2.2.1结构化开发方法结构化方法是把现实世界描绘为数据在信息系统中的流动,以及在数据流动的过程中数据向信息的转化。

其基本思想为:基于功能分解设计系统结构,通过把复杂的问题逐层分解,进行简化(即自顶向下,逐层细化),将整个程序结构划分成若干个功能相对独立的子模块直至最简,并且每个模块最终都可使用顺序、选择、循环三种基本结构来实现,它是从系统内部功能上模拟客观世界。

结构化方法强调系统开发过程的整体性和全局性,强调在整体优化的前提下来考虑具体的分析设计问题。

结构化方法严格地区分开发阶段,强调一步一步地严格地进行系统分析与设计,每一步工作都及时地总结、发现问题,从而避免了开发过程的混乱状态。

结构化方法是目前被广泛采用的系统开发方法之一,但是结构化方法也存在的许多问题,其局限性有以下几点:(1)难以解决软件重用问题。

结构化方法从功能抽象出发进行模块划分,所划分出的模块千差万别,模块共用的程度不高。

(2)结构化方法在需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基本单位,而是打破了各项事物之间的界限,在全局范围内以数据流为中心进行分析,所以分析结果不能直接反映问题域。

同时,当系统较复杂时,很难检验分析的正确性。

因此,结构化分析方法容易隐藏一些对问题域的理解偏差,与后继开发阶段的衔接也比较困难。

(3)结构化方法对需求变化的适应能力比较弱,软件系统结构对功能的变化十分敏感,功能的变化会引起相关联的许多数据流的修改,同时设计出的软件难以重用,延缓了开发的过程。

(4)结构化方法中设计文档很难与分析文档对应,因为二者的表示体系不一致。

结构化方法的结果-数据流图(DFD)和结构化设计结果-模块结构图(MSD)是两种不同的表示体系,从分析到设计的“转换”使得设计文档与问题域的本来面貌相差甚远。

2.2.2面向对象开发方法面向对象的开发方法采用从特殊到一般的归纳方法,它是对现实世界中的实体进行分类,然后区分对象及其属性,整理对象及其组成部分,并划分成不同的对象类,从而得到现实系统中对象及其关系,进而分析并掌握系统运行的规律。

OOA的重点是使用面向对象的观点解决现实世界模型的建立问题,是利用从问题域中抽象出的类和对象来研究系统实际需求的一种分析方法。

这种方法是以对象作为分析问题、解决问题的核心,对问题空间进行直接映射,使计算机实现的对象与真实世界具有一一对应关系,所以自然符合人类认识规律,有效地解决了需求分析模型和软件设计模型的不匹配现象,它同时也易于适应系统的变化处理。

面向对象的系统设计基本过程一般包括:问题域分析、发现和定义对象类、识别对象的外部联系、建立系统的静态模型、以及建立系统的动态行为模型。

(1)问题域分析:分析应用领域的业务范围、业务规则和业务处理过程,确定系统的责任、范围和边界,确定系统的需求;(2)发现和定义对象类:识别对象和类,确定它们的内部特征:属性和服务操作;(3)识别对象的外部联系:在发现和定义对象与类的过程中,需要同时识别对象与对象、类与类之间的各种外部联系,包括结构性的静态联系和行为性的动态联系;(4)建立系统的静态结构模型:分析系统的静态结构,建立系统的静态结构模型,并且把它们用图形和文字说明表达出来;(5)建立系统的动态行为模型:分析系统的行为,建立系统的动态行为模型,并且把它们用图形和文字说明表达出来。

面向对象模型比以往的模型有了很大的进步,但仍有不足。

首先面向对象方法中对象的确定有时会因客观边界模糊而难以确定,这样很难保证软件描述的正确性。

其次面向对象方法在描述问题域方面存在不足。

在问题域中,面向对象方法把具体或抽象的问题现象直接表述为对象,同时把现象类型直接表述为类。

大多数OOA方法支持多视角模型,即对同一问题域现象,不同的主体可以将它表述为同一对象或类型。

但系统的描述在应用面向对象方法进行建模时常遇到这样的困惑,描述者力图通过面向对象的表述对存在的问题现象达成一致,然而结果得到的对象或类并不适合于某个描述者对对象的独自表述,即在面向对象模型中,很难把不同描述者对现象的描述正确的统一起来。

2.2.3基于设计模式的开发方法设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。

设计应该对手头的问题有针对性,同时对将来的问题和需求也要有足够的通用性。

希望避免重复设计或尽可能少做重复设计。

而模式是针对一个反复出现的问题优秀的解决方案,它的方法就是发现变化、封装变化〔2…,。

模式本身已经充分考虑了变化的情况,并且采用了一种特殊的对待变化的方法,它不是预先考虑会如何变化,而是考虑哪里可能会变化,然后隔离,所以当变化发生时不会带来全局性的破坏。

有经验的面向对象设计者能做出良好的设计,他们知道:不是解决任何问题都要从头做起。

他们更愿意复用以前用过的好的解决方案。

这些经验是他们成为内行的部分原因。

实际上,在许多面向对象的系统中,都存在诸多的类和相互通信的对象的重复模式。

这些模式帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。

一个熟悉这些模式的设计者不需要再去发现它们,就能够立即将它们应用于设计问题中。

使得面向对象设计更灵活、优雅,最终复用性更好。

模式可以在软件开发的各个阶段被使用,既可以创建一个解决单一问题的模式或者针对某一用例应用的模式,也可以同时使用多个模式来解决复杂的问题。

模式的设计类型可以包括结构化的、行为化的和条件化的解决方案,因此,模式的应用范围是非常广阔和灵活的。

一旦…懂得了模式,许多设计决策自然而然就产生了。

在人们充分认识到模式的重要性后,逐渐将面向对象软件的设计经验作为设计模式记录下来。

每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的、重复出现的设计,能够被人们有效的利用。

模式和系统架构有很大的相似性,都是处理一些抽象概念间的关系,但是二者还是有很大的不同,模式是领域无关的,它是解决一些抽象问题的,但是系统架构是针对所要解决的实际问题的,是领域相关的。

模式在应用时可以通过下述步骤进行设计:(1)对问题领域进行分析、分解,结合模式的适用条件找到和待解决的问题匹配的模式,对该模式进行定制应用到具体系统中来。

(2)和模式结合在一起构建起整个系统架构。

比如:MVC(Model-V iew-Controller),它是专门针对交互系统提出的,如果要构建一个交互系统,那么就可以直接应用MVC模式,然后在该模式所搭建的场景启发下去发现Model、V iew以及Controller,在大的场景的指导下根据其它的需求(模式)构建一些小的场景对系统进行有效的分化。

相关文档
最新文档