




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式软件开发的工程化方法段富海博士后教授大连理工大学2010年3月,摘要,简要介绍嵌入式软件的特点和应用状况。重点阐述嵌入式软件开发的工程化方法,包括对软件开发过程的全过程控制和对软件质量的全方位管理。,要点,必须牢固树立软件产品的观念,软件产品=软件源代码+软件文档。必须严格遵循嵌入式软件开发的工程化开发方法。,1引言,嵌入式计算机软件在各种产品中得到大量的应用,不论在其规模上,还是在其重要性上均呈现急剧上升的趋势。嵌入式计算机软件在航空、航天、船舶、兵器、核工业、电子、通讯、金融、家电、汽车等领域的广泛应用,已逐步形成了一个独立的产业。表1软件在先进战斗机航电系统中的应用情况,飞行控制,机身,起落装置,操作面,作动器,燃油系统,电子设备,液压系统,雷达系统,武器系统,座舱系统,电子系统,总线通信系统,弹射救生系统,操纵杆和油门,推力系统,故障管理系统,飞控计算机,辅助动力系统,复杂庞大的飞机系统,复杂车辆系统,自适应前车灯系统,动力管理,变速箱,发动机,信息系统,操纵系统,仪器设备,车窗,车门,灯光,环控系统,驾驶员辅助设备,导航设备,牵引控制,障碍物检测,ABS,稳定控制,自适应的巡航,语音识别,无线通讯,乘客检测,气囊,防撞系统,航空航天卫星导弹无人驾驶飞机喷气式发动机自动驾驶仪导航与制导振动控制,汽车发动机排量控制安全系统ABS牵引控制车内系统窗体环控自动变速箱混合动力车,无所不在的嵌入式软件,工业设备燃料电池机器人技术电机控制,消费类电子产品与办公设备打印机大规模存储设备洗衣机等家用电器,1引言(续),嵌入式实时系统的特点使得其软件受到时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难。为设计一个满足功能和性能要求的代码并实现产品化,需要特别了解软件工程化开发方法的人员,也需要在专门的开发平台上使用专门的嵌入式实时操纵系统进行交叉开发。软件的可靠性一般要比硬件低一个数量级,为确保软件质量与可靠性,必须严格遵循嵌入式软件工程化开发方法。嵌入式实时操纵系统及其软件交叉开发环境对开发安全可靠的高性能复杂嵌入式软件起着非常重要的作用。,嵌入式软件开发项目完成状况,美国软件开发质量统计,软件项目中途终止的占25%;软件产品在交付时通常在产品中还残留15%的缺陷;软件公司花在软件返工(修改)上的资源为3040%;软件的失效往往比硬件失效高一个数量级。,原因?,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)建立连接,将应用程序固化到目标机中实际运行。,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软件开发过程的全过程控制(续),3.2.2对软件质量的全方位管理,为确保软件产品的质量,必须在软件开发过程中,对软件的质量实施全方位管理。对软件质量的全方位管理是把软件质量有关的各方面工作均予以管理,主要包括:对软件开发人员实施“三分开”、软件分级管理、软件文档管理、软件评审管理、软件配置管理、软件测试、软件故障报告、分析和纠正措施报告。应特别加强软件文档管理、评审管理、配置管理和强化软件测试。,3.2.2对软件质量的全方位管理,(1)对软件开发人员实施“三分开”目前在不少软件开发部门,由于软件开发人员普遍不足,软件设计、实现、测试工作由同一开发人员承担,用所谓“三自一包”的方式开发软件,是手工作坊式的开发软件的典型方式,也是引起“软件危机”的主要原因之一。软件开发过程必须从手工作坊式的开发方式转到工业化生产的方式上来,必须遵循需求分析、设计、实现、生产、检验/验收的过程。在软件开发过程中,设计/分析人员、编程人员和测试人员必须是分开的。实施软件设计、实现、测试人员三分开是贯彻软件工程的基本要求之一。Designisnotcoding,codingisnotdesign.,3.2.2对软件质量的全方位管理表2软件开发的时间和人力分配表,3.2.2对软件质量的全方位管理,(2)软件的分级管理应根据软件失效后对系统安全性和功能的不同影响程度,将软件划分为若干个关键度级别。在软件研制过程中,应视软件的关键度级别采取不同的管理措施。软件分级管理可依据软件的级别,在文档、评审、测试等方面有不同的管理要求。软件安全关键等级分级方法(军用航空)见下表:,3.2.2对软件质量的全方位管理,民用航空根据软件异常行为导致的功能失效而引发后果的严重性将软件分为:,A类造成飞行器灾难性事故B类使飞行器发生危险C类飞行器严重功能失效D类飞行器轻微功能失效E类对飞行器功能不造成影响,3.2.2对软件质量的全方位管理(3)软件文档管理,软件文档是软件的组成部分,编写软件文档是软件开发的基本任务之一。软件文档起着如下重要作用:软件开发工作在一定阶段的成果和结束标志;向管理人员提供软件开发过程中的进展和情况,使软件开发过程的可见性增强,便于管理;记录开发过程中的技术信息,便于协调以后的软件开发、使用和修改;为软件测试提供编制测试用例与预期结果的依据;向用户报告软件的功能和性能,便于他们判断该软件能否服务于自己的需要。为了使软件文档真正起到上述作用,关键是保证文档编制的及时性和符合性。,3.2.2对软件质量的全方位管理表3软件文档产生时间表,3.2.2对软件质量的全方位管理,(4)软件配置管理软件配置管理就是管理好软件的三库(开发库、受控库和产品库)和三线(功能基线、分配基线和产品基线)。软件配置管理的任务包括:指明配置管理项的功能特性和物理特性,并建立配置管理项的标识体制;控制对这些特性的更改;记录、报告更改处理以及执行状态;对配置进行审计和评审等。软件配置管理的工作内容主要包括:(a)设立软件配置管理机构,明确机构职责与分工。明确该机构与其它机构的关系;(b)制定软件配置管理计划,以规划整个软件生存周期中软件配置管理的活动;(c)确定并执行软件开发过程中要用到的,与软件配置管理有关的标准、规定或约定;(d)标识基线,对于每个基线,必须描述基线的项(包括应交付的文档和程序)、与每个基线有关的评审与批准事项以及验收标准、在建立基线的过程中用户和开发者的参与情况等;(e)制定并执行更改申请规程、文档更改规程,实施配置控制;(f)制定并执行配置状态记录与报告规程,实施配置状态的记录和报告;(g)实施配置的审计与评审。,3.2.2对软件质量的全方位管理,(5)软件评审管理软件评审的作用是:(a)对各阶段的产品或过程进行审查和评估,以评价其是否符合规定的要求;(b)发现存在的缺陷;(c)采取补救措施;(d)找出在性能、安全性和经济方面可能的改进。,3.2.2对软件质量的全方位管理,在软件工程中,评审是软件质量保证的重要手段,也是软件质量控制的一个重要环节。在软件生存周期过程中一般需要进行多次评审,每次评审各有不同的具体要求。以软件开发过程为例,如果将其分为若干阶段,则应在每个阶段末设置评审点。软件开发过程包括以下主要活动:(a)系统分析和软件定义(软件设计任务书);(b)软件需求分析;(c)软件概要设计;(d)软件详细设计;(e)编码和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机务段的考试题及答案解析
- 基于区块链的多目标关键路径研究-洞察及研究
- 高速公路封路合同模板(3篇)
- 高速边坡水沟施工合同(3篇)
- 高空修剪树木施工合同(3篇)
- 产业园区租赁承包管理合同
- 农业企业农产品质量及种植技术保密合同
- 法人名义挂靠免责协议范本
- 2025公务员综合岗位面试题及答案
- 原材料典当借款协议范本
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 煤改电工程施工质量监控方案和措施
- 布病的护理教学课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 公司培训防诈骗知识宣传课件
- 2025年全国《质量知识竞赛》题库及答案
- epc项目承包意向合同范本
- 苗圃建设项目可行性研究报告
- 2025至2030中国军用导航仪器行业市场深度研究与战略咨询分析报告
- 2025年新高一英语人教新版中等生专题复习《完形填空》
评论
0/150
提交评论