第01课:嵌入式系统软件工程概述 绪论_第1页
第01课:嵌入式系统软件工程概述 绪论_第2页
第01课:嵌入式系统软件工程概述 绪论_第3页
第01课:嵌入式系统软件工程概述 绪论_第4页
第01课:嵌入式系统软件工程概述 绪论_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一次课嵌入式系统软件工程概述,广东科学技术职业学院宋维,第1讲绪论,软件软件的发展及软件工程软件生存周期软件开发模型领域分析,本讲内容,一软件,问题:1、什么叫硬件?2、什么叫软件?3、你从那些角度来理解软件概念?,1.Windows2.word3.成绩计算软件4.IE浏览器,演示几个软件以引出软件,1.1软件的概念1、软件的常识定义:软件是相对硬件而言的,是计算机系统中的程序、数据及其相关文档的总称。,程序是能完成确定任务,用计算机语言描述的,并能够在计算机系统上执行的语句序列。,求1+2+3+100累加和main()inti,sum=0;for(i=1;i=100;i+)sum=sum+1;printf(“sum=%dn”,sum);,数据用来描述软件所要处理的业务和事物的静态特征,是程序处理的对象。,文档是指与程序开发、维护和使用有关的图文资料。,需要从以下两个方面理解软件:1)在计算机系统中,我们把除了所有可见性设备和资源之外的计算机系统的组成部分统称为软件。2)软件的概念比程序广泛,程序是软件的构成部分。,1.1软件的概念2、软件的本质:软件是认识的中介、是人意识的外化、是人的意识基于机器的特殊反映。,1.2软件的特征1.智能性软件是人的智力劳动的产物,具有明显的智能性特征。2.无形性软件不象可见设备那样具有明显的物理形体和形态,人们无法直接观察到它的形态。,3.抽象性软件是一种逻辑实体,而不是具体的物理实体,具有抽象性。4.依附性软件不象其它产品和设备能够独立存在和工作,软件的开发和运行必须依赖于计算机系统硬件。,5.复杂性软件的复杂性是由软件可以解决任何行业和领域中的问题的特征所决定的。6.泛域性软件可以服务与人类智能所能到达的所有领域。,7.非损性软件在使用过程中不象其他产品存在损耗和老化现象,只要硬件环境不发生故障和改变,软件就可以永远使用。8.复制性由于软件在光、电、磁的介质上贮存,所以软件具有可复制性。,9.演化性软件投入运行之后,软件的功能、性能、人机界面、硬件环境处于不断变化之中,我们把软件在生存周期中不断变化的特性称之为软件的动态演化性。,1.按软件功能划分系统软件是指能与计算机硬件紧密结合,使计算机系统的各个部件、相关的软件和数据协调有效工作的软件。操作系统;数据库管理系统;设备驱动程序等.,1.3软件的分类,1.按软件功能划分应用软件则是指为特定领域开发和服务的一类软件,我们在日常工作和生活中,大量应用的是这类软件。企业管理软件;财务管理软件;股票管理软件等.,1.3软件的分类,问题二:1、说出两个系统软件的例子。2、说出两个应用软件的例子。,2.按软件规模划分按照软件开发所需要的人力、时间和源程序行数可以把软件划分成为微型、小型、中型、大型和超大型五类。表1-1软件规模划分,二软件的发展与软件工程,2.1软件发展的三个阶段1946年世界上第一台计算机出现之后,就有了程序的概念,程序是软件的前身。几十年来,软件的发展经历了程序设计,程序系统和软件工程三个阶段。,表1-2软件发展的三个时期和特点,1.人们对软件的看法逐步全面化从专家到一般开发人员从艺术到工程从程序设计技巧到需求分析、设计、编程、调试、维护等全面软件开发,2.软件的内涵发生了重大变化软件的概念和内涵从简单的程序发展成为程序、数据以及软件开发所需的一切文档。,3.软件的需求是软件发展的动力软件可以应用到社会生活的各个领域;软件产业成为国民经济支柱型产业;程序软件需求刺激着软件开发的发展,4.从程序编写发展到整个软件生存期软件的范围从程序发展到整个软件生存周期。,2.2软件危机60年代初,由于认识、技术和需求的变化,出现了严重软件危机,具体表现在:软件开发不能按照计划进行控制和完成,普遍存在拖延工期的现象;开发出来的软件满足不了用户的需求;软件投资严重超出预算;软件可靠性和可用性差。,软件质量难于保证;失败的根本原因在于:开发人员写出的东西达不到用户要求(管理问题人的问题、技术问题)因软件危机提出了软件工程,2.3软件工程一、软件工程概念的提出软件工程(softwareengineering)的概念是于1968年在北大西洋公约组织举行的一次学术会议上首次提出来的。经过几十年的发展,软件工程已经成为一门独立的学科。,2.3软件工程二、软件工程的概念软件工程是运用计算机科学、数学、管理学等原理和方法,遵循系统化的思想,运用工程化方法,探索和指导软件开发和维护的一门综合性学科。,软件工程是一门年轻的学科,到目前为止,对软件工程学科的构成和基本内容还没有形成统一认识。主要包括以下分支学科:1软件工程原理2软件工程方法3软件工程技术4软件工程管理,三、软件工程学科的基本内容,5.软件工程质量6.软件工程环境7.软件工程应用,SWEBOK把软件工程学科的主体知识分为10个知识领域。这10个领域包括:软件需求,软件设计,软件构造,软件测试,软件维护,软件配置管理,软件工程管理,软件工程过程,软件工程工具和方法,软件质量。,1软件工程原理软件工程原理是软件工程学科所遵循的基本规律和原则,包括:软件工程学基础;软件工程学科中的基本规律;软件工程学科应遵循的基本原则。,2软件工程方法软件工程方法是软件工程学科的核心。包括:软件开发方法软件管理方法软件度量方法软件维护方法,3软件工程技术软件工程技术主要包括:软件开发技术软件度量技术软件演化技术软件应用技术软件管理技术其它相关技术软件环境技术,4软件工程管理主要包括:软件项目管理人员管理软件过程管理经费管理软件维护管理进度管理软件质量管理文档管理,5软件工程度量主要包括:软件费用度量工作量度量生产效率度量质量度量性能度量结构和复杂性度量软件算法度量软件预决算,6软件工程环境软件环境由计算机硬件、通信网络、支撑软件等要素构成。软件必须考虑软件环境以及软件环境对软件开发的制约和影响。,计算机硬件,通信网络,支撑软件,7软件工程应用软件工程应用主要研究如何有效地把软件工程原理、方法、技术应用到软件开发和维护过程中去,以有效地提高软件开发效率和质量。,农业,工业,交通,航天,科研,三软件生存周期与软件开发模型,3.1软件生存周期软件生存周期所历经的阶段到目前还没有统一的划分标准,从三阶段到十二阶段不等。五阶段:软件策划软件分析软件设计系统实现软件演化,三阶段:软件生存周期包含三个阶段:软件定义、软件开发及软件运行维护。软件生存周期模型,又叫软件开发模型,是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。,软件开发模型(SoftwareDevelopmentModel)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。,典型的开发模型有:瀑布模型(waterfallmodel);渐增模型/演化/迭代(incrementalmodel);原型模型(prototypemodel);螺旋模型(spiralmodel);喷泉模型(fountainmodel);智能模型(intelligentmodel);7.混合模型(hybridmodel),边做边改模型(Build-and-FixModel)遗憾的是,许多产品都是使用边做边改模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改.在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:(1)缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改(2)忽略需求环节,给软件开发带来很大的风险;(3)没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。,3.2软件生存期模型3.2.1瀑布模型瀑布模型反映了软件生存期各阶段明确任务、自上而下、顺序固定、逐级过渡的结构模式,各阶段的联系就象瀑布流水一样自上而下、不可逆返。,瀑布模型,软件工程过程,软件工程过程定义:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。瀑布模型的产出,瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果,各阶段标准文档要求,可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。,各阶段标准文档要求,软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。概要设计说明书:该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。,各阶段标准文档要求,详细设计说明书:着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。用户操作手册:本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。测试计划:为做好集成测试和验收测试,需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。,各阶段标准文档要求,测试分析报告:测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。开发进度月报:该月报系软件人员按月向管理部门提交的项目进展情况报告,报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。项目开发总结报告:软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力,此外,还需对开发工作做出评价,总结出经验和教训。,各阶段标准文档要求,软件维护手册:主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。软件问题报告:指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。软件修改报告:软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响作出详细的描述,提交审批。,线性是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的非线性问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。,3.2.2螺旋模型螺旋模型规定软件开发采取分步推进、逐步深化的螺旋方式。在螺旋模型下,每一个螺旋式的循环都是对上一次循环的进一步深化和细化。快速原型法和面向对象方法都采用螺旋模型。螺旋模型更符合人们认识事物的一般规律。,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:1制定计划:确定软件目标,选定实施方案,弄清项开发的限制条件2风险分析:分析评估所选方案,考虑如何识别和消除风险;3实施工程:实施软件开发和验证;4客户评估:评价开发工作,提出修正建议,制定下一步计划。,螺旋模型,一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。,螺旋模型强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型也有一定的限制条件,具体如下:(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险,3.2.3喷泉模型喷泉模型表示软件生存期需要划分成为多个相对独立的阶段,但各个阶段之间的界限并不是十分明确,相邻阶段之间存在明显的重迭和交叉。,3.2.4演化模型演化模型软件通过多次迭代演化完成.适应于不能明确确定需求的软件开发;通过多次更迭过程来完成;初期,由用户提出基本需求,构造一个核心系统;用户进行评价,再完善;多次反复完成软件开发.演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。实际上,这个模型可看作是重复执行的多个“瀑布模型”。,迭代模型,常见模型优点比较,瀑布模型:文档驱动系统可能不满足客户的需求快速原型模型:关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型:开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型:风险驱动风险分析人员需要有经验且经过充分训练,四软件开发方法,1.结构化方法2.JSD方法3.原型方法4.面向对象方法,4.1结构化开发方法4.1.1结构化开发方法的含义结构化开发方法是指遵循系统的思想,按照工程化的方法,充分考虑用户的需求,严格划分工作阶段,自顶向下逐步分解地进行系统分析和设计,按照设计方案自底向上进行实施的一套相对完整和规范的系统开发方法。,4.1.2结构化开发方法的特点遵循系统化思想充分考虑用户需求严格划分工作阶段按照工程化的方法突出系统各部分的联系和结构,4.1.3结构化分析,结构化分析用分层数据流图来进行分析,学生成绩管理顶层数据流图,数据字典,1.4.1.4结构化设计,1、总体设计,2、详细设计,1)、IPO图,2)、流程图(程序框图),求N的阶乘的程序流程图,3)、判定树,4.1.5结构化开发方法的不足与人类认识问题的一般规律有相饽之处功能分析法不能够全面反映问题域方法的描述体系缺乏连贯性和一致性文档繁杂、开发工作量大不便于交流和理解难以适应需求的变化重用性不好,4.2JSD方法,Jackson系统开发方法(JSD,Jacksonsystemdevelopmentmethod)是在Jackson的面向数据结构的程序设计方法的基础上发展而来的,是一种面向软件开发全过程的系统化开发方法。,4.2JSD方法,划分为建模、设计和实现三个阶段。包括实体活动分析、实体结构分析、建立进程模型、确定系统功能、确定系统时序、系统实现等6个步骤。,4.3快速原型方法快速原型法的基本思想是:在系统开发中通过自动化或半自动化系统开发原型生成环境的支持,根据用户的初步需求,快速生成一个能够反映用户初步需求的系统模型,并把这个模型称之为系统原型。把产生的系统原型展现给用户,开发人员与用户有针对性地就系统原型进行讨论,用户对系统原型提出自己看法和改进意见,开发人员根据用户的意见再进一步地修改原型,并反复这个过程,直到用户对系统原型满意为止。最后把系统原型转换为实际系统。,快速原型法的特点:更符合人们对事物地认识规律使系统开发工作直接化、简单化提高了系统开发效率快速原型法的局限性:不能作为大型软件的独立开发方法不适应于内部蕴涵大量计算逻辑处理,而交互处理不多的应用不适应于非规范的业务领域,4.4面向对象方法面向对象方法产生于1967年的第一个面向对象语言Simula;面向对象的分析和设计开始于八十年代中期,广泛使用于九十年代。面向对象方法是用面向对象的思想指导系统开发的规范化软件开发方法。目前,已经形成相对成熟和完善的方法体系。,本讲小结,软件工程概论第1讲绪论,1.1软件1.1.1软件的概念1.1.2软件特征无形性、智能性、抽象性、非独立性、复杂性、非耗损性、可复制性、演化性、开发方式独特1.1.3软件的分类一按软件作用划分系统软件,应用软件二按软件规模划分微型、小型、中型、大型、超大型,本讲小结,软件工程概论第1章概论,1.2软件的发展及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论