一种基于构件的软件系统性能工程生命周期过程模型

2015-09-26 05:17王光伟装甲兵工程学院科研部北京100072
现代计算机 2015年21期
关键词:生命周期部署构件

王光伟(装甲兵工程学院科研部,北京 100072)

一种基于构件的软件系统性能工程生命周期过程模型

王光伟
(装甲兵工程学院科研部,北京100072)

0 引言

软件构件技术近年来在软件开发中得到了广泛的应用,基于构件的软件开发(Component-Based Software Development,CBSD)通过组装已有的构件实现软件复用,能够较短时间内开发出开发新的系统,提高了软件开发效率和产品质量。基于构件的软件系统性能是指系统对及时性要求的符合程度,通常用响应时间、吞吐量、资源利用率等性能指标进行衡量。

传统软件工程中的软件性能管理通常采用 “以后修正”(Fix-it-later)的方法,在构件设计、开发、组装等前期阶段时对性能关注不够,直到系统基本完成实现进行测试和试运行的时候才着力解决性能瓶颈,但很多性能问题是由于在系统设计带来的,此时已不能从体系结构进行较大的更改,提高性能的途径是有限的,往往不能从根本上解决出现的软件性能问题。为解决这一问题,提出了软件性能工程(Software Performance Engineering,SPE),软件性能工程技术不仅能够使得软件的功能属性在软件的整个软件开发生命周期中能够被追踪、管理,软件的非功能属性和性能也能够被追踪[1]。

但是传统的软件性能工程在基于构件的软件开发过程中遇到了新问题,与传统的软件开发方式相比,基于构件的软件开发更加强调构件的组装、配置、部署、运行与动态重构[2],而传统的软件性能工程没有提供对这些阶段的支持方法,例如在构件动态重构时,因为传统的软件性能工程没有直接提供对分布式构件组装的支持,软件的原有性能就不能直接应用在基于构件的软件开发过程中技术中。另外,在构件动态重构时,软件的原有性能属性都会发生变化,而传统的软件性能工程都没有提供应对变化的方法。因此需要针对构件开发的特点,对软件性能工程中的性能过程模型进行研究,提出适合基于构件的软件系统开发的新的性能过程模型。

1 构件性能的影响因素

构件是软件系统中具有相对独立功能的组成实体,通过标准接口对外提供服务,具有可复用、可组装、可替换的特点。构件通过对外提供的接口称为服务接口(provide interface)、请求接口(request interface)[3]。

构件性能的影响的因素比较复杂,因为构件的性能不仅取决于构件内部实现 (如构件实现采用的算法和编程语言),还取决于构件部署的环境。构件性能的影响因素主要包括:构件实现、请求服务、部署平台、输入参数、资源竞争。如图1所示。

图1 构件性能影响因素

构件的实现:在构件定义时,对于相同的服务接口,不同的构件开发人员可以使用完全不同的方法实现,虽然这些构件提供的服务接口都是相同的,即构件功能是相同的,但是由于构件内部具体实现不同,如采用的算法不同、编程实现不同等。即使在相同的运行环境下,这些服务接口相同内部实现不同的构件展现出的构件性能仍然是不同的。

部署平台:构件性能受部署环境的影响,部署环境包括硬件环境和软件环境,硬件环境如CPU的个数和主频、内存容量、网络带宽、外部存储设备的性能等。除硬件之外,还包括软件中间层的影响,如构件容器、虚拟机、操作系统等,如.NET平台对构件性能的影响构件。

输入参数:当用户调用构件提供的服务时,服务的执行时间会因用户输入的不同参数值而不同,如某数学运算构件,用户输入数值的大小会影响构件运行的时间。除用户输入外,构件运行时还可能需要调用其依赖的其他构件提供的参数值,这些参数值也会影响构件的执行时间。

资源竞争:在运行平台上构件通常不是独立的,而是与其他进程一起运行,构件与该平台环境中其他运行的进程之间可能存在资源竞争关系,如线程池的线程数量、数据库连接数、信号量等,构件在运行时等待竞争资源的时间会影响构件执行的总时间,带来构件性能的影响。

2 构件生命周期的性能建模内容

在构件生命周期的不同阶段,对构件性能起重要作用的影响因素是不同的,因此,需要提出构件生命周期性能模型。文献[4]把构件生命周期分为三个阶段:设计阶段、部署阶段和运行阶段。Cheesman和Daniels[5]提出了的理想化的构件生命周期的四个阶段:构件的定义、构件的实现、构件的部署和构件的运行。在构件生命周期的每个阶段,构件性能建模的内容和关注点有所不同。

在构件的定义阶段,性能管理主要体现为描述构件的服务接口和请求接口,可以使用UML建模语言进行描述。由于此时构件还没有实现,对该构件的实现、部署、运行时的有关性能的相关信息无法得到,所以构件性能模型只能对该构件提供服务接口的性能需求进行定义和描述,即对构件性能指标的定义,如某数据库访问构件的查询操作的最长时间不超过10秒。

在构件的实现阶段,构件功能的实现需要向其他构件提供的接口请求服务,实现需求定义时的构件功能。由于此时构件尚未部署和运行,因此构件实现阶段的性能模型包括不依赖硬件平台的资源需求和构件行为信息,以及用户输入参数等。

在构件的部署阶段,已实现的构件与其他构件进行装配后部署到硬件平台上,该阶段的构件性能模型包括构件容器、操作系统和硬件的信息。此时与硬件平台无关的资源需求可以转换为平台相关的资源需求,如将构件实现阶段的 “处理器周期”转换为 “执行时间”。

最后,在构件的运行阶段,构件被实例化并运行,可以响应客户端的请求。此时的构件是在运行在内存中的一个对象的实例。构件运行阶段的性能模型,还包括此阶段构件的吞吐量 (即客户端调用构件的数量),用户的输入参数以及与构件性能相关的内部状态。此外,系统的整体性能模型还包括系统中与构件并行运行的其他进程参与系统资源的情况。

3 构件系统生命周期的性能过程模型

在基于构件的软件系统生命周期中,从早期设计阶段的性能预测到运行阶段的性能测试,都需要采用来自系统架构师和构件开发人员提供的信息。首先进行系统需求分析,构件开发人员根据需求检索已有构件,判断现有构件是否满足需求:如果已有构件能够实现所需功能和性能需求,则对该构件进行性能测试,放入构件库;如果没有满足功能需求的构件,需要进行构件需求分析,定义构件的功能需求和性能需求,进行构件性能建模,此时的模型称为架构模型,包括构件部署模型、构件组装模型和构件运行模型,架构模型经过模型转换成为可以进行分析和评估的系统性能模型,通常使用排序网络等技术进行系统性能模型建模,对性能模型进行分析评估或者仿真运行,得到可供分析评估构架性能的数据,形成构件性能矩阵,对性能数据进行评估,检查性能需求是否满足。如果满足需求则进行构件组装、测试和发布,否则检查性能模型并重新设计,再次建模。基于构件的软件系统生命周期性能模型如图2所示。

构件开发人员为构件的性能模型提供性能预测需要的参数,得到参数化的构件性能模型,构件开发者对构件的性能建模需要从构件定义开始,而此时构件尚未实现,构件性能模型需要的参数是未知的,需要构件开发者进行估计,例如资源的需求和依赖的服务。如果存在已实现的构件,则对构件进行静态分析或者使用试验床上进行运行得到构件性能参数。

构件开发人员将该阶段的结果存入构件库,供企业内其他人员访问,该构件库可以存放构件性能模型,还可存放构件的需求定义文档、已实现的构件、其他文档等。构件开发者也可从中检索已有构件组合成新构件。

构件开发人员是从单个构件的视角进行性能建模,而系统架构师是从系统的角度进行全系统的性能建模,系统架构师根据设计系统架构的需求,将构件库中的构件性能模型进行组装,包括构件组装模型、部署模型和运行模型,组装模型描述了将构件库中选择的已有构件组装成系统的构件连接关系,部署模型定义了构件部署的软硬件平台,运行模型定义了系统运行时的使用信息,如负载、输入参数、和内部状态等。

然后系统架构师将包含组装模型、部署模型和运行模型的完整架构模型进行组装,转换成系统级的性能模型,通常使用排队网络、随机Petri网、随机进程代数等方法建模并进行模拟,得出系统的性能指标,如响应时间、吞吐量和资源利用率等,系统架构师将这些数据与系统性能需求指标进行比较,检查是否符合系统性能需求。

下面对构件性能模型进行需求评审,如果评审的预测的结果表明,现有的构件设计不能满足性能需求,则架构模型需要重新设计,以提高性能。软件架构师也可以改用其他构件或采用其他性能模型,以改变性能,这时往往需要与客户进行重新协商。修改完成之后,得到新的体系结构模型,对新模型重新进行预测性能和评估。

图2 基于构件的软件开发性能过程模型

如果预测结果表明该设计可以满足需求,则可以开始进行系统的实现。在构件配置阶段,软件架构师可以建造或购买决策中指定的构件体系结构模型。一旦所有的构件都实现或购买,软件架构师即可进行构件组装和整个系统的测试。除了功能测试,软件架构师对系统的性能进行容量规划(如确定最大负荷)。测试完成后,软件设计师给客户发布完整的系统。

4 结语

通过分析在传统的软件性能工程中对基于构件的软件系统的性能出现的新问题,研究了构件的性能影响因素和,面向构件生命周期的全过程对性能模型进行了分析,最后给出了一种基于构件的软件系统生命周期性能模型,该模型为在基于构件的软件系统的设计开发过程中,更好地进行性能预测和性能管理提供了一种参考模型。

[1]王克波.基于分布构件的软件性能工程[J].计算机工程与科学,2006,28(11):105-107.

[2]R Dube.A comparison of the memory management subsystem in FreeBSD and Linux[R].Technical Report CST R3929,University of Maryland,1998.

[3]陈霄等.采用构件组装技术协同开发Web应用的方法[J].计算机科学与探索,2013,7(2):115-116.

[4]B.Christiansson,L.Jakobsson,and I.Crnkovic,“CBD Process,”building reliable component-based software systems,I.Crnkovic and M.Larsson,eds.,pp.89-113,Artech House,2002.

[5]J.Cheesman,J.Daniels.UML Components:A simple process for specifying component-based software systems.Addison-Wesley,2001.

Software Component;Software Performance;Process Model

A Life-Cycle Process Model of Software System Performance Engineering Based on Component

WANG Guang-wei
(Department of Scientific Research,Academy of Armored Forces Engineering,Beijing 100072)

1007-1423(2015)21-0014-04

10.3969/j.issn.1007-1423.2015.21.004

王光伟(1980-),男,山东沂南人,讲师,硕士,研究方向为软件工程

2015-06-04

2015-07-01

在基于构件的软件系统开发过程中,传统的软件性能工程不能解决构件的组装、部署、运行等阶段的软件性能管理问题。为解决这一问题,研究构件生命周期的每个阶段的软件性能影响因素,提出一种基于构件的软件系统性能模型。

软件构件;软件性能;过程模型

In the development process of component-based software system,the traditional methods in software performance engineering can not solve the software performance management problems in the stages of component assembling,deployment,runtime etc.To solve this problem,researches factors influencing component performance in each stage of the life-cycle process,and proposes a model for componentsbased software system performance.

猜你喜欢
生命周期部署构件
钢筋混凝土构件裂缝控制
全生命周期下呼吸机质量控制
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
部署
从生命周期视角看并购保险
民用飞机全生命周期KPI的研究与应用
专利名称:二硅化钼基陶瓷加热元件保持结构
西夏建筑构件——鸱吻
企业生命周期及其管理