在航空航天、汽车、工业、医疗、通信、机械、电子等各个领域中,随着系统复杂度的不断增加及产品上市时间压力的不断增大,开发团队面临的挑战愈发严峻,项目无法如期完成的状况也日益增多。在传统的开发流程下,开发团队只有在完成系统集成或原型硬件开发之后才能进行测试和验证,然而,这一阶段才发现的设计缺陷和设计错误将会导致开发团队必须投入大量的人力、财力和时间去对其进行修正,甚至有可能必须彻底重新设计。
The MathWorks公司Fellow(首席研究员)——Jim Tung先生用一张图表直观地展示出传统开发流程的问题所在。如图1(a)所示,开发项目被分为需求、设计、实现和测试四个阶段,黄色柱体表示错误是在哪个阶段被引入的,红色柱体则表示错误是在哪个阶段被检测并修正的。由图可以发现,越是在项目早期,如需求和设计阶段,错误引入的比例越高,而在实现和测试阶段中引入错误的比例较低;与此相反的是,设计团队在项目早期发现的错误是较少的,而在最终的测试阶段发现的错误才是最多的。Jim Tung表示,图中显示出的错误引入和错误检测之间的鸿沟正是造成项目延期的最主要的原因,错误发现地越晚,设计团队就需要付出更大的代价去修复它。
针对传统开发流程所存在的这一问题,The MathWorks提出采用基于模型的设计进行早期验证的开发理念,在需求和设计阶段就对系统进行验证,尽早发现错误并进行修正(见图1b),以缩短开发周期,保证产品如期上市。
图1 系统开发流程中错误的引入和检测(点击看大图)
据Jim介绍,早期验证理念主要包括以下几个方面:
1) 在可执行的规范下进行详细的需求分析,以获得更精确的需求。这里,可执行的规范意味着用可仿真的模型来描述规范,尽早获得反馈;
2) 使用模型作为算法和组件的系统级测试平台,以准确反映系统中各组件对整个系统的影响;
3) 在模型的基础上对设计权衡、组件交互以及系统的度量进行仿真,以评估设计结果、组件之间的相互作用以及结果;
4) 在从虚拟系统集成到完成系统开发的过程中,对测试平台进行重复利用。
Jim表示,对于不同的行业及不同的应用者来说,应该采用的设计方法也略有不同。根据开发团队对于基于模型的设计的接纳程度,The MathWorks公司将他们分为三大类:基于模型的设计的高级采用者,开发控制系统的中小型团队,以及算法集中的信号处理、图像处理以及通信系统设计者。
基于模型的设计的高级采用者
第一类开发者是构建复杂控制系统的大型团队,他们大多属于航空航天、国防和汽车领域。Jim介绍说:“这些开发团队通常横跨不同的领域,并已经能够广泛使用模型来进行系统设计,但他们依然在设计流程中发现了一些问题,那就是如何保证他们的设计能够有效满足系统需求。”出现这个问题的主要原因在于,虽然这些团队采用了一些仿真技术,但他们没有在需求分析阶段系统化地验证需求本身的准确性。“这是这类开发者目前所面临的最重要的问题。”Jim补充。
对于这类开发团队来说,早期验证就意味着将建模与需求紧密相连,在实现阶段之前进行系统虚拟集成和测试,这不仅包括对系统中每个单独的部分进行测试,还包括确保整合后的系统也能匹配最初需求(见图2)。Jim表示:“在基于模型的设计流程下,用户不需要什么特殊的硬件或特殊的实验室来完成早期验证。所有仿真都能够在桌面上进行,只要将不同的部分集成到一起进行仿真,就能完成系统化的需求确认和设计验证。”
图2 通过基于模型的设计进行虚拟集成和测试
目前,很多汽车及航空航天业的设计工程师都在抱怨,他们不得不花费50%或更多的时间在系统验证和确认的活动上。通过采用基于模型的设计,开发团队将会把更多精力转移到需求分析阶段,在模型的基础上更精确地理解需求,实现更清晰的系统规范,并利用系统建模来增强设计的可重复利用性,大大减少设计错误。在设计流程的早期保持团队内部畅通的沟通和进行彻底的验证将有助于工程师及早发现并纠正错误,来更有效率地开发产品,并降低成本。