随着客户需求范围的扩大和复杂性的增加,系统的逻辑与控制软件的规模和复杂性也随之扩大和增加。当各机构需要在越来越紧迫的时限内开发飞机和汽车应用所需的数百万行代码时,他们发现传统的开发流程已不再能够满足质量与时间的目标要求。将基于模型的设计用于嵌入式系统开发,可在开发过程早期发现缺陷并减少潜在缺陷总数,从而可以降低成本。基于模型的设计可以帮助公司在更短时间内以更低成本开发出质量更高的系统,具有颇具竞争力的优势。
传统开发方法对比基于模型的设计
在传统开发流程中,需求、设计、实现和测试任务在不同的工具环境下依次执行,其中涉及多个人工步骤(图1)。使用Microsoft Word或IBM DOORS等工具以文本方式捕获需求。不同设计使用针对该领域的不同工具实现,这使得系统级测试一直要到在软件或硬件中实现后才能执行。然后人工将设计转换成代码,这是个耗时且容易引入缺陷的过程。每个阶段中都会引入一些缺陷,从而使测试阶段成为要发现之前阶段中所积累的所有缺陷的清道夫。因此,测试阶段占到整个开发时间和成本的大头。缺少公用工具环境、多个人工步骤以及后期才能发现缺陷等因素都会延长开发时间、增加开发成本。
图 1. 传统开发方法需要许多会引入缺陷的不必要的人工步骤。
基于模型的设计(图2)以和传统流程相同的需求开始。但是,这些需求并不作为文本规范的基础,而是用于以模型的形式开发可执行规范。工程师使用这些模型来明确需求与规范。然后对这些模型进行细化,以开发需求更具体的设计。使用基于模型的设计工具,工程师可以在系统级对设计进行仿真,在实现之前发现界面缺陷。完成设计之后,工程师借助这些模型自动生成产品级代码和测试用例。此工作流程使工程师们从需求到测试阶段都能够处于同一环境中,从而减少了人工工作量。此外,当工程师们在模型中仿真可执行规范来验证其是否满足需求时,在需求阶段即可开始测试。这样便可及早发现和消除缺陷,降低开发总成本。
图 2. 基于模型的设计在整个开发过程中使用系统级模型作为可执行规范。这种设计方法支持系统级和组件级设计与仿真、自动代码生成以及连续测试与验证。
基于模型设计的优势
相比采用传统方法的机构,采用基于模型设计的机构可将成本降低20%到60% 。成本节约主要得益于更准确的需求分析以及早期和连续的测试与验证。由于使用了模型来仿真需求和设计,因此可在开发流程中早的多地发现缺陷;而处理早期发现的缺陷可成百上千倍地降低成本(图3)。
图 3 基于模型的设计可将缺陷发现提前到开发阶段早期。
使用基于模型设计的 ROI 框架量化节约的成本
采用基于模型设计 的ROI 框架来进行评估。根据项目大小、团队规模和其它因素,该框架可使用基本构造性成本模型(COCOMO)计算出传统开发的成本,然后减去基于模型设计所节约的成本,即可获得基于模型设计的开发成本。之所以选用基本COCOMO模型原因是该模型是一种广泛用于航空和国防工业的通用参数成本估算工具,在上两个领域,采购成本的可计算性要求由缜密的模型来进行软件成本估算。然后便可通过计算软件成本和项目团队培训成本来计算ROI。该框架使用由软件工程协会(SEI)、电气和电子工程师协会(IEEE) 和行业研究所规定的指标。由于项目规模、现有流程和使用基于模型设计的团队的专业水准因行业和公司而异,因此可针对特定的项目和团队自定义基于模型设计的ROI框架。
我们看一个有500,000行代码的软件项目基线案例。使用基本COCOMO模型可以算出使用传统方法的开发成本大约为600万美元。为了计算基于模型的设计相比传统方法所节约的成本,每个开发阶段(需求、设计、实现和测试)都要根据行业指标进行分析。然后便可汇总出所节约的总成本,并从传统开发成本中将其减去。在本例中,基于模型设计的成本为300万美元,相比传统方法节约了50%。
为了实现50%的成本节约,该框架会检查基于模型设计所消除的传统开发流程中的低效情况,并根据行业指标和平均值计算出所节约成本。因每个开发阶段节约的成本是分别计算的,因此该框架适用于逐步采用基于模型设计的情况。
下文将讨论其中一种低效需求情况,以此来说明该框架是如何工作的。在需求阶段,使用模型来发现不明确、不一致或不可测试的需求,这使工程师能够更大比例地发现缺陷。基线案例的该增加比例假设为9%。在需求阶段发现这些缺陷,意味着可以避免开发阶段后期成本高昂的返工。未发现的这9%的缺陷乘以解决该类缺陷的平均时常即为部分需求成本的节约量,而该缺陷的根本原因在于不正确的需求。在基线案例中,各需求缺陷的平均处理时长为4.5小时。根据该计算,基于模型的设计可节约2,025个工程小时。图4演示了处理需求分析缺陷(pain point)的框架部分。该框架还包含其它七个处理不同低效情况的部分。
图 4. ROI 框架可计算通过在早期修正不正确需求而节约的工程小时数。
本例中,汇总整个开发过程所节约的成本时会发现,节约主要来自需求和测试阶段(图5)。这得益于更为全面的需求分析,从而减少了遗留到后续阶段的缺陷。简言之,更好的需求有助于更好的设计实现。尽早和连续的测试使得可在引入缺陷的各阶段本身就能发现并处理这些缺陷,这样就减少了遗留在软件中的潜在缺陷、降低了整体开发成本。
图 5. 需求和测试阶段节约的成本占总节约成本的大部分
MathWorks与采用基于模型设计的航空与汽车企业合作时,ROI框架有助于引导这一采用过程,使企业能够发现可立即、显著地从转用基于模型的设计中获益的领域。
本文小结
对大多数企业而言,投资新技术和新流程/工艺是一种有风险的尝试。本文介绍的投资回报计算旨在提供投资基于模型设计的替代分析方法。除了证明投资的合理性,ROI框架还可以使设计团队发现基于模型的设计可以带来最大节约的领域,以及通过进一步研究可大幅降低成本的领域。