电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

面向服务软件范文

来源:火烈鸟作者:开心麻花2025-09-191

面向服务软件范文(精选12篇)

面向服务软件 第1篇

基于多年在企业和公司参与项目的实际经验,融合计算机方面多年的教学经历,探索项目实训应用于软件服务外包的教学实践。

1 面向软件服务外包的项目实训教学探索

1.1 现有实践教学存在的不足

软件服务外包行业是个面向业务型的劳动密集型行业,所需要的是能够掌握目前所属领域最新实用技术的高技能实用型人才。传统的高等院校在计算机软件人才的教育方面面向社会通用型人才教学,重视基础教学,要求对计算机知识的系统全面的掌握,受限于教材和培养目标等多方面原因,学生接受的知识也相对比较陈旧,缺乏行业的针对性和实用性,学与用脱节,导致学历教育与新技术和企业人才需求严重脱节,在软件服务外包这个领域尤其突出。从课程体系方面而言,单门课程的实践教学仍然有其固有特点,但从多门课或某阶段来说,则存在一些问题,主要表现如下:

1)缺乏已学基础知识点与实际项目关联的教学环节。目前教学中强调对单个知识点或多个知识点的上机实践,但缺乏多个知识点之间的整体关联性,以及实训内容与职业的关联性,使得学生对所学的知识理解不深,甚至不能理解所学的知识有何具体实用价值,感觉很迷茫,导致学生的学习主动性、积极性不够。总而言之,缺乏一个将学生已学的零散理论知识点集成起来的实训实例,能让学生将知识转化为工作能力的训练机会。

2)缺乏培养团队协作精神的实训教学环节。目前的大部分课程设计中,实践教学都是只针对某一个或某一类知识点。教师通常出一些简单的题目或综合性较弱的题目要求学生编码,调试,输出程序结果,学生独立完成的机会较多,即使划分为不同的小组,每个小组也只需要三五个人共同完成一个实验,彼此之间的相互依存,相互制约的关系不强。学生之间缺乏共同协作、相互交流,表达自已的意见,同时能听取其它同学意见的,具有团队协作意识的高仿真开发项目的实训场景。

3)缺乏查阅资料,独立思考,并有较长一段时间的实践实训。以往的课程实践课,在时间上较短,需要完成一定的教育实践任务,所以教师在选择实践内容上,基本上以训练所学知识为主,不需要查阅课本之外的知识。学生在大学期间,培养具备查阅资料,自学和独立思考能力是非常重要的。在校期间所学知识有限的,加上软件服务外包行业更新换代快,培养这个素质显得格外重要。因此缺乏一个项目,涉及的知识面较宽一点,让学生根据已学习的知识,查找资料,学习未知的知识,才能完成的项目。

4)缺乏真实的实训环境和真实项目的体验。由于现有的课程体系、课程内容等固有的条件限制以及教师本身实战经验的局限,学生的实训环境和训练项目与企业真实开发的真实环境和项目比较具有较大差异,训练项目思路理想化,实训项目失真。学生需要职业活动环境的真实体验,让他们感觉课程教学的实例与真实环境所使用的项目类似。

5)缺乏职业素质、行业规范、软件开发与管理等学校比较薄弱的课程嵌入到各专业课程体系当中,以实训的方式来培养学生具有高素质的软件应有型人才。

1.2 不同阶段实训的教学任务和目标

面向软件服务外包实践,我们在传承传统教育所积累的经验的同时,需要对现存明显不足的实践环节加以补充、完善,以期解决上面分析中存在的问题。因此,增设实训实践环节。

实训阶段分为初级、中级和高级三个不同的阶段。不同阶段的实训有其不同的教学任务,完成不同的教学目标。初级阶段,实训只针对1~2门课程的知识点进行综合性训练,着重强调学生在编码、调试等操作能力方面的培养。中级阶段应该包括三门以上课程的学习内容,旨在培养学生具有综合运用能力、实际操作能力、团队协作精神和通过查阅资料自我学习的能力;高级阶段,让学生将实训内容融于企业业务流程当中,参与企业项目,强化学生在职业素质、行业规范、软件开发与管理等学校相对比较薄弱的环节,全面提高其职业能力,更好地符合企业用人规格要求。

1.3 实训项目的选择条件

为解决前面分析中存在的不足,选择项目时应具以下条件:

1)初级阶段:

该项目最好能与学生日常生活息息相关,便于学生对知识点的理解,从而掌握其已学的知识[3]。

该项目应将已学的知识尽量多的关联起来,形成一个整体。

难度适中。

2)中级阶段:

该项目应具有一定的应用价值。

该项目应将已学的多门知识尽量多的关联起来,形成一个整体。除此之外,还应具有与职业相关性。

该项目应有多组人来完成,组与组之间既相互关联又相对独立,小组间互助合作、共同开发的方式,可以培养学生互相沟通、尊重他人、说服他人、聆听他人意见的团队协作精神[4]。

该项目除了要求书本上已经学习的知识外,还应该有学生未知的领域或书本上没有提到的知识点。这样可培养学生凭借已知的知识,通过查阅资料掌握未知知识,具有独立思考的自学能力。

3)高级阶段:与职业相关的真实性的开发项目

1.4 不同阶段实训对应项目的处理要求

真实的项目涉及知识面较广,涉及的行业也较多,要求掌握多门课程的知识,因此,项目不能全盘照搬,要经过有代表性的挑选,精心加工、改造和处理才能符合实训要求。

1)初级阶段项目的处理要求:

屏蔽未学到的知识内容,将学生不能完成的功能模块用消息提示的方法假设完成此项功能;

对于有些未学的知识点而又不可缺少的部分,可对其进行外接口封装,只需同学们直接调用;

所涉及已学知识点要尽量多地关联起来,形成一个整体概念,提高学生对已学知识的理解,激发其求知欲,以及对实际项目开发的一种初步感知。

对于已学习过知识体系,但在课本的学习中未涉及到,学生可以通过帮助文本自学完成的,应该保留其功能,让学生自学完成。

2)中级阶段项目的处理要求:

项目划分几大部分,同一部分的知识相关程度大,不同部分相关程度小。每一部分再分成几个小组,让每个小组3~5人,便于交流。

组与组之间应该相互依存,相互制约,培养学生的团队协作精神。

涉及未知的领域,教师要进行引导,告之学生查找那一方面的资料,如何着手工作,培养学生查阅资料,独立思考的自学能力,但不能太难。

3)高级阶段实训项目不做任何处理,是一个真实的项目。

1.5 项目实训的应用过程举例

以20个人的一个小班为例,实训项目为:智能IC卡电表售电管理系统。项目开发中涉及到的系统包括:Windows XP操作系统,VC7.0开发平台和Oracle 9.0数据库管理系统。以下是真实的中级阶段实训过程:

1)实际项目展示:此项目无需求分析,系统设计环节,学生通过展示平台操作该系统达到对该项目的认知,进而了解各个模块需要完成的具体功能。

2)组的划分及各小组需完成的工作:分为二大开发部,数据库开发部和售电管理信息系统开发部。数据库开发部由7人组成,售电管理信息系统开发部由13人组成。数据库开发部划分成2个小组,其中一组3人组成,完成数据库中表单和视图的设计,另一组四人组成,使用Oracle9.0开发工具,只允许用编程的方式完成数据表单和视图的生成,以及对表数据的删除,修改,不允话直接使用开发工具直接建立表单和视图。数据的有效性及数据的约束关系要求使用过程和触发器完成。管理信息系统开发部划分成3个组,可视化界面组由五人组成,该组完成可视化界面的所有菜单,对于菜单中某些功能使用较为频繁的,要求以快捷图标的方式提供,并完成主菜单的所有主程序和非共享模块的编程。通用功能模块组由四人组成,该组完成所有通用模块,共享模块的编程。智能IC卡组由四人组成,该组完成IC卡的售电,回抄,停电等功能,以及IC卡的加密、解密功能。

3)组成员的组成形式:小组以学生自主组合为主,教师按成绩优、良、中进行搭配为次的指导思想进行分配,每组选择一个成绩优秀者为组长[4]。但对于IC卡开发组就有特别要求,要求学生自学能力强,数学功底好。

4)实训过程以教师引导与学生讨论相结合的方式:通过项目的展示了解各个功能,但有些功能的实现,几个小组都可以完成,这就需要学生进行组间的讨论和协作,如录入容错,可以由界面组完成,也可以由Oracle开发组完成,由那个组完成视具体情况来定,以更好,更有效能解决问题为基准协商解决。通用模块小组需要封装好模块,提供给其它小组调用,需要和其它组成员进行沟通。IC卡开发组涉及的知识点是书本上没有学过的,实验指导教师应提供启发式的指导,但不要求此次使用的产品与原来系统中一样的读卡器和IC卡,要求学生自已查阅资料,选择好使用的产品,同时,IC卡的加密与解密工作也同样需要找阅资料,研究其算法。

5)相互评价:编程和调试完程序后,本开发部内进行小组互评。每个组负责对另一个小组评定,指出哪些方面优良和哪些方面不足,并提出建议。最后,由指导实验课的老师进行评定,评出优良中等级。

1.6 实训效果的评价

下面是针对大学一年级100个学生和大学二年级100个学生将近一年中的实训情况进行的问卷调查,结果如图3,图4。

从以上的调查得出,在大学一年级的初级项目实训中,我们着重训练学生的实际操作能力,综合运用能力,略有一点查阅资料、自我学习的训练;在大学二年级中级项目实训中,学生的实际操作、综合运用、相互沟通、团队协作、查阅资料和自我学习的能力都有不同程度的提高和加强。

2 结论

该文介绍了面向软件服务外包的项目实训过程,经过一年时间的实训实践,学生反映良好,现有教育存在的不足之处,得到了不同程度的弥补。如果进入高级实训的阶段,定会有更好的效果。

摘要:针对当前软件服务外包的发展形式以及培养学生的特色和目标,分析了现有教学中存在的不足,提出了面向软件服务外包的项目实训教学改革。项目实训分阶段进行,依据不同实训阶段的教学任务和教学目标不同,选择项目的条件和项目的处理也有所不同。经过近一年的教学实训实践表明,在培养学生的综合运用能力,实际操作能力,团队协作和自我学习能力等方面取得了明显的效果。

关键词:软件服务外包,项目实训,教学改革

参考文献

[1]赵志斌,叶静.软件服务外包中国发展方向之探究[J].科技传播,2010(9)(上):68-72.

[2]谢红标,章芸.构建良性校企合作软件服务外包人才培养模式的探索与实践[J].中国科技信息,2009(24):300-301.

[3]易小芸.项目教学法在高职信息技术教学中的应用[J].电脑知识与技术,2008,4(29):509-510.

面向服务软件 第2篇

1.主要趋势

在年或 20,企业将意识到它们对技术的投资过度、收益甚少,因而将重新审视CRM项目与业务战略的匹配程度。同时,一些生命周期即将结束的老系统也需要升级到新一代的CRM架构。到,大部分组织都需要进行CRM改革,届时将有针对行业特点的CRM软件、面向服务的架构、集成的框架出现。同时,全球个主要组织中的15%将建立起最完美的CRM系统,成功地将顾客生命周期渗透入他们的业务实践中。

7年前,两层的客户端/服务端软件是主流。现在,面向网络的、n层的架构占据了主要地位。现在,CRM行业正处于另一个大发展的中间阶段,许多供应商都在向面向服务的架构挺进。对于企业来说,这种架构发展将直接影响到CRM的升级问题。

CRM的实施方法也经历着大变化。人们围绕着在企业内实施CRM还是进行主机托管这个问题进行了激烈的争论。基本上,所有的企业都希望知道,对CRM进行主机托管到底是否可行。此外,一些新技术的托管也影响着CRM,比如门户技术、业务流程管理、顾客数据集成。随着技术之间的融合,企业需要进行跨功能、跨系统的集成,CRM战略也必须制定出新的有创意的解决方案来。

2.CRM升级

2004年是CRM的“升级之年”,这对CRM供应商、系统集成商来说都是一个好消息。推动企业进行升级的因素有两个:

第一,大部分供应商的最新产品在架构设计方面有了重大进展,但很多企业暂时还没有升级到这一版本。在和,由于 IT资源紧缺,升级到新一代架构困难重重,对业务的投资回报也模糊不清,许多企业的升级计划都搁浅了。但是随着供应商发布新一代web架构的第二、第三个版本,随着企业IT预算的增加,他们开始意识到自己可能会比竞争对手落后几个版本,因此企业在2004年开始认真解决升级的问题,至少是要制定一个在12 个月之内进行升级的计划。

第二个因素是维护问题。一些供应商今年的维护任务大增,因为如果客户不升级到新版本,他们必须对老版本进行维护。而另一些供应商则减少了对老版本进行技术支持的人员,或者完全取消了支持。

现在进行升级的企业诚然要支付一笔升级费用,

但那些拒绝升级的企业可能会失去供应商对旧版本的支持,可能会比竞争对手落后几个版本,他们在维护方面的支出将更加高昂。尽管如此,除了升级还是有其他路可走的,比如更换供应商。

3.CRM实施:集成CRM组合

在决定实施CRM之前,必须仔细考虑这些关键因素:软件是否最适合本企业,成长性、移植性如何,IT成熟度如何,拥有成本如何。主机托管和企业自行维护的CRM软件都能够为企业带来巨大价值,但是企业不能只关注交付模式。企业更应该关心的是,CRM软件能否支持当前的和未来的业务需求和技术需求,是否在IT资源和业务资源约束之内,这是CRM成功的关键。

主机托管CRM供应商,尤其是salesforce.com,在市场宣传方面做得很到位。许多企业都想知道,主机托管的CRM能否满足他们的需求。一般来说,进行主机托管的企业看起来都十分满意他们的决定。虽然能够进行托管的内容十分有限,但许多企业都被这些供应商的定位“更快/更便宜/更好,而且你不需要为IT烦恼了”迷住了。此外,在许多情况下,长期战略尤其是CRM业务变革被短期的、局部的利益取代了。更加快速的实施和获得投资回报是不错,但如果这是以长期利益为代价,那是不可行的。以前CRM行业的经验也说明了这一点。

企业必须选择一种实施方式,在企业内实施软件,还是进行托管,或者将整个功能与系统都外包出去。这里不存在哪种方式更加好的问题,因为不同的方法适用于不同情况。关键是要对各种CRM组合进行集成、管理,并使它们支持企业的CRM战略。

4.新技术及其对CRM的影响

集成仍然是CRM实施中的困难。企业在 CRM软件上的花费只占咨询与实施上的花费的1/3。在CRM的服务成本中,60%是用于集成系统和数据的。虽然有很多工具、方法、技术可用于CRM的集成,但仍出现了许多解决CRM集成需求的新技术和新市场。下面的几种技术尤其值得注意:

门户:虽然门户不是一个新市场,但它们与CRM 的关系越来越密切了。门户是一种将软件、内容、业务逻辑/规则、数据集成为一个统一用户界面的机制。门户框架从业务流程出发,为特定的用户、任务或角色提供了个性化的信息。比如,许多企业都在开发门户,以实现CRM中联系中心的单一集成代理desktop。

BPM:许多企业都在从传统的部门工作流向贯穿整个企业的业务流程转变。虽然现在的BPM产品还是十分分散,需要很多组件集成起来,但BPM的目标是要实现跨功能的业务流程的自动化和持续优化。这对于CRM来说尤其重要,因为销售、服务、营销流程跨越了企业内外的多个部门。

CDI:CDI战略是通过底层的数据聚合、合并、协同来实现顾客的全景视图,同时应用价值标准来衡量顾客,以制定有效的客户关系战略。一个成功的CDI战略能够实现现有和未来CRM投资的价值。简单地说,CDI是CRM战略中的圣杯,因为它能够通过相关的CRM流程实现客户记录的单一视图。

5.结束语

面向服务软件 第3篇

【关键词】网构软件;数据流;动态演化;迁移

现如今,计算机技术正在不断发展,相应的计算机软件需要具有开放性以及多边形的特点才能适应社会发展以及日常工作的需要。网构软件是一种集自主性、动态性以及连续性于一体的软件类型。网构软件促进了网络构建和资源数量的不断增多,同时形成了跨网络的数据连接,进而形成了软件实体,可以随时提供智能化、多边形的服务。可见,网构软件可以对外部环境的动态性进行感知,同时也可以按照一定的动态目标进行具体的演化。

1、网构软件的运行

从技术层面来说,网购软件的结构较为复杂,主要有两方面组成,包括能够提供具体的软件实体和底层的支撑平台。网购软件在正常运行的过程中,需要底层的支撑平台能够将内部的状态以及相关的行为信息等进行暴露,与此同时,还要保证上层软件的实体和行为等进行展现。然后要经过一定的监测和切换机制来达到网构软件的适应性特点。而数据流就是包括操作数据和控制状态在内的内部状态。因此,数据流在进行网构软件服务动态演化的过程中起着至关重要的作用。

网构软件在进行服务动态演化的过程中,主要是将当前的源模式迁移到目标模式下,然后进行严格地执行工作。这里有很多注意事项,主要包括以下几个方面:

(1)目标模式能够对源模式进行继承。主要是要求源模式本身具有一定的继承性,包括一定的数据、关系以及相应的结果。除此之外,还可以保证其在以后的执行工作中得到应用。

(2)要对目标状态进行保护。目标模式的有效性是至关重要的,应该避免出现动态演化的错误,减少死锁或者是流程异常的问题,这样会直接影响到整个服务状态,使其出现差错。另一方面,网构软件也是一种感知系统,不仅可以对环境的变化进行感知,同时也能够对自身的状态进行感知。因此,动态演化工作就具有一定的复杂性,需要考虑到控制流和数据流两个方面。

具体来说,控制流主要是为了保证软件服务动态演化的正确性和一致性,可以被分成两种方式,一是将相应的变量作为过程模型的重要组成部分,一是将活动变量作为相应的标准,添加到活动过程中。以上提到的这两种方式主要是对数据流进行严格地控制,对其具体的位置进行规定,这种方式不仅影响到数据流的服务动态演化的特征,同时也不能满足网构软件的基本运行需求。另外,网构软件的核心理论也呈现出形式化的特征,进行动态演化需要首先做好建模工作,其中较为常见的就是Petri网。现如今,这种网络的网构软件建模无法对动态演化进行细致地分析和支持,需要从控制流的角度出发来对其进行改进,并且在此模型的基础上实现网构软件的动态演化过程。

在这里应该首先谈到Perti网络,这是一种较为新型的网络技术,在运用的过程中,综合了网络和高级语言的优点,同时突出了数据的重要性。可以针对不同的模型特点来对行为进行分析,并且可以详细地进行表达。因此,文章主要以Petri网络为基础,分析了面向数据流的网构软件服务动态演化过程。主要是为了将数据流的基本特点引入到网构软件动态演化中,并且從静态和动态关系两个方面来对其进行细致地分析和介绍

2、网购软件服务模型

2.1网构软件服务模型描述

在具体的网构软件运行的过程中,为了实现此软件的动态形式化管理,需要将数据流和控制流的相关技术进行引进,同时文中主要分析了CPN系统建模的形式,进而对网构软件的相关服务模式进行详细地探讨和分析。

2.2IW_CPN数据依赖关系分析

IW_CPN的活动(变迁)中,当输入参数vi在活动ti中产生作用并输出参数vj时,这两个参数就产生了依赖关系(称为参数依赖关系viRDvj),参数依赖关系可以分为直接参数依赖关系(记为viRDDvj)和间接参数依赖关系(记为viRDIvj)。当一个活动ti的输出参数成为另一个活动tj的输入参数时,这两个活动就发生了数据依赖关系(称为活动数据依赖关系tiRTtj),同样可以分为直接活动数据依赖关系(记为tiRTDtj)和间接活动数据依赖关系(记为tiRTItj).在IW_CPN模型的活动序列=t1t2…tn中,有活动ti,ti+1和ti+2,它们的输入参数分别为IN1={inv11,inv12,…,inv1n},IN2={inv21,inv22,…,inv2n}和IN3={inv31,inv32,…,inv3n},输出参数分别为OUT1={outv11,outv12,…,outv1n},OUT2={outv21,outv22,…,outv2n}和OUT3={outv31,outv32,…,outv3n},经实施后的标识分别为Mi1,Mi2,Mi3,Mi0为ti的初始标识。

3、网构软件服务数据流动态演化错误分析

网构软件要想实现服务,需要从源模式转换到目标模式下,因此,数据流需要满足以下几个方面的特点:

(1)要实现数据流的动态性以及合理性,不能出现数据缺失的现象,这里所谓的数据缺失就是指数据没有建立或者是数据没有被充分利用等。可见数据的真实性和准确是在网构软件运行中起到了至关重要的作用。

(2)要使得数据流满足数据依赖关系的一致性。这也是对于数据流最基本的要求。

(3)要同时满足数据流和控制流的动态性。需要注意的是不能由于数据依赖关系而产生数据的死锁问题。

将网构软件的服务模式从源模式朝着目标模式的改进,需要经过多个环节,主要包括对基本活动、判断条件的细化工作,对于不符合规定的活动序列进行删除或者是增加,对于循环分支或者是变量进行添加或者是删除,这样才能更好地实现网构软件的动态化。对于数据流来说,需要将其分成三类,动态演化错误也可以从以下几个方面来进行细致地分析和介绍:将基本活动进行细化,主要就是指将一个活动分成两个或者是多个活动,但是该操作并不会改变原有的数据输出的特点或者是相互之间的依赖关系。如果进行基本活动的细化操作对内部的活动产生了一定的影响,也不会影响到整个模型的操作方式。总之,需要最大限度地避免基本活动产生的数据输出或输入的错误。

nlc202309020458

4、网构软件服务实力动态演化准则

在进行网构软件动态演化的过程中,如果用户的需求或者是相应的环境出现了明显的变化,当前的服务需要进行迁移,要朝着一个有效的目标状态进行执行,进而满足用户的基本需求,或者是使得网构软件能够适应新的环境。但是,在实例迁移的过程中,还会受到诸多因素的限制,同时会导致动态演化的错误,影响到整个网构软件的动态演化工作。因此,需要采取一些切实可行的措施来对其进行完善和改进。主要需要遵循以下几个方面的原则:

4.1面向数据流的网构软件服务实例可迁移准则。要保证源模式中所执行的一系列活动数据之間的相互依赖的关系,在进行实例迁移之后也要保证这种关系。

4.2网构软件服务实例迁移过程中,要求不产生数据缺失、数据冗余和数据丢失等错误,并保持数据依赖关系的一致性,同时还需要避免由数据流/控制流交叉依赖关系而导致的动态演化错误。

4.3从数据流和控制流相结合的角度,保证服务实例从源模式到目标模式可迁移的一致性、合理性和正确性。

5、相关工作

现如今,网构软件的服务动态演化技术已经得到了广泛地应用,主要体现在工作流和动态演化两个方面。相关的专家和学者对其进行了深入研究和探讨,提出了动态演化的特殊性。同时将变量作为一阶实体,并且将其引入到有向图模型中去,可以对活动本身以及相互之间的依赖关系进行细致地描述,刻画了数据的读写操作规则。数据流要想保证其正确性,需要满足一下两个方面的条件:

首先,只要是输出的变量必须要经过定义。其次,同一个变量不能接收两个或者是两个以上的执行的活动。

总之,相关的研究工作正在不断发展和继续,同时也取得了一定的成效。本文主要在网构软件的基础上增加了对数据流的分析部分。同时着重地强调了数据以来关系对动态演化所产生的影响和制约作用。因此,需要将数据流分离出来进行探究,而不应该将其依附在控制流上。在此基础上,从过程模型和活动间的数据依赖关系等方面来进行特别的研究,最终保证判定结果的准确性和科学性。这就是网构软件服务动态性的可行性操作。

6、结束语

综上所述,为了保证网构软件动态模式的正常运行,需要保证其运行状态的有效性,这也是网构软件服务动态演化的重中之重。本文主要根据网构软件运行的基本特点以及着色Petri网的运行模式等对网构软件进行支持。并且分析了网构软件服务数据之间的依赖关系,并且将其分成惨呼和活动数据两方面的依赖关系,进而明确了数据流的约束关系。在此基础上,还对不同操作可能产生的数据错误进行了细致地分析和介绍,同时还提出了几点科学的可迁移性准则,保证了数据依赖关系上的一致性特征。通过具体的实验和相关的实例,得出真实且准确的数据,根据这些资料和数据,进一步保证了网构软件动态演化的可行性和实用性特点。已得到的结论对于网构软件的发展起到一定的促进作用,在这里提出一些展望目标,要对数据流和控制流应用到具体的工作中,进一步研究检测服务实例的可迁移性特征,并且实现迁移。

参考文献:

[1]宋巍,马晓星,胡昊,吕建.过程感知信息系统中过程的动态演化[J].软件学报.2011(03)

[2]周航,黄志球,张广泉,祝义,胡军.基于PTCPN的网构软件建模与分析[J].软件学报.2010(06)

[3]曾晋,孙海龙,刘旭东,邓婷,怀进鹏.基于服务组合的可信软件动态演化机制[J].软件学报.2010(02)

作者简介:赵振(1992-),男,河南省三门峡人,周口师范学院计算机科学与技术学院2013级软件工程专升本班,研究方向为软件工程

面向服务软件 第4篇

以Web服务为代表的软件服务已成为一种新兴的Web应用形态。软件系统的开放性、分布性和协作性与系统安全的内在要求:封闭、集中和独立相抵触。针对访问控制,目前有很多比较成熟的模型,如基于角色的访问控制RBAC(Role-Based Access Control[1]、基于任务的访问控制TBAC(Task-Based Access Control)[2]、基于前提的访问控制PBAC(Provision-Based Access Control)[3]等。在RBAC模型中,访问控制依赖用户的角色,但现有的Web服务在开放环境下缺乏对用户角色的统一管理。在TBAC模型中,采用面向任务的观点,从应用而不是从系统的角度来建立安全模型。在PBAC模型中,授权的前提是用户必须执行一定的动作,但现有的Web服务并没有提供对用户统一的管理及动作的验证的机制。WS-Security主要是用于确保Web服务应用软件处理数据的完整性及保密性,对用户的授权却没有提供相应的处理机制。XACML认为所有的策略都是可信的,无法适用于委托授权和可信计算。现有的Web服务缺乏对用户的统一管理,处于开放系统环境下,用户的身份、所处的位置及Web服务的状态等都是不断变化的,基于用户及Web服务的情境信息建立安全访问控制模型,防止非法用户越权存取数据和使用系统资源,保证Web服务的安全运行,有着极其重要的意义。

1基于情境面向Web服务的软件安全中间件模型

针对Web服务自身特点的访问控制模型,应满足如下需求:

① Web服务的访问控制应该具有一定的灵活性和可扩充性,有着良好的松耦合特性;

② Web服务的访问控制应该具备动态调整的能力,在开放系统环境下,Web服务所处的环境及其自身的状态是不断变化的,需要处理相关的动态特性,如状态、行为等;

③ Web服务应该具有一定的自主性,能够调整自身的状态和行为,具有一定的交互能力。针对以上需求,我们将与Web服务访问相关的情景[4]信息加入到Web服务的访问控制决策中,使得Web服务的访问控制能够适应环境的变化。为此提出了一个基于情境面向Web服务的软件安全中间件模型,如图1所示。

1.1软件安全中间件模型功能模块

基于情境面向Web服务的软件安全中间件模型主要包括以下功能模块:

① Agent[5]会话管理 主要包括用户Agent、Web服务Agent以及策略决策Agent,该软件安全中间件模型提供对Agent会话的统一管理;

② Web服务访问控制策略管理 Web服务的访问控制策略存储在策略库中,采用的策略语言是ReiC。ReiC是一种情境感知的基于规则和本体[6]的策略语言,用户通过策略管理工具对策略库中的策略进行编辑和管理。策略推理机主要是对Web服务的访问控制策略进行评估;

③ 情景信息管理 用户及Web服务的情境信息分别存储在用户情境库和Web服务情境库中,分别由用户和Web服务Agent对其进行管理;

④ Web服务管理 与现有的Web服务体系相一致,Web服务的提供者需要在Web服务注册中心注册所提供的服务,并提供相应的Web服务描述文档。

1.2Web服务的访问控制流程

在基于情境面向Web服务的软件安全中间件模型中,通过策略决策Agent对Web服务访问策略的评估,约束Web服务的外部行为,而Web服务的外部行为由Web服务Agent体现。Web服务的访问控制流程如下:

用户Agent将用户请求及用户的情境信息以SOAP形式发送给Web服务Agent;Web服务Agent加入Web服务的情境信息一起发送给决策Agent;决策Agent从策略库中提取该Web服务的访问控制策略,调用策略推理机对策略进行评估,将评估结果发送给Web服务Agent;决策结果如果是允许,Web服务Agent调用Web服务;将结果通过用户Agent以SOAP形式发送给用户。其Web服务访问控制时序如图2所示。

2情境信息管理

在开放的系统环境中,用户及Web服务所处的环境是不断变化的,Web 服务可利用情境信息调整自己的内部控制流和响应消息,动态地调整Web服务的访问控制。

① 用户情境 用户的身份、名字、所在组织、职务及用户角色等。

② Web服务情境 Web服务的所有者、分类、状态、负载及服务质量QoS等。

在开放的系统环境中,用户及Web服务所处的环境是不断变化的,Web 服务可利用情境信息调整自己的内部控制流和响应消息,动态地调整Web服务的访问控制。图3给出了该软件安全中间件模型中的部分情境本体。

对于情境本体信息采用OWL语言进行描述,现有的Web服务标准中,SOAP消息中的Header元素为扩展SOAP 协议提供了一个通用机制,情境信息作为SOAP 消息中的一个头块进行传递。情境信息头块由若干情境信息块组成, 每个情境信息块关联一类情境信息,包含了此种类型的情境信息。每种类型的情境信息块至多出现一次。情境信息块在SOAP消息中的封装形式如图4所示。

将用户的Location和Client信息封装在SOAP消息Header元素中的描述形式如图5所示。

3基于规则和本体的ReiC策略语言

在基于情境面向Web服务的软件安全中间件模型中使用的策略语言是ReiC。ReiC是在Rei[8]策略语言思想基础上提出的一种说明式的策略语言,主要包括规则和本体描述两部分。

3.1ReiC策略语言中的规则描述

策略语言ReiC中的规则主要包括以下两类:

① 基本策略 权力、义务、禁止和废止。

② 交互策略 委托、请求、撤销和取消。

对基本策略和交互策略采用规则的形式表示,规则主要包括前提和结论两部分。

3.1.1 基本策略

① 权力策略规定了策略主体允许执行一系列的动作。

其描述形式如下:Conditions Right(Subject,Action)

权利策略表明主体Subject允许在Conditions的值为真的情况下,可以执行动作Action。其中Conditions可以是一个复合表达式。在ReiC中,允许通过操作符(and,or,not)将简单条件构造成复合条件。Right(Subject,Action)表示Subject有权力执行动作Action。Action是领域相关的动作,主要描述策略主体的行为,可以通过顺序、分支、重复等操作符来构造复杂动作。

ReiC策略语言可以使用带参数的Action来表示动作,其描述形式如下:

Action(ActionName,TargetObjects,Pre-Conditions,Effects)

② 义务策略规定了策略主体必须执行的一系列动作。

其描述形式如下:

Conditions Obligation(Subject,Action)

③ 禁止策略规定了策略主体不允许执行的一系列动作。

其描述形式如下:

Conditions Prohibition(Subject,Action)

④ 废止策略规定了策略主体以前必须执行,现在不需要执行的一系列动作。

其描述形式如下:Conditions Dispensation(Subject,Action)

3.1.2 交互策略

策略语言ReiC提供了用于对交互行为的描述。利用下面提供的四种策略来影响主体与其他实体之间的交互。

① 委托行为规定了策略主体可以将自己的一个权力给其他主体。

其描述形式如下:

Conditions Delegate(Sender,Receiver,Right(Receiver,Action))

其中Sender(a)表示a是权力的发送者;Receive(b)表示b是权力的接收者;委托行为表明当Conditions成立时Receiver允许执行动作Action。

② 请求行为包括请求动作或请求权力。

对于前者,如果请求被接受,接收者有义务执行这个动作。对于后者,当权力是有效的情况下,接收者把权力委托给发送者。

(ⅰ) 请求一个动作

Conditions Request(Sender,Receiver,Obligation(Receiver,Action))

(ⅱ) 请求一个权力

Conditions Request(Sender,Receiver,Right(Sender,Action))

③ 撤销行为是权力或行为的移除。其描述形式如下:

Conditions Revoke(Sender,Receiver,Prohibition(Receiver,Action))

④ 取消是指对原有发送的请求的取消,而原来请求的义务和委托都将无效。

其描述形式如下:

(ⅰ) 取消一个动作

Conditions Cancel(Sender,Receiver,Dispensation(Receiver,Action))

(ⅱ) 取消一个权力

Conditions Cancel(Sender,Receiver,Prohibition(Sender,Action))

当主体、目标和动作重叠而对象不同的时候,可能会出现策略的冲突。我们通过采用指定优先级的方式来解决。例如,谓词overrides(A,B)表示策略A的优先级高于策略B。

3.2ReiC策略语言中的本体描述

在ReiC策略语言中,本体部分采用OWL语言进行描述。图3中描述的是与Web服务相关的情境本体。

4基于规则和本体的ReiC混合推理模型

ReiC策略语言包含了用规则描述的非结构化的知识,也包含了用本体描述的结构化的知识。虽然规则在表示层次结构化知识的时候,表达能力比较弱,但是使用规则的表达形式可以节省知识的存储空间,因为一些事实可以通过知识库中已有的事实和规则动态地推导出来,而不必事先将它们存储起来。而以OWL语言为代表的本体,它的语义仅限于描述逻辑,该逻辑主要表示对象和类的层次结构,不能表示一般形式的规则。而正是由于ReiC既采用了规则的表述,又采用了本体的表述方式,决定了不能使用单一的基于规则或本体的推理机制,因此提出了一种基于规则和本体的混合推理模型,如图6所示。

ReiC的策略推理可以借助规则推理机和本体推理机来实现,它的运行流程如下:

① 将ReiC知识库中的本体信息经过本体推理机推导后产生的新事实转换成规则推理机的事实格式;

② 将ReiC知识库中的规则转换成规则推理机的规则和事实格式;

③ 将上述推导或经格式转换的规则和事实,经过规则推理机推导后,产生规则推理机格式的新事实;

④ 将新事实经格式转换后加入到ReiC知识库中,构成新规则。

在该框架中,本体推理机采用Racer,规则推理机采用Jess[9]。

5原型系统与应用实例

5.1原型系统

基于情境面向Web服务的软件安全中间件模型为Web服务在访问控制上提供了系统框架层面的支持。其原型系统框架如图7所示。

该原型系统框架主要包括以下模块:

① Client Interface:为用户调用Web服务、用户Agent、Web服务调用返回结果提供相应的接口;

② Context Aware Agent Management Framework:主要是对系统中Agent交互的管理,主要由三种类型的Agent组成:用户Agent、策略决策Agent和Web服务Agent;

③ UDDI:Web服务注册中心存放Web服务描述,策略决策Agent从UDDI中查询满足用户需求的Web服务,得到相应的服务描述文档;

④ Policy Repository:与Web服务访问控制相关的策略存储在Policy Repository中, 策略决策Agent从该存储库中检索相关策略后对其进行评估;

⑤ User Context,Web Service Context:用户Agent和Web服务Agent收集各自的情境信息后分别存放在用户和Web服务的情境信息库中;

⑥ ReiC Reasoner:策略决策Agent根据用户和Web服务的情境信息,调用ReiC策略推理机,对Web服务的访问控制策略作出评估,从而控制Web服务的行为。

5.2应用举例

针对一个现有通过邮政编码为用户提供天气预报的Web服务来举例说明如何使用ReiC策略对Web服务的访问进行控制,主要包括以下步骤:

① 假设用户Jack从UDDI中查询到提供天气预报的服务(getweather),向用户Agent提交调用请求,用户Agent从Policy Repository中查询到该Web服务存在以下访问策略:

(ⅰ) 用户必须是从指定的IP地址(117.63.106.51)登录,访问该Web服务;

(ⅱ) 用户只能在01:00:00-23:00:00这一时间段内访问该Web服务;

(ⅲ) 当Web服务的并发用户小于10时,允许新用户访问,否则拒绝访问。上述访问策略描述为:

(LoginIP(user,uip) ( SameIP(aip,uip) ( before(t1,t) ( after(t2,t) ( WS(ws) ( Less(curload,maxload)) Right(user,ws)

当Jack 拥有使用getweather的权力时,并且Bob和Jack从事同一个项目时,Jack把访问权力委托给用户Bob。其策略描述如下:

(SameProject(sender,receiver) ( WS(ws)) Delegate(sender,receiver,Right(receiver,ws))

② 情景信息

假设用户Jack请求该Web服务的时间是3:47:12,登录的IP地址为117.63.106.51,Web服务Agent获取到该Web服务当前的并发用户数为7。

③ 评估策略

(ⅰ) 本体推理

策略决策Agent从Ontology Repository的时间本体[10]中查询到已经存在下列事实:Instant(01:00:00)、Instant(23:00:00)、Instant(3:47:12)、before(01:00:00,3:47:12)、before(3:47:12,23:00:00)

Racer推理机根据时间本体中before和after之间是逆关系,可以推出下列事实:after(23:00:00,3:47:12)

(ⅱ) 规则推理

事实after(23:00:00,3:47:12)加入Jess推理机后得到事实:Right(user Jack) (accws getweather)。即用户Jack有访问getweather的权力。将已知事实Jack和Bob在做同一个项目,(assert (SameProject (sender Jack) (receiver Bob)))加入到Jess知识库中,可得到如下事实: Right(user Bob) (accws getweather),即表明用户Bob在该刻有权力访问getweather。

④ 调用Web服务

根据决策Agent对策略做出的评估结果为Permit,Web服务Agent调用Web服务,将结果显示给Bob。

6结语

针对Web服务所处的开放、动态的环境,本文提出了一种基于情境面向Web服务的软件安全中间件模型。该模型能动态收集用户及Web服务的情境信息,使得Web服务的安全能动态地适应环境的变化,为开放系统环境下对Web服务访问控制提供了一个有价值的思路。ReiC策略语言弥补了单一规则和本体描述在构建知识库方面能力的不足,并通过实例验证了该框架的有效性,

下一步工作主要是ReiC策略语言的完备性检测、Web服务策略的分布式存储与冲突检测、原型系统的异常处理等。

参考文献

[1] Sandhu R S,Coyne E J,Feinstein H L, et al.Role-based access control models[C]//USA,IEEE Press, Feb. 1996, 29(2): 38-47.

[2]OH S,PARK S.Task-role-based access control model[C]//Informa-tion Systems,USA,Elsevier Science Ltd.,Sep.2003,28(6):533-562.

[3]Kudo M.PBAC:Provision-based access control model[C]//Interna-tional Journal of Information Security,Berlin,Springer Press,Feb.2004,1(2):116-130.

[4] Serrano J M,Serrat J, Galis A. Ontology-based context information modelling for managing pervasive applications[C]//2006 International Conference on Autonomic and Autonomous Systems(ICAS'06), USA, IEEE Press, Jul. 2006:47-52.

[5]Weyms D,Vizzari G,Keil D,et al.Environments for Multi-Agent Sys-tems II[M],Berlin,Springer,2006.

[6]Wache H,Vogele T,Visser U,et al.Ontology-based integration of in-formation-a survey of existing approaches[C]//17th International Joint Conference on Artificial Intelligence(IJCAI01),USA,ACM Press,Aug.2001:108-117.

[7]Junhuai Li,Yile Wang,Jing Zhang.Research of web qos control model based on dynamic resource reallocation scheme[C]//ISISE'08.Inter-national Symposium on Information Science and Engieering,USA,IEEE Computer Society,Dec.2008:103-106.

[8]Kagal L,Finin T,Anupam J.A policy language for a pervasive compu-ting environment[C]//IEEE4th International Workshop on Policies for Distributed Systems and Networks,USA,IEEE Press,Jun.2003:63-74.

[9]Bunke H,Glauser T,Tran T H.An efficient implementation of graph grammars based on the RETE matching algorithm[C]//Graph Gram-mars and Their Application to Computer Science,Berlin,Springer Press,Apr.2006,532(1991):174-189.

面向服务软件 第5篇

因此,快速原型方法能够很好的解决这一问题,并且在当前软件开发过程中应用十分广泛。快速原型方法能够在了解软件开发需求的前提下,以极快的速度制造出大概结构的过程,虽然不一定能够符合实际使用过程中的需求,但是却能够将开发软件的系统及时的展现出来,同时也能够根据软件的模型来进行更为准确的开发。使用快速原型方法,若是用户对软件开发过程中有不满意的情况,也能够及时的对原型进行改进,从而获取新的目标系统,没有重新进行开发的必要;快速原型建造工具也能够在很大程度上缩短创建系统的时间,使得系统原型在很短时间内就能创建成功,增强了软件的开发效率和质量,同时也促进了用户对软件的使用率,提升软件存在的价值。由于建立原型目的有所差别,在快速原型法实现过程中存在探索型、实验型和进化型等三种不同的类型。

探索型的目的是研究探索,明确木白哦系统的需求和特征需求;实验型是在实验目的下建立原型,在开发软件的前期建立原型来检测方法的可靠性。一般建立的背景为针对问题的方案;进化型目的是演示,为了能够更好的解决系统的适应性,从而生成演示型的系统开发模式。也就是说,在面向对象的软件工程中进行软件需求分析时,采用快速原型法能够提升使用效率,而且还能够避免一些不必要的阶段,节省大量投资。

4结束语

综上所述,软件需求分析对软件工程来说非常重要,不仅是作用于及时发现其中出现的问题,构建合理的原型来帮助分析工作的顺利进行,同时也有利于软件需求分析能够提升效率,并且减少一些经济支出,降低投资为下一个软件的开发做好准备。

参考文献

[1]蔺茹.软件工程中面向对象方法的优势分析[J].电子技术与软件工程,(24):54-55.

面向对象软件测试方法研究 第6篇

关键词:软件测试;面向对象;类测试

中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2013) 24-0000-01

面向对象软件测试技术是针对使用面向对象技术开发的软件而提出的一种测试技术。面向对象开发技术和传统开发技术相比有新的特点,使用面向对象技术开发的程序具有高质量、高效率、易扩展、易维护等优点,这也给它的测试技术带来新的挑战。面向对象软件测试与传统的软件测试相比,由于面向对象技术开发的软件会出现传统软件技术中不存在或者不突出的错误,使得传统的软件测试中次要方面成为了现在的主要问题,影响了软件测试的方法和内容,增加了软件测试的难度。

一、软件测试

(一)软件测试

软件测试是使用人工操作或者利用测试工具按照测试方案和流程对软件产品进行功能和性能方面的评估,检验软件产品是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

(二)面向对象对软件测试的影响

面向对象软件具有抽象性、封装性、继承性和多态性等特点,这些特点对软件测试产生了不同的影响。面向对象程序中子类可以继承父类的功能,父类进行了充分测试后,子类也要设计相应的测试用例进行充分测试,对子类进行测试时不仅要测试子类中的方法,还要重新测试与子类中重定义方法相关的类。面向对象软件测试时,对象的状态通常是信息隐蔽的,测试人员需要在测试类中添加适当的信息来表明对象的实现方法及其内部状态。对于面向对象软件的多态性形成的动态绑定的测试使用传统的静态分析策略是不合适的,需要使用动态的测试标准来解决这个问题。

二、面向对象软件测试方法

面向对象软件测试方法是从传统的软件测试方法中演化而来的,有与传统的软件测试相类似之处,但由于面向对象的软件开发具有继承性和多态性等特点,为了支持和加强数据隐藏的特性,面向对象的软件测试必须向一个类的接口添加操作,所以说面向对象的软件测试方法更复杂一些。

(一)面向对象软件单元测试

面向对象软件单元测试主要是类测试,包括方法测试和对象测试。类是面向对象程序设计的基本单位,对象是类的具体实例,类测试是来验证类的实现和类的说明是否完全一致,如果类的实现是正确的,那么类的每一个具体实例的行为也将是正确的。

面向对象的类测试首先要确定测试方法,通常可以通过代码检查和执行测试用例两种方法来测试类的代码。代码检查方法容易受人为错误的影响,在代码量很大的情况下也会加大它的工作量,而编写一个好的测试用例需要很丰富的经验和较高的技巧。通过类实现的功能来分析所要编写的测试用例,然后根据类的边界值来扩充测试用例。构建测试用例一般是基于前置条件或后置条件,为所有可能出现的情况及情况的组合确定测试用例的需求,在这些可能出现的情况组合下,根据这些需求来构建测试用例,而且还要针对实际情况创建特定输入值的测试用例,并确定它们的正确输出。

测试驱动程序是一个运行测试用例并能够收集运行结果的程序。在面向对象的软件测试中,设计核心类的测试驱动程序十分重要,要求该程序必须思路严谨、结构简单清晰并易于维护。当确定了类的可执行测试用例,测试驱动程序就要创建类的实例来运行该测试用例,并给出测试用例运行的测试结果。

(二)面向对象软件集成测试

面向对象软件集成测试主要是类簇测试。面向对象软件是由若干对象组成的,这些对象互相协调合作来实现软件的功能,在面向对象的软件开发中,对象间的相互协调即对象的交互对于程序的正确性来说是非常重要的,对象的交互方式决定了程序能做什么,从而也就决定了程序是否正确。对象的交互测试是在对类的单独测试的基础上实现的,它来确保对象之间相互传递消息的正确性,它一般执行测试的是嵌入到应用程序中的交互对象。

在面向对象的软件测试当中,除了要考虑对象交互特征面之外,还需要具体的测试技术去实现测试的要求,目前常用的面向对象软件集成测试的方法有抽样测试和正交阵列测试。抽样测试提供了一种运算法则,不需要首先明确测试用例的总体,从一组可能的测试用例中选择测试序列;正交阵列测试是一种特殊的抽样方法,它通过定义一组交互对象的配对方式组合来进行测试,同时要尽量限制测试组合的配置数目,正交阵列测试系统就是挑选某个样本的特定测试技术。

(三)面向对象软件系统测试

在对面向对象软件进行系统测试时,要保证被测系统的完整性,搭建与真实用户实际使用环境相同的测试平台,并且需要参考面向对象分析的结果,对软件的架构进行验证,确保软件可以完全再现问题空间以及完整实现用户需求。系统测试不仅是要检测软件的整体功能行为表现,也是对软件设计开发的再确认,它针对的是非功能需求的测试,包括功能需求以外的所有需求以及注意事项等。系统测试是针对完整软件产品的测试,包括软件、软件运行所依赖的硬件、外设、数据、支撑软件及接口等,确保开发的软件与其依赖的各种资源能够协调运行,形成完整的软件产品。系统测试是软件测试过程中非常重要的阶段,它对测试技术的要求也是最高的。在进行面向对象软件的系统测试时,测试技术人员需要与软件的用户进行交流,根据用户提出的需求给出系统的修改建议,结合用户需求对被测试软件进行测试分析,根据分析结果建立测试用例。

三、结束语

面向对象的软件测试技术是面向对象软件开发中的重要组成部分,本文从面向对象软件的特点出发,分析了面向对象软件测试对传统软件测试的影响,介绍了面向对象软件测试的方法。

参考文献:

[1]王艳丽.面向对象软件簇级测试用例自动生成方法研究与实现[D].长春工业大学,2011.

面向服务软件 第7篇

近年来,软件规模在不断扩大,其复杂程度也在不断增加。同时,随着业务规模的快速变化,对软件的适应性和可扩展性提出了更高的要求。这些需求体现在软件架构上就是要求各模块之间充分解耦,使模块之间的关联度更小。同时,要求模块更加内聚,使每个模块都能担任更专一的职责。

结构化编程使得程 序结构更 加清晰,流程更易 于理解。面向对象编程方法通过封装代码与数据来管理软件复杂度,以真实世界的对象进行建模。随着软件模块数量的不断增长,人们需要在更大的范围内加强内聚性,提高软件的复用度,由此出现了基于组件的开发。组件内的模块通过相互协作,对外提供更丰富且通用的功能,而组件之间是高内聚、松耦合的。基于组件的开发更关注子系统的边界和子系统间的通讯设计。

近年来,随着大数据时代的到来,人们需要通过全样本的形式分析海量数据,对多节点、分布式、异构的系统需求迫切。这就对软件系统的可靠性提出了更高的要求,因而需要重新审视软件的系统架构。

1面向服务的软件架构

1.1面向服务架构

面向服务架构(Service-OrientedArchitecture,SOA)是构造分布式计算应用程序的方法,是将软件设计成一组可互操作的服务的一套原则或方法论,将应用程序功能作为服务发送给最终用户或者其它服务。它采用开放标准,与软件资源进行交互并采用标准的表示方式。

SOA将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口采用中立的方式进行定义,它应该独 立于实现 服务的硬 件平台、操作系统和编程语言,这使得构建在这种系统中的服务可以一种统一和通用的方式进行交互[1]。

1.2SOA实现原则

在SOA中,服务通常通过3个元素来定义:1服务实现:服务的实现由实际代码、应用程序接口或包含(将通过此服务公开的)功能的其它技术资产组成;2服务接口:服务接口为服务的用户提供一种基于标准的方法,用于根据它所提供的契约来访问其功能;3服务契约:服务契约指定服务的目的、功能、约束和使用。契约细节的例子包括安全性需求、响应速度、吞吐量和可用性。

1.3WCF———DotNet中的SOA框架

Windows通信开发 平台 (WindowsCommunicationFoundation———WCF)是由微软开发的一系列支持数据通信的应用程序 框架,是.NET框架的一 部分,从.NETFramework3.0开始引入。它整合了.NET2.0及之前版本的.NETRemoting、WebService以及Socket机制,并融合有Http和Ftp的相关技术,是Windows平台上开发分布式应用的最佳实践方式。

WCF可简单归结为4个部分[2]:1网络服务协议,即用什么网络协议开放客户端接入;2业务服务协议,即声明服务提供哪些业务;3数据类型声明,即对客户端与服务器端通信的数据部分进行一致化;4传输安全性定义。

通信双方的沟通方式,由合约规定;通信双方所遵循的通信方法,由协议绑定;通信期间的安全性,由双方约定的安全性层次规定。

WCF的三大核心概念如下:

(1)契约 (Contract)。WCF的基本概 念是以契 约(Contract)来定义双方沟通的协议,合约必须以接口的方式来体现,而实际的服务代码必须由这些合约接口派生并实现。合约分成了4种:1数据契约(DataContract),订定双方沟通时 的数据格 式;2服务契约 (ServiceContract),订定服务 的定义;3操作契约 (OperationContract),订定服务提供的方法;3消息契约(MessageContract),订定在通信期间改写消息内容的规范。

(2)协议绑定 (Binding)。由于WCF支持HTTP、TCP、NamedPipe、MSMQ、Peer-To-PeerTCP等协议,而HTTP又分为基本HTTP支持(BasicHttpBinding)以及WS-HTTP支持 (WsHttpBinding),因而TCP亦支持NetTcpBinding、NetPeerTcpBinding等通信方 式。因此,双方必须统一通信协议,并且在编码及格式上保持一致。

WCF的服务可 以挂载于ConsoleApplication、WindowsApplication、IIS(ASP.NET)Application、WindowsService以及WindowsActivationServices中,但大多都会挂在WindowsService上。

(3)安全性层次。WCF支持传输层次安全性以及消息层次安全性两种:1传输层次安全性:在数据传输时期加密,例如SSL;2消息层次 安全性:在数据处 理时就加密,例如使用数字签名、散列或是使用密钥加密法等。

WCF具有如下 优势[3]:1统一性。WCF是对于ASMX、.NetRemoting、EnterpriseService、WSE、MSMQ等技术的整合。给开发人员一个统一的开发接口,将同样的业务逻辑通过不同的通讯协议绑定来发布,实现了高度的代码重用;2互操作性。由于WCF最基本的通信机制之一是SOAP(SimpleObjectAccessProtocol简易对象访问协议),这就保证了异构系统之间的互操作性;3安全与可信赖。WS-Security、WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证、数据完整性验证、数据隐私等多种安全因素;4兼容性。WCF充分考虑到了与旧有系统的兼容 性。安装WCF并不会影响原有的技术如ASMX和.NetRemoting。

2SOA在医用超导系统中的应用

我国高端医疗器械领域一直为大型跨国公司所垄断。随着近年来国家的一系列政策扶持,国内一些公司正在加紧研发自己的高端医疗器械,尤其是超导型磁共振成像仪吸引着众多企业的关注。

超导磁体是一种电磁铁,它由超导导线构成,能产生巨大的磁场。由于超导导线在4K的低温下没有电阻,因此维持磁场并不会消耗能量。通常将超导导线浸泡在液氦中以产生4K左右的低温。

制造超导磁体的一大技术难点就是如何确保液氦在磁体中不发生泄漏和蒸发。因为一旦液氦泄漏,就无法保证超导导线所需要的4K低温,从而无法维持磁场,这一现象称为“失超”。为了达到氦气零泄漏这一理想目标,一方便要加强超导磁体的密闭性制造工艺,另一方面也要严格对其进行监控。

我国的氦 气十分贫 乏,只占全球 探明资源 总量的0.2%,主要依赖进口。而氮气比氦气便宜得多,但是液氮的最低温度只能达到62K左右,达不到4K要求。因此往往采用先用液氮将温度降到62K,然后再用液氦将其降温到4K这种折衷方法,节约了成本。

需要对整个超导系统中的液氮、液氦的温度、液位等多点多指标进行系统监测,并对压缩机、场强等相应设备提供反馈以增加整体系统的可靠性,而且在整个超导磁体的生命期(典型值为10年)内不能出错。

综合以上考虑,将整个超导软件监控系统规划为3项主要服务:1Coordinator———核心服务,负责将底 层接收到的数据转换为格式化的有意义的数据,同时负责将数据记录到数据库中;2Display———显示服务,负责将Core服务提供的数据渲染成更加直观的图形界面,以及在系统出错时进行适当的报警。同时在Coordinator服务状态出错时重启服务;3Monitor———状态监控服务,负责监控整个软件系统的健康状态以及整个超导系统的健康状态。

为了提高服务契约的可重用性,将基础服务接口作为其它服务接口的父接口:

(1)基础服务接口IServiceBase:

IServiceBase接口为所有服务接口的父接口,增加了查询服务状态以及开始、停止服务的契约。

(2)带回调的基础服务接口ICallbackServiceBase:

ICallbackServiceBase进一步扩 展了IServiceBase,提供了注册与反注册功能。如果想要在服务状态或数据有更新时得到通知,就需要在服务处用Register注册。

(3)核心服务接口ICoordinator:

Coordinator服务实现了ICoordinator接口,提供了读数据、持久化、通知等核心服务。

(4)服务状态监控IStatusMonitor

StatusMonitor实现了IStatusMonitor接口,以便在整个系统状态出现更改时作出正确的响应。

系统分层模型如图1所示。

将这些服务都挂载于WindowsService,通过SOA架构设计,将各服务按其职能进行了明确划分,提高了系统的可靠性、可重用性及可扩展性。

3结语

软件测试方法及面向对象软件的测试 第8篇

1. 软件测试的概念。

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能的测试, 甚至根据需要编写不同的测试工具, 设计和维护测试系统, 对测试方案可能出现的问题进行分析和评估。执行测试用例后, 需要跟踪故障, 以确保开发的产品适合需求。可以说, 软件测试是发现软件错误的过程, 所以对软件要尽早测试和充分测试。

2. 黑盒测试。

大体上分, 软件测试方法可分为白盒测试和黑盒测试2种。黑盒测试也称功能测试或数据驱动测试。它在已知产品应具有的功能条件下, 通过测试来检测每个功能是否都能正常使用。在测试时, 把程序看作1个不能打开的黑盒子, 在完全不考虑程序内部结构和内部特性的情况下, 测试者在程序接口进行测试。常用的黑盒测试的测试方法包括等价类测试法、边界值测试法、决策表、因果图、场景法和正交试验法。

3. 白盒测试。

白盒测试则只根据程序的内部结构进行测试, 而不考虑外部特性, 如果程序结构本身有问题, 比如说程序逻辑有错误或是有遗漏, 则无法被发现。白盒测试可全面了解程序内部的逻辑结构, 无法对所有逻辑路径进行测试。在使用这一方案时, 测试者必须检查程序的内部结构, 从检查程序的逻辑着手, 得出测试数据。常用的白盒测试方法包括逻辑覆盖测试、基本路径测试、分支条件测试、循环测试和数据流测试等。

二、面向对象特征对软件测试的影响

类的封装性和继承性给面向对象软件的开发带来了很多好处, 但却给软件测试带来了不少负面影响。一方面, 面向对象测试用例设计的目标是类, 类的属性和操作是封装的, 而测试需要了解对象的详细状态。另一方面, 继承也给测试用例的设计带来了不少麻烦。继承并没有减少对子类的测试, 相反使测试过程更加复杂。

1. 类和对象对功能模块测试的影响。

在面向对象系统中, 系统的基本构造单元是封装了数据和方法的类和对象, 而不再是一个个能完成特定功能的功能模型。每个对象都有自己的生存期和状态。消息是对象之间相互请示或协作的途径, 是外界使用对象方法及获取对象状态的唯一方式。对象的功能是在消息的触发下, 由对象所属类中定义的方法与相关对象的合作共同完成, 并且对象在不同状态下对消息的响应也可能完全不同。

2. 系统功能实现对测试的影响。

在面向对象系统中, 系统的功能体现在对象间的协作上, 而不再是简单的过程关系调用。面向对象程序的执行实际上是执行一个由消息连接起来的方法序列, 方法的实现与所属对象本身的状态有关, 各方法之间可能有相互作用。为实现某一特定的功能, 可能要激活和调用属于不同对象类的多个成员函数, 形成成员函数的启用链。因此, 基于功能分解的自顶向下或自底向上的集成测试策略不适用于面向对象软件系统的测试。

3. 封装对测试的影响。

封装是指在词法单位之中或之间决定名字可见性的访问控制机制。它支持信息的隐蔽和模块化, 有助于防止全局变量的访问问题。尽管封装不会直接促成错误的发生, 但它却给测试带来了障碍。封装使对象的内部状态隐蔽, 如果类中未提供足够的存取函数来表明对象的实现方式和内部状态, 则类的信息隐蔽机制将给测试带来很多困难。

4. 继承对测试的影响。

继承也是面向对象语言中的一个本质特征。继承可用于一般与特殊关系, 并且方便编码。但继承削弱了封装性, 产生了类似于非面向对象语言中全局数据的错误风险。由于继承的作用, 一个函数可能被封装在具有继承关系的多个类中, 子类中还可以对继承的特征进行覆盖或重定义。

5. 多态对测试的影响。

多态是指一个引用可以与多个对象绑定的能力。多态能减少代码的复杂性和规模, 同时还可以实现动态绑定。但依赖于不规则类层次的动态绑定可能会产生编程人员想象不到的结果。虽然, 某些绑定能正确地运行但并不能保证所有的绑定都能正确地运行。以后绑定的对象可能很容易地将消息发送给错误的类, 执行错误的功能, 还可能导致出现一些与消息序列和状态相关的错误。

三、面向对象软件测试的层次划分

1. 方法测试。

主要考虑封装在类中的1个方法对数据进行的操作。可以采用传统的模块测试方法, 但方法是封装在类中的, 并通过向所在对象发消息来执行, 它的执行与状态有关, 特别是在操作多态性时, 设计测试用例时要考虑设置对象的初态, 并且要设计一些函数来观察隐蔽的状态值, 使它在收到消息时执行指定的路径。

2. 类测试。

在测试过程上等同于传统的单元测试, 面向对象的类测试主要考察封装在1个类中的方法和类的状态行为。进行类测试时要把对象与其状态结合起来, 进行对象状态行为的测试, 因为工作过程中对象的状态可能被改变并产生新的状态。测试范围主要是类定义之内的属性和服务, 以及有限的对外接口部分。在类测试过程中, 不能仅仅检查输入数据产生的结果是否与预期的相吻合, 还要考虑对象的状态, 整个过程应涉及对象的初态、输入参数、输出参数以及对象的终态。

3. 类簇测试 (集成测试) 。

把一组相互有影响的类看做一个整体称为类簇。类簇测试主要根据系统中相关类的层次关系, 检查类之间相互作用的正确性, 即检查各相关类之间消息连接的合法性、子类的继承性、父类的一致性、动态绑定执行的正确性和类簇协同完成系统功能的正确性等特性。其测试有2种不同策略:基于类间协作关系的横向测试和基于类间继承关系的纵向测试。

4. 系统测试。

是对所有程序和外部成员构成的整个系统进行整体测试, 检验软件和其他系统成员配合工作是否正确。另外, 还包括确认测试内容, 以验证软件系统的正确性和性能指标是否满足需求规格说明书的要求。

四、面向对象测试用例设计

1. 测试用例设计。

面向对象的软件测试用例则着眼于适当的操作序列, 以实现对类的说明。黑盒测试不仅适用于传统软件, 也适用面向对象的软件测试。白盒测试也可用于面向对象软件类的操作定义。但面向对象的软件中许多类的操作结构简单明了, 所以有人认为在类层上测试可能要比传统的软件中白盒测试更加方便。

2. 测试用例设计要点。

测试应该唯一地标识每一个测试案例, 并且与被测试的类明显地建立关联, 并陈述测试对象的一组特定状态。对每一个测试建立一组测试步骤, 需要思考或确定的问题包括:对被测试对象的一组特定状态, 一组消息和操作, 可能产生的一组异常, 一组外部条件, 辅助理解和实现测试的补充信息。

五、设计类测试用例

1. 基于故障的测试。

在面向对象软件中, 基于故障的测试具有较高的故障发现能力。基于故障的测试与传统的错误测试推测法类似。首先, 推测软件中可能有的错误。然后, 设计出可能发现这些错误的测试案例。为了推测出软件中可能存在的错误, 应该仔细研究分析模型和设计模型, 这在很大程度上要依靠测试人员的经验。

2. 基于脚本的测试。

基于脚本的测试主要关注用户需要做什么, 而不是产品能做什么, 即从用户任务 (使用用例) 中找出用户要做什么并去执行。这种基于脚本的测试有助于在一个单元测试情况下检查多重系统。所以基于脚本的用例测试比基于故障测试更加接近用户, 而且更复杂。

3. 随机测试。

如果一个类有多个操作功能, 这些操作功能序列有多种排列。而这种不变化的操作序列可随机产生, 用这种可随机排列的序列来检查不同类的实例, 叫做随机测试。随机测试是针对软件在使用过程中随机产生的一系列不同的操作序列设计的测试案例, 可以测试不同的类实例。

4. 划分测试。

划分测试方法与传统软件测试采用的等价划分方法类似, 它减少了测试类所需要测试用例的数量。首先, 用不同的划分方法 (包括基于状态的划分方法、基于属性的划分方法和基于功能的划分方法) 把输入和输出分类。然后, 针对划分出来的每个类别设计测试用例。

六、设计类间测试用例

1. 基于场景的测试。

基于场景的测试关注的是用户需要做什么, 这正是基于故障测试所忽略的。当与不正确的规约发生错误关联时, 软件就可能不执行用户所设定的工作, 这时软件质量就会受到影响。当一个子系统所建立的环境使得另一个子系统失效时, 子系统间的交互错误便会发生。

2. 行为测试。

面向对象软件测试模型研究 第9篇

1 面向对象软件开发过程

面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)3个阶段[1]。面向对象的软件完整开发过程可用下图表示:

面向对象分析(OOA)全面地将问题空间中实现的功能进行现实抽象化,将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为[1]。OOA的结果是为后面阶段类的选定和实现、类层次结构的组织和实现提供平台。分析模型标识了所要研究的真实世界系统的相关对象及其相互关系,是与计算机无关的。

面向对象设计(OOD)建立类结构或进一步构造类库,实现分析结果对问题空间的抽象。OOD确定类和类结构不仅能够满足当前需求分析的要求,更主要的是通过重新组合或加以适当的补充,方便实现功能的重用和扩增。设计阶段是对分析模型进一步细化,构造实现中所涉及的新对象。

面向对象编程(OOP)是软件的计算机实现,是指用一种面向对象的程序设计语言实现设计模型,编写出源程序。面向对象的程序设计的主要活动集中在建立对象和对象之间的联系(或通信)上,从而完成所需功能。由于现实世界可以抽象为对象和对象联系的集合,所以面向对象的程序设计方法是一种更接近现实的、更自然的程序设计方法。用面向对象语言所编写的源代码至少从原理上讲是与设计模型紧密联系且彼此一致的[4]。

2 面向对象软件测试模型

面向对象程序的结构不再是传统的功能模块结构,因此面向过程软件测试和软件度量方法不适合面向对象软件测试和软件度量,已经不能用功能细化的观点来检测面向对象分析和设计的结果。对面向对象软件的测试策略和方法需要作出相应的变革或更新。

在许多情况下,初始的软件需求有明确的定义,但是整个开发过程却不宜单纯运用线性模型。同时,可能迫切需要为用户迅速提供一套功能有限的软件产品,然后在后续版本中再细化和扩展功能,在这种条件下,需要选用一种演进式的软件过程模型,如图2的内层所示。针对这种开发模型,结合传统的测试步骤的划分,提出一种在整个软件开发过程中不断测试的测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体,测试模型如图2所示。

此模型不仅是一种演进式的软件过程与测试模型,还强调测试伴随着整个软件开发过程,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

同时这种新的软件测试模型伴随着软件开发的一系列演进版本,如图2所示,每个框架活动代表演进中的一个片断,随着演进过程的开始而顺时针旋转,软件团队执行螺旋上的一圈表示的活动,进行开发与相应的测试,并在每次选代中逐步完善,开发出不同的软件版本,且在每次演进过程中,各个阶段的测试重点各不相同。

OOA的测试重点在于完整性和冗余性,包括对认定对象的测试、对认定结构的测试、对认定主题的测试、对定义的属性和实例关联的测试、对定义的服务和消息关联的测试。

对OOD的测试,针对功能的实现和重用以及对OOA结果的拓展,从如下3方面考虑:对认定的类的测试;对构造的类层次结构的测试;对类库的支持的测试[2]。

OOP测试的重点集中在类功能的实现和相应的面向对象程序风格即数据成员的封装性测试和类的功能性测试上。其测试内容在面向对象单元测试和面向对象集成测试中体现。

单元测试针对面向对象软件的基本组成单元类,重点测试类的属性、方法、事件、状态和相应状态等内容。它是进行面向对象集成测试的基础。

集成测试是在单元测试的基础上将所有的模块按照软件设计要求组装成为子系统或者系统,进行测试,它测试的对象是模块间的接口;关注的重点是各个模块接口和整体体系结构。

系统测试时在系统被部署到了实际的运行环境之后,根据软件的需求和设计说明对其进行功能、性能、安全性等测试;它测试的对象是整个系统以及与系统交互的硬件与软件平台[3]。验证软件系统的正确性和性能指标是否满足需求规格说明和开发任务书的要求,包括软件功能测试、强度测试、性能测试、安全测试、恢复测试和可用性测试等。其测试的重点是性能测试,目的是测试软件是否能满足用户的需求,并得到实际测试数据,分析比较后可以更好的改善软件的实际性能,使其更能满足用户的需求。

3 结论

该测试模型对面向对象软件工程管理具有相当的借鉴价值,不足之处在于它将一体的软件测试生硬地划分为一些不同的阶段,这就意味着对每个阶段的变更相对比较困难,但是该模型将对面向对象软件测试具有一定的理论导向作用,对模型中涉及的测试技术还有待于进一步的研究和探索,仍有很多困难需要克服,如怎样在软件中内置测试,其模式是什么,怎样才能提高可测试性,如何组织测试等。

参考文献

[1]陈文宇.面向对象软件的测试[J].电子科技大学学报[J].2002(6).

[2]袁海根.面向对象软件的测试模型[J].软件导刊,2007(5).

[3]张朔.软件测试方法及在综合网管系统测试中的应用与研究(D).

[4]魏武华.浅议面向对象的软件开发过程[J].陕西省行政学院、陕西省经济管理干部学院学报,2001(3).

面向对象软件回归测试选择策略 第10篇

软件维护活动成本占软件产品总成本的三分之二以上,回归测试[13]是软件维护活动一个必要组成部分,它用来确保修改后软件的正确性,提高软件产品质量。回归测试成本是昂贵的,它占软件维护活动成本的二分之一左右。软件产品在软件维护阶段,由于用户需求或者功能发生变化而需要对软件作出修改,要确保修改后软件的正确,进行的测试被称为回归测试。

回归测试需要解决四个基本问题:(1)怎样鉴别那些受到修改影响的部分(修改影响分析);(2)采用什么策略来重测受到影响的部分;(3)重测部分的覆盖标准是什么;(4)怎样选择、重用和更改存在的测试用例库(测试用例库的维护)。

本文研究的是第二个问题。关于面向对象软件的修改影响分析技术,已提出了有通过利用数据流图来分析受影响的软件中定义使用对和他们相关的子路径。与这种方法不同的另一种技术是建立软件中函数和模块之间相互作用的控制流图,鉴别、修改受影响的函数或者模块。无论第一种还是后一种,它们都是建立在过程级或者模块级上进行分析的,这对于面向对象软件的测试粒度是偏小的。本文是基于一个在软件类层次上进行回归测试的选择测试技术。

类作为面向对象软件[4,5]的一个最小单元,以它来创建软件类关系图(ClassRlatedGraph)进行分析软件修改受到影响是比较全面的,本文在类关系图的基础提供一个有选择策略测试技术[610],通过对修改前软件和修改后软件类关系图比较,得到需要测试修改的软件部分和修改受到影响的部分,把他们放到类防火墙内,针对防火墙内的类产生可以重用原有测试用例的测试序列。该技术与其他的选择测试技比较有如下优点:(1)这个回归测试选择技术是安全的,也就是它重用已有的测试用例能尽可能暴露出修改后软件的缺陷部分;(2)它是有效的,即使它所选择测试用例也包含有不能暴露缺陷的用例,但比其他的选择测试要精简。

1类关系图(CRG)

1.1类的关联

无论是用C++语言还是JAVA语言书写的面向对象软件,都是以类为软件的基本单元,那么在软件中,类与类之间存在什么样关系?继承性、组合使用是类与类之间常用关系。

继承性(Inheritance):对象或类继承了另一个类的一组属性。例如在图1中,国内快递公司和国外快递公司都继承了快递公司的特征。因此,类(快递公司)称为超类,类(国内快递公司,国外快递公司)被称为子类。

组合(Aggregation):当一个类是另一个类的组成部分,就称为组合关系。例如小汽车包含引擎、车轮等组件。小汽车是一个类,引擎和车轮也是类,那么类小汽车包含类引擎和类车轮。那么小汽车和引擎、车轮是组合关系。

使用(Use):上面例子中,小汽车是由驾驶员驾驶,那么小汽车类和驾驶员类之间存在是使用关系。使用关系存在于两个或多个类之间,一个类使用另一个类。

1.2 关系图

图2描述:类关系图(CRG)是由节点(V)、标签(L)和边(E)组成。节点是组成软件的类,边是用来描述类与类之间关系,标签指出关系种类(Us-使用、Ag-组合、I-继承)。

2 回归测试的过程

选择回归测试技术通过减少测试用例个数和只测试修改受到影响的部分程序来减少回归测试成本,但全部选择测试是利用全部已有测试用例,重新测试修改后的软件,这样将大大增加了测试成本和测试时间,所以部分选择回归测试技术是目前研究的主要方向,本文提供的方法只需要把修改的类和根据类关系图确定修改受到影响的类放到一个类防火墙内(class fire),对类放火墙内类进行测试,进行测试的测试用例可以选择已存在原有测试用例,如果是新增加的类,就可以创建新的测试用例,这样就形成了回归测试的测试用例集。这种选择策略确保软件质量是有效、经济、安全的。一个典型的部分选择重测技术过程大致如下:

(1)选择T′∈T(原有的所有测试用例),形成修改后软件的测试用例;

(2)用T′测试修改后软件P′;

(3)如果有必要,需构造新的测试用例T’’,修改后的软件增加了新的功能就需要创建新测试用例来验证该功能。

(4)用T″测试修改后软件P′,用T″验证修改后软件P′的正确性;

(5)创建T,从T′,T″,得到一个新的测试用例集合和测试修改后软件P′历史记录。

3 回归测试选择策略

我们首先对面向对象软件构造他们的类关系图,类关系图是在程序类层次上创建的,类作为面向对象软件最基本组成单元,测试是高效的、安全的,并且找出了真正需要测试的类,减少了测试代价又是经济的。针对面向对象软件的继承、多态性和动态绑定及异常抛出这些特征,本文把对面向对象软件回归测试可以分为以下几种类型讨论。

3.1 创建类防火墙

我们定义类与类关系为R,它依靠继承、组合和使用,来描述类与类之间依赖关系,R={〈c2,c1〉|c1,c2∈V∧(l∈L∧〈c1,c2,l〉∈E)}。

下列这些都纳入我们关系R范畴:

a,类c1是类c2的派生类。

b,类c2是类c1的一个组成部分。

c,类c1通过使用类c2的成员变量和成员函数使用类c2。

对类c2的修改将会影响类c1的执行。那么类c1和类c2都将放入类防火墙内。

3.2 类内部成员增加

① 继承关系:类c2增加成员函数或者是成员数据,那么它和它的派生类c1将要放入防火墙内。

② 使用关系:如果类c1使用类c2新增加的成员,c1和c2要放入类放火墙内。

3.3 类内部成员删除

① 继承:类c2删除成员函数或者成员数据,那么它和它的派生类c1将放入防火墙内。

② 使用:如果类c1与类c2是使用关系,并且使用了类c2的删除成员函数或者成员数据,那么类c1和类c2要放入类防火墙内。

3.4 类内部成员修改

① 继承:类c2成员被修改或者重命名,那么它和它的派生类c1将要放入防火墙内。

② 使用:类c2成员变量重定义或者重命名,那么类c2和使用它的类c1要放入防火墙内。成员函数体被修改,调用它的类c1要放入类防火墙。

3.5 类的增加

类的增加可以等价于类的成员增加,可以适用2方法。

3.6 类的删除

类的删除等价与类成员删除,放入防火墙的方法类似3方法

3.7 异常抛出

异常作为类,同样适用于以上方法。

如果类c1是类c2的组成部分,那么对c1进行上述修改,修改的部分与c2有关联,将会影响到类c2,c1和c2都要放入类防火墙。

4 实例应用

我们通过一个实例来说明我们的算法。图3是一个包含四个类A,B,C和D的系统。用我们的算法来分析对类A中 fa1的修改,我们将根据修改影响重新选择测试序列。我们假设用T表示原来的测试用例集。

4.1 类内部检测

类成员变量fa1修改影响到类成员方法ma1()。mal()要放入防火墙内将重新测试。

4.2 类的继承检测

mal()影响到子类A1和A2。A1和A2要放入防火墙内进行重新测试。

4.3 调用关系检测

调用类A的受影响成员方法mal()的有类B的mb1()方法。调用类B的受影响mb1()方法的有类C的成员方法mc1(),mc1()也将影响mc2()。类B和类C将放入防火墙内进行重新测试

4.4 关联关系检测

虽然类B和类D有关联,但没有影响因子。所以类D不需要放入防火墙内。

综上所述,假设新的测试用例集用T表示,选择T中类A、类B、类C的测试用例组成T。因为没有增加新的成员,所以不需要增加新的测试用例。

5结束语

在本文中,我们提出了一个有选择策略测试技术,通过对修改前软件和修改后软件构造类关系,使用它来选择需要测试修改的软件部分和修改受到影响的部分。选择测试技术对修改后软件测试的可以减少测试周期和测试成本。

我们将来的工作是通过该策略算法建立一个自动的面向对象软件回归测试平台,也将对该方法更进一步研究它的有效性。

参考文献

[1]Wu Ye,Chen Meihwa,Kao HM.Regression testing on object-orien-ted Programs.10th International Symposium on Software Reliability Engineering,1999:270—279

[2] Leung H K N, White L. A firewall concept for both control-flow and data-flow in regression integration testing. Conference on Software Maintenance, 1992: 262—271

[3]Kung D,Gao J,Hsia P,et al.Class firewall,test order,and regres-sion testing of object-oriented programs.Journal of Object-Oriented Programming,1995:51—65

[4] Booch G. Object-oriented design with application, Redwood City, Calif: Benjamin/Cummings, 1991

[5] Rumbaugh J. Object-oriented modeling and design, Prentice-Hall,1991

[6]Rothermel G.Harrold M J.Analyzing regression test selection tech-niques.IEEE Transaction Software Engineering,1996:529—551

[7]Rothermel G,Harrold MJ.A safe,efficient regression test selection technique.ACMTransactions on Software Engineering and Methodol-ogy,1997;6(2):173—210

[8]Rothermel G,Harrold MJ.Selecting regression tests for object-orien-ted software.In:International Conferene on Software Maintenane(IC-SM94),British Columbia(Canada):Vicforia,1994:14—25

[9] Harrold M J. Jones J, Li T, et al. Regression test selection for Java software. Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2001), 2001:312—326

探究面向大规模定制的软件开发模式 第11篇

关键词:大面积定制;软件开发

中图分类号:TP311.52

软件开发面临着效率低下,开发周期长,成本高和维护性差的问题,用户个性化和频繁业务变化需求难以满足。日益激烈的市场竞争以及经济全球化对软件工程提出了新的要求,要求能够满足用户个性化、定制化的要求,要能够迅速响应并适应市场和业务的变化,控制软件开发成本,提高软件开发受益。大规模定制软件开发模式是将软件视作生产线上的产品进行大规模的软件生产,将大规模标准化软件开发与面向客户的定制化结合起来,全面提高软件工程的质量。

1 大规模定制软件生产

大规模定制生产是一种真正考虑用户需求,同时又能够实现生产线式集约化的生产模式,减少对客户需求的定制化造成的效益牺牲和成本增加,这是一种有竞争力的制造业生产手段,其中心思想是通过产品重组和过程重组完成产品的个性化定制,实现个性化软件开发的批量生产。

软件产品和普通制造业生产之间有着一定的不同,软件产品有着更短的生命周期,市场和客户需求对软件产品的最终形态影响更大,尤其是应用软件,不同企业产品结构、企业规模以及管理和生产方式之间都有着明显差别,市场变化,企业重组和业务过程的优化导致业务过程不稳定,软件产品在生产过程中要能够满足用户的业务需要的同时还能够适应在动态变化着的业务过程,所以软件产品要具有柔性和可定制性。

1.1 标准成品软件

这种软件开发方式面向大规模客户群,开发和销售成本不高,并且开发价格容易接受,软件开发周期较短,但是对用户特殊要求的考虑以及修改费用花费较高。

1.2 定向单个软件开发

单个软件按照用户需求进行开发,充分考虑用户的特殊需求实现软件开发的定制化,但是开发费用较高,维护和升级比较困难。

大规模定制软件开发模式同时具有上述两种开发方式的优势,能够对客户的个性化需求快速响应,同时还能够实现软件的标准化开发,效率很高,比较节省开发成本。大规模定制软件开发模式使用了领域工程和基于构件的软件开发工程,同时在产品开发中应用了并行工程思想,软件开发不再局限于单个软件的开发,而是分析某一个领域的未来市场,进行整体把握和市场细分,软件设计目标是满足该领域现有客户需求和潜在客户需求,保持良好的适应性和定制性,软件开发面向产品族。

2 大规模定制软件开发模式的实现

传统的软件生产思维模式中,定制化和大规模生产是相悖的,在软件生产中,要么牺牲大规模生产的成本优势来满足客户的定制化要求,要么放弃满足客户的要求,通过大规模生产来控制生产成本。所以大规模定制软件生产理念本身是自相矛盾的。因此为了实现软件生产的大规模定制化,就需要从产品需求分析、开发设计等各个方面全面入手进行生产模式建设。

图1 大规模定制软件开发流程

2.1 大规模定制动态需求管理

用户需求的动态管理是满足用户定制化需求的必然手段。软件生产过程中,客户对软件的需求往往存在变动,甚至客户自己并不清楚软件应有的功能,所以在软件生产中,需要对客户的需求进行动态实时管理,保证软件产品能够有效需求分析并完成产品描述。在面对大规模的客户时,针对每个客户的动态需求进行有效描述工作量是巨大的,所以想要实现大规模定制,需要一种新型的需求分析与产品描述体系。

动态需求管理模式克服了软件产品描述的复杂性,对客户提出了明确的约束,使客户能够迅速方便、无歧义的表达自身需求,帮助开发商在可重用构件中迅速找出适用的功能组合,满足用户动态需求,并且要能够和开发商能力相匹配。动态需求构建通过计算机以及互联网通讯等手段,形成和客户联系紧密,能够高效完成动态分析的模块工具,高效、动态的完成需求和产品描述,为软件开发商确认软件开发需求处理方法提供依据。

2.2 设计与开发

(1)大规模定制软件设计。大规模定制软件设计工作的设计目标不再是满足某一个客户的具体需求,也不是降低了对客户定制化要求的满足程度而进行定制化生产,是面向某一类客户群体的模块化设计。大规模定制软件的设计流程和传统的设计方案之间也有着明显的不同。传统的软件设计首先进行软件系统的概念设计,之后采用串行的方式进行需求分析和详细设计,最后完成软件编程。这种设计方式在设计过程中根据客户的动态需求进行调整是十分困难的。大规模定制软件的设计工作首先完善产品族定义,包括产品和产品结构,之后通过标准化的并行工程工作方法完成各项功能产品族生产。大规模定制化软件设计追求通过单一可重用功能组合完成软件整体设计,并重视通过标准化和通用化的产品族形式满足客户动态需求,低成本的完成软件的定制化生产。

(2)设计内容。大规模定制追求标准化、通用化和产品族设计理念,标注化与通用化是大规模定值的基本要求。在大规模定制产品组设计中主要有面向变形设计方法、核心平台设计方法等,将核心平台方法与模块化思想结合也是研究人员的研究重点。

开发模式方面,大规模定制软件开发可借鉴产品生命周期管理、敏捷制造等理念,在先进的开发思想指导下,实现模型驱动的软件开发。

2.3 产品集成

传统软件开发对开发过程中的规范和管理工作重视不足。面向大规模软件定制开发的集成过程模式为二维结构,软件开发和定制过程都能够通过过程模式进行描述。大规模定制中使用的构件是定义好的体系结构中功能独立、可替代的系统组件。定制过程是根据开发环境制定的个性化应用系统规程。模块定制机制是约束条件、配置机制以及业务模型和技术模式之间的映射关系,约束关系是对环境因素和定制过程的体现,而配置机制则是条件约束下领域框架的实例化以及构件配置规划、推理机制。

2.4 敏捷制造

充分利用现代通信手段,快速配置各种资源,提高对用户需求的协同和响应,通过虚拟组织,相互独立开发单位借助信息技术连接成暂时性开放的单位网络,在开发单位软件开发过程中发挥核心能力,共同承担技能、成本风险,快速对用户需求和市场变化做出响应。

3 结束语

软件产业不断发展,行业竞争更加激烈,企业面临着定制化软件成本过高,大规模软件生产定制化不强的问题,采用面向大规模定制软件生产模式则能够有效缓解这种矛盾,实现软件企业的长远发展。

参考文献:

[1]吴卫东,刘德仿.面向大规模定制的产品快速设计方法研究[J].组合机床与自动化加工技术,2012(08):78-79.

[2]戴若夷,谭建荣,李涛.面向大规模定制的广义需求建模方法及实现技术研究[J].计算机辅助设计与图形学学报,2012(04):105-107.

[3]肖刚,方志民,单继宏,程振波.机电产品大规模定制设计模式研究[J].中国机械工程,2012(18):1545-1551.

[4]钱碧波,潘晓弘,程耀东.基于MFT的敏捷虚拟企业组织的分形层次控制结构研究[J].制造业自动化,2012(03):23-27.

作者簡介:吴月红(1980-),女,湖南望城人,华中科技大学硕士研究生,讲师,主要研究方向:计算机网络、信息系统。

面向对象的软件工程应用研究 第12篇

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术、方法来开发与维护软件, 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方面结合起来, 经济地开发出高质量的软件并有效地维护它, 这就是软件工程。

软件工程运用计算机科学、数学及管理科学等原理, 借鉴传统工程的原则、方法, 创建软件以达到提高质量、降低成本的目的。其中, 计算机科学、数学用于构造模型与算法, 工程科学用于制造规范、评估成本及确定权衡, 管理科学用于计划、资源质量、成本等管理。

2 软件工程方法的流程

2.1 软件计划

在设计任务确立前, 首先要进行调研和可行性研究, 理解工作范围和所花费的代价, 然后做出软件计划。

2.2 软件需求分析

对用户要求进行具体分析, 确定用户要求软件系统做什么, 并用软件需求规格说明书表达出来, 作为用户和软件人员之间共同的约定。

2.3 软件设计

根据需求说明建立软件系统的“结构”, 包括数据结构和模块结构。这部分又分为总体设计和详细设计两个阶段。

2.4 软件编码

按软件设计的要求为每个模块编写程序。

2.5 软件测试

发现和排除程序中留存的错误, 经过测试排错, 得到可交付运行的软件。软件测试又分为单元测试和综合测试两个阶段。

2.6 软件维护

经过测试的软件仍然可能有错, 另外, 用户的需求和系统的操作环境也可能发生变化, 因此, 交付运行的软件仍然需要继续排错、修改和扩充, 这就是软件的维护。

3 面向对象的软件工程方法

3.1 面向对象的软件工程方法的定义

面向对象技术 (OO) 是一个非常实用而强有力的开发方法。它是为了提高软件系统的稳定性、可修改性和可重用性创造出来的一种软件工具, 具有方法的唯一性、高度连续性等特性, 并把面向对象分析、面向对象设计和面向对象编程集成到软件生存周期的相应阶段。

面向对象的软件工程 (OOSE) 自上至下、自始至终地贯彻面向对象思路, 可以用于系统分析、系统设计、程序设计, 也可以用于其他环境的开发, 如数据结构设计、数据库设计等。

3.2 面向对象的软件工程方法的特征和要点

面向对象软件工程方法的出发点和基本原则, 是尽可能模拟人类习惯的思维方式, 使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程, 也就是使描述问题的问题空间 (也称为问题域) 与实现解法的空间 (也称为求解域) 在结构上尽可能一致, 因此, 面向对象方法有以下的基本特征:

(1) 封装性:对象是数据和有关操作的封装体。

(2) 继承性和类比性:在对象继承结构上, 下层对象继承上层对象的特征属性和操作。不同的对象具有某些相同的属性时, 常常把它们归并成一类。

(3) 动态连接性:对象和对象之间所具有的一种统一、方便、动态地连接和传递消息的能力与机制。动态连接性便于在概念上体现并行和分布式结构。

(4) 易维护性:任何一个对象都是把如何实现对本对象功能的细节隐藏在该对象的内部, 这就增强了对象和整个系统的易维护性。

概括地说, 面向对象方法具有下述四个要点:

(1) 把对象作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的, 程序中任何元素都是对象, 复杂对象由比较简单的对象组合而成。

(2) 把所有对象都划分成类。每个类都定义了一组数据和一组操作, 类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性, 是对象的状态信息, 而施加于数据上的操作用于实现对象的动态行为。

(3) 按照父类 (或称基类) 与子类 (或称派生类) 的关系, 把若干个相关类组成一个层次结构的系统 (也称类等级) 。在类等级中, 下层派生类自动拥有上层基类中定义的数据和操作, 这种现象称为继承。

(4) 对象彼此之间仅能通过发送消息互相联系。对象与传统数据有本质的区别, 它不是被动地等待外界对它施加操作, 相反, 它是进行处理的主体, 必须向它发消息, 请求它执行它的某个操作以处理它的数据, 而不是从外界直接对它的数据进行处理。

3.3 面向对象建模

为了更好地理解问题, 人们常常采用建立问题模型的方法。通常, 模型由一组图示符号和组织这些符号的规则组成, 利用它们来定义和描述问题域中的术语和概念。更进一步讲, 模型是一种思考工具, 利用这种工具可以把知识规范地表示出来。

用面向对象方法开发软件, 通常需要建立三种形式的

模型, 它们分别是描述系统数据结构的对象模型, 描述系统控制结构的动态模型和描述系统功能的功能模型、这三种模型都涉及数据, 控制和操作等共同的概念, 只不过每种模型描述的侧重点不同。这三种模型从三个不同但又密切相关的角度模拟目标系统, 它们各自从不同侧面反映了系统的实质性内容, 综合起来则全面地反映了对目标系统的需求。

3.4 面向对象软件开发方法的几个阶段

实际上, 用面向对象方法开发软件时, 阶段的划分是十分模糊的, 通常在分析、设计、实现等阶段间多次迭代。

(1) 面向对象分析。

面向对象分析 (通常缩写为OOA) , 就是抽取和整理用户需求并建立问题域精确模型的过程。

面向对象分析的关键, 是识别出问题域内的对象, 并分析它们相互间的关系, 最终建立起问题域的简洁、精确、可理解的正确模型。在面向对象分析中, 主要由对象模型、动态模型和功能模型组成。在用面向对象观点建立起的三种模型中, 对象模型是最基本、最重要、最内核的。

(2) 面向对象设计。

从面向对象分析到面向对象设计 (通常缩写为OOD) 是一个逐渐扩充的过程。或者说, 面向对象设计就是用面向对象观点建立求解域模型的过程。

面向对象设计可再细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定解空间中的类、关联、接口形式及实现服务的算法。

(3) 面向对象实现。

面向对象实现主要包括两项工作:第一项工作是把面向对象设计结果, 翻译成用某种程序设计语言书写的面向对象程序 (通常此阶段缩写为OOP) ;第二项工作是测试并调试面向对象的程序。

面向对象程序的质量基本上由面向对象设计的质量决定, 但是, 所采用的程序设计语言的特点和程序设计风格也将对程序的可靠性、可重用性和可维护性产生深远的影响。

综上所述, 面向对象软件工程方法可概括为如下的过程:分析用户需求, 从问题中抽取对象模型;将模型细化, 设计类, 包括类的属性和类间相互关系, 同时考察是否有可以直接引用的已有类或部件, 选定一种面向对象的编程语言, 具体编码实现上一阶段的设计, 并在开发过程中引入测试, 完善整个解决方案。

4 未来发展趋势预测

面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。以面向对象的观点来看, 所有的面向对象的程序都是由对象来组成, 这些对象首先是自治、自怡的, 同时它们还可以互相通信、协调配合, 共同完成整个程序的任务和功能。

对象概念对软件解决方案也具有莫大的好处, 在设计优秀合理的情况下尤其如此。你可以只编写一次代码而在今后反复重用, 而在非OOP的情况下, 你则多半要在应用程序内部各个部分反复多次编写同样的功能代码。OOP的另一优点是对代码结构的影响。像继承之类的面向对象概念通过简化变量和函数的方式而便利了软件的开发过程。OOP可以更容易地在团队之间划分编码任务。同时, 由于采用OOP, 辨别子类代码的依附关系也变得更简单了 (比如说继承对象的代码) 。此外, 软件的测试和调试也得以大大简化。面向对象方法普遍进行的对象分类过程, 支持从特殊到一般的归纳思维过程, 通过建立等级而获得的继承性, 支持从一般到特殊的演绎思维过程。

参考文献

[1]张海藩著.软件工程导论 (第三版) [M].北京:清华大学出版社, 1998.

面向服务软件范文

面向服务软件范文(精选12篇)面向服务软件 第1篇基于多年在企业和公司参与项目的实际经验,融合计算机方面多年的教学经历,探索项目实训应...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部