精华内容
下载资源
问答
  • 嵌入式软件开发流程

    千次阅读 2012-06-01 21:58:31
    嵌入式软件开发流程 一、嵌入式软件开发流程 1.1  嵌入式系统开发概述  由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发...

    嵌入式软件开发流程

    一、嵌入式软件开发流程
    1.1  嵌入式系统开发概述
        
    由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。


    1.1  嵌入式系统开发流程图

         在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成品,但能大大提高产品的性能和可靠性。
        
    再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。本书在4.1.5节对各种不同的嵌入式操作系统进行了比较,读者可以以此为依据进行相关的选择。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。
        
    由于本书主要讨论嵌入式软件的应用开发,因此对硬件开发不做详细讲解,而主要讨论嵌入式软件开发的流程。
    1.2  嵌入式软件开发概述
        
    嵌入式软件开发总体流程为图4.15软件设计实现部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。
    由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。
        
    嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBMRational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境TornadoWindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADSIARRealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。



    1.2  嵌入式开发不同阶段的常用软件

    嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。
    1.交叉编译
        
    嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。


    4.17  交叉编译环境


     
    小知识    与交叉编译相对应,平时常用的编译称为本地编译。

        
    这里一般将进行交叉编译的主机称为宿主机,也就是普通的通用PC,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境。由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
        
    由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉链接等过程,通常ARM的交叉编译器为arm-elf-gccarm-linux-gcc等,交叉链接器为arm-elf-ldarm-linux-ld等,交叉编译过程如图4.18所示。

    4.18  嵌入式交叉编译过程


    2.交叉调试
        
    嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
        
    嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种。它们一般都具有如下一些典型特点。

    •      调试器和被调试进程运行在不同的机器上,调试器运行在PC机(宿主机),而被调试的进程则运行在各种专业调试板上(目标板)。
    •       调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程。
    •       在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上运行着的进程的调试。这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件(如gdbserver)。
    •      目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别。

    下面分别就软件调试桩方式和硬件片上调试两种方式进行详细介绍。
    1)软件方式。
        
    软件调试主要是通过插入调试桩的方式来进行的。调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。该方式的典型调试器有gdb调试器。
         gdb
    的交叉调试器分为GdbServerGdbClient,其中的GdbServer就作为调试桩在安装在目标板上,GdbClient就是驻于本地的gdb调试器。它们的调试原理图如图4.19所示。

    4.19  gdb远程调试原理图

         gdb调试的工作流程。

    ·        首先,建立调试器(本地gdb)与目标操作系统的通信连接,可通过串口、网卡、并口等多种方式。

    ·        然后,在目标机上开启GdbServer进程,并监听对应端口。

    ·        在宿主机上运行调试器gdb,这时,gdb就会自动寻找远端的通信进程,也就是GdbServer的所在进程。

    ·        在宿主机上的gdb通过GdbServer请求对目标机上的程序发出控制命令。这时,GdbServer将请求转化为程序的地址空间或目标平台的某些寄存器的访问,这对于没有虚拟存储器的简单的嵌入式操作系统而言,是十分容易的。

    ·        GdbServer把目标操作系统的所有异常处理转向通信模块,并告知宿主机上gdb当前有异常。

    ·        宿主机上的gdb向用户显示被调试程序产生了哪一类异常。

         这样就完成了调试的整个过程。这个方案的实质是用软件接管目标机的全部异常处理及部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互。但是它只能在目标机系统初始化完毕、调试通信端口初始化完成后才能起作用,因此,一般只能用于调试运行于目标操作系统之上的应用程序,而不宜用来调试目标操作系统的内核代码及启动代码。而且,它必须改变目标操作系统,因此,也就多了一个不用于正式发布的调试版。
    2)硬件调试。
        
    相对于软件调试而言,使用硬件调试器可以获得更强大的调试功能和更优秀的调试性能。硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行情况。目前嵌入式系统开发中最常用到的硬件调试器是ROMMonitorROMEmulatorIn-CircuitEmulatorIn-CircuitDebugger
        
    采用ROMMonitor方式进行交叉调试需要在宿主机上运行调试器,在宿主机上运行ROM监视器(ROMMonitor)和被调试程序,宿主机通过调试器与目标机上的ROM监视器遵循远程调试协议建立通信连接。ROM监视器可以是一段运行在目标机ROM上的可执行程序,也可以是一个专门的硬件调试设备,它负责监控目标机上被调试程序的运行情况,能够与宿主机端的调试器一同完成对应用程序的调试。
        
    在使用这种调试方式时,被调试程序首先通过ROM监视器下载到目标机,然后在ROM监视器的监控下完成调试。
        
    优点:ROM监视器功能强大,能够完成设置断点、单步执行、查看寄存器、修改内存空间等各项调试功能。
        
    确定:同软件调试一样,使用ROM监视器目标机和宿主机必须建立通信连接。
        
    其原理图如图4.20所示。

    4.20  ROMMonitor调试方式

         采用ROMEmulator方式进行交叉调试时需要使用ROM仿真器,并且它通常被插入到目标机上的ROM插槽中,专门用于仿真目标机上的ROM芯片。
        
    在使用这种调试方式时,被调试程序首先下载到ROM仿真器中,因此等效于下载到目标机的ROM芯片上,然后在ROM仿真器中完成对目标程序的调试。
        
    优点:避免了每次修改程序后都必须重新烧写到目标机的ROM中。
        
    缺点:ROM仿真器本身比较昂贵,功能相对来讲又比较单一,只适应于某些特定场合。

    其原理如图4.21所示。

    4.21  ROMEmulator调试方式

         采用In-CircuitEmulatorICE)方式进行交叉调试时需要使用在线仿真器,它是目前最为有效的嵌入式系统的调试手段。它是仿照目标机上的CPU而专门设计的硬件,可以完全仿真处理器芯片的行为。仿真器与目标板可以通过仿真头连接,与宿主机可以通过串口、并口、网线或USB口等连接方式。由于仿真器自成体系,所以调试时既可以连接目标板,也可以不连接目标板。
        
    在线仿真器提供了非常丰富的调试功能。在使用在线仿真器进行调试的过程中,可以按顺序单步执行,也可以倒退执行,还可以实时查看所有需要的数据,从而给调试过程带来了很多的便利。嵌入式系统应用的一个显著特点是与现实世界中的硬件直接相关,并存在各种异变和事先未知的变化,从而给微处理器的指令执行带来各种不确定因素,这种不确定性在目前情况下只有通过在线仿真器才有可能发现。
        
    优点:功能强大,软硬件都可做到完全实时在线调试。
        
    缺点:价格昂贵。
        
    其原理如图4.22所示。

    4.22  ICE调试方式

         采用In-CircuitDebuggerICD)方式进行交叉调试时需要使用在线调试器。由于ICE的价格非常昂贵,并且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。一个比较好的解决办法是让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口发送调试命令和接收调试信息,完成调试过程。如使用非常广泛的ARM处理器的JTAG端口技术就是由此而诞生的。
         JTAG
    1985年指定的检测PCBIC芯片的一个标准。1990年被修改成为IEEE的一个标准,即IEEE1149.1JTAG标准所采用的主要技术为边界扫描技术,它的基本思想就是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。
        
    当芯片处于调试状态时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。对于芯片的输入管脚,可通过与之相连的边界扫描寄存器单元把信号(数据)加载到该管脚中去;对于芯片的输出管脚,可以通过与之相连的边界扫描寄存器单元捕获CAPTURE)该管脚的输出信号。这样,边界扫描寄存器提供了一个便捷的方式用于观测和控制所需要调试的芯片。
        
    现在较为高档的微处理器都带有JTAG接口,包括ARM7ARM9StrongARMDSP等,通过JTAG接口可以方便地对目标系统进行测试,同时,还可以实现Flash编程,这是非常受欢迎的。
        
    优点:连接简单,成本低。
        
    缺点:特性受制于芯片厂商。
        
    其原理如图4.23所示。

    4.23  JTAG调试方式

     

    开发流程框图:

    阶段

    流程图

    文档

    项目

    立项

    阶段

    任命项目经理

    成立项目团队小组

     

    项目建议书

    可行性分析

    市场信息反馈

     

    签发项目任务书

    可行性分析报告

    项目任务书

     

    项目

    总体

    规划

    产品定义

    系统分析

    各部需求分析

    需求分析评审

     

    确定里程碑

    编制质量控制计划

    编制项目计划书

    风险控制计划

    需求分析报告

    需求分析评审报告

    产品定义

    产品技术规范

    项目开发计划

    风险控制计划

    质量控制计划

    系统分析文档

    设计

    阶段

    系统分析评审

    硬件设计流程

    软件设计流程

    结构设计及制作流程图

    软件V1.0

    PCB V1.0

    T1

    工艺设计流程

    工艺说明

    T1

     

     

     

     

    评审,过程文件归档

    产品技术总体设计方案(包括工艺)

    系统分析评审报告

    软件设计过程文档

    硬件设计过程文档

    结构设计过程文档

    工艺设计过程文档

    软件V1.0

    PCB V1.0

    T1设计文档

    工艺说明

    分单元测试报告

     

    T1

     

    整机测试及评估

    软硬件及工艺调整版本升级

     

    FTA准备

    修模

    例试报告及分析

    装机报告

    少量装机

    装机准备

    装机报告

    例试分析报告

    整机测试评估报告

    软件FTA版本

    硬件FTA版本

     

     

    T2

    FTA

     

    修模

    软硬件及工艺调整版本升级

     

    CTA材料下单

     

    例试、整机测试及评估

    试产准备

    小批量试产

    FTA

    T2设计文档

    试产报告

    例试分析报告

    整机测试评估报告

    软件CTA版本

    硬件CTA版本

     

    T3

    CTA

     

    软硬件结构及工艺调整

    版本升级

     

    量产版本确定

     

    例试、整机测试评估

    试产准备

    CTA准备

    第二次试产

    CTA

    T3设计文档

    试产报告

    例试分析报告

    整机测试评估报告

     

    量产

    准备

    阶段

    生产工艺准备

    全套文件归档

    手工下单

    封样

    全套DVT报告

    工艺文件

    量产

    转移

    量产转移

     

    附录:1、结构设计及制作流程图

          2、软件设计流程图

          3、硬件设计流程图

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    附录1. 结构设计及制作流程图:

    阶段

    流程图

    表单

    3D模型修改

    结构

    制定结构设计进度计划表

    可行

    评估

    3D模型可行性评估

     

    3D模型评估报告

    结构设计进度表

     

    详细结构设计

    结构

    详细

    设计

     

    结构设计进展汇报

     


    结构设计修改

    结构设计内部评审

    结构设计进度表

     

     

     

     

    结构

    设计

    验证

    评审

     

    相关资料准备

    结构设计外部评审

    模具制作检讨

    working sample验证

    制作working sample

     

     

     

    签订商务合同

    开模

    结构设计修改

     

    结构设计内部评审记录

    workingsample配色表

    workingsample验收报告

    结构BOM

    结构设计外部评审记录

    模具制作检讨记录表

    模具制作申请表

    模具备品清单

    模具制作注意事项表

    工装夹具制作清单

    物料进度按排需求表

    配色方案表

    模具制作进度表

    参考文件:

    《工业设计流程》,《ID设计流程》

     

     

     

    附录2. 软件设计流程图:

    阶段

    流程图

    表单

    软件

    需求

    分析

    软件开发计划和配置管理计划进度计划表

    软件需求分析(包括技术风险评估)

     

    软件测试计划

    软件需求规格书

    软件开发计划

    软件开发风险控制计划

    软件测试计划

    软件

    详细

    设计

    详细软件设计

    内部设计评审

     

    软件详细设计说明书

    软件接口设计说明书

    软件设计内部评审记录

    软件

    实现

    测试

     

     

    编码调试

    编写测试用例

    单元测试

    软件集成/调试

     

     

     

    评审后发布并归档

    软件修订

    软件系统测试

    发布系统测试版本

    单元源代码

    单元调试报告

    单元测试用例

    单元测试分析报告

    集成后的软件及源代码

    软件集成调试报告

    软件操作手册

    系统测试软件

    系统测试用软件文档

    软件系统测试分析报告

    发布版本

    参考文件:

     

     

     

     

    附录3. 硬件设计流程图:

    阶段

    流程图

    表单

    硬件

    需求

    评估

    硬件开发计划和配置管理计划进度计划表

    硬件需求分析(包括技术风险评估)

     

    硬件测试计划

    硬件需求分析报告

    硬件开发计划

    硬件测试计划

    硬件

    详细

    设计

    详细硬件设计

    LCD认证流程

    关键器件采购

    PCB毛坯图设计

     

    内部设计评审

    硬件详细设计说明书

    硬件电路原理图

    硬件BOM

    硬件设计内部评审记录

    硬件

    实现

    测试

     

     

    软件

    投板前审查

    PCB布板流程

     

     

    打样、试产

    硬件调试

                                         

    硬件内部评审

    PCB贴片

     


    整机测试

    评审后发布并归档

    硬件修改

    PCB数据

    器件规格书

    硬件子系统软件

    装配图

    硬件单元测试分析报告

    电装总结报告

    硬件系统测试版本

    硬件系统测试分析报告

    硬件评审验证报告

    发布版本

    参考文件:

    1、         PCB布板流程图

    2、         LCD认证流程图


     

    PCB布板流程图:

    阶段

    硬件

    结构

    其他各部

    表单

    布板

    需求

    设计

    硬件电路原理图

    PCB布板设计

    结构尺寸要求

    项目需求/产品定义

     

    PCB

    确认

    投板前审查

     

    PCB GERBER

     

     

     

     

     

    PCB

    投板

    PCB投板

     

     

     

     

    参考文件:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    LCD认证流程图:

    阶段

    硬件

    结构

    其他各部

    表单

    样品

    提供

    样品需求

    SPEC

    LCD供应商数据收集和选择

     

    供应商提供样品

     

    尺寸

     

     

    各部

    确认

    各部确认?

    供应商供样

     

    与供应商沟通

     

    SPEC

     

    各部提出修改要求

    电性能SPEC

     

    尺寸确认

     

    软件确认

     

     

    装机

     

     

     

    是否通过?

     


      

     

     

       

     

        

     

    封样

     

    装机验证

     

     

     

     

     

     

    参考文件:


    软件开发规范

     

     

    Software Development Specification

     

     

     

     

     

     

     

    Version:  V1.0

    Date:        2010-06-22

     

     

     

    Prepared by

     

     

     

     

     

     


     

    Document Revision History文档修订记录

     

    VERSION版本

    DATE

    日期

    DESCRIPTION

    内容说明

    INDIVIDUAL

    修订人

    1.0

    2010-06-22

    初稿

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     

    1         Introduction 简介

     

    一个成熟稳定的组织或者团队,能够减少风险,经常地成功地达成目标。成功的含义是:按时、预算内【即符合成本要求】、符合质量要求。换言之,成熟稳定的团队,能够避免以下问题:

    Ø         组织方面出现问题

    Ø         对需求缺乏管理

    Ø         缺乏计划和控制

    Ø         估算错误

    同时,还要在以下几个方面做得比较出色:

    Ø         人员调度与工作安排

    Ø         工作量估计

    Ø         预算管理

    Ø         责权分配与平衡

    Ø         执行与监控

    Ø         沟通

     

    本文档是软件开发规范,力求使团队打下一个良好的基础,以便逐步成长为成熟稳定的团队。团队需要一个逐步标准、规范的开发过程,在这个过程中,团队得到锻炼,成员能力得到提高,风险得到控制。

    主要内容是:

    Ø         定义软件开发的流程;

    Ø         定义软件开发的文档格式;

    Ø         定义涉及的角色;

    Ø         定义涉及的信息;

    Ø         描述开发流程;

     

    1.1        Purpose 目标

     

    本文档的目标是:

    Ø         统一软件开发团队的流程、文档;

    Ø         促进团队成员的沟通,减少误解;

    Ø         促使程序员书写易维护的代码;

    Ø         提高代码编写效率;

    Ø         使每个成员成为一个高效的程序员;


     

    1.2        Scope 范围

     

    本文档,包含:

    Ø         项目管理的流程;

    n     项目策划

    n     项目追踪

    n     配置管理

    n     质量保证

    n     同行评审

    Ø         涉及文档;

    n     项目计划mpp

    n     需求规格说明书SRS

    n     Delphi估算

    n     项目状态报告

    n     配置库样式

    n     CheckList

    n     评审表

    n     变更申请表

    Ø         开发工具的规范;

    n     数据库设计工具

    n     功能设计工具

    n     IDE

    n     配置工具

     

     

    1.3        Definitions, Acronyms, and Abbreviations. 术语,缩略词

     

    Ø         SPP    项目策划Software Project Planning

    Ø         SPTO       项目追踪Software Project Tracking & Oversight

    Ø         SCM    配置管理Software Configuration Management

    Ø         SQA    质量保证Software Quality Assurance

    Ø         PR         同行评审Peer Review

    Ø         BaseLine   基线

    Ø         SCCB       软件配置控制委员会Software Configuration Control Board

    Ø         CR         变更请求Change Request

    Ø         SDLC       软件开发生命周期Software Development Life Cycle

    Ø         RUP    统一开发过程Rational Unified Process

    Ø         XP         极限【敏捷方法】eXtreme Programming

    Ø         TDD    测试驱动Test Driven Development

     

    1.4        References 引用

     

    CMM2

    CMM3

    1.5        Overview 文档组织

     

    本文档主要分为四大部分:

    Ø         概述;

    描述了团队组织开发过程的高层视图;

     

    Ø         TSPPSP

    按照团队和个人描述流程规范;

     

    Ø         工具规范;

    描述了开发工具的详细规范;

     

    Ø         文档;

    涉及的文档格式;

     


     

    2         The Overall Description 概述

     

    本部分是开发团队开发过程的高层描述。它描述了开发过程规范的背景,用来和所有涉及各方就基本过程达成共识。

     

    2.1        Software Development Organizing 开发团队组织结构

     

     

     

    说明:                表示公司的行政部门                                 表示公司的逻辑部门 

                                实线表示参加产品实现的组织和人员(不表示所属关系)

                    虚线表示工作的汇报关系,如SQAESQA经理汇报。

     


     

    2.2        Project Base Process 项目基本流程

     

    识别需求

    提出解决方案

    执行项目

    结束项目

    可行性分析报告

    需求建议书

    合同

    项目目标

         项目定义            制定计划                        计划实施                                    项目终止

    时间

    基本流程说明:

    Ø         项目启动:本阶段主要是进行可行性分析,定义项目,识别需求;

    Ø         制定计划:本阶段主要是计划策划,估算工作量,制定具体的可执行的计划;

    Ø         计划实施:本阶段主要是实施计划,完成计划中的各项任务,报告计划状态;

    Ø         项目终止:计划执行完毕,总结项目;

    2.3        CMM Base Process CMM基本过程

     

    SCM

    SQA

    Work Area

    BaseLine

    SPP

    SPTO

    PR

    Change & PR

    基本过程说明:

    Ø         SCM:软件配置管理,所有活动的基础,一切制品必须放入配置库;

    Ø         SPP   软件项目策划,估算工作量,制定详细计划【项目的制定计划阶段】;

    Ø         SPTO:项目追踪,报告项目状态,评估并更新计划【项目的计划实施阶段】;

    Ø         PR     同行评审,进入基线的前提条件,降低风险,提高质量的有效手段;

    Ø         SQA  质量保证,预防风险的有效手段;

     

    2.3.1      SCM软件配置管理

     

    配置管理主要解决:

    Ø         版本

    Ø         变更

    确定配置项和基线

    确定记录和报告配置项状态策略

    定义配置项

    定义访问权限访问权限

    确定配置管理工具

    确定SCCB成员

    确定配置库及其目录结构

    项目启动

    确定配置管理人员

    VssSVNVSTS

    一般由:项目经理、技术经理、客户经理、质量保证人员、配置管理等项目的核心成员人员组成。

    在配置项(基线)生成和基线变更时

    配置库结构

    权限表

    基线表

    确定基线变更过程

     

     

    定义备份与病毒策略

    按计划执行配置

    管理活动

    SCM计划制定和评审

    记录和报告基线的状态

    在配置项(基线)生成和基线变更时

    至少在项目的每个里程碑结束时进行备份

    1建立配置库

    2对项目组指导和培训

    3对配置项的日常管理

    4参加评审会议

    5定期备份和病毒防护

    6实施发布

    7进行归档

    8配置管理计划的维护

    配置管理情况总结

    计划完成

    总结配置项是否完整、基线的变化情况统计、审核发现问题情况统计、改进建议等,记入项目总结报告

    定义测试和发布归档方式

    SCM计划

    配置审核

    状态报告

    审核报告

     

     

    2.3.2      SPP 计划策划

     

    计划策划的核心是工作量估算


     

    从历史库中识别可用的信息

    项目启动

    从公司的数据中识别项目相似的信息,如项目的总结报告和其它的数据或文挡

    项目需求、合同以及《软件项目任务书》等相关要求

    选择项目生命周期

     

    识别项目的特点

     

    了解各个生命周期的特点

     

    确定适合项目生命周期模型

    从对用户需求的理解是否充分人员介入项目的方式产品的交付方式项目规模大小和风险高低对项目系统架构的理解是否充分等方面考虑

     

     

    RUP

    XP

    RUP

    XP

    依据定义的过程,识别必须完成的任务和工作产品

    分解时考虑的活动事项要详尽,不要漏掉:教育或培训的需要参与评审文档参与项目会议确定、记录和显示各种与质量相关和与过程相关的数据传播时间

    文档制品

    如:计划、SRS

     

    规模估算

    制定工作产品的评审计划

    估算表

    估算结果

     

    评审计划

     

     

     


     

    识别项目需要使用的工具和设施

    风险评估

    识别与其他组之间的关系

    确定项目的跟踪情况

    确定项目的组织结构和职责

    识别项目需要进行的培训

    制定时间进度表

    在已知的停工和节假日时间不安排工作;不考虑加班时间;考虑测试及评审中发现问题的返工需要的时间;考虑客户需求的稳定情况;考虑各项活动的交接和信息的传递时间;识别出的风险对活动的影响;在安排工作时应考虑整个项目的效率因素,在正常估算的工期内增加2040%的余量,分配到项目的所有活动中――特别是关键路径中的活动中

     

    工具指南

     

    风险表

     

    协同工作计划

     

    项目跟踪计划

     

    组织和角色定义

     

    培训计划

     

    时间进度表


    编写项目开发计划书及其相关计划书

    计划评审

    计划管理和控制

    SQA计划

    SCM计划

    SDP计划

    Test计划

    风险计划

     

     

     

     

    2.3.3      SPTO项目追踪

     

    软件项目开发计划

    日常进度跟踪

    定期报告项目状态

    周例会

    里程碑总结

    需要调整计划

    修改和评审计划

    纠正和预防

    当出现:

    规模、工作量、进度和关键计算机资源超出规定的阈值项目总的原始计划不再可能达到计划和实际的任务安排明显不相符,起不到指导作用对客户的承诺不能实现时

    并满足下列条件时:

    导致计划变化的原因是知道的,并清楚计划怎么样改变提议的项目进度计划变动是可达到的提议的项目进度计划已经得到了必须完成他的人员的许诺

    在周例会上向项目组的成员传达客户方面的信息、交流项目近期进展情况、未完成的工作、工作中存在的问题、好的经验以及部署下两周的工作,以使得计划和实际的开发工作相符合

    总结到目前为止项目开发总体状况、项目活动进展情况(一般通过甘特图来体现)、活动项进展(应特别关注未完成活动项)、本阶段好的经验和典型问题、过程改进建议、客户方面新要求,项目评审、培训执行情况、项目风险等其它方面存在的问题,分析在进度、工作量和缺陷等方面收集的数据并根据情况制定相应的措施和调整时间进度表,保持项目正常、健康开发

    个人工作周报

    时间进度表

    数据收集

    其它组跟踪

    周报告

    分析和预测

    里程碑报告

    项目总结

    项目总结报告

     

     

    2.3.4      PR同行评审

     

    评审准备

    制定本次评审计划

    评审跟踪

    正式评审

    评审人员进行预审,在指定的时间内给出预审意见,反馈给评审组长和作者。

    评审组长将缺陷(或问题)及工作量汇总填入《评审报告》。

    要评审的文档已经完成且文档符合标准模板要求,项目经理指定评审组长,发放工作产品及参考资料,必要时确定评审重点(参见评审指南)

    工作产品评审计划

    将报告抄送相关人员

    项目经理组织解决发现的缺陷(或问题)

    作者根据评审结果进行必要的改进

    验证人验证最终修正

    评审通过的产品作为基线的要得到SCCB批准

    评审通知表

    个人评审表

    评审报告

     

     

    2.3.5      SQA质量保证

     

    软件项目启动

    指定SQAE

    制定质量保证计划并评审通过

    进行审核

    发现不符合项

    计划完成?

    No

    Yes

    制定质量审核计划

    详细的审核时间安排至少在正式审核前2天发给项目经理或技术经理、SQA经理审核、得到项目或技术经理认可

    询问相关人员,对项目组的过程执行情况进行审核

    检查文档和其他一切相关的证据,验证项目组的活动

    总结审核情况

    将报告初稿与项目经理及有关人员进行讨论,落实问题负责人;

    形成正式报告后发送给高级管理者、SQA经理、项目经理、项目成员等相关人员

    项目质量保证情况总结

    SQA计划

    SQA审核计划

    CheckList

    SQA审核报告

    SQA差异报告

     

     

    2.4        SDLC 生命周期选择

     

    当前比较成熟稳定的SDLC是:

    Ø         WaterFall

    Ø         RUP

    Ø         XP

     

    其中:RUPXP是迭代式开发过程,风险是可控的。

    Ø         RUP的优点是过程清晰、文档齐全,但是过于庞杂,比较适合大规模的团队;

    Ø         XP的优点是过程简洁、推崇简单,但是不注重文档,难于交接,适合小规模团队。

     

    对于中等规模的团队来说,应该基于RUPXP,进行裁剪,找到适合的SDLC

    Ø         SDLC的核心是:迭代式和TDD

    Ø         从全局看:

    n     Use-Case Driven用例驱动

    n     基于Architecture

    n     迭代和递增的

    Ø         从微观看:

    n     TDD测试驱动

    n     ReFactor重构

    n     Pair结对编程

     


     

    2.5        Development Process 开发过程

     

    需求

    分析

    概要

    设计

    详细

    设计

    编码

    单元

    测试

    集成

    测试

    集成测试计划

    系统测试计划

    系统

    测试

    验收

    测试

    形成

    文档

    发布

    维护

    SRS

    HLD

    CODE

    DD

     

    软件配置管理

    软件质量管理

    评审管理

     

    2.5.1      Development Phase 开发阶段

     

    Ø         需求分析阶段

    n     需求收集

    n     需求总结

    Ø         总体设计阶段

    n     总体架构

    n     部署模型

    Ø         概要设计阶段

    n     模块划分

    n     数据库设计

    Ø         详细设计阶段

    n     具体实现

    Ø         编码阶段

    n     测试用例

    n     Coding

    n     单元测试

    Ø         测试阶段

    n     测试用例

    n     测试

    n     修正

    Ø         发布阶段

    n     安装测试

    n     安装系统

    n     维护

     

    2.5.2      Phase Product 阶段制品

     

    Ø         需求阶段

    n     SRS:需求规格说明书

    Ø         总体设计阶段

    n     总体设计说明书

    Ø         概要设计阶段

    n     HLD:概要设计说明书

    n     DB:数据库设计

    n     DFD:数据流图

    n     UI:用户界面

    Ø         详细设计阶段

    n     DD:详细设计说明书

    Ø         编码阶段

    n     Test Case:测试用例

    n     Coding:源代码

    n     UT Test Result:单元测试报告

    Ø         测试阶段

    n     Test Task:测试任务书

    n     Test Case:测试用例

    n     Test Result:测试报告

    n     Test Approvals:测试总结

    Ø         发布阶段

    n     发布申请书

    Ø          

     

     


    Role Duty 角色职责

     

    角色

    责任

    研发经理

    【研发团队】

    为软件项目提供足够的资源.

    保证SQA小组的独立性.

    解决SQA检查时发现的问题.

    审批对外的承诺。

    定期审查SCMSQA、项目计划和跟踪的相关活动。

    规定系统需求;将系统需求分配给硬件、软件和其他成分;规定硬件、软件和其他成分的界面;

    监控设计和开发以保证他们符合其规格说明;

    代表公司下达任务书。

    SA团队

    负责网络工程计划的制定及实施;

    负责对客户的技术支持与培训;

    负责工程服务部内部人员素质与技术培训

    负责系统集成工程标识、测试、验收及质量保证;

    负责硬件、网络和系统软件产品的最后交付;

    负责组织自产软件储运、防护、交付和安装;

    负责工程项目的配置管理

    QA

    研究制定测试规范和方案;

    参加实施测试和质量保证过程;

    对系统测试中发现的缺陷进行验证;

    负责组织软件项目任务书、开发计划、里程碑等管理评审;

    负责公司的配置管理;

    项目经理

    负责软件和硬件整个项目的协调、管理

    进行需求分析,并进行文档的编写

    组织技术评审等活动

    组织制定项目开发计划(SDP)、风险管理计划等计划

    配合与协调SQASCM小组的活动.

    管理项目组,执行SQA方针和过程以及SDP.

    监督和跟踪SDP、项目估算

    SA

    负责硬件工程的实施;

    负责系统的上线;

    负责系统的维护;

     

     

     

     

    SCCB

    授权建立软件基线和标识配置项/单元;

    审查和审定对软件基线的更改;

    审定由软件基线库制造的产品的生成。

    SCM

    协助软件项目经理制定SCM计划、维护SCM 计划;

    制定并维护项目标识规范;按时归档配置项;

    标识并管理置于配置管理过程之下的软件工作产品集合;

    进行软件项目的软件基线生成、管理和备份;

    软件配置状态的统计和审计,并向项目组、软件项目经理、高级管理者汇报有关活动情况;

    将基线的变更情况通知受影响的组和个人;

    保存并管理各项评审记录、与项目相关的技术文档、标准和规程。

    SQC

    依据测试计划模板制定测试计划.

    执行测试计划进行测试并记录测试发现的缺陷

    提供测试报告.

    SQA

    主要是策划软件质量保证活动、检验软件产品或活动对可用的标准、需求和规则的遵守程度、组织处理项目内部不能解决的不一致问题;

    定期报告检查情况,发现偏差组织制定纠正、预防措施并监督更正;

    参与制定SQA计划,实施SQA活动,并向SQA经理、软件项目经理项目组、高级管理者汇报有关的情况。

    DBA

    负责DB的创建和维护;

    DE提供一个稳定的环境;

    DE

    按软件开发计划进行开发,并记录相关数据;

    遵守公司质量管理体系的要求.

    Deployer

    根据发布申请,提取代码,发布系统

    SADBA一起配置环境

    重构和重建系统

     

     

    2.6        Constraints 限制

     

     

     


     

    3         Specific Requirements 详细描述

     

    本部分按照角色划分详细描述开发过程。

     

     

    3.1        Precondition 前提

     

    3.1.1      SCM配置库

     

    Ø         目录结构

    n     开发库:开发工作区文档和代码

    u       项目文档

    l         项目启动

    l         项目策划

    l         项目计划

    l         项目报告

    u       开发文档

    l         需求

    l         设计

    l         测试

    u       代码

    l         代码目录

    u       参考资料

    l         客户资料等等

    n     基线库:评审通过后的文档

    u       《文档同开发库》

    n     测试库:测试代码和测试发布包

    u       文档

    l         计划

    l         用例

    l         测试报告

    u       代码

    l         版本1

    l         版本2

    u       参考资料

    n     产品库:测试通过后的文档和代码

    u       项目交付制品

    l         项目总结

    l         验收报告

    l         。。。

    u       项目产品

    l         版本1

    l         版本2

    Ø         权限

    n     测试库:

    u       测试人员可以读写

    u       其它人员只能读,不能增加、修改和删除

    u        

    n     基线库:只能增加,不能删除和修改

    n     产品库:只能增加,不能删除和修改

    n     开发库:

     

     

    3.1.2      Test Environment 测试环境

     

    Ø         测试需要一个独立的环境

    n     DB独立

    n     FTP等资源独立

    n     Pass9等外部系统独立

    Ø         最好是一个单独的局域网环境,完全和开发分开

    n     开发是172.18.0.0环境

    n     测试是192.168.0.0环境

    Ø         每次测试,应当是一个完整的测试过程

    n     安装系统

    u       DB

    u       Web

    u       AppServer

    u       Client

    u       其它

    n     配置系统

    u       DB配置

    u       AppServer配置

    n     系统初始化

    u       清除所有历史数据

    u       执行初始化脚本,插入初始数据

    n     测试系统

     

     

    3.2        Development Control Process 开发控制流程

     

    3.2.1      项目启动和策划阶段

     

    本阶段的关键是定义项目、估算工作量和制定详细计划。

     

    一个软件项目的正式启动从《软件项目任务书》的下达开始。任务书中写明项目的基本信息及相关责任人和详细分工,规定项目必须提交的产品清单。任务书由研发经理或者项目负责人起草,研发经理批准后下达给相关负责人。项目任务书必须为打印纸质文档,由相关人员签字确认后,入配置管理库归档。

     

    软件项目任务书主要作用是明确项目人员职责以及各组之间的协调确认。

     

    估算工作量,从确认需求后开始。由项目经理指定评估人员,先按照头脑风暴法估计各个子系统或者模块的难易程度,然后按照Delphi法估算各个部分的工作量。

     

    项目经理和PMO成员,根据估算的工作量,制定项目计划。

     

    SQASCM分别制定各自的计划。

    SCM需要确定资源库的目录结构和权限结构。

     

    项目经理召集PMOSQASCM评审及审核项目计划、SQA计划、SQA审核计划、SCM计划和测试计划。

     

    对于发布后的一般性程序修改,不需要下达软件项目任务书。对于关系重大,需要各组人员协调工作的重大修改,项目负责人可以以任务书的形式明确职责、协调关系。

     

    测试负责人评估测试资源【人员及机器】,并决定测试人员是否介入项目的需求分析和设计阶段。

     

    3.2.2      需求分析、设计、编码阶段

     

    本阶段的关键是评审和修订控制,关键评审需要需求、设计、编码、测试、项目管理、用户等的参与。

     

    需求阶段,需求分析人员收集需求,根据SRS模版,作出需求规格说明书。

    设计阶段,设计人员根据总体设计、概要设计、数据库设计和详细设计,作出设计文档。

    编码阶段,编码人员根据详细设计,设计单元测试用例,编写代码,进行单元测试。

     

    关键评审:SRS评审,设计评审,代码走查

     

    3.2.3      提交测试阶段

     

    项目启动后,项目经理填写测试任务通知单,将测试任务下达给测试组。概要设计评审完成后,由各子系统或者模块的负责人测算完成时间,在确定完成时间后(正式开始编码前)将测试任务通知单提交给项目测试负责人,项目测试负责人审核通过在通知单上签字后返回给子项目负责人。开发及单元测试完成后,由开发人员将测试内容提交配置管理员入测试库后,将测试任务通知单提交给发布人员申请测试发布。发布人员将测试库中本次测试的内容发布到测试机后,在测试任务通知单上签字后,提交给测试人员开始测试。

     

    测试完成后,测试人员在任务单上填写测试意见后,交测试负责人确认后,返还给开发人员。

     

    如测试没有通过,开发人员修改测试内容,进入下一个测试流程。

     

    如通过测试,开发人员将测试任务通知单提交给项目负责人,由项目负责人、SCCB签字确认后,提交配置管理员将测试内容入基线库。

     

    过程关键:发布实施人员确保发布到测试机上的源程序在配置管理库中得到了有效的标识。

     

    3.2.4      生产发布、终测

     

    程序通过测试入库以后,根据需要,由项目的负责人负责填写发布申请单。发布申请单由项目测试负责人、配置管理员、SCCB、客户代表、研发经理签字确认后,由项目负责人提交给实施发布人员。发布人员拿到签完字的发布申请后,才能从基线库中提取程序向生产机上发布。如以上发布确认人员没有全部签字同意发布,必须由项目经理签字同意后发布。

     

    程序发布到生产机上以后,进入终测【UAT】流程。测试人员和用户代表要对生产机上的程序进行最后测试,确保生产机上的系统符合需求。项目负责人负责同用户协调,项目负责人、测试人员和用户共同编写测试用例。项目负责人将《终测意见书》提交三方签字,根据签字意见决定修订系统或者提交正式发布。

     

    终测出现的问题修改按照基线变更流程进行。

     

    实施人员只有拿到有三方签字的《终测意见书》后才能将系统正式公开发布。系统正式发布三天之后一周之内,由实施人员负责到用户处取得有用户主要负责人签字的《系统运行报告》,项目负责人负责监督执行。根据《系统运行报告》做相应的处理。

     

    过程关键:发布到生产机上的程序都在基线库中得到了有效的标识。

     

    3.2.5      发布后问题反馈修改过程

     

    系统发布之后,用户反馈的意见要形成问题清单或者变更申请单,记录需要修改的地方,提交给项目负责人。项目负责人负责判断改动是否会影响需求或者设计,负责将任务分配给相关人员进行修改。修改完成后,提交测试直至发布。

     

    这个阶段的最重要的是保证所做的修改(文档、代码)都在配置管理库的基线库中得到体现。即基线库中的文档和代码要进行同步更新,关键是发布人员严格根据发布申请单进行控制,并确保发布的代码都是从基线库中取出的。没有经过流程直接要求发布的,发布人员必须予以拒绝。


    3.3        TSP 团队软件过程

    3.3.1      会议组织

     

    Ø         会议前,确定会议主持人和记录员

    Ø         向参与会议人员发送会议资料

    Ø         参与会议人员阅读会议资料

    Ø         确定会议主题、日期时间和地点

    n     注意:留出阅读资料的时间

    Ø         确定会议议程

    Ø         准备会议用品【如投影仪等】

    Ø         重要会议,需要签到

    Ø         会议开始前,申明会议纪律

    n     发言时间限制

    n     发言顺序

    n     除主持人外,不得打断别人

    Ø         记录员记录会议纪要

    Ø         会议后,发送会议总结

     

    3.3.2      沟通问题

     

    Ø         原则

    n     目标明确

    n     明确反馈

    n     反复沟通

    Ø         请求-答复

    n     当有疑问时,发出请求

    n     明确求助对象,指定第一对象和辅助对象

    n     第一对象接收到请求后,不能及时答复的应当转发给自己认为合适的答复人,并告知求助人

    n     求助方式【高-低】:当面,电话,邮件

    Ø         公告

     

    3.3.3      代码走查

     

    Ø         项目负责人指定代码走查对象

    n     相互走查

    n     循环走查

    Ø         代码走查发现的问题

    n     首先记录

    n     告知代码作者

    Ø         更新CheckList

     

    3.3.4      其它

    3.4        PSP 个人软件过程

    3.4.1      工作原则

     

    Ø         计划管理:把你想做的写下来

    Ø         行为管理:按照你写下来的去做

    Ø         报告管理:把做的事情记录下来

    Ø         跟踪管理:出现的问题要设法解决

     

     

    3.4.2      日常工作

     

    Ø         每日工作

    n     每日早晨,规划当日工作;

    u       计划必须细化到一个明确的目标

    u       计划要有余地,比如会议等

    u       计划是可执行的,能够完成的

    u       计划是可监控的

    n     每日下班,总结当日工作;

    u       计划完成情况

    u       未能完成原因

    u       个人心得:新的发现,新的方法,新的问题

     

    Ø         会议

    n     会议之前,仔细阅读会议资料

    n     如有疑问,可以发邮件向会议主持人提出

    n     或者在会议上提出

    n     会议中,记录会议要点

    n     如要参与讨论,请在别人发言结束后发言,不要打断别人

    n     会议后,如有新的想法,发邮件或者当面向会议主持人提出

     

    Ø         求助

    n     如果一个问题20分钟还不能理出一个头绪,应当立即求助

    n     求助对象:

    u       个人认为能够解决该问题的人为第一对象

    u       不能确认的,项目负责人为第一求助对象

    n     发出求助后,个人负责追踪求助,直到解决

     

    Ø         报告

    n     认为个人负责的任务不能按时完成的,应当立即报告给负责人

    u       重要任务:Leader和项目负责人

    u       其它任务:Leader

    n     提前期:

    u       重要任务:至少提前3

    u       其它任务:至少提前任务期的1/3

     

    3.4.3      DE 开发工程师

     

    Ø         接受任务

    Ø         阅读详细设计文档

    n     SCM获取详细设计文档

    n     阅读文档

    n     如有疑问,向设计人员请教

    Ø         规划个人开发计划

    n     估计开发工作量

    n     制定计划

    u       单元测试用例

    u       代码

    u       单元测试

    n     和负责人协商

    n     提交SCM

    Ø         设计单元测试用例

    n     SCM获取测试用例模版

    n     编写测试用例

    n     提交SCM

    Ø         编写代码

    n     SCM获取代码库

    n     编写代码

    n     本地调试

    n     提交SCM

    Ø         单元测试

    n     代码发布到开发机

    n     DBA协助

    n     如果有其它模块,请负责人协调

    n     测试

    Ø         代码走查

    n     根据负责人安排,检查他人的代码

    n     和代码作者讨论代码

    n     填写走查报告

    Ø         提交代码

    n     提交SCM

    n     Tag或者其它标记,以便提交集成测试

    3.4.4      SCME 配置管理员

     

    Ø         规划SCM

    n     资源库目录结构

    n     权限

    n     基线

    n     备份

    Ø         基线

    n     经过评审

    n     发送通知

    n     转移资源到相应基线

    Ø         变更管理

    n     接收变更申请

    n     SCCB发送申请

    n     申请通过后,发送变更通知

    n     提取基线到工作区

     

    3.4.5      DBA 数据库管理员

     

    Ø         规划DB的管理

    n     DB的大小

    n     权限划分

    n     备份和恢复

    n     建立DB脚本

    n     SCM协商进入SCM的资源

    Ø         管理DB

    n     建立DB

    n     建立权限

    n     评审数据库设计

    n     导入和导出数据

    n     建立Tableviewindex

    n      

     

    3.4.6      Deployer 发布人员

     

    Ø         规划

    n     发布策略

    n     发布脚本

    n     发布计划

    Ø         重构和重建

    n     根据项目特点制定重构和重建计划

    n     编写重建脚本

    n     编写测试脚本

    n     SCM提取资源

    n     重建系统

    n     执行测试脚本

    Ø         发布

    n     接收发布任务书

    n     SCM提取资源

    n     DBA建立DB

    n     SA建立环境

    n     发布系统

    4         Tool Specification 工具规范

     

    4.1        通用工具

     

    Ø         会议报告

    n     PPT

    n     Word

    n     MPP

    Ø         会议记录

    n     Word

    Ø         CheckList

    n     Excel

     

    4.2        计划

     

    Ø         项目计划

    n     MPP

    Ø         风险计划

    n     Word

     

    4.3        需求分析

     

    Ø         SRS文档

    n     Word

    Ø         Use Case

    n     Rational Rose

    Ø         对象图

    n     Rational Rose

    Ø         序列图

    n     Rational Rose

    Ø         流程图

    n     Visio

     

    4.4        设计

     

    Ø         总体设计

    n     Word

    n     Rational Rose

    Ø         概要设计

    n     Word

    n     Rational Rose

    Ø         数据库设计

    n     Visio

    Ø         详细设计

    n     Word

     

    4.5        编码

     

    Ø         测试用例

    n     Word

    Ø         编码

    n     Visual Studio 2005

    Ø         单元测试

    n     Word

     

    4.6        测试

     

    Ø         Test Director

     


     

    5         Documents 文档

     

    5.1        项目管理文档

     

    5.1.1      项目策划

     

    Ø         Delphi估算表

    Ø         项目计划模版

    Ø         测试计划模版

    Ø         项目清单

     

    5.1.2      项目追踪

     

    Ø         项目日进度报告

    Ø         项目周报

    Ø         项目周计划报告

    Ø         项目月度报告

    Ø         项目月度状态报告

    Ø         签到簿

     

    5.1.3      质量保证

     

    Ø         项目策划过程检查表

    Ø         配置管理活动检查表

    Ø         项目跟踪情况检查表

     

    5.1.4      项目终止

     

    Ø         软件合格验收标准

    Ø         项目验收报告

     

     

    5.2        开发过程文档

     

    5.2.1      软件配置管理

     

    Ø         软件配置管理工具

    Ø         变更申请表

    Ø         变更通知单

     

     

    5.2.2      会议管理

     

    Ø         会议记录

    5.2.3      计划跟踪

     

    Ø         开发计划

    Ø         测试计划

    Ø         工作日志

    5.2.4      评审管理

     

    Ø         评审指南

    Ø         评审申请表

    Ø         个人评审记录

    Ø         评审报告

    5.2.5      质量管理

     

    Ø         文档编写规范

    Ø         SRS

    Ø         总体设计报告

    Ø         概要设计报告

    Ø         详细设计报告

    Ø         编码规范

    5.2.6      测试过程

     

    Ø         测试用例

    Ø         测试报告

     

     

    5.2.7      问题解决过程

     

    Ø         问题跟踪表

    Ø         软件项目任务书

    Ø         测试任务通知单

    Ø         发布申请单

    Ø         系统运行报告

    Ø         终测意见书

    5.2.8      其他

     

    Ø         用户手册

    6         Appendix附录

    6.1        易于理解的代码

    Ø         经常注释

    Ø         注释内容是做了什么,不能是为什么做

    Ø         检查错误,尤其是函数入口

    Ø         变量名要简洁易懂

    Ø         经常使用Static常量

    6.2        Log输出

     

    Ø         截获抛出异常的地方,要输出Error

    Ø         返回True/False的方法,如果返回False,要输出Debug

    Ø         所有调用其它系统接口的地方,都要输出Info,内容是参数和返回值;

    Ø         输出前,判断是否允许输出,比如:isDebugEnabled

     

    展开全文
  • 很多新手学习嵌入式系统,不清楚那么多方向舵知识和参考书,该从哪里开始学习。... 这是我在ITjob培训网上找到的课程大纲,觉得作为嵌入式系统开发的学习步骤,按部就班地去施行和学习,到不失为一种好的

    转自:http://blog.csdn.net/wwang196988/article/details/6888597

    很多新手学习嵌入式系统,不清楚那么多方向舵知识和参考书,该从哪里开始学习。入手了,却又在该先学习什么后学习什么上失去方向。这里有你想要的答案,帮你指点迷经。 这是我在ITjob培训网上找到的课程大纲,觉得作为嵌入式系统开发的学习步骤,按部就班地去施行和学习,到不失为一种好的学习方法:) 就算是作为参考也是有很好的价值的!

    随着现代社会信息化进程的加快,嵌入式系统被广泛的地应用于军事、家用、工业、商业、办公、医疗等社会各个方面,表现出很强的投资价值。从国际范围来看,作为数字化电子信息产品核心的嵌入式系统目前其硬件和软件开发工具市场已经突破2000亿美元,嵌入式系统带来的全球工业年产值更是达到了一万亿美元,随着全球经济的持续增长以及信息化的加速发展,嵌入式系统市场必将进一步增长。

    本课程是为了适应目前发展迅速的嵌入式Linux需求而设计,课程目标是让学员达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质。课程循序渐进的带领您嵌入式开发的世界,采用了目前应用最广泛的软硬件开发平台(Linux和Arm),可以保证您尽量贴近目前企业需求。

    学习步骤如下:
    1、Linux 基础

    安装Linux操作系统
    Linux文件系统
    Linux常用命令
    Linux启动过程详解
    熟悉Linux服务能够独立安装Linux操作系统
    能够熟练使用Linux系统的基本命令
    认识Linux系统的常用服务安装Linux操作系统
    Linux基本命令实践
    设置Linux环境变量
    定制Linux的服务 Shell 编程基础使用vi编辑文件
    使用Emacs编辑文件
    使用其他编辑器

    2、Shell 编程基础

    Shell简介
    认识后台程序
    Bash编程熟悉Linux系统下的编辑环境
    熟悉Linux下的各种Shell
    熟练进行shell编程熟悉vi基本操作
    熟悉Emacs的基本操作
    比较不同shell的区别
    编写一个测试服务器是否连通的shell脚本程序
    编写一个查看进程是否存在的shell脚本程序
    编写一个带有循环语句的shell脚本程序

    3、Linux 下的 C 编程基础

    linux C语言环境概述
    Gcc使用方法
    Gdb调试技术
    Autoconf
    Automake
    Makefile
    代码优化 熟悉Linux系统下的开发环境
    熟悉Gcc编译器
    熟悉Makefile规则编写Hello,World程序
    使用 make命令编译程序
    编写带有一个循环的程序
    调试一个有问题的程序

    4、嵌入式系统开发基础

    嵌入式系统概述
    交叉编译
    配置TFTP服务
    配置NFS服务
    下载Bootloader和内核
    嵌入式Linux应用软件开发流程
    熟悉嵌入式系统概念以及开发流程
    建立嵌入式系统开发环境制作cross_gcc工具链
    编译并下载U-boot
    编译并下载Linux内核
    编译并下载Linux应用程序
    嵌入式系统移植
    Linux内核代码
    平台相关代码分析
    ARM平台介绍
    平台移植的关键技术
    移植Linux内核到 ARM平台 了解移植的概念
    能够移植Linux内核移植Linux2.6内核到 ARM9开发板

    5、嵌入式 Linux 下串口通信

    串行I/O的基本概念
    嵌入式Linux应用软件开发流程
    Linux系统的文件和设备
    与文件相关的系统调用
    配置超级终端和MiniCOM 能够熟悉进行串口通信
    熟悉文件I/O 编写串口通信程序
    编写多串口通信程序

    6、嵌入式系统中多进程程序设计

    Linux系统进程概述
    嵌入式系统的进程特点
    进程操作
    守护进程
    相关的系统调用了解Linux系统中进程的概念
    能够编写多进程程序编写多进程程序
    编写一个守护进程程序
    sleep系统调用任务管理、同步与通信 Linux任务概述
    任务调度
    管道
    信号
    共享内存
    任务管理 API 了解Linux系统任务管理机制
    熟悉进程间通信的几种方式
    熟悉嵌入式Linux中的任务间同步与通信
    编写一个简单的管道程序实现文件传输
    编写一个使用共享内存的程序

    7、嵌入式系统中多线程程序设计

    线程的基础知识
    多线程编程方法
    线程应用中的同步问题了解线程的概念
    能够编写简单的多线程程序编写一个多线程程序

    8、嵌入式 Linux 网络编程

    网络基础知识
    嵌入式Linux中TCP/IP网络结构
    socket 编程
    常用 API函数
    分析Ping命令的实现
    基本UDP套接口编程
    许可证管理
    PPP协议
    GPRS 了解嵌入式Linux网络体系结构
    能够进行嵌入式Linux环境下的socket 编程
    熟悉UDP协议、PPP协议
    熟悉GPRS 使用socket 编写代理服务器
    使用socket 编写路由器
    编写许可证服务器
    指出TCP和UDP的优缺点
    编写一个web服务器
    编写一个运行在 ARM平台的网络播放器

    9、GUI 程序开发

    GUI基础
    嵌入式系统GUI类型
    编译QT
    进行QT开发熟悉嵌入式系统常用的GUI
    能够进行QT编程使用QT编写“Hello,World”程序
    调试一个加入信号/槽的实例
    通过重载QWidget 类方法处理事件

    10、Linux 字符设备驱动程序

    设备驱动程序基础知识
    Linux系统的模块
    字符设备驱动分析
    fs_operation结构
    加载驱动程序了解设备驱动程序的概念
    了解Linux字符设备驱动程序结构
    能够编写字符设备驱动程序编写Skull驱动
    编写键盘驱动
    编写I/O驱动
    分析一个看门狗驱动程序
    对比Linux2.6内核与2.4内核中字符设备驱动的不同
    Linux 块设备驱动程序块设备驱动程序工作原理
    典型的块设备驱动程序分析
    块设备的读写请求队列了解Linux块设备驱动程序结构
    能够编写简单的块设备驱动程序比较字符设备与块设备的异同
    编写MMC卡驱动程序
    分析一个文件系统
    对比Linux2.6内核与2.4内核中块设备驱动的不同

    11、文件系统

    虚拟文件系统
    文件系统的建立
    ramfs内存文件系统
    proc文件系统
    devfs 文件系统
    MTD技术简介
    MTD块设备初始化
    MTD块设备的读写操作了解Linux系统的文件系统
    了解嵌入式Linux的文件系统
    了解MTD技术
    能够编写简单的文件系统为 ARM9开发板添加 MTD支持
    移植JFFS2文件系统
    通过proc文件系统修改操作系统参数
    分析romfs 文件系统源代码
    创建一个cramfs 文件系统

    展开全文
  • 本文简单介绍了嵌入式系统硬件开发基本流程
  • 嵌入式软件开发工具

    千次阅读 2017-12-18 10:21:35
    教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社 嵌入式软件系统 ...嵌入式软件开发工具发展趋势嵌入式软件系统嵌入式软件开发工具嵌入式软件开发工具的分类根据不同的阶段嵌入式软件

    教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社


    嵌入式软件系统

    嵌入式软件开发工具

    嵌入式软件开发工具的分类

    根据不同的阶段

    嵌入式软件开发工具可以分为

    • 需求分析工具(Requirement Analysis Tools)

    • 软件设计工具(Software Design Tools)

    • 编码、调试工具(Coding Tools)

    • 测试工具(Testing Tools)

    • 配置管理工具、维护工具等

    从嵌入式软件开发分类

    嵌入式软件开发工具可以分为

    • 与嵌入式OS相关的开发工具,用于开发:
      • 基于嵌入式OS的应用
      • 部分驱动程序等
    • 与嵌入式OS无关的开发工具,用于开发:
      • 基本的驱动程序
      • 辅助硬件调试程序
      • 系统软件等

    嵌入式软件的交叉开发环境

    • 交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器交叉调试器仿真器、下载器

    • 交叉开发环境
      交叉开发环境

    • 交叉开发环境由宿主机目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接

    • 宿主机(Host) 是用于开发嵌入式系统的计算机

    • 目标机(Target):即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的

    • 在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作

    • 物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种:串口、以太口、OCD(On Chip Debug)方式,如JTAG、BDM

    • 逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准

    嵌入式软件实现阶段的开发过程

    设计完成后,嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、调试和固化运行

    • 软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。

    • 调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。

    • 固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行

    嵌入式软件生成阶段

    • 源代码程序的编写

    • 编译成各个目标模块

    • 链接成可供下载调试或固化的目标程序

    • 交叉编译
      把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序

    嵌入式软件的调试

    对比

    • 交叉调试方式:Rom Monitor、On Chip Debugging

    • ROM Monitor

      • 是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对应用程序的调试
      • 在目标机上电或复位后首先执行的就是ROM Monitor,它对目标机进行一些必要的初始化
      • 几乎所有的交叉调试器都支持这种方式
      • Debug Monitor需要用Crash and Burn方法开发
      • ROM Monitor要占用目标机一定数量的资源,如CPU、RAM、ROM和通信设备等资源
    • 仿真(Simulator)开发方式(非交叉)

      • 硬件仿真开发:ROM Emulator、ICE、OCD
      • 软件仿真开发

    嵌入式软件的测试

    • 嵌入式软件测试中经常用到的测试工具有:内存分析工具、性能分析工、覆盖分析工具、缺陷跟踪工具等

    • 测试工具实例:逻辑分析仪

    嵌入式软件的固化运行

    当调试完成之后,程序代码需要被完全烧入到目标板的非易失性存储器(如ROM或闪存)中,并且在真实的硬件环境上运行,这个过程叫做固化

    对比

    嵌入式软件开发工具发展趋势

    嵌入式软件技术发展
    技术

    • 向着开放的、集成化的方向发展

    • 具有系统设计、可视化建模、仿真和验证功能

    • 自动生成代码和文档

    • 具有更高的灵活性

    展开全文
  • 嵌入式软件开发v1.5.2

    2018-07-08 01:12:22
    此文主要介绍的嵌入式软件开发的背景知识,基本逻辑和流程基本名词、概念和理念,嵌入式开发环境的基本组 成,交叉编译和交叉编译器,烧录,工具,系统设计,嵌入式CPU,嵌入式资源,常见问题及解答。
  • 内容来源:...此文主要介绍的嵌入式软件开发的背景知识,基本逻辑和流程基本名词、概念和理念,嵌入式开发环境的基本组成,交叉编译和交叉编译器,烧录,工具,系统设计,嵌入式

    内容来源:http://www.crifan.com/files/doc/docbook/embedded_soft_dev/release/html/embedded_soft_dev.html#emb_dev_related_things

    此文主要介绍的嵌入式软件开发的背景知识,基本逻辑和流程,基本名词、概念和理念,嵌入式开发环境的基本组成,交叉编译和交叉编译器,烧录,工具,系统设计,嵌入式CPU,嵌入式资源,常见问题及解答。

    
    展开全文
  • 嵌入式 Linux 开发大致涉及三个层次:引导装载程序、Linux 内核和图形用户界面。在本文中,我们将集中讨论涉及这三层的一些基本概念;深入了解引导装载程序、内核和文件系统是如何交互的;并将研究可用于文件系统、...
  • 嵌入式基本开发流程梳理总结

    千次阅读 2018-12-22 21:07:08
    嵌入式开发早在10年之前笔者就读本科时,就炒得火热的概念,当时说嵌入式开发将是得到大力发展的行业。一直到最近又有物联网IoT,智能硬件的发展,嵌入式开发再次被推向风口浪尖。下面我们就简单说一下究竟什么是...
  • 随着制造行业的再一次崛起,嵌入式软件目前在软件行业中越来越多,2004年软件行业最火爆的三个项目是:嵌入式开发,软件培训...  搞好开发前的原型设计  原型开发目前在开放流程中受到了更多的重视,同样嵌入式软件
  • 嵌入式产品开发流程

    万次阅读 2017-04-21 10:11:14
    它包含嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程中,是不需要涉及的。嵌入式产品的研发流程具体如下图:    下面,针对嵌入式产品的开发过程中的各个阶段,
  • 嵌入式软件开发到底是什么一个概念,总会有人觉得它是一个很深奥的一个课程,它是否是比软件研发更加有发展的趋势呢?... 1、对于从事嵌入式软件开发的人来讲,一般需要掌握以下基本技能: (1)懂得C语...
  • 嵌入式软件开发之程序架构(一)

    千次阅读 多人点赞 2019-02-17 18:00:41
    该内容是工作一年来通过上网或其他方式不断搜索、实践、总结出来的嵌入式软件开发经验(本文仅适用于单片机的裸机开发),希望能帮到正在学习这方面的朋友,如有不好的地方,请多多见谅;在嵌入式软件开发过程中,...
  • 嵌入式应用软件开发的步骤流程

    千次阅读 2018-12-11 21:03:55
    嵌入式软件工程师能根据项目管理和工程技术的实际要求,按照系统总体设计规格进行软、硬件实际,编写系统开发规格说明书等相应的文档;组织和指导嵌入式系统靠法实施人员实施硬件电路、编写和调试程序,并对嵌入式...
  • 目前嵌入式系统开发应用非常的广泛,在很多领域都有应用,而且技术更新很快。  嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求...
  •  原型开发目前在开放流程中受到了更多的重视,同样嵌入式软件也是非常需要的。比如说一个录音机版面的设计,可以定义好版面上面的按键以及每个按键的功能。然后画出状态转化图,写清楚每个按键何时可以触发,触发后...
  • 嵌入式 Linux 开发基本概念

    千次阅读 多人点赞 2020-09-16 14:56:11
    1.2.1 嵌入式 Linux 开发有哪些内容? 嵌入式 Linux 系统,就相当于一套完整的 PC 软件系统。 Windows 为例: ① 电脑一开机,那些界面是谁显示的? 是 BIOS,它做什么?一些自检,然后从硬盘上读入 windows,并...
  • 【笔试题】嵌入式软件开发:笔试总结

    万次阅读 多人点赞 2018-07-10 20:49:50
    从CSDN各个博客上摘选的...文章转自:嵌入式软件开发:笔试总结。 编程语言的基础考察 1、以下代码运行结果为: #include <iostream> using namespace std; int func(int x) { int count=0; while(x) { ...
  • XXXXXXX有限公司 嵌入式软件开发评估表 TQR8.3-70NO. 项目名称 推进流程应用工作量 序号 阶段 工作内容 阶段评估 验证 1 项目准备 现有系统配置情况检查 系统相关模块的基本数据情况检查 制定实施阶段计划约定每个...
  • 嵌入式系统开发流程(软硬件) PAGE / NUMPAGES 嵌入式系统开发流程(软硬件) 嵌入式系统开发基本流程 与嵌入式知识相关的资料书籍非常之多本文不做累赘本文仅从嵌入式系统开发实际工作经验之中介绍嵌入式软件硬件...
  • 嵌入式系统开发流程

    万次阅读 2017-02-19 21:18:18
    一、嵌入式系统开发流程 1、系统需求分析:根据需求,确定设计任务和设计目标,指定设计说明书。 2、体系结构设计:描述系统如何实现所述的功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件...
  • 新手如何入门嵌入式软件开发

    千次阅读 2012-02-17 11:14:17
    新手如何入门嵌入式软件开发 Sailor_forever sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/04/24/2325483.aspx   【摘要】:ARM+Linux是目前比较吃香的嵌入式软件开发组合...
  • 14、中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。  具代表性的是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子...
  • 嵌入式开发一般流程

    千次阅读 2020-02-01 13:58:22
    主流的嵌入式平台有三种:ARM平台、DSP平台和FPGA平台。...它包含嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程中,不需要涉及。 嵌入式产品的研发流程具体如下图 通用九...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,234
精华内容 11,293
关键字:

嵌入式软件开发的基本流程