资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,物联网软件工程,物联网软件工程,物联网软件工程,-,目录,1,物联网软件工程概述,起始案例,软件和软件危机,软件过程模型,2,软件需求,3,软件设计,物联网软件工程-目录1 物联网软件工程概述,起始案例,比尔盖子是一名建筑工人,起初只干一些比较简单的建筑工作,凭个人技术和经验,不需要特别设计,可以顺利完成,如同编写早期比较小的程序,起始案例比尔盖子是一名建筑工人起初只干一些比较简单的建筑工作,起始案例,新任务:建造一间非常美丽而完整的房间,工作变得复杂许多,像不断发展的软件,功能越来越多,越来越复杂,起始案例新任务:建造一间非常美丽而完整的房间像不断发展的软件,起始案例,软件复杂性,图形用户界面,客户,/,服务器结构,分布式应用,数据通信,超大型关系型数据库,起始案例软件复杂性,起始案例,比尔想到需要更多的人手帮他,终于组成了自己工作团队,就像软件中的项目团队,起始案例比尔想到需要更多的人手帮他就像软件中的项目团队,软件项目团队中的角色,项目经理,技术负责人,软件架构师,项目团队,分析师,设计人员,开发人员,测试人员,软件项目团队中的角色项目经理 技术负责人 软件架构师 项目团,项目人员构成比例,例子:,微软,EXCHANGE 2000 SERVER,的开发:,项目经理:,25,人,开发人员:,140,人,测试人员:,350,人,WINDOWS 2000,:,项目经理:,250,人,开发人员:,1700,人,测试人员:,3200,人,项目人员构成比例例子:,软件工程师的工作,项目设计与分析,编码,编写文档,测试,团队管理,软件工程师的工作项目设计与分析,软件开发过程,“,这次不能盲目开工,我们需要首先好好设计一下!”,构想,分析,设计,构造,评估,软件的制作过程也非常相似,软件开发过程“这次不能盲目开工,我们需要首先好好设计一下!”,软件开发过程,软件开发,可行性研究与计划,需求分析,设计,开发,评估,/,测试,维护,建造房屋,构想,分析,设计,构造,评估,维护,软件开发过程软件开发可行性研究与计划 需求分析 设计 开发,软件开发基础,目录,起始案例,软件和软件危机,软件过程模型,软件开发基础目录起始案例,什么是软件?,软件就是程序?,一定要纠正软件就是程序,开发软件就是编写程序的错误观念!,软件定义:,软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档。,软件的构成:,软件,=,程序,+,文档,什么是软件?软件就是程序?一定要纠正软件就是程序,开发软件,软件特征,软件不会磨损和老化,软件主要是研制,生产是简单的拷贝,软件是一种逻辑实体,不是物理实体,它具有抽象性,成本昂贵,其开发方式,至今尚未摆脱手工方式,软件维护不同于硬件维修,易产生新的问题,软件具有“复杂性”,其开发和运行常受到计算机系统的限制,即,受环境影响大,软件特征软件不会磨损和老化,软件的特征,失效率,时间,硬件失效率曲线,失效率,时间,实际曲线,理想曲线,软件失效率曲线,软、硬件失效情况的对比,硬件失效率曲线,是一,U,型曲线(即浴盆曲线)。软件失效率曲线,它没有,U,型曲线的右半翼。因为软件不存在磨损和老化问题,然而存在退化问题。,软件的特征失效率时间 硬件失效率曲线失效率时间,焦油坑中挣扎的巨兽,焦油坑中挣扎的巨兽,软件危机,定义,计算机软件的开发和维护过程所遇到的一系列严重问题,表现,对软件开发成本和进度的估算很不准确,用户很不满意,质量很不可靠,没有适当的文档,软件成本比重上升,供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势,软件危机定义,国外软件危机实例,1963,年美国飞往火星的火箭爆炸,造成,1000,万美元的损失。原因是,FORTRAN,程序:,DO 5 I=1,,,3,误写为:,DO 5 I=1.3,1967,年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,1991,年,2,月,25,日美军位于沙特阿拉伯宰赫兰的军营被一枚成功突防的“飞毛腿”击中,死伤,28,人,国外软件危机实例1963年美国飞往火星的火箭爆炸,造成100,硬件,/,软件成本变化趋势,硬件/软件成本变化趋势,软件技术进步落后于需求增长,软件技术进步落后于需求增长,国内软件危机的表现,ERP,成功率为零的讨论,国外软件企业水土不服,国内软件企业鱼龙混杂,财务,+,仓储,=ERP?,国内软件危机的表现ERP成功率为零的讨论,物联网ppt课件-4-软件工程,软件危机的原因,原因,客观:软件本身特点,逻辑部件,规模庞大,主观:不正确的开发方法,忽视需求分析和设计,错误认为:软件开发,=,程序编写,轻视软件维护,软件危机的原因原因,软件规模越来越大,Windows,95,有,1000,万行代码,Windows,2000,有,5000,万行代码,Exchange2000,和,Windows,2000,开发人员结构,Exchange2000,Windows,2000,项目经理,25,人,约,250,人,开发人员,140,人,约,1700,人,测试人员,350,人,约,3200,人,软件规模越来越大 Windows95有1000万行,缺陷产生的原因,据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占,64%,,属于程序编写的错误仅占,36%,。程序编写的许多错误是,“,先天的,”,。,缺陷产生的原因 据美国一家公司统计,查出的软件错误中,,软件缺陷修复的代价,0,20,40,60,80,100,编制说明书,设计阶段,编写代码,测试,发布,软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问题的费用,呈几何级数增长,。,软件缺陷修复的代价020406080100编制说明书设计阶段,有没有银弹?,Brooks,软件工程,面向对象分析与设计,重用,自动编程工具,CMM,(软件能力成熟度模型),有没有银弹?Brooks软件工程,软件开发基础,目录,起始案例,软件和软件危机,软件过程模型,软件开发基础目录起始案例,软件开发过程模型,软件开发需要经历几个步骤,具体如何实施,具体项目不同,有所区别,软件开发过程模型:制作具体软件时,开发步骤的具体实施方法,瀑布模型,软件开发过程模型软件开发需要经历几个步骤瀑布模型,瀑布模型,瀑布模型,“,线性顺序模型”,将每个阶段都清楚定义了起止点,产生明确的交付成果,阶段之间通过文档进行沟通,每个阶段都必需完成全部规定的任务(文档)后才能够进入下一个阶段,可行性研究与计划,需求分析,设计,开发,测试,维护,可行性研究报告,需求说明书,设计文档,程序,测试报告,瀑布模型瀑布模型“线性顺序模型”可行性研究与计划 需求,可行性研究与计划阶段,确定项目目的,了解系统中客户的期望,确定系统的规模,论证项目可行性,技术可行性,经济可行性,操作可行性,社会可行性,可行性研究与计划阶段确定项目目的,需求分析阶段,开发人员寻求从他们自己的角度来理解问题,没有考虑技术问题,按优先次序排列需求,生成并评估备选方案,与管理人员评审推荐方案,回答:要解决问题,必须完成哪些工作?,需求分析阶段开发人员寻求从他们自己的角度来理解问题 没有考虑,需求分析阶段,需求是产品的根源,需求工作的优劣对产品影响最大,获取需求,客户,同行、专家,已经存在的同类软件产品,行业标准、规则,Internet,相关资料,可能遇到的问题,用户说不清楚需求,误解需求,分析需求,功能需求记录在客户需求说明书中,需求分析阶段需求是产品的根源获取需求可能遇到的问题 分析需求,软件设计阶段,设计,应用程序,体系结构,设计用户界面,设计并集成数据库,用于设计详细资料的原型,设计并集成系统控件,回答:应该使用那些技术?应如何解决问题?,软件设计阶段设计应用程序体系结构设计用户界面设计并集成数据库,设计阶段,目的:根据用户的需要制定标准,划分并分配任务,设计,GUI,标准,设计数据库,设计过程模块,设计编码标准,构建原型,分配任务和监督任务,设计阶段涉及的活动,设计阶段目的:根据用户的需要制定标准,划分并分配任务设计GU,开发阶段,开发阶段,对用户界面,进行最后的修改,构建数据库,通过添加代码,使其具备功能,开发阶段开发阶段 对用户界面构建数据库 通过添加代码,软件测试阶段,制定测试计划,设计测试,实施测试,执行测试,评估测试,回归测试,软件测试阶段制定测试计划设计测试实施测试执行测试评估测试回归,测试阶段,软件测试关键问题,测试由谁来执行 ,who,测试什么 ,what,什么时候进行测试 ,when,怎样进行测试 ,how,测试阶段软件测试关键问题,测试,V,模型,项目规划,项目需求分析,项目概要分析,项目详细分析,代码编写,测试代码编写,测试需求分析,系统测试计划,集成测试计划,单元测试计划,产品发布,系统测试,集成测试,单元测试,测试V模型项目规划项目需求分析项目概要分析项目详细分析代码编,软件维护阶段,当软件产品制成并交付使用后,便开始了软件生命周期的最后阶段,运行和维护阶段。软件产品投入运行之后。仍有必要对软件进行维护,维护工作又分为以下两个部分。,程序维护,正确性维护:改正在开发阶段产生,在测试阶段又没有发现的错误。,适应性维护:为适应软件的外界环境的变化引起的软件修改。,完善性维护:为扩充软件系统功能或改善性能而进行的修改。,软件维护阶段当软件产品制成并交付使用后,便开始了软件生命周,使用维护,环境维护:为保证软件产品正常运行而进行的维护(如主机、打印机等)。,意外事故维护:解决因发生意外事故而使数据混乱或丢,失的问题而进行的维护。,计算机病毒治理和维护:预防、检测,清除计算机病毒。,运行和维护也应像其他开发阶段一样,提供运行日志、软件问题报告、软件修改报告等维护文档。,使用维护,结果,比尔通过类似软件瀑布模型的方式成功完成了自己的建筑项目,结果比尔通过类似软件瀑布模型的方式成功完成了自己的建筑项目,END,END,
展开阅读全文