当前位置: 主页 > 建站知识 > 软件开发

软件开发算法-ftp的客户端软件和服务器端软件如何自己开发

发布时间:2023-03-11 07:02   浏览次数:次   作者:佚名

August2009ComputerEngineeringVol.35No.16软件技术与数据库文章编号:1000—3428(2009)16—0081—03文献标识码:A中图分类号:TP391.9一种复杂系统仿真软件的开发过程(上海交通大学动力机械与工程教育部重点实验室,上海200030)要:针对复杂系统仿真软件的开发需要与软件工程相结合的问题,提出一个复杂系统仿真软件的开发过程SPCSS。SPCSS包括需求模型、领域模型、边界模型、外观模型、应用模型和架构模型等制品。在燃气轮机仿真软件开发中的应用结果证明,SPCSS贴合仿真软件开发规律,能帮助开发者从功能需求出发,平滑过渡到分析、设计和实现等各个阶段,循序渐进的得到高质量的仿真软件。关键词:复杂系统;仿真;软件开发过程SoftwareProcessComplexSystemSimulationZHAOWei,SUMing(KeyLab.PowerMachineryEudcation,ShanghaiJiaotongUniversity,Shanghai200030)【Abstract】Aimingapplyingsoftwareengineeringcomplexsystemsimulation,SPCSS,softwareprocesscomplexsystemsimulationproposed.SPCSSproducesrequirementmodel,domainmodel,boundarymodel,facademodel,applicationmodelarchitecturemodel.SPCSSgasturbinesimulationsoftwaredevelopmentSPCSSconformssoftwaredevelopmenthelpsdevelopersnaturallymoveanalysis,designimplementationfromrequirements,gethigh-qualitysimulationsoftwarestepstep.【Keywords】complexsystem;simulation;softwareprocess用何种编程语言或平台,如C++、Java、ModelicaSimulink等,都可将SPCSS作为其仿真软件的开发过程。

SPCSS描述为适应复杂系统的仿真软件专业性强、开发周期长和涉众广的特点,SPCSS强调循序渐进的过程及相应的文档,是一个重量级开发过程。SPCSS基于传统的瀑布模型,从时间概述由于复杂系统在构成、过程和状态等方面具有繁杂、庞大和跨学科等特点,复杂系统仿真软件的开发与软件工程的结合显得越来越有必要,但迄今为止,复杂系统仿真软件一直没有一个自己的软件开发过程,致使开发者缺乏规范性的指导。在目前,越来越多的软件开发过程技术,如统一过程(unifiedprocess)、敏捷过程(agileprocesses)、CMMIMSF(MicrosoftSolutionFramework)等已成功运用到大型信息系统的开发中。然而,复杂系统仿真软件属于科学软件的范畴,有其自身的特点,如在开发过程中大多不会发生频繁的需求变更,软件内部的数学算法比较抽象,与外部交互的软、硬件系统多等。因而机械的照搬、不经裁剪和改进的使用这些开发过程,会给开发带来损失。针对上述问题,本文提出一种适用于复杂系统仿真软件SPCSS(SoftwareProcessComplexSystemSimulation)。SPCSS选用当前成熟软件开发过程中的制品(服务于最终软件产品的中间产品),并根据复杂系统仿真软件的特点做了内容上的修改和建立次序上的调整,具有如下特点:(1)SPCSS中的制品覆盖了复杂系统仿真软件分析、设计中需要关注的主体,能有效地指导编程实现。

能帮助开发者循序渐进的对复杂系统中的数据和算法进行有效的归纳和归类,降低开发难度。(3)建立的软件具有直观简单和易于理解的组织结构。(4)能为仿真软件形成标准化的文档。(5)能服务于大型仿真软件的开发管理。SPCSS是与开发语言无关和平台独立的,无论开发者使顺序上将复杂系统仿真软件的开发分为需求阶段、分析阶段、设计阶段和实现阶段;在各个阶段中根据复杂系统仿真软件开发的内在需要软件开发算法,剪裁和补充了统一过程中的工作流,但不像统一过程对这些工作流进行增量式的迭代。这是因为仿真软件的基础是被仿真的系统的数学模型,数学模型中各部分通常是紧密相连的,如:模型中的方程通常是被联立求解的,新元素的增加一般都会影响到整体,而且被仿真的复杂系统一般不会在开发期间发生大的变动,造成需求变更。SPCSS需求阶段产生的制品包含需求模型,分析阶段产生的制品包含领域模型、边界模型和外观模型,设计阶段产生的制品包含应用模型和架构模型,实现阶段产生的制品包含程序代码和注释,各个制品的建立次序如下文所述。2.1需求阶段需求阶段实现需求模型,界定仿真软件的开发范围,在开发团队中明确开发任务,提高涉众间的交流效率。需求模型由仿真意图和功能列表构成。

仿真意图表达开发某个复杂系统仿真软件的目的,如用于样机的优化设计、用于硬件在作者简介:赵巍(1978-),男,博士研究生,主研方向:面向对象的系统仿真;苏明,教授、博士生导师收稿日期:2008-12-05E-mail:wzhao@hotmail.com回路的测试等。仿真意图是软件的立意,体现要为用户带来的益处。只有理解好了仿真意图软件开发算法,开发者才能站在用户的角度,围绕用户的需要发挥出主观能动性,带来对用户有价值的软件。功能列表是仿真意图的具体表述,规定了仿真软件待实现的内容,体现了仿真软件所要具备的竞争力,是开发者工作的起点。功能列表中的各个功能点有主次之分,具有高业务价值、高风险、高实现难度和重要核心架构意义的需要优先被细化、分析和设计。2.2分析阶段在分析阶段中,开发者需要描述复杂系统仿真软件中的关键因素。分析阶段的制品独立于开发平台和语言,体现开发者对被仿真的复杂系统的理解,帮助专家和用户及早审核仿真软件的开发思路,降低实现阶段的开发风险。2.2.1领域模型仿真是对真实系统建立模型并运行该模型的技术,所以模型在仿真中占有最重要的地位。仿真软件使用的仿真模型一般是数学模型,而复杂系统的数学模型所涉及的数据及其求解算法,种类多、数量大且较为抽象,难以直接转换为编程实现。

SPCSS中的领域模型帮助改善这个问题。领域模型是在问题领域中,对数学模型相关的数据和算法进行面向对象的组织和抽象,获得的具有可复用性的实体、概念、规则、服务、关联和交互等元素。实体、概念、规则和服务是用术语表示的对象,弥补了模型和实际系统之间的差距,可以归类构成数学模型的数据。关联和交互表达模型中对象间态和动态的关系,是实现对数据的分区、分层管理和描述求 解算法的必要元素。仿真软件开发的复杂性根源 于问题领域 本身的复杂性,合适的领域模型能够描述需 求模型涉及的知 识,不仅能指导代码的实现,还能帮助开 发者认识与仿真相 关的知识,实现对知识的复用。 (1)描述方法 领域模型只有在开发者遵循一个一致的 表示风格,才能 发挥出它 SPCSS有序的采 用统一建 UML(UnifiedModeling Language)中多个视图描述领域模型。 SPCSS 用活动图描述实现某个算法的流程;用协作图以面向 对象的方式重新表述活动图所描述的算法流程,以及在这个 流程中对象间的协作关系;在协作图基础上为类分配职责, 用类图描述类的静态结构;用状态图描述对象状态变迁情况。 领域模型被多个 UML 视图从不同角度被描述,使开发者能 对对象间的动态交互、对象状态迁移和类的静态结构等获得 完整的认识。

(2)建立步骤 仿真软件的实质就是用尽可能优的数学 模型及其求解算 法模拟系统内规律的运行,数学模型决定了系统中数据之间 的联系和制约,求解算法体现系统运行时服从的规律,所以 从数学模型及其求解算法入手建立领域模型是最直接有效的 做法。为了降低对复杂系统建立领域模型的难度,SPCSS 过如下由表及里、循序渐进的步骤建立领域模型:1)在需求模型的功能列表找出数学模型可以使用的输入 数据和需要求解的输出数据。 2)以输入数据为起点、输出数据为终点,用活动图描述 求解算法。 3)寻找和归纳活动图中各个活动里的实体、概念、规则 和服务,把它们提取为对象。需要注意构成领域模型的对象 要尽可能的服从物理独立性和数学独立性。物理独立性是指: —82— 对象对应于系统中存在的物理过程的本质(例如压缩过程、膨 胀过程);数学独立性是指:描述对象的全部方程或计算流程 都应包含在它的实现中。 4)根据求解算法用协作图确定步骤 中所得对象间的动态关系,使算法的执行能被对象间的协作完整的描述,从而 得到面向对象的算法描述。 5)确定协作图中的各个对象的属性和操作,把这些对象 放入数据字典中。若协作图中的对象粒度较大,不利于减少 数据的冗余性和提高自身的复用性,则返回步骤 对该对象进一步细化。

6)根据协作图中确认对象间的关联,经过必要的抽象, 用类图表示对象间的静态结构。 7)在协作图中寻找具有状态变迁的对象,确定它的外部 事件,创建该对象的状态图。 复杂系统的领域模型常有几十上百个对象,但其中的大 部分都与几个对象有着千丝万缕的关系,开发者可以优先考 虑核心对象,由主到次的建立领域模型,及早的降低对整个 系统建立领域模型的风险。 2.2.2 边界模型 边界模型描述仿真软件通过边界与外界 的交互情况,由 外界、边界对象和交互场景构成。外界是用户或其他外部软、 硬件系统;边界对象是可以传递数据的计算机相关对象,如 屏幕界面、AD/DA 通道、套接字或共享内存等。外界的数据 只能通过边界对象发送给仿真软件,仿真软件产生的数据也 只能通过边界对象输出到外界,如:领域模型中的算法只能 通过边界对象从外界获取在自身执行过程中所需要的输入、 向外界输出在自身执行完毕后产生的结果。交互场景描述仿 真软件为了完成某一个功能,获取外界的输入和对外界的输 出在时间上先后发生的次序。交互场景通过用例文本 描述,用例文本不涉及软件的内部实现方法,所关注的仅是外界与 仿真软件交互的请求与响应。与统一过程、敏捷过程和 MSF 不同,交互场景的描述不是在需求阶段中建立,而是在领 界模型中建立的。

这样做是因为:(1)复杂系统的数学模型体 现的算法一般很抽象,不理清算法和数据流 就来建立边界模 型容易造成返工。(2)仿真软件的用户通 常不能全面细致的了 解数学模型的建立和运行方法,不 能在需求阶段通过与用户 进行的访谈得到仿真软件的具 体使用方式。边界模型确定了 仿真软件在异构系统中和 外界的交互方式,定义了仿真软件 的使用方式,开发人 员可以用它及早的向用户确认功能实现 的完整性和界面 的友好性,并为开发提供指导。 2.2.3 外观模型 领域模型中的元素具有粒度小、可复用 的特点,在被用 于具体仿真任务时,通常需要被重新组合。外观模型是连接 领域模型和边界模型的桥梁,使开发者能根据仿真任务的需 要方便的使用领域模型。外观模型包含外观接口和外观类。 外观接口根据边界模型的需要,定义仿真软件对具体仿真任 务提供的服务;根据需求模型中的功能列表,在外观接口的 基础上编写测试用例,可以检查领域模型对需求模型实现的 正确性。外观类封装领域模型中的对象和复杂算法,实现外 观接口。外观类的粒度通常大于领域模型中类的粒度。外观 模型是仿真软件自身架构的组成部分,它隐藏领域模型内部 的复杂性,帮助领域模型能容易的被应用到具体的仿真任务 中去。

2.3 设计阶段 在设计阶段中,开发者为分析阶段的制品确定实现的技 术手段及其之间的组织结构关系,解决非功能性的需求,形 成最终能完成仿真任务的完备方案,指导开发实现。设计阶 段的制品包含应用模型和架构模型。 2.3.1 应用模型 应用模型为分析阶段的制品选择具体的 实现手段,包含 如下内容: (1)为领域模型中的算法、边界模型中的边界对象和外观 模型中的外观类等选择合适的实现技术,具体包括对软、硬 件平台、开发语言、控件和数据存储方式等的选择。 (2)改善性能,比如对占用较多 CPU、I/O 等时间的代码 进行优化,消除瓶颈。 2.3.2 架构模型 架构(Architecture)技术能使开发出的软件具备可扩展性 和可复用性。架构是决定大型软件质量的关键因素,在设计 中需要被考虑。架构模型是架构设计的制品,它描述构成复 杂系统仿真软件的元素和元素间的组织关系。一个好的架构 模型具有如下特点: (1)构成系统的元素被分割为可复用的和可扩展的,可复 用的元素在相似的场景中可不经修改就能执行,可扩展的元 素可以被方便的替换。 (2)可复用的元素和可扩展的元素通过广义的接口 耦合,用多态等手段适应预期中的扩展。

(3)构成系统的元素要利于并行开发。 (4)架构本身易于理解和维护。 2.4 实现阶段 实现阶段的任务是把分析阶段和设计阶段的 制品映射为 代码,该阶段的制品是代码和注释。在实现阶段中,编码人 员在应用模型确定的开发平台上,根据架构模型对仿真软件 结构的划分,并行展开工作:使用领域模型中的类图得到面 向对象代码的模板,使用协作图实现算法;根据边界模型实 现用户界面和定义与外部系统的接口;根据外观模型实现解 决问题的服务。 仿真实例本节以开发一个某重型燃气轮机的总体性能计算、优化 分析及动态仿真软件为例,说明 SPCSS 的使用方法。该仿真 软件使用一种非迭代的模块化建模仿真算法 ,对燃气轮机系统进行仿真。 3.1 需求阶段 3.1.1 燃气轮机总体性能计算与优化分析 单轴式燃气轮机设计工况和部分工况稳定工作状态参数及性能计算。包括功率特性计算和大气温度、压力对燃 气轮机性能的影响分析与计算。 (2)在全工况范围内计算机组的平衡工作线。 (3)根据进排气管道损失,分析计算进排气管道损失对总 体性能的影响。 3.1.2 燃气轮机动态特性分析与过程仿真 据部件特性建立单轴式燃气轮 机机组动态仿真 模型。

完成机组在设计工况和部分工况下的动态响应特性计算与分析,为控制系统设计提供依据。 (3)进行单轴式燃气轮机机组动态过程仿真计算,完成机 组起动,降负荷和甩负荷等典型动态特性分析。 3.2 分析阶段 在明确需求的基础上,用活动图描述求解算法并提取出 其中的对象后,建立如图 所示的描述燃气轮机动态过程仿真算法的协作图。 3获得流量 4获得流量 获得燃油量 6获得 转速 10获得功率 1获得温度 得功率 9获得功率 燃气轮机动态过程仿真算法协作图确定图 中各个对象的属性和操作,并将这些对象放入如表 数据字典对象名称 对象说明 属性/操作 说明 压气机的 入口压力 压气机出 口压力和 入口压力 之比 入口压力压气机的工作特性,使用生产厂商提 供的特性曲线(或逐级计算),采用压比 、折合转速、折合流量 体积具有一 定容积的连接段称 为容积环 节。容积内流体同外界的传热以及进 出口的压差被忽略,用集总参数来表 示容积内的平均压力,其变化主要受 到容积内流入流出的流量差而引起对 于理想气体有 dP 压力容积环节 所示。已知压气机入口温度,进出口压力,转速和 等折合转速下的折合流量和压比的特性曲线 根据入口温度、压比、流量和效率计算出口焓 建立折合流量、效率插值方程 建立压比、流量与喘振裕度的代数方程 根据出口焓计算出口温度 压气机出、入口焓、流量与消耗功率的代数方程 建立理想气体焓与出口温度的代数方程 压气机对象仿真算法活动图提取图 理想气体热力学计算库折合流量插值表 效率插值表 压气机压气机低压部分 容积环节 负载压气机高压部分 燃烧室 涡轮 11计算转速2获得压力 PID控制器 39Kp/s,且吞吐量没有随着数据包到达率的增加而下降。

可见,采用本文方法能有效提高路由器性能。 700 600 500 15387295596150 100 50 DCR-2708E模型 ASACT方法模型 45 000 40 000 35 000 30 000 25 000 20 000 15 000 10 000 DCR-2708E模型 ASACT方法模型 00010 000 15 000 20 000 30 000 40 000 50 000 60 000 输入速率/(packers 00010 000 15 000 20 000 30 000 40 000 输入速率/(packets 吞吐量测量结果50 000 60 000 结束语本文研究结果表明,路由器性能与系统结构、CPU 效率、 系统的任务调度机制和通信队列有关,设计高效的数据包转 发调度算法能有效提高路由器性能。 参考文献 一种改进的主动拥塞控制算法[J].计算机工程, 2008, 34(6): 118-120. 一个改进的路由器包转发模型[J].电子学报, 2002, 30(12A): 2158-2160. 操作系统原理[M].北京: 机械工业出版社, 2004. QueueingSystems[M]. Chichester, UK: John-Wiley SonsInc., 1975. 编辑 所示,在采用多级反馈队列算法的 DCR-2708E 路由器中,包转发延迟随着包输入速 率的增加而变大。

在包输入速率大于 MLFRR 时,延迟加剧 增大,抖动激烈。其原因是当输入速率小于 MLFRR 转发平均 延迟 输入速率 MLFRR后,包延迟将增加 NIC对应的接收缓冲区 的数目)。当试验机数据包输入速率小于 MLFRR 时,包转发 延迟约为 40 μs。当包到达率大于 MLFRR 时,延迟约为 250 μs(受系统给定的时间片长控制)。包转发延迟明显降低, 且延迟抖动幅度较小。可见,虽然当包到达率超过 MLFRR 时,延迟仍然会增加,但不随着接收缓冲区数目的增加而 大,因此,路由器对各NIC 的响应能力得到提高。 (上接第83 3.4实现阶段 使用以上各阶段的制品,6 名编码人员用了 个月的时间,完成了 30 000 C++代码,得到最终的软件产品,实现了预期的功能需求,并能被便利的维护。 结束语SPCSS 是一个方法学,它抓住了复杂系统仿真软件开发 的各个主要方面,描述了关键制品的建立方法及次序,指导 开发者由主到次、先因后果和循序渐进的建立需求模型、领 在建立包含表 等制品的领域模型以后,可以开始建立边界模型。考察燃气轮机性能随大气温度变化的数学 模型及其求解算法,寻找该算法在执行过程中所需要的输入 和执行完毕要做出的输出,获得如表 燃气轮机性能随大气温度变化的仿真边界模型UC_GP_002 编号 边界模型名称 燃气轮机性能随大气温度变化的仿真 本仿真软件的用户;设计工况下的状态变量文件;仿真 结果输出数据文件 系统额定状态下的其他参数不 变,压气机进口温度发生 改变时的系统性能 已有燃 气轮机模型设计工况下的状态变量文件 用户设置仿 真时间、步长、数值积分方法和仿真结果数 据文件 路径 用户设置低压压气机入口温度 T1 为某一大气温度 用户确认模型其他各部件参数为设计工况下的参 仿真参数设置界面;压气机参数设置界面;负载参数设 置界面;模型部件参数汇总显示界面;仿真 结果数据查 外界 域模型、边界模型、外观模型、应用模型和架构模型等制品, 描述 及早的降低了仿真软件的开发风险。

应用了 SPCSS 的燃气轮 机仿真软件开发示例表明,SPCSS 能帮助开发者从功能需求 出发,完成对复杂系统仿真软件的分析、设计和实现,降低 对整体的实现难度。 参考文献 SoftwareProject Management Methodologies/ Frameworks Dynamics ComparativeApproach”[C]// Proceedings EmergingTechnologies. Karachi, Pakistan: 面向对象的仿真综述[J].系统仿真学报, 1995, UseCase Text[EB/OL]. [2008-06-21]. Interface-orientedProgramming[R]. California, USA: University California,Los Angeles, Technical Report: TR-040016, 2004. 大型汽轮机的模块化仿真建模[J].系统仿真学 1998,10(3): 30-34. 编辑 前提条件交互场景 边界对象 看界面 提取边界模型中需要领域模型实现的服务,得到外观模 型。

IPerformance 接口是燃气轮机性能仿真的外观接口,被 外观类 TemperatueSim PressureSim实现,分别用于仿真大 气温度和压力变化对燃气轮机性能的影响。 3.3 设计阶段 在本例的设计阶段,建立的应用模型包含如 下设计:使 VC++作为开发语言、使用XML 作为仿真结果的载体、使 Windows的高性能计数器作为实时时钟和使用 NI6251 计:选用MVC 模式作为软件的分层结构;使用策略模 现数值积分方法的灵活选用等。—86—