汽车电子CMMI软件开发流程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汽车电子软件开发流程

——CMMI篇

作者:朱忠安

版本: 1.0 状态:草版

1历史记录

2索引

1历史记录 (2)

2索引 (3)

3概要 (4)

4一般嵌入式系统开发简介 (5)

4.1嵌入式系统定义 (5)

4.2嵌入式系统的开发组织架构 (5)

4.3嵌入式系统软件开发流程图 (6)

4.4流程图简介 (7)

5CMMI软件团队解析 (8)

5.1CMMI软件开发流程标准 (8)

5.2软件研发组织架构解析 (9)

5.3软件项目开发过程 (9)

5.4系统测试组织结构 (9)

6CMMI软件项目变更管理 (10)

6.1软件变更控制工具介绍 (10)

6.2软件变更控制流程 (10)

7软件开发知识简介 (11)

7.1软件开发的特点 (11)

7.2如何做好软件开发 (11)

7.2.1客户角度 (11)

7.2.2供应商角度 (11)

3概要

本着为客户服务的宗旨,让更多的想进入汽车研发团队的工程师们了解和熟悉的软件开发流程,减少项目开发过程中不必要的误解,故做此介绍抛砖引玉。

4一般嵌入式系统开发简介

4.1嵌入式系统定义

对于嵌入式系统,一般教科书上面有这样定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,系统对功能、可靠性、成本、体积、耗电量和应用环境,有特殊要求的专用计算机系统,是将应用程序、操作系统和计算机硬件集成在一起的系统。

其实这句话不难理解,概括起来只有两点:

<1>计算机系统

任何一个嵌入式系统必定是一个计算机系统,而最基本的计算机系统无外乎CPU,内存,输入设备,输出设备;嵌入式系统也是如此.

谈到这里,就必须要说到两个概念:微处理器和微控制器.

所谓微处理器很容易理解,就是中央处理器CPU,比如所ARM9,它的为处理器就是ARM920T.换句话说就是嵌入式系统的核心控制单元.

所谓微控制器,其实也不难理解;我们现在大部分的电子产品所使用的都是集成芯片,也就是一块芯片中不仅仅包含的是CPU,还把许多的外围设配都集成在一块芯片中,比如把PWM控制器,把flash,把音频处理器,把内存,把输入输出设备等都集成在一块芯片中,这样的一块集成多功能的芯片就是微控制器。基本上一块IC就是一个小型的嵌入式系统。这样的做的好处也是显而易见的:<1>可以减少嵌入式系统设计的复杂度;<2>节省成本,因为一块集成多功能的IC,比你去用一块CPU搭建外围设备的成本要少的多。

<2>特定应用

对于嵌入式产品的开发,一般都是具有特定的应用;根据特定的需求去定制的。比如仪表,一套完整的仪表系统,都是只适合与特定款型的车。因为电子产品的性质各有不同,嵌入式系统的开发也很难有一套统一的标准,没有一个国际标准组织或学术单位,规定嵌入式系统一定要用什么CPU,用什么开发语言,一定要用什么操作系统,一定要用哪一套开发工具。只会根据特定的需求去定制。

4.2嵌入式系统的开发组织架构

一般的研发团队都有很严谨漂亮的组织架构,嵌入式系统的研发团队也是如是;至少应该有以下小组。

<1>项目管理组

<2>硬件组

<3>产品外观和结构设计组

<4>软件组

1)软件项目管理组

2)固件组

3)系统组

4)应用程序组

<5>测试与质量小组

<6>支持组(包括成产,美工,法务,行政事物)

大部分成熟公司的组织架构也基本和这个相似,后面章节,我会重点介绍软件组的概况,其他不做详细介绍。

4.3嵌入式系统软件开发流程图

先看一下开发的流程图:

4.4流程图简介

一个好的嵌入式系统开发,要有一套好的方法论作为支撑;那么何为方法论?

方法论 = 流程 +工具

以上的控制图中就是一套有效的流程图,流程图中的每一个步骤,需要有相应的工具去辅助完成。

往往我们在抱怨流程繁琐、浪费时间的时候,是因为我们没有切实的理解流程的精髓,没有切实的去落实流程中的每一步骤,一套好的方法论,只可能高效,高质量的为项目做支撑,而不会为项目带来负担。

所以大部分情况流程没有走好,无外乎以下几种原因:

<1>项目经理没有制定好计划,没有严格按照流程去控制软件开发;

<2>项目成员流程意识薄弱,在软件开发的过程中随心所遇;

<3>流程的可变通性没有把握好,一套标准的流程在应用到每一个项目中,要有相应的变通,由项目经理去把握;所谓Plan is nothing,Planning is everything 就是这个道理。

<4>项目团队的稳定性没有持续到项目的结束,往往大部分的项目在开发的初期阶段,项目成员都是很积极,很有信心的;当项目进行到80%的时候,大部分的项目成员都已疲惫,项目很容易陷入瓶颈,这个时候大部分人,也很想把自己负责的任务转交给新人。这样后续的流程很容易出现问题,引发项目的风险。

<5>客户紧急频繁的更改,往往会让开发团队,在流程中疏忽掉一些关键性的问题导致项目风险。

5CMMI软件团队解析

5.1CMMI软件开发流程标准

一般的软件团队,尤其是正规的企业,软件开发团队都会有一套质量管理系统; CMMI是国际标准。那么什么是CMMI以及一般软件开发所遵循的质量管理体系有哪些?

先来谈谈一般软件开发团队所遵循的质量管理体系有哪些。对于一些重量级的软件开发来说所遵循的标准主要有CMMI和ISO9001等,对于一些轻量级的软件开发来说所遵循的标准主要有敏捷和极限编程(XP)。这些开发模型的具体差异不做一一介绍,网上都可以找到相应的资料。主要说说CMMI,CMMI 全称是Capability Maturity Model Integration,也就是软件能力成熟度集成模型。主要是卡内基美隆大学软件工程学院发展成的标准。CMMI提供了包含5个软件开发过程、能力成熟度的框架,定义了一个用来测量软件开发过程成熟度,以及评价软件开发过程能力的尺度。CMMI的五个能力成熟度的等级分别为:

<1>初始(initial)/无法预测且监控不佳:软件开发过程是无秩序的,偶尔甚至是混乱的。软件开发有时是成功的,有时是不成功的。几乎没有什么过程是经过定义的,成功通常是通过个人的努力。

<2>管理(managed)/可重复先前的工作经验:已建立基本的项目管理程序去追踪成本、效益、进度和功能性;必要的开发过程已经稍具纪律,此后有类似的项目可重复使用以前的成功经验

<3>定义(define)/描述流程特性,并用于管理:项目管理活动和软件开发活动的过程均已文件化和标准化。

<4>量化管理(quantitatively managed)/流程可以被度量、控制:已集成软件开发过程与产品质量相关信息,并加以量化、记录和分析。

<5>优化(optimizing)/专注在流程改善:利用组织中的历史数据,辅以新的技术与观点,使持续的改善成为可能。

持续改进的过程

国内大部分公司目前处在等级二和等级三之间,也就是标准一致的过程。就是说公司目前的软件开发已经有一定的成熟度,相关的开发过程已经文件化和标准化。

相关文档
最新文档