徐科华, 陈 谋, 吴庆宪
(1.南京航空航天大学,南京 211100; 2.上海飞机设计研究院,上海 200232)
民用飞机机载系统设计及集成流程是关系飞机系统安全性、可靠性及系统性能的关键问题,直接影响飞机研制进度和成本,借鉴国际民机研制领域的先进流程及经验,结合当前我国实际国情,研究严密且符合自身实际情况的系统设计流程是主机单位重点关注和解决的问题。国际上关于大型系统工程设计和集成长期以来一直都遵循严格的设计流程,早期国外机载系统集成大多使用瀑布式模型,即自顶而下的流水式模型。瀑布式系统开发模型虽然可用迭代方法改进开发过程中出现的问题,但该方法具有迭代次数多、时间周期长的缺点,不适合复杂大型系统开发。20世纪90年代初,提出了快速原型螺旋形开发技术,该方法包括3个主要回路,即虚拟开发、快速原型及制造与试验评估,强调系统设计及反复迭代,过程比较复杂。在快速原型及瀑布式开发流程基础上,先进的机载系统采用自顶而下的设计思想和自底而上的验证思想,即把机载系统作为飞机的一个子系统对待,作为一个整体进行优化设计与验证,即V模型开发流程。V模型开发流程与传统的瀑布型模式非常相似,但是V模型强调在设计阶段对系统进行充分的验证,当前,民机制造商普遍采用V模型系统集成流程[1-2]。随着民用飞机机载系统综合性、复杂性的提高,机载系统综合化、模块化、开放式架构已经成为未来发展的趋势;此外,随着硬件性能的提高和嵌入式软件的发展,飞机平台对机载系统设备功能、性能要求不断提高,其复杂性大幅增加;电子产品快速更新换代也加速了机载系统更新换代。因此,机载系统设计面临复杂度提高和设计周期缩短的双重压力,设计方法和技术面临新的挑战,传统的设计流程已难以适应目前系统设计要求,迫切需要改进目前的设计思想和手段,对传统设计流程进行再造及优化,采用先进的设计方法和系统验证环境,保证系统的安全性、可靠性和后向扩展性,降低系统研发成本[3-4]。
传统民用飞机机载系统设计开发流程主要包括瀑布型流程和V形开发流程及螺旋式开发流程,下面对这3种开发流程进行分析。
1)瀑布式开发流程。
瀑布式开发流程是一种基础性的流程式开发方式,适合于小型系统或需求比较明确的大中型系统[5],如图1所示。
图1 瀑布式开发流程Fig.1 The cascade design procedure
瀑布式开发流程为:初步设计→详细设计→硬件搭建→软件编码。采用线性设计、自顶向下逐步推进的方式,前一模块的输出作为下一模块的输入。模块之间需要进行阶段性评审。
瀑布式开发便于进行工程管理和评估,但并未很好地解决各个环节上的沟通问题,开发效率也不是很高。其原因主要包括:
①各个环节采用不同的描述方式,缺乏统一有效的描述,造成对需求和设计的理解发生偏差,导致设计错误的引入,造成研制发生错误,出现大量的后期更改;
②航空电子系统的开发主要采用任务功能依赖于资源平台,即系统的应用任务与系统资源平台密切关联,无法进行系统的并行设计,无法进行资源的复用;
③缺乏有效的仿真、验证手段,没有在系统设计的各个阶段分别对系统设计进行必要的仿真和验证,尤其没有进行充分的需求验证,无法保证各个阶段任务完成的正确性、一致性;
④软件开发各个阶段之间衔接的程度和自动化程度不高。
2)V形开发流程。
机载系统V形开发流程是设计过程与综合验证过程紧密联系在一起交叉进行的,如图2所示。
图2 V形开发流程Fig.2 V-shaped design procedure
在V形系统设计流程中,机载系统被划分为设计过程和综合验证过程。系统设计过程按照自顶而下的方法层层分解进行;而系统综合验证过程则是自下而上逐步综合的。由于系统设计过程不产生真实的设备和系统,这个过程又被称为虚设计过程(Virtual Design Process);系统综合验证过程直接产生真实的设备和系统,被称为实设计过程(Real Design Process)。
在系统设计过程中,每一层设计过程的设计输入都是上一层设计过程的输出,它的设计结果又是下一层设计工作的设计输入,同时也是对应层综合验证的依据。与系统设计过程相反,综合验证过程自下而上进行,每一层综合的对象是下一层综合验证后交付的产品,综合的依据则是相对应设计层的设计规范。
V形设计流程是按照系统工程思想建立的完整而系统的设计方法流程,对指导机载系统设计工作起到了重要的作用。V形设计模型理论发展比较成熟,工程实践经验积累丰富,在研制过程中对设计、综合、验证工具的要求相对较低,研制过程的质量控制和技术状态控制管理的难度也相对较低,适合在综合化程度比较低、系统功能相对比较简单的机载系统的研制过程中使用。目前国内大部分机载系统研制过程采用这种设计方法[6-9]。
3)螺旋式开发流程。
螺旋式开发方法是当今业界大力提倡的设计方法,其开发流程如图3所示。
图3 螺旋形设计及验证流程Fig.3 The spiral design procedure and its verification process
螺旋形流程的设计过程如图3a所示,每个设计过程都被分为设计层和验证层两个紧密联系的部分,而不是仅仅包括设计层。所增加的验证层使用快速原型的方法对本层的设计结果进行验证。这种包括快速原型验证的设计过程又被称作虚拟快速原型设计过程,阶段划分上对应于V形设计流程的虚设计过程(Virtual Design Process)。
螺旋形流程的综合验证过程如图3b所示,系统综合的过程非常明确地采用了自下而上的逐步综合方法,在逐步综合的每一层迭代都包含有设计修正,甚至一些设计开发工作,因此这一阶段的工作被称为系统综合过程而不是系统试验。因为这一过程是以实物而不是仿真模型进行的,因此系统的自下而上的逐步综合验证过程又被称为实物综合过程,阶段划分上对应于V形设计流程的实设计过程(Real Design Process)。
螺旋式开发通过建模与模型验证,建立用于模型验证的原型平台,解决了系统开发的正确性问题,建立起需求分析模型、功能分析和综合模型。通过对模型进行形式化的验证、测试、优化,保证系统设计的正确性,通过自动化的模型转换,保证各开发阶段设计的一致性,从而提高机载系统开发的效率和软件产品的可靠性。基于螺旋式软件开发方法通过引入风险评估机制,对各个阶段模型进行螺旋式的迭代评估与验证,从而在概念设计阶段、原型仿真阶段和系统初步设计阶段降低研制的技术实现的风险,减少因设计引入的错误,提高系统设计质量。另外,通过基于模型驱动的开发方法,模型的自动转换与代码和文档的自动生成,解决了软件开发过程中的设计、代码和文档的一致性问题[10]。
传统的设计方法主要包括系统需求与需求分析、系统方案论证、系统初步设计和详细设计、系统软硬件开发、系统模块集成、系统综合、系统验收测试。在整个设计过程中,上一设计阶段产生的结果是下一设计阶段的输入,相邻两个设计阶段具有因果关系,紧密相联。为了防止前一个阶段的设计错误蔓延到后续的各个阶段,在每一阶段的设计任务完成后,都必须对其阶段性产品及结果进行验证、评审,认定正确后再转入下一设计阶段。
经过多年的实践与研究分析,发现目前的系统设计开发过程存在如下不足情况。
1)需要以完整的、精确的需求分析为基础才能开展下一步工作。按照要求,每个阶段的输入是上个阶段的输出,即只有在明确上一阶段的输出的条件下才能开展下一步的工作。对于简单系统而言,在系统设计初始给出完整的需求是有可能的,但是,对于一个复杂的大系统,尤其是面对新系统的设计,这实际是难以做到的,而我国开展民机研制基础比较薄弱,人员经验不足,更加剧了问题的严重性。
2)文本描述的缺陷。采用传统的系统设计文件,无论是需求还是技术规范,均采用文本文档进行说明。相对图形化描述而言,仅用文字和数字表达准确及正确进行阅读理解都是费时费力的,难免出现差错。随着系统复杂性不断增加,静态的书面文档通常很难提供足够的系统动态行为描述和规范说明,对于不同文化背景的人,对文本的需求常常有不同的解释或者文本需求本身存在有含糊不清的地方,因此,造成对需求理解的差异,设计出错的概率增加。
3)无法直观进行交流。在系统开发早期,设计师无法向用户展示其设计成果,无法与用户直接进行沟通,满足用户的需求,也无法对设计进行验证,难以发现设计错误。通常情况下,用户在与设计师共同完成需求分析之后就被排除在产品开发决策过程之外,用户主要参与各阶段的阶段成果的评审,此时,只能凭借个人的经验,对系统设计提出意见,往往要等到设计过程完成,生产出样品以后,用户才能参与对产品设计的评价。这时,如果用户发现设计者对其意图的理解上有偏差,需要进行修改设计及研制,那么往往会对整个设计项目带来很大的损失,甚至需要重新开始设计。
4)系统顶层设计和实现相分离。根据现行的开发流程,设计活动与相关测试活动之间存在着一种可追溯的对应关系。即详细设计的正确性通过单元测试来验证,系统设计的正确性通过系统综合集成测试来验证,依此类推。也就是说,在传统的设计过程中,越是在整个设计过程中处于上游的设计活动,其正确性得到确认的时间越晚。上游设计是下游设计的基础和依据,但是上游设计结果的正确性却一直要等到下游设计完成之后才能得到确认,这样就无法保证下游的设计工作有一个正确的前提。缺乏系统需求的正确性验证与测试性验证,导致系统设计与实现相互分离。
5)缺乏协同设计。在系统开发过程中,通常硬件设计师和软件设计师在自己工作方面都能满足设计要求,而往往在系统进行综合时,就未必能满足用户的需求。出现这种问题一般都是在系统的综合阶段(开发的后期)才能发现。据统计,后期发现设计错误进行修改所花费的费用是前期发生费用的10~1000倍,甚至更多。导致出现上述问题的原因是,在软、硬件设计时,缺乏协同设计,忽略了各自间的相互联系。
V形开发流程的最大特点是上一层的设计结果作为下一层的设计输入,而不进行验证,因此,导致最顶层的设计反而到最后才进行验证,把前期的隐患带入后期,造成设计更改困难,进度延迟,代价巨大,但是V形流程的需求、设计、系统综合及验证的关联性、可追溯性确实具有强大的生命力,V模型的缺点可以结合螺旋形开发流程的优点进行改进,采用螺旋形开发流程对V形开发流程进行改进和再造将是未来复杂系统设计、集成的主流方法,详细过程如下。
在V形开发流程自顶而下设计过程的每一层次,引入快速原型设计概念进行迭代设计。每个设计过程都被分为设计层和验证层两个紧密联系的部分,而不是仅仅包括设计层。所增加的验证层使用快速原型的方法对本层的设计结果进行验证。每一层的设计过程包括如下内容。
1)来自上一层的设计要求是本层的设计输入。
2)对该设计输入进行需求分析,得到本层的设计要求(规范)。
3)依据本层设计要求(规范)开展详细设计等工作,形成本层的设计结果。
4)建立系统快速原型、进行仿真验证。
5)对设计结果进行评审。如果快速原型仿真证明设计是正确可行的,即可在对设计进行修正后转入下一层工作;如果仿真结果发现设计存在根本的错误和问题,则需要重新进行本层的工作。
机载系统综合及验证过程相对于自顶而下层层分解的设计过程,是一个自下而上逐步综合的迭代过程。每一个验证迭代过程包括以下工作项目。
1)详细设计或前一层综合所产生的产品是本层综合的对象,这个对象可能是软硬件、设备、子系统或系统。
2)机载系统设计模型中对应层设计的结果是本层进行测试验证的依据,如系统综合层的测试验证依据是系统设计层产生的系统规范。
3)对综合过程进行计划,包括系统综合构形、综合进行的步骤、综合记录数据的判据等。
4)按照计划对真实软硬件、设备或系统进行测试验证。
5)根据测试验证结果对所综合的对象进行分析评估。
6)根据验证结果对设计进行修正,并进行阶段评审。如果系统综合的结果符合本层设计要求,则可以进行下一阶段的综合工作;如果没有达到设计要求,则需要根据测试验证结果对设计进行修改,之后重新进行本层综合过程。
上述设计流程如图4所示。
通过采用螺旋形开发流程对V形开发流程进行改造,系统设计流程既具有V模型的虚设计过程及实设计过程,又体现了螺旋形模型强调层层验证的优势,对开发大型复杂系统更有利。
图4 改进的机载系统设计流程Fig.4 The improved design procedure for airborne system
综上所述,传统的瀑布式开发流程、V形开发流程及螺旋形开发流程都存在一定的局限性,难以满足大型综合复杂系统的设计及集成要求。而采用螺旋形开发流程对现行的V形开发流程进行改造,具备两个开发流程的优点。因为系统设计和验证不再是时间上相对独立的两个开发过程。在系统自顶而下虚设计过程中包含着系统的虚拟仿真验证过程;在系统自下而上综合的实设计过程中包括系统设计和开发工作。每个设计和综合层次都需要对系统的设计进行验证,并根据验证结果对设计进行修正,所不同的是所验证的对象逐渐由抽象变为具体,由虚拟变为真实。
另外,改进后的开发流程使用设计与综合验证循环迭代的思想,缩短了设计验证周期,尽可能在本阶段的综合验证中发现并修正设计错误,降低设计风险。但对用于设计和综合验证的工具和手段提出了很高的要求,对设计质量保证和技术状态控制的要求也比较高,非常适合在复杂的大型民用飞机机载系统设计研制过程中使用。目前,民机机载系统开发及集成工具正逐渐走向完善和成熟,在现阶段可通过引进这些设计验证工具,研究上述优化的机载系统设计流程的工程实践方法,逐渐在后续系统研制过程中尝试使用。
[1] OOLLA K,KHARGONEKAR P,TIKKU A,et al.A timedomain approach to model validation[J].IEEE Transactions on Automatic Control,1994,39(5):951-959.
[2] HENZINGER T A,HO P H,TOI H W.HyTech:A model checker for hybrid systems[J].International Journal on Software Tools for Technology Transfer,1997,1:460-463.
[3] 李向东,仇振安,苏文强.悬挂物管理功能仿真通用技术应用研究[J].电光与控制,2011,18(10):82-86.
[4] 李宏,吴衡,胡丙华,等.基于网络通信架构的分布式测试系统[J].电光与控制,2011,18(10):73-75.
[5] 金明霞,吴晓燕,朱昌葵.建模与仿真生命周期综述[J].计算机仿真,2003,20(8):46-48.
[6] MAIER M W.Architecting principles for systems-of-systems[J].System Engineering,1998,1(4):267-284.
[7] LIU J,EKER J,JANNECK J W,et al.Actor-oriented control system design:A responsible framework perspective[J].IEEE Transactions on control Systems Technology,2004,12(2):250-262.
[8] OSES N,PIDD M,BROOKS R J.Critical issues in the development of component-based discrete simulation[J].Simulation Modelling Practice and Theory,2004,12(7/8):495-514.
[9] MURPHY B,WAKEFIELD A.Early verification and validation using model-based design [J].EDN,2009,54(13):39-41.
[10] HARDEBOLLE C,BOULANGER F.Exploring multiparadigm modeling techniques[J].Simulation,2009,85(11/12):688-708.