在实际工作中,我们经常会遇到这样的问题:与设计开发相关的模型、标准、方法有那么多,选择哪一个呢?或者在汽车嵌入式软件开发时,我们希望应用Automotive SPICE,也希望使用Agile(Agile的好处很诱人:轻量化、快速响应、拥抱变化等),那么如何解决Automotive SPICE和Agile的冲突呢?
过程模型或能力度模型(如:CMMI, Automotive SPICE):是明确定义“需要做什么(What)”以及“做的目的(Why)”。
标准:满足某种条件情况下必须要满足的要求,比如当车载E/E系统是与功能安全相关时,则适用于ISO26262标准,其中就有比如“单元测试覆盖度”的要求。
方法论:是在特定场景下应用的特定方法,比如在开发车载嵌入式软件时,其应用层软件可以采用基于模型开发(MBD)的方法。
如上图所示:
过程模型或能力度模型定义的是“What”和“Why”,比如:需要射中靶心
方法论是采取的具体方式,是“How”,比如:
1)在旅游的时候(左图),我们可以用那样一种弓箭来射中靶心;
2)在正式比赛时(右图),我们需要用专业弓箭来射中靶心
我们能把处于“What”层面的过程模型或能力度模型与处于“How”层面的方法论进行比较吗?
1)模型:人需要穿衣服(what),以保暖(Why)
2/3)在冬季沈阳(场景),穿一件羽绒服(方法)
4)通过”Why”来衡量解决方案(How)的有效性:在冬季的沈阳,穿羽绒服可以达到保暖的目的吗?
举个Automotive SPICE中的具体例子:
1)ASPICE MAN.3 BP10:评审和报告项目进展(What:评审和报告;Why:监控项目进展)
2/3)需求稳定明确时(场景),采用传统开发方法,进行周监控和里程碑监控(方法)
4)通过”Why”来衡量解决方案(How)的有效性:在需求稳定明确的场合,采用传统开发方法用周监控和里程碑监控的方式,可否达到监控项目进展的目的呢?
继续上一个例子:
1)ASPICE MAN.3 BP10:评审和报告项目进展(What:评审和报告;Why:监控项目进展)
2/3)需求不稳定不明确时(场景),采用Scrum方式:每日站例会、Sprint评审会议和Sprint回顾会议方式(方法)
4)通过”Why”来衡量解决方案(How)的有效性:在需求不稳定不明确的场合,采用Scrum的每日站例会、Sprint评审会议和Sprint回顾会议方式,可否达到监控项目进展的目的呢?
经常有人问我如下的类似问题:
比如1:为了满足ASPICE要求,在使用Scrum方法时,是否需要开周会,形成周会议记录?
ASPICE有要求要开周会吗?
比如2:为了满足ASPICE要求,在基于模型开发时,在Matlab/Simulink中的模型设计内容需要拷贝到Word中,形成一份Word版本的详细设计吗?
ASPICE有要求Word版本的详细设计吗?
提出这样的问题,是将模型在某场景下应用的方法论,当成了模型的要求。