08基于构件的软件开发
- 格式:doc
- 大小:221.00 KB
- 文档页数:12
第二次作业:基于构件的软件开发的发展方向一、构件技术应运而生在信息时代,新的技术革命正在改变我们日常生活的面貌,而这场技术革命的核心是计算机软件系统。
在面向对象技术给解决软件危机带来曙光之时, 分布式网络计算的巨大压力又给软件开发提出了许多新的难题,使软件开发仍处于高风险状态。
新的分布式网络计算要求软件实现跨空间、跨时间、跨设备、跨用户的共享,导致软件在规模、复杂度、功能上的极大增长,迫使软件要向异构协同工作、各层次上集成、可反复重用的工业化道路上前进。
为适应软件的这种需求,新的软件开发模式必须支持分布式计算、浏览器/服务器结构、模块化和构件化集成,使软件类似于硬件一样,可用不同的标准构件拼装而成。
具体地说可实现下列几点要求:1、提供一种手段,使应用软件可用预先编好的、功能明确的产品部件定制而成, 并可用不同版本的部件实现应用的扩展和更新。
2、利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。
3、突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。
为满足上述要求,软件构件技术出现了。
而构件重用的目标是达到需求、分析、设计、编码、测试的重用。
从此,一种影响软件产业发展的新的软件开发方法诞生了。
从抽象程度来看,面向对象技术已达到了类级重用(代码重用),它以类为封装的单位。
这样的重用粒度还太小,不足以解决异构互操作和效率更高的重用。
构件将抽象的程度提到一个更高的层次,它是对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。
整个构件隐藏了具体的实现,只用接口提供服务。
这样,在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架构级到系统级都可能实现,从而使软件像硬件一样,能任人装配定制而成的梦想得以实现。
近几年来,构件技术的发展已证明了它的巨大威力,在这其中,CORBA标准和Java技术的突破,功不可没!至今, 构件技术已形成三个流派:Sun的Java平台、Microsoft的COM+、IBM的CORBA。
论基于构件的软件开发作者:靳桂珍来源:《活力》2010年第06期[摘要]基于构件的软件开发是提高软件生产效率和软件产品质量的有效途径。
本文结合我们的实践,以“在线学习支持服务平台”项目为例,讨论基于构件的软件开发的技术应用。
[关键词]基于构件;软件开发;技术应用“在线学习支持服务平台”是对学生远程学习进行教学辅导。
经过多年对远程教育模式的探索,确立了成熟的远程教育教学模式——利用先进的网络数字信息技术,为广大的学生提供开放的教育平台和最优秀的教育资源,突出个性、学生自主学习的教学。
“在线学习支持服务平台”是一个综合性的在线式基于WEB的远程教学平台,存储着核心信息数据,提供网上课程、信息发布、查询、BBS、VOD视频点播等教学服务,该系统的开发技术主要集软件复用、企业级应用程序开发于一体的“基于构件的软件开发”。
系统运行于WINDOWS SERVER2000。
用SQL SERVER 2000 为后台数据库,用ASP+IIS5.0来架构网站。
由于COM组件既可以被嵌入动态WEB面面,还可以在LAN或桌面环境的VB、VC等应用中使用。
另外该组件之间是彼此独立的。
当应用需求发生变更时,可能需要更换中间层的个别COM组件,但并不影响其他组件的继续使用。
组件具有若干对外接口(属性和方法)。
可以根据不同的应用需求,有选择地使用不同的接口。
即使不再使用某些接口时,COM接口本身仍然可继续使用。
同一COM组件可以在不同的应用环境中重复使用。
因此,结合我们的实际情况,我们现有的各级软件系统都是基于微软Windows系统列平台,且开发人员对COM组件技术也较熟悉,对开发语言VB6也很熟悉,因此我们确定使用微软的COM组件技术来开发该平台。
该平台采用B/S结构进行设计,把整个系统分为三个层:数据库层,应用逻辑层,用户界面层。
用户界面是浏览器(如IE等),并通过ASP语言来实现同应用逻辑层构件交互。
应用逻辑层负责事务处理。
基于构件的软件开发流程
嘿,咱今天就来聊聊基于构件的软件开发流程!你知道吗,这就好比搭
积木一样有趣!比如说盖房子,我们有各种不同形状、大小的积木,这就相当于软件中的各种构件啦。
第一步,咱得先确定要盖个什么样的房子,也就是明确软件的需求。
这
可不是随随便便就能定的呀!就像你要给自己建个梦想中的家,那可得深思熟虑!比如,你想要几个房间呀,要不要个大阳台呀之类的。
老张和老李他们俩就曾经为了软件需求争得面红耳赤呢!
第二步,找到了合适的构件。
嘿,这就像在那堆积木里挑出自己需要的
那些。
这些构件有的是别人做好的,直接就能拿来用,多方便呀!咱身边的小王就经常偷懒,直接去找现成的构件,还得意洋洋地说这叫“拿来主义”。
第三步哇,那就是把这些构件组装起来啦!可不是随便堆一块儿就行,
得有技巧,得让它们严丝合缝地拼在一起,这样房子才牢固呀!软件也一样,得让各个构件协同工作,不然那不就乱套啦?有一次,小赵就是没组装好,结果软件运行起来乱七八糟的,被领导狠狠批了一顿!
第四步不能忘,要测试呀!这就跟给房子做质检一样。
看看有没有哪里漏风呀,有没有哪里不稳呀。
只有经过仔细测试,软件才能安心交付给用户使用呀!
基于构件的软件开发流程就是这样,听起来是不是挺简单,但实际做起来可得细心加用心呢!我觉得呀,这真的是一种很高效、很有创意的开发方式呢!它能让我们更快地开发出好软件,给用户带来更好的体验,难道不是吗?。
系统架构师任务重大,需要了解客户需求以及如何设计和实施系统。
构件化的软件开发方法是系统架构师需要掌握的重要技能之一。
在本文中,我们将深入探讨基于构件的软件开发方法及其应用,以及它对系统架构师的重要性。
一、基于构件的软件开发方法简介基于构件的软件开发方法是指将软件系统拆分成互相独立的构件,然后将这些构件组合在一起以构建整个系统的方法。
这种方法提供了一种将系统模块化的方式,使得系统可以更容易地理解和维护。
构件化还能够提高系统的复用性和可扩展性,从而减少系统的开发时间和成本。
在基于构件的软件开发方法中,系统架构师需要首先对系统进行全面评估,了解系统的需求和各个模块之间的关系。
系统架构师需要设计和定义系统的构件,并确定它们之间的接口和通信方式。
系统架构师需要协调开发团队,确保各个构件能够按照设计规范进行开发,并最终集成到整个系统中。
二、基于构件的软件开发方法的应用基于构件的软件开发方法广泛应用于大型软件系统的开发中。
它可以帮助开发团队更好地理解系统的复杂性,降低系统的维护成本,并提高系统的可靠性和稳定性。
在实际应用中,系统架构师可以通过使用现有的构件库来加速系统的开发进程,同时也可以提高系统的灵活性和可定制性。
三、个人观点和理解作为系统架构师,我深刻理解基于构件的软件开发方法对于系统开发的重要性。
它能够帮助我们更好地管理系统的复杂性,提高系统的可维护性和可扩展性。
基于构件的软件开发方法也能够加速系统的开发进程,降低系统的开发成本。
我认为系统架构师需要深入学习和掌握基于构件的软件开发方法,并将其运用到实际的系统开发中。
四、总结通过本文的讨论,我们深入探讨了基于构件的软件开发方法及其应用在系统架构师工作中的重要性。
我们从简到繁地介绍了基于构件的软件开发方法的基本概念,并探讨了其在实际应用中的优势。
我共享了对于这个主题的个人观点和理解。
希望通过本文的阅读,读者能够更全面、深刻和灵活地理解基于构件的软件开发方法在系统开发中的重要性。
论基于构件的软件开发【摘要】20H年3月,我有幸参加了沈铁设计院综合管理信息平台(简称:信息平台)项目的开发工作,并担任系统架构师一职,负责系统的架构设计及核心构件的开发工作。
该系统是沈阳铁道勘察设计院有限公司委托开发的,项目于2011年底验收,满足客户方提出设计、生产、经营、管理的需求。
本文以信息平台为例,讨论基于构件的软件开发,简单说明为什么要用构件开发及获取构件的方式,接着详细介绍了通过一次登录后可以任意跳转到其它各子系统的单点登录构件、数据库访问构件、展现信息的层次结构的目录树构件、方便设置文档格式的活动表单构件等系统主要的构件以及开发过程,开发策略,加强构件复用程度.提高软件的开发效率,缩短软件的开发时间。
文童杲后简略说明几种构件技术的发展趋势。
【正文】20H年3月,我有幸参加了沈铁设计院综合管理信息平台(简称:信息平台)项目的开发工作,并担任系统架构师一职,负责系统的架构设计及核心构件的开发工作。
该系统是沈阳铁道勘察设计院有限公司委托开发的,项目于2011年底验收,满足客户方提出设计、生产、经营、管理的需求。
信息平台包含有企业门户、综合办公、设计生产、经营计划、技术质量、人力资源、档案管理、信息中心、公司决策、后台管理等十个子系统。
为利用好以前各种硬件平台的投资,选择信息平台运行于windows+sqlserver2005平台上,采用.net开发技术。
采用四层B/S架构,这四层分别为界面层、外观层、业务逻辑层及数据访问层,信息平台的各种功能基本具有这四层架构。
系统的主要功能有:通过一次登录后可以任意跳转到其它各子系统的单点登录;采用目录树构件来展现数据的层次结构;活动表单构件方便用户编辑格式化的文档数据等服务。
这些功能都以Web service接口的方式公开给各应用系统调用,有了这些基础功能,应用系统就可以省去单点登录,用户格式化的信息编辑,信息的层次展现等功能的开发和维护,缩短开发周期和隆低开发成本。
基于软件构件的软件开发流程浅析软件构件是软件开发中的重要概念,它是软件系统的基本组成部分。
软件构件是一个可以独立设计、测试和部署的软件模块,它可以在不同的应用程序中重复使用。
基于软件构件的软件开发流程是一种新型的开发方法,它旨在提高软件开发效率和质量。
本文将对基于软件构建的软件开发流程进行浅析。
一、基于软件构建的软件开发流程概述软件构建是软件开发中设计和实现软件的过程。
基于软件构件的开发流程是一种以构件为基础的软件开发方法。
它通过将软件开发过程分解为一系列独立的构件,以达到软件设计和开发的可复用性和灵活性。
基于软件构件的软件开发流程主要分为以下五个步骤:1.构件设计:构件设计是指将软件系统分解为一系列可复用的构件,并设计构件之间的接口和协议。
构件设计能够确保构件之间的独立性和可组合性,以达到软件开发的可重用性和灵活性。
2.构件开发:在构件设计的基础上,对每个构件进行独立开发。
构件开发可以采用不同的开发方法,如面向对象编程、事件驱动编程等。
3.构件测试:在构件开发完成后,进行构件测试以确保构件的质量。
构件测试可以采用单元测试、集成测试等方法。
4.构件管理:构件管理是指对构件进行版本管理和维护,以确保构件的稳定性和可用性。
构件管理可以采用不同的工具和方法,如软件配置管理、构件库管理等。
5.构件集成:在所有构件都经过测试和管理后,将构件集成到整个软件系统中。
构件集成是一个重要的环节,可以采用不同的集成方法,如系统集成、模块集成等。
二、基于软件构建的软件开发流程的优点基于软件构件的软件开发流程具有以下优点:1.可重用性:基于软件构件的软件开发流程可以带来更高的可重用性,因为每个构件都可以在不同的应用程序中重复使用。
这使得软件的开发效率得到了显著提高。
2.灵活性:基于软件构件的软件开发流程可以使软件更加灵活,因为构件可以被独立设计、开发和测试。
这使得软件系统更易于维护和更新,同时也提高了软件的可扩展性。
3.可维护性:基于软件构件的软件开发流程可以使软件更易于维护。
基于构件开发方法的概念、目标和意义贾育(转载自CSDN)基于构件的开发(Component-Based Development,简称CBD)或基于构件的软件工程(Component-Based Software Engineering,简称CBSE)是一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程[Brown00]。
由于以分布式对象为基础的构件实现技术日趋成熟,CBD已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。
一、基本概念下面简单介绍与本文相关的一些概念,包括构件、接口、契约、接口描述语言、构件框架等,另外还介绍了CBD的开发模式,以及构件技术和对象技术的关系。
在文献[Szyperski97]中,Szyperski把构件定义为“软件构件是一个仅带特定契约接口和显式语境依赖的结构单元”,同时他还写道:“软件构件可以独立部署,易于第三方整合。
”根据这个观点,可以认为构件由一方定义其规格说明,被另一方实现,然后供给第三方使用。
接口(interface)是用户与构件发生交互的连接渠道,第三方只能通过构件接口的规格说明理解和复用构件,接口规格说明也是一种“契约”(contract),它足够精确地描述构件实现的功能,同时又不把构件限定于唯一的实现方法,这种不确定带来多解决方案的灵活性。
另一方面,虽然构件可以独立部署的,但是一个构件可能会用到其它构件或平台提供的服务,或者说基于构件的软件系统中通常是多个构件协作完成一定功能,所以构件依赖于组装环境或称为语境(context)。
构件基础设施(infrastructure)是异构构件互操作的标准和通信平台,构件框架(Framework)是构件实例“即插即用”的支撑结构。
通过一定的环境条件和交互规则,构件框架允许一组构件形成一个“孤岛”,独立地与外部构件或其他框架交互和协作,因此构件框架及其内含的构件也可以视为一个构件,于是构件通过不断的迭代和合成,构成一个结构复杂的应用系统。
基于构件复用的软件项目实施过程分析软件项目实施过程是指将软件项目开发计划转化为可执行的活动,以实现软件的设计、开发和交付。
构件复用是软件开发中一个重要的概念,可以提高软件项目的效率和质量。
下面将对基于构件复用的软件项目实施过程进行分析。
第一步,需求分析和规划。
在这一阶段,项目团队需要与客户合作,了解和分析项目的需求,并规划项目的开发计划。
在构件复用的角度看,团队需要评估现有的构件库,并确定需要开发新构件的需求。
根据需求分析的结果,团队可以制定特定的构件复用计划和策略,包括构件的选择与集成方式等。
第二步,构件库评估和选择。
在构件复用的实施过程中,团队需要评估现有的构件库,并选择适合项目需求的构件。
评估构件库包括对构件的功能、质量、稳定性等进行评估,以确保所选构件符合项目需求和质量标准。
同时,团队还需要考虑构件与项目其他组件的集成情况,避免出现不兼容性或冲突的问题。
第三步,构件开发和集成。
根据项目需求和构件复用计划,团队需要进行构件的开发和集成工作。
对于已有的构件库中没有提供的构件,团队需要进行开发,并确保开发的构件符合项目的质量要求。
在集成过程中,团队需要考虑构件之间的依赖关系和接口定义,以确保构件能够正确地集成到项目中,且能够和其他构件进行有效地交互。
第四步,测试和验证。
在构件复用的实施过程中,团队需要对构件进行测试和验证,以确保构件的功能正确性和质量可靠性。
测试包括单元测试、集成测试和系统测试等,以确保构件能够在项目中正常运行,并满足项目的需求。
第五步,文档编写和发布。
在构件复用的实施过程中,团队需要编写构件的文档,包括构件的接口文档、使用手册等。
这些文档可以帮助用户了解和使用构件,并提供必要的支持。
同时,团队还需要对构件进行发布,包括构件的打包、文档发布和上线等。
第六步,维护和更新。
构件复用并不是一次性的工作,团队在项目实施过程中还需要对构件进行维护和更新。
这包括对构件的功能更新、错误修复、性能优化等,以确保构件能够持续地满足项目的需求和用户的期望。
第8章基于构件的软件开发在软件工程的范围内,复用既是旧概念,也是新概念。
软件开发人员从软件开发的早期阶段,就已经开始复用概念、对象、论据、抽象和过程,但其复用的层次是较为特定的。
而今,更为复杂的基于计算机的系统必须在非常短的时间内建立,这就需要更有组织的复用方法。
基于构件的软件工程(component-based software engineering, CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统。
8.1构件和基于构件的系统开发从表面上看,CBSE似乎类似于传统的或面向对象软件工程。
当软件小组使用传统的需求分析技术建立了待建造系统的需求时,该过程开始,体系结构设计(见§4.4)被建立,但是,项目开发小组并不是立即转向更细节的设计任务,而是必须检查需求以确定系统的什么子集可直接通过组装而不是构造完成。
也就是说,项目小组针对每个系统需求询问如下问题:1) 是否存在商用成品构件(commercial off-the-shelf,COTS)可实现该需求?2) 是否存在内部开发的可复用构件可实现该需求?3) 可用构件的接口和待建造系统的体系结构相容吗?在此,术语“构件”被重复地使用,而对该术语的确定性的描述未曾明确给出。
常用的相关定义可为:1) 构件——某系统中有价值的、几乎独立的并可替换的一部分,它在很好定义的体系结构语境内满足某清楚的功能。
亦可定义为“系统中可以明确辨识的构成成分。
2) 运行时软件构件——作为单元管理的软件包,安装运行时可通过接口动态绑定其相关的一个或多个程序。
3) 软件构件——仅具有合约性描述的,显示的语境依赖的组装单元,亦即为一个独立发布的功能部分,它提供了通过接口对它的服务的方向。
4) 业务构件——某“自治的”业务概念或业务过程的软件实现。
5) 商品构件COTS,由第三个构造的满足一定构件标准的,可组装的软件构件。
在基于构件的软件系统开发指导下,开发小组试图修改或去除那些不能用COTS构件和自有构件实现的系统需求。
如果需求不能被修改或删除,就必须传统的或面向对象的软件工程方法开发以满足需求的新构件。
但是,对那些可被现存构件满足的需求,亦需采用不同的软件工程活动:1) 构件合格性认证(component qualification)。
系统需求和体系结构定义了所需的构件。
可复用的构件(不管是COTS或自有)通常是通过它们的接口特征来标识的,即“被提供的服务,以及客户访问这些服务的方式”被作为构件接口的一部分而描述。
但是,接口并不提供构件将符合体系结构和需求的全面描述。
软件工程师必须通过一个发现和分析过程来认证每个构件的适合性。
2) 构件适应性修改(component adaptation)。
在第4章,我们提到软件体系结构表示了由构件(功能性单元)、连接和协同构成的设计模式。
在某些情形,现存的可复用构件可能和体系结构的设计规则不匹配,这些构件必须被自适应以满足体系结构的需要或被丢弃并被其他更合适的构件替代。
亦可通过适应性修改以更改(也称掩盖(mask)或包装(wrap)不想要的或不希望的特征)。
3) 构件组装(component composition)。
体系结构风格再次在软件构件被集成以形成工作系统的方式中扮演了关键角色。
通过标识连接和协同机制(如设计的运行时性质),体系结构指导最终产品的组装。
4) 构件更新(component update)。
当系统由COTS构件实现时,更新由于第三方的强行进入而变得复杂(即开发可复用构件的组织可能是在软件工程组织的直接控制范围之外)。
8.1.1 CBSE对质量、生产率和成本的影响大量来自产业实例研究的证据表明从积极的软件复用可以导出实质性的商业收益,产品质量、开发生产率和整体成本都将得到改善。
1) 对质量的影响理想情况下,为了复用而开发的软件构件已被验证是正确的且不含有错误。
在现实中,形式化验证并不能例行公事地进行,错误可能而且也确实存在。
然而,随着每一次复用,错误被发现和消除,构件的质量也随之改善。
随时间推移,构件变成实质上无错误的。
在HP公司的研究中,Lim报告说:被复用的代码的缺陷率是每KLOC有0.9个缺陷,而新开发的代码的缺陷率是每KLOC有4.1个缺陷。
对一个包含68%复用代码的应用来说,缺陷率是每KLOC有 2.0个缺陷——相对应用的无复用开发,对期望的缺陷率有35%~51%的改善。
虽然不同的报告跨越了质量改善百分率的一个合理的范围,但是,显然我们可以说,复用对交付的软件在质量和可靠性方面确实带来的实质性的收益。
2) 对生产率的影响当可复用软件制品被应用于软件开发过程中,在创建对开发一个可交付系统所需要的计划、模型、文档、代码和数据方面所花费的时间自然要少,导致的结果是:用较少的努力给客户提供了相同级别的功能,因此生产率得到了改善。
虽然,对生产率改善百分率的报告是众所周知难于解释的,但是,似乎30%~50%的复用可以产生25%到40%的生产率改善。
3) 对成本的影响复用带来的纯成本(cost)节省如下估算:估算出项目如果是从头开始开发所需要的成本Cs,然后减去和复用关联的成本Cr与软件被交付时实际的成本Cd之和。
Cs可以用第14章中讨论的估算技术的一个或多个来确定,和复用相关的成本Cr 包括:1) 领域分析和建模。
2) 领域体系结构开发。
3) 为方便复用所增加的文档量。
4) 可复用构件的支持和增强。
5) 对从外部获取的构件的版税和许可证费。
6) 可复用构件中心存储库操作的创建或者获得。
7) 对设计和构造复用人员的培训。
虽然和领域分析与复用中心存储库的操作相关的成本可能是实质性的,但是上面提到的很多其他成本所强调的问题实际上是一个好的软件工程习惯的一部分。
8.2 CBSE过程图8-1给出了一个典型的过程模型,它显然适应CBSE。
领域工程创建应用领域的模型,该模型被用作在软件工程流中分析用户需求的基础。
类属的软件体系结构(及其对应的结构点,见8.3.3节)为应用的设计提供了输入。
最后,在可复用构件已经被购买、从现存库中选出或构造好后(作为领域工程的一部分),它们可以被从事基于构件开发的软件工程师使用。
图8-1 一个支持CBSE的过程模型CBSE过程的刻画必须是:不仅标识候选的构件,而且认证每个构件接口合格性、适应性修改构件以消除体系结构不匹配、组装构件到选择结构风格中以及当系统需求变化时更新构件。
基于构件的软件工程的过程模型强调并行的轨迹,其中领域工程(见§8.3)和基于构件的开发并发地发生。
领域工程完成一系列工作,以建立一组可以被其他软件工程师复用的软件构件,然后这些软件构件被越过分隔领域工程和基于构件的开发的“边界”传送。
8.3领域工程领域工程的目的是标识、构造、分类和发布一组软件构件,它们对某特定应用领域中现存的和未来的软件系统具有良好的适用性。
其整体目标是建立相应的机制,使软件工程师在开发新的或现存的系统时可以共享这些软件制品——复用它们。
领域工程包括三个主要的活动——分析、构造和发布。
8.3.1 领域分析过程面向对象软件工程范围内的领域分析方法的步骤定义如下:1)定义将被研究的领域。
2)分类从领域中抽取的项。
3)收集领域中有代表性的应用样本。
4)分析样本中的每个应用5)开发针对对象的分析模型。
必须注意,领域分析被采用到任意软件工程范型,可以采用到传统和面向对象的软件开发。
Prieto-Diaz扩展了上面给出的第二个领域分析步骤,建议了8个步骤的标识和分类可复用软件构件的方法:1)选择特定的功能或对象。
2)抽象功能或对象。
3)定义分类法。
4)标识公共特征。
5)标识特定的关系。
6)抽象关系7)导出功能模型。
8)定义领域语言。
领域语言使得可以在领域中进行应用规约及以后的应用构造。
在实际应用,可采用如下指南来标识可复用软件构件:1) 构件功能对未来的实现工作是需要的吗?2) 构件功能在领域中的公共性怎样?3) 在领域中存在构件功能的重复吗?4) 构件是否有硬件依赖性?5) 硬件在不同实现之间保持不变吗?6) 设计是否为了下面的实现进行过足够的优化?7) 我们能够将一个不可复用的构件参数化以使其变成可复用的吗?8) 构件是否可以仅仅经过少许修改就能够在很多实现中可复用?9) 通过修改进行复用是可行的吗?10) 某不可复用的构件能够通过分解以产生一组可复用构件吗?11) 针对复用的构件分解事正确的吗?8.3.2 领域特征有时要判定一个可能被复用的软件制品是否在某些特定情况下可使用可能存在一些难度。
为了进行如此的判定,就有必要定义一组领域特征,在领域中所有的软件共享这组特征。
一个领域特征定义了存在于领域中的所有产品的某种类属属性,例如,类属特征可能包括:安全性/可靠性的重要性、程序设计语言、处理中的并发性以及很多其他内容。
某可复用软件制品的领域特征的集合可以表示为{Dp},这里集合中每个项Dpi表示某特定的领域特征。
赋给Dpi的值表示一个顺序的等级,它指明了该特征对软件制品p的相关性,典型的等级可能是:1)与复用是否合适没有相关性。
2)仅仅在某些特定的情况下相关。
3)相关,软件制品可以被修改使其可以被复用。
4)明显相关,并且如果新软件不具有这个特征,复用将是无效的,此时不推荐复用。
当新软件w将在某应用领域内被构造时,可为它导出一组领域特征,然后在Dpi间Dwi进行比较,以展示是否现存的软件制品p可以在应用w中被有效地复用。
表8-1列出了典型的可能对软件复用有影响的领域特征。
表8-1 影响复用的领域特征产品过程人员需求稳定性过程模型动机并发软件过程符合性教育内存约束项目环境经验/培训应用大小进度约束·应用领域用户界面复杂性预算约束·过程程序设计语言生产率·平台安全性/可靠性·语言寿命需求开发队伍的生产率产品质量产品可靠性即使将被开发的软件显然属于某语言领域,在该领域中的可复用软件制品也必须被分析以确定它们的可用性。
8.3.3 结构建模和结构点当应用领域分析方法时,分析员试图寻找在某领域中应用间的重复模式。
结构建模(structural modeling)是一种基于模式的领域工程方法,应用该方法的前提假设是:每个应用领域存在重复的(功能的、数据和行为的)模式,它们具有可复用的潜在可能。
Pollak和Rissman描述结构模型如下:结构模型由少量的结构元素组成,这些元素用于表明清晰的交互模式。
使用结构模型的系统其体系结构通过多个由这些模型元素组成的东西来刻画,这样,在系统的体系结构单元间的复杂交互可以用在这些少量元素间的简单交互模式来描述。
每个应用领域可用一个结构模型来刻画(例如,飞行器电子设备在细节上差异很大,但是在该领域的所有现代软件具有相同的结构模型),因此,结构模型是一种体系风格,它可以也应该在领域内跨越应用被复用。