系统仿真与软件工程
2320120921 徐子棋一、软件本身就是现实的仿真
软件可以理解为数据与算法的合集,经过几十年的发展,软件从解决单一问题的一个小程序,发展到适应各个领域的复杂庞大的程序集合。
而软件开发的过程就是将现实中的逻辑转换为可以被计算机解读的语言,使用计算机来实现以前需要人工处理的任务,利用计算机的高速以及规范等特性,减少人的工作量,降低管理成本。
例如最常见的行业管理软件,就是包含了行业管理业务共性的程序集合,通过行业管理软件,这个行业中的从业人员可以通过软件的帮助进行业务管理、数据分析,同时受限于软件中设置的限制条件,从而使得从业人员必须遵守一些硬性的规定,从而将管理风险从事后监督转化为事前防范,大幅度降低企业的管理难度,而这个过程本身,就是一种管理逻辑的仿真和抽象。
在理想的情况下,如果不考虑计算机的计算和存储能力的限制,可以说,任何现实的情况都可以通过软件工程的方式来开发仿真系统。
二、系统仿真与软件工程结合的必要性
由于复杂系统在构成、过程和状态等方面具有繁杂、庞大和跨学科等特点,复杂系统仿真软件的开发与软件工程的结合就显得越来越有必要。
为了应对复杂仿真系统的特点,能够适应仿真软件的开发方法必须具有如下特点:
1.方法必须覆盖复杂系统仿真软件分析、设计中需要关注的主体,能
有效的指导软件实现。
2.能帮助开发者循序渐进的对复杂系统中的数据和算法进行有效的归
纳,降低开发难度。
3.建立的软件具有直观、简单和易于理解的组织结构。
4.能为仿真软件形成标准化的文档。
5.能服务于大兴仿真软件的开发管理。
三、一种适用于系统仿真软件开发的方法
在前期的学习中,接触到一种复杂系统软件工程化开发过程:SPCSS (Software Process of Complex System Simulation)。
SPCSS是基于传统瀑布模型,从时间顺序上将复杂系统仿真软件的开发分为需求阶段、分析阶段、设计阶段和实现阶段;在各个阶段中,根据复杂系统仿真软件开发的内在需要,裁剪和补充了统一过程中的工作流,但不像统一过程对这些工作流进行增量式的迭代。
这是因为仿真软件的基础是被仿真的系统的数学模型,数学模型
中各部分是紧密联系的,如:模型中的方程通常是被联立求解的,新元素的增加一般都会影响到整体,而且被仿真的复杂系统一般不会在开发期间发生大的变动,造成需求变更。
SPCSS需求阶段产生的制品包括需求模型,分析阶段产生的制品包含领域模型、边界模型和外观模型,设计阶段产生的制品包含应用模型和架构模型,实现阶段产生的制品包含程序代码和注释。
3.1 需求阶段
需求阶段实现需求模型,界定仿真软件的开发范围,在开发团队中明确开发任务,提高涉众间的交流效率。
需求模型由仿真意图和功能列表构成。
仿真意图表达开发某个复杂系统仿真软件的目的,只有理解好了仿真意图,开发者才能站在用户的角度,围绕用户的需要发挥主观能动性,带来对用户有价值的软件。
功能列表是仿真意图的具体表述,规定了仿真软件待实现的内容,体现了仿真软件所要具备的竞争力,是开发者的工作起点。
3.2 分析阶段
在分析阶段中,开发者需要描述复杂系统仿真软件中的关键因素。
分析阶段的制品独立于开发平台和语言,体现开发者对被仿真者的复杂系统的理解,帮助专家和用户及早审核仿真软件的开发思路,降低实现阶段的开发风险。
3.2.1 领域模型
仿真是对真实系统建立模型并运行该模型的技术,所以模型在仿真中占有最重要的地位。
仿真软件使用的仿真模型一般是数学模型,而复杂系统的数学模型所设计的数据及其求解算法,种类多、数量大且较抽象,难以直接转换为编程实现。
SPCSS中的领域模型帮助改善这个问题。
领域模型是在问题领域中,对数学模型相关的数据和算法进行面向对象的组织和抽象,获得的具有可复用性的实体、概念、规划等元素。
仿真软件开发的复杂性根源于问题领域本身的复杂性,合适的领域模型能够描述需求模型涉及的知识,不仅能指导代码的实现,还能帮助开发者认识与仿真相关的知识,实现对知识的复用。
3.2.2 边界模型
边界模型描述仿真软件通过边界与外界的交互情况,由外界、边界对象和交互场景构成。
外界是用户或其他外部软件、硬件系统;边界对象是可以传递数据的计算机相关对象;外界的数据只能通过边界对象发送给仿真软件,仿真软件产生的数据也只能通过边界对象输出到外界。
与统一过程、敏捷过程和MSF不同,交互场景的描述不是在需求阶段中建立,而是在领域模型建立后,根据算法中数据输入、输出的先后顺序后在边界模型中建立的。
边界模型确定了仿真软件在异构系统中和外界的交互方式,定义了仿真
软件的使用方式,开发人员可以用它及早的向用户确认功能实现的完整性和界面的友好性,并为开发提供指导。
3.2.3 外观模型
领域模型中的元素具有粒度小、可复用的特点,在被用于具体仿真任务时,通常要被重新组合。
外观模型是连接领域模型和边界模型的桥梁,使开发者能根据仿真任务的需要方便的使用领域模型。
外观模型包含了外观接口和外观类。
外观接口根据边界模型的需要,定义仿真软件对具体仿真任务提供的服务;根据需求模型中的功能列表,在外观接口的基础上编写测试用例,可以检查领域模型对需求模型实现的正确性。
外观类封装领域模型中的对象和复杂算法,实现外观接口。
外观类的粒度通常大于领域模型中的粒度。
外观模型是仿真软件自身架构的组成部分,它隐藏领域模型内部的复杂性,帮助领域模型能容易的被应用到具体的仿真任务中去。
3.3 设计阶段
在设计阶段中,开发者为分析阶段的制品确定实现的技术手段及其之间的组织结构关系,解决非功能性的需求,形成最终能完成仿真任务的完备方案,指导开发实现。
设计阶段的制品包含应用模型和架构模型。
3.3.1 应用模型
应用模型为分析阶段的制品选择具体的实现手段,包含了如下内容:
A.为领域模型中的算法、边界模型中的边界对象和外观模型中的外观类等选择合适的实现技术,具体包括对软件、硬件平台、开发语
言、控件和数据存储方式等的选择。
B.改善性能,比如对占用较多CPU、I/O等时间的代码进行优化,消除瓶颈。
3.3.2 架构模型
架构技术能使开发出的软件具备可扩展性和可复用性。
架构是决定大型软件质量的关键因素,在设计中需要被考虑。
架构模型是架构设计的制品,它描述构成复杂系统仿真软件的元素和元素间的组织关系。
一个号的模型具有如下特点:
A.构成系统的元素被分割为可复用的和可扩展的,可复用的元素在相
似的场景中可不经修改就能执行,可扩展的元素可以被方便的替换。
B.可复用的元素和可扩展的元素通过广义的接口耦合,用多态等手段
适应预期中的扩展。
C.构成系统的元素要利于并行开发。
D.架构本身易于理解和维护。
3.4 实现阶段
实现阶段的任务是把分析阶段和设计阶段的制品映射为代码,该阶段的
制品是代码和注释。
在实现阶段中,编码人员在应用模型确定的开发平台上,根据架构模型对仿真软件结构的划分,并行展开工作:使用领域模型中的类图得到面向对象代码的模板,使用协作图实现算法;根据边界模型实现用户界面和定义与外部系统的接口;根据外观模型实现解决问题的服务。
四、综述
综上所述,软件作为一种广义的仿真系统,已经在发展过程中具有了非常多的成熟的方法论,而复杂系统仿真,作为一个特殊的领域,由于其特殊性,不可能所有行为都能够在现实中进行,因此势必需要仿真软件的辅助,而在制作仿真软件过程中,完全可以利用软件工程中成熟的方法论,来对仿真软件的开发进行管理和控制。
一个适合的软件工程方法论,能够帮助开发者从功能需求出发,完成对复杂系统仿真软件的分析、设计和实现,降低对整体的实现难度。