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