敏捷思想为软件开发带来了新思路。面向服务应用的普及以及Web服务的出现为敏捷开发关于构件和精益的思想提供了新的实现途径。不同粒度的Web服务组合满足不同业务需求,也符合快速交付可以使用软件思想。
当今的软件行业依旧在焦油坑中痛苦挣扎,为平衡项目时间、预算、成本、质量等基本要素,从管理到开发过程提出众多解决方案,可问题依旧很难得到解决[ 1 ]。随着《敏捷宣言》和《敏捷原则》的发布,敏捷开发思想逐步普及。随着互联网的出现,软件开发按老套路很难跟上市场变化。
目前,软件功能变化快,业务交叉增多,用户需求变化快,因此需要将新思想和开发技术引入到软件开发中。随着面向服务应用的增多,拥有不同软硬件资源的单位为软件开发用户提供了大量Web服务。充分利用这些服务也符合敏捷开发中精益思想和快速使用软件的思想。
1 敏捷软件开发思想
瀑布模型将软件开发的过程设计成一个线性过程,主要分为5个阶段:需求分析、设计、编码实现、测试和部署维护,依次线性进行,只有当前一个阶段任务完成后,才能进行下一个阶段。只有到测试阶段才能发现问题,而要解决这些问题,几乎要再来一遍,很难适应中途需要变更的项目。前一个阶段出现错误会被后一个阶段放大,可能造成灾难性后果。
在互联网和移动互联网快速发展的今天,业务改变更快、更频繁。业务需求分析和设计往往还没完成,市场和消费需求已经发生变化,这就要求软件开发能适应新时代要求。在这种背景下提出敏捷开发,软件工程的另一个重要进展是基于构件的开发。
尽可能利用可复用构件,组装成新系统,提高软件使用率,减少故障和降低成本,提高系统质量。基于构件的系统,更适用Internet技术和分布式系统开发的需要[ 2 ]。二战后日本丰田公司陷入困境,丰田开始从全新的角度思考制造、物流和新产品研发活动,并逐步形成丰田生产系统这一新型的生产方式。
丰田生产系统的根本思想是精益原则,即消除浪费,并对浪费的概念重新进行定义,即“不能为客户创造价值的事物都是浪费”[ 3 ]。浪费也是软件开发中的常见问题,过度文档设计到最后却不能变成实实在在的软件,导致开发软件反复返工、开发人员频繁跳槽、经常加班等。Web服务能很好地共享资源,减少浪费,方便连通不同企业、不同信息平台,合理整合业务链内的上中下游企业资源。
2 Web服务组合
所谓Web服务组合是指通过服务查找以及服务之间的接口集成,将多个自治Web服务根据需求进行组合,从而提供新的、功能更强的Web服务。从粒度意义上讲,Web服务组合是对Web服务进行更大规模封装,并将该封装结果作为一个Web服务展现给外界。从顺序意义上讲,Web服务组合是一个满足用户需求的Web服务调用序列[ 4 ]。
如游客想到北京旅游,希望在提供旅游业务的网站上完成整个旅行安排。其要求如下:首先,选择景点,包括人文和自然;其次,选择交通工具以及所选交通工具的价格类型,希望根据预计的旅游时间和当天的天气选择交通工具,如果天气晴朗则坐飞机,否则坐火车;
再次,酒店预定和支付。在这个案例中用户涉及的服务主要是景点服务(ws1)、交通服务(ws2)、酒店服务(ws3)、支付服务(ws4)。提供这些服务的提供商并不是一家,但商家之间需要相互合作。这4个服务是大的复合型服务,其也是更多具体服务的组合。
具体的服务可以划分为多个层次,每个层次可由复合服务和原子服务组成。叶子节点处的服务都是原子结点。按从上到下逻辑划分,具体组合由下而上填充服务,组合成更具体服务。因此,进行Web服务组合的第一步是对业务流程进行分析,划分业务单元。
Web服务组合层次结构
3 快速交付可使用软件
当用户提出需求时,不可能一次性将所有需求都表达清楚,而且开发过程不可能一直等待所有需求都最终确定。这就需要开发人员针对用户需求做优先级排序,先解决优先级最高、最紧迫、用户最关心的需求。由于Web服务都是已封装好的业务功能,可快速使用,缩短开发时间。
在基于服务架构的系统中,不同业务Web服务可根据需要进行组合和替换,增强软件灵活性和适应性,更好适应多变需求,减少不必要浪费。近年来网络上Web 服务数量急剧上升,从Internet 上寻找满足需求的服务变得困难[ 5 ]。
为让Web服务成为计算机可理解的软件实体, 将语义Web技术引入Web 服务, 形成能够在语义层面支持Web服务间互操作的语义Web服务,使基于Web的服务应用更灵活、更智能。基于语义的服务描述主要是利用本体表述领域内知识,使服务描述带有语义。本体是共享的概念模型的形式化的规范说明[ 6 ]。
本体对于Web网络的意义在于:本体通过统一术语概念及其联系的解释,阐述网络上的数据、程序、网页及其它网络资源包含的语义[ 7 ]。Web服务语义是指服务提供者与服务请求者之间就使用某个具体服务的必需条件、交互过程及服务运行结果所达成的共识或协议[ 8 ]。
用语义标识描述Web服务,最终目的是实现语义Web服务自动查找、组合调用,改变软件开发模式,使计算机可以参与到开发过程中,加快软件开发进度、降低人工成本、提高开发效率。
由于Web服务不同于传统软件开发,所提供的Web服务并不是针对具体用户需求专门设定,服务功能粒度和用户期望有一定区别。因此,需要一种智能化技术组合Web服务,可以实现动态调整和自我修正。
神经网络是用大量神经元的互连以及对各连接权值分布来表示特定的概念或知识。在知识获取过程中,其只要求专家提出范例及相应的解,通过特定学习算法对样本进行学习, 通过网络内部自适应算法不断修改连接权值分布达到要求, 并将专家求解实际问题的启发式知识和经验分布到网络神经元的权值和阀值上 [ 9 ]。
知识表示不再是规则,而是分布于整个网络中的权值和阈值,神经网络利用领域专家解决实际问题样本训练神经网络, 使神经网络在测试数据输入条件下能获得与专家方案尽可能接近的结果。根据规则集生成神经网络,如图2所示。
神经网络训练web服务
基于规则的神经网络推导众多的服务组合,可通过计算机自动实现。减少人工选择组合时间,开发人员可以省去繁杂的选择比较过程。知识库集中领域专家经验,使降低开发人员之间沟通不便。使用大量自动化智能技术和软件复用技术,可以快速设计和开发出可使用的软件,从而降低浪费,提高开发效率。
4 结语
敏捷开发强调快速开发能满足业务需求的软件,业务本身随市场变化而变化。用户有更直接体验,与开发人员沟通起来更加明确,也可更清楚描述出自己所需软件产品。
Web服务使孤立资源能真正整合,但服务提供者不会按照每个需求者的需求提供个性化服务。为完成具体业务功能,需要进行Web服务组合。不同方案组合就是一次次重构,可避免浪费,同时也可加快开发进度。
作者:孙宗旺 蓝金球 来源:软件导刊 2015年9期
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表