嵌入式软件开发的工程化方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

嵌入式软件开发的工程化方法段富海博士后教授大连理工大学2010年3月摘要简要介绍嵌入式软件的特点和应用状况。重点阐述嵌入式软件开发的工程化方法,包括对软件开发过程的全过程控制和对软件质量的全方位管理。要点必须牢固树立软件产品的观念,软件产品=软件源代码+软件文档。必须严格遵循嵌入式软件开发的工程化开发方法。1引言嵌入式计算机软件在各种产品中得到大量的应用,不论在其规模上,还是在其重要性上均呈现急剧上升的趋势。嵌入式计算机软件在航空、航天、船舶、兵器、核工业、电子、通讯、金融、家电、汽车等领域的广泛应用,已逐步形成了一个独立的产业。表1软件在先进战斗机航电系统中的应用情况第X代飞机代表机型硬件软件第二代F-11180%20%第三代F-1660%40%第四代F-2220%80%飞行控制机身起落装置操作面作动器燃油系统电子设备液压系统雷达系统武器系统座舱系统电子系统总线通信系统弹射救生系统操纵杆和油门推力系统故障管理系统飞控计算机辅助动力系统复杂庞大的飞机系统测试和评估信号处理和通信系统开发控制系统开发工程数据分析系统工程复杂车辆系统自适应前车灯系统动力管理变速箱发动机信息系统操纵系统仪器设备车窗车门灯光环控系统驾驶员辅助设备导航设备牵引控制障碍物检测ABS稳定控制自适应的巡航语音识别无线通讯乘客检测气囊防撞系统航空航天–卫星–导弹–无人驾驶飞机–喷气式发动机–自动驾驶仪–导航与制导–振动控制汽车–发动机排量控制–安全系统ABS牵引控制–车内系统窗体环控–自动变速箱–混合动力车无所不在的嵌入式软件工业设备–燃料电池–机器人技术–电机控制消费类电子产品与办公设备–打印机–大规模存储设备–洗衣机等家用电器1引言(续)嵌入式实时系统的特点使得其软件受到时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难。为设计一个满足功能和性能要求的代码并实现产品化,需要特别了解软件工程化开发方法的人员,也需要在专门的开发平台上使用专门的嵌入式实时操纵系统进行交叉开发。软件的可靠性一般要比硬件低一个数量级,为确保软件质量与可靠性,必须严格遵循嵌入式软件工程化开发方法。嵌入式实时操纵系统及其软件交叉开发环境对开发安全可靠的高性能复杂嵌入式软件起着非常重要的作用。延期完成51.6%按期完成6.7%提前完成22.7%取消19%嵌入式软件开发项目完成状况美国软件开发质量统计软件项目中途终止的占25%;软件产品在交付时通常在产品中还残留15%的缺陷;软件公司花在软件返工(修改)上的资源为30~40%;软件的失效往往比硬件失效高一个数量级。原因?35.5%15.5%34.3%47.0%48.3%63.5%0%10%20%30%40%50%60%70%其他测试人员不足开发人员不足设计规范不明确系统复杂设计规范发生变化2嵌入式系统和嵌入式软件2.1嵌入式系统嵌入式计算机(EmbeddedComputer)或者叫嵌入式系统,源于20世纪60年代,是一种不被用户所觉察的专用计算机。嵌入式系统多指深藏于工业系统、武器系统或一些机电仪表设备、消费电子产品内部,完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体。嵌入式系统具有软件代码小,高度自动化,响应速度快等特点,特别适合于实时的和多任务的应用体系。这些专用计算机系统是以嵌入式计算机为技术核心,围绕应用系统的功能、可靠性、成本、功耗等严格的要求来开发设计的。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及特定的应用程序等四个部分组成。或以整机式嵌入,或以部件式嵌入,或以芯片式嵌入,用于实现对其它设备的控制、监视或管理等功能。2.1嵌入式系统(1)嵌入式微处理器为适应各方面的需求,嵌入式微处理器体系结构也经历了一个从CISC到RISC和CompactRISC的过程;位数从4位、8位、16位、32位到64位;寻址空间从64KB到16MB甚至更大;处理速度从0.1MIPS到2000MIPS;常用封装从8个引脚到144个引脚的过程。处理器的功耗也有了明显降低,集成度进一步提高。近闻,美国国家半导体公司又推出了一款高度集成的微处理器SC1400(片上系统System-on-A-Chip),它代表了目前微处理器技术的最高集成度。目前国外许多大处理器生产厂商(Motorola、Intel、AMD、日立、NEC等)纷纷推出各种嵌入式微处理器。最具有代表性的是:Motorola的PowerPC系列、Intel的x86系列和NationalSemiconductor的StrongArm系列,其中最具有影响力的当数Motorola的PowerPC系列。由于PowerPC系列微处理器种类繁多,而且性能优越,系统集成度高,扩展能力强,可以广泛应用于各类嵌入式系统中。因此,Motorola已成为全球最大的嵌入式微处理器生产商,PowerPC系列微处理器成为当今嵌入式系统应用的主流。2.1嵌入式系统(续1)(2)嵌入式实时系统工业控制、舰船武器系统控制、航空航天等领域的多数嵌入式系统有一个共同的特性:对系统的响应时间有严格的要求,这些系统被称为实时系统。实时系统是指那些产生系统输出时间对于系统是至关重要的系统。这通常是因为输入对应于物理世界的某些运动,同时输出也与一些运动相关。从输入到输出的滞后时间必须足够小到一个可以接受的时限(timeline)内。因此实时系统逻辑正确性不仅依赖于计算机结果的正确性,还取决于输出结果的时间。2.1嵌入式系统(续2)(3)嵌入式系统特征嵌入式系统具有区别于通用计算机系统的一些特征:专用的嵌入式CPU;专用性和算法的唯一性;多种技术的结合体;硬件和软件的相互依赖性;系统对用户是透明的;嵌入式计算机系统大多数是实时控制系统;系统配置专一,结构紧凑,牢固可靠,一般来说计算机资源(存储容量和速度)有限;许多嵌入式计算机系统采用分布式系统实现。2.2嵌入式软件嵌入式软件(EmbeddedSoftware)与嵌入式系统密不可分的。嵌入式软件是嵌入式系统的核心,从广义上讲是计算机软件的一种,它也是由程序及其文档组成(软件=软件源代码+软件文档),也可分成系统软件、支撑软件(如数据库、调试软件、网络通讯协议、用户界面系统)和应用软件三类。财务软件、教育软件、杀毒软件、汉字印刷软件、游戏软件、办公自动化软件等均为非嵌入式软件。2.2嵌入式软件(续1)嵌入式系统的广泛应用必然需要良好的嵌入式软件开发环境的支持。由于嵌入式系统的目标机受资源限制,不可能建立庞大、复杂的开发环境,其开发环境和目标运行往往相互分离。因此,嵌入式应用软件的开发方式一般是,在宿主机(Host)上建立开发环境(如Vxworks及其开发环境Tornado),进行应用程序编码和交叉编译,然后宿主机同目标机(Target)建立连接,将应用程序固化到目标机中实际运行。宿主机Host目标机Target以太网/串行口/其它图1嵌入式软件开发模型2.2嵌入式软件(续2)嵌入式软件的特点:响应时间快,并且有确定的硬实时性要求;具有处理异步并发事件的能力;具有快速启动,出错处理和自动复位功能;嵌入式系统软件的应用软件与操作系统之间的界线模糊,往往是一体化设计的程序;软件开发困难,要使用交叉开发环境。2.3嵌入式操作系统RTOS(RealTimeOperatingSystem)是计算机专家们多年研究的成果,使用RTOS不仅增加了嵌入式应用系统的可靠性,缩短了产品开发的时间,而且应用程序的维护也会方便许多。作为嵌入式软件的基础和龙头,嵌入式操作系统在产业发展过程中扮演了越来越重要的角色。如今嵌入式操纵系统开始得到蓬勃发展,出现了许多相互竞争的产品,如VxWorks、pSOS、Neculeus、WindowsCE、女娲Hopen和各种嵌入式Linux等。嵌入式操作系统可应用于家电市场、工业市场、商业市场、通讯市场和国防市场。典型的应用:掌上电脑(PDA)、机顶盒、手机、数码相机、数字电视、机载计算机、舰载计算机、星载计算机等。3软件开发的工程化方法用软件工程化方法组织软件开发包含两方面的内容:(1)用软件工程化方法开发软件,即软件的工程化开发;(2)软件工程化方法管理软件开发,即软件的工程化管理。要保证软件产品的质量,必须一手抓软件的工程化开发,一手抓软件的工程化管理;二者不可或缺。这也是人们通常所说的软件的质量是设计(开发)出来的,也是管理出来的。3.1软件的工程化开发软件的工程化开发,即将结构化的开发方法贯穿于软件开发的全过程。主要是抓:结构化的需求分析结构化的设计结构化的编程结构化的测试这也是软件开发的四个主要阶段。需求分析概要设计编码测试验收交货培训手册用户手册详细设计维护图2软件开发流程图3.1软件的工程化开发(1)结构化的需求分析需求分析主要解决的问题是系统(或用户)要软件“做什么”,软件需求分析阶段的任务是全面确定被研制软件的运行环境、功能、性能等全部需求;对软件开发、质量保证、配置管理工作进行策划;编制软件需求规格说明和软件开发计划等重要文档。3.1软件的工程化开发(2)结构化的设计(概要和详细)概要设计阶段的任务是根据软件需求规格说明,建立软件的总体结构和功能模块间的关系,定义各功能模块的接口、控制接口,设计全局数据库/数据结构,规定设计限制,编制软件集成测试计划,编写软件概要设计说明。同时开始编写软件系统测试说明。软件详细设计说明应对所有的软件单元进行详细的过程描述,设计其包含的算法和内部数据结构在内的内部细节,为编写程序提供必要的说明,编写软件详细设计说明。3.1软件的工程化开发(3)结构化的编程采用规定的编程语言,对所有软件单元进行代码编制,并对代码进行编译、调试,直到编译无错误通过。之后,对完成编码的模块进行单元测试。任务是检验所有软件单元的设计与实现。内容包括测试模块的接口、局部数据结构、重要的执行途径、出错处理路径、影响前面各点的边界条件等五个基本特性。3.1软件的工程化开发(4)结构化的测试对于可靠性、安全性要求比较高的软件,为更进一步保证软件的高质量,还应在承制方进行完所有的软件单元测试工作后,授权具有权威的、与软件开发交办方和承制方都相对独立的专业测评机构,对软件进行独立的第三方测试,包括软件集成与测试、软件配置项测试和系统集成与测试。(a)软件集成与测试:得到经过单元测试的程序后,下一步就要依据概要设计确定的软件结构,按照软件集成测试说明制定的软件集成“工序”,把软件单元逐步组装成完整的软件配置项,并不断发现和排除错误,以保证连接、组装的正确性。(b)软件配置项测试:任务是根据软件需求规格说明中定义的全部功能、性能、可靠性等需求,测试整个软件配置是否达到要求。(c)软件系统测试:系统中包含的计算机系统(含硬件和软件)往往作为大系统中的一个分系统、子系统、设备、部件甚至单元。在这种情况下,被开发的软件是否能与系统中其它的软、硬件正确地对接,是否正确地完成了上级系统分配它执行的功能、性能,必须通过系统测试给予确认。软件系统测试的目的,是在真实的系统工作环境下或仿真测试环境中检验软件是否能与系统正确连接,并确定软件是否与软件开发任务书中提出的软件功能、性能和接口要求一致。3.2软件的工程化管理软件的工程化管理,主要是抓:(1)对软件开发过程的全过程控制;(2)对软件质量的全方位管理。3.2.1对软件开发过程的全过程控制对软件开发过程的全过程控制是指软件开发应按软件生存周期分阶段制定并实施计划,并逐个阶段予以确认,亦即对软件生存周期的每个阶段应明确:(1)进入条件;(2)主要工作;(3)方法和工具;(4)基本要求;(5)本阶段的主要质量控制手段;(6)阶段产品;(7)完成标志。表1软件开发过程的全过程控制研制阶段进入条件主要工作完成标志阶段产品主要控制手段系统分析软件定义项目总体已确定对计算机系统的功能分配。1.分析系统要求和使用环境;2.论证软件项目可行性;3.确定软件关键性等级;4.拟定软件开发任务书;5.明确软件验收方法。软件开发任务书

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功