软件工程基本原理(第一章、第二章)

上传人:woxinch****an2018 文档编号:53762225 上传时间:2018-09-05 格式:PPT 页数:66 大小:651.50KB
返回 下载 相关 举报
软件工程基本原理(第一章、第二章)_第1页
第1页 / 共66页
软件工程基本原理(第一章、第二章)_第2页
第2页 / 共66页
软件工程基本原理(第一章、第二章)_第3页
第3页 / 共66页
软件工程基本原理(第一章、第二章)_第4页
第4页 / 共66页
软件工程基本原理(第一章、第二章)_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《软件工程基本原理(第一章、第二章)》由会员分享,可在线阅读,更多相关《软件工程基本原理(第一章、第二章)(66页珍藏版)》请在金锄头文库上搜索。

1、2018/9/5,教材:软件工程 参考教材:软件工程实践者的研究方法(美)Roger S. Pressman著黄柏素 梅宏 译 教学方式:授课(24)实验(24),课 名:软件工程,2018/9/5,第一章 软件工程概述,本章要解决的问题:,软件为什么要工程化? 软件产品如何工程化?,2018/9/5,第一章 软件工程概述,软件危机软件工程,2018/9/5,软件及其特点,什么是软件软件的特点软件的发展,2018/9/5,一、什么是软件,软件 是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 程序 是按事先设计的功能和性能要求执行的指令序列。 数据 是使程序能

2、正常操纵信息的数据结构 文档 是与程序开发、维护和使用有关的图文材料。,概念,2018/9/5,二、软件的特点,软件具有抽象性。因为它是一种逻辑实体,而不是具体的物理实体。 软件是开发或工程化而形成的。而不是传统意义上的制造产生的。 软件不会磨损。,2018/9/5,故障率曲线,硬件的故障率曲线,理想曲线,实际曲线,2018/9/5,软件是自定义的。他不能通过已有的构件组装而来。 软件对计算机系统有一定的依赖性。其开发和运行常受到计算机系统的限制。 软件成本昂贵,特点,2018/9/5,软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性,例1 Windows95程序超过1000万行 例2

3、 军事和控制系统项目, 3500多人花费了几年时间,交付后相继发现了100个错误,最后以失败告终。,特点,2018/9/5,软件的投入费用越来越高,特点,2018/9/5,三、软件的发展过程,程序设计阶段 50至60年代 程序系统阶段 60至70年 软件工程阶段 70年代以后,2018/9/5,计算机50年的发展,早期 第二代 第三代 第四代 面向批处理 多用户 分布式系统 桌面系统 有限的分布 实时 嵌入“智能” 面向对象技术 自定义软件 数据库 低成本硬件 专家系统软件产品 消费者的影响 人工神经网络 并行计算 网络计算机,小规模程序 软件作坊 微处理器 网络软件产品,2018/9/5,共

4、 43 页 第13页,发展带来的新问题:,硬件的发展超过软件发展; 集成度18个月翻一翻,计算速度、存储容量成倍增长,成本每10年递减两位数。制作软件的能力和速度与需求不适应;计算机的应用依赖于可靠的软件,软件失败将造成巨大经济损失;已有的软件难以维护。,2018/9/5,共 43 页 第14页,中国软件产业面临挑战与机遇,外国软件渗透软件开发投资力度不足软件侵权行为软件人才结构不合理,缺乏高级系统程序员和项目负责人。软件人员缺乏软件工程化的概念。,2018/9/5,共 43 页 第15页,软件已经从特定的问题解决和信息分析工具演化为一门独立的产业!,需要解决的新问题: 软件危机,!,2018

5、/9/5,1-1 软件危机,什么是软件危机产生危机的原因,2018/9/5,一、什么是软件危机,例: IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。,2018/9/5,项目负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命

6、挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,危机,2018/9/5,危机,问题出在哪里?,项目没有被很好地理解;计划不周,最终导致进度拖延; 文档资料不充分,使人与人的交流变得比写程序困难得多; 缺少度量软件可靠性(reliability) 的标准,质量无法保证; 软件难以维护(maintainability) , 不易升级(evolvability);,2018/9/5,必须意识到:,软件 编程,2018/9/5,软件系统的开发与建造高楼大厦、制造飞机导弹同理,需要工程化方法和工具。,2018/9/5,危机,二、软件

7、危机的主要特征,对软件开发的成本和进度估计常常不准确; 用户对“已完成的” 软件系统不满意; 软件质量不可靠; 软件系统常常不可维护; 软件没有适当的文档资料; 软件成本在计算机系统总成本不断上升; 软件生产率的提高速度既比不上硬件的发展,也跟不上计算机应用迅速普及深入的趋势。,2018/9/5,三、产生危机的原因,软件需求巨增! 软件通用性不强软件难于度量,原因,2018/9/5,产生危机的原因,用户与软件开发者之间难以沟通软件难以维护:没有适当的文档资料; 软件的维护是修改原来的设计; 软件开发受硬件的限制软件是定做而不是组装;没有工程化的管理和方法。,原因,2018/9/5,共 43 页

8、 第25页,改正一个问题需付出的代价,改正一个问题的估计费用,改正一个问题的估计工作量,2018/9/5,解决问题的途径 软件开发工程化!,如何维护已有的软件?如何使软件的开发速度适应越来越大的软件需求?,2018/9/5,1-2 软件工程,什么是软件工程 软件工程的基本原理软件工程方法学,2018/9/5,一、软件工程,什么是软件工程?,软件工程是指导计算机软件开发和维护的工程学科。 软件工程是以系统的、工程的概念、原理、技术和方法开发和维护软件,把先进的管理技术和开发技术相结合,经济地开发出高质量的软件并有效地维护它。,概念,软件工程是1968年NATO在计算机科学家国际会议上首次提出来。

9、,2018/9/5,Fritz Bauer的定义:软件工程是为了经济地获得可靠的并能高效运行的软件,而建立和使用的完善的工程化原则。,概念,什么是软件工程?,IEEE的定义:软件工程是开发、运行、维护和修复软件的系统方法。,将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程。,2018/9/5,Boehm提出了软件工程的7条基本原理: 用分阶段的生命周期计划严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发人员应该少而精; 承认不断改进软件工程实践的必要性,二、软件工程基本原理,2018/9/5,一个好的工业,应该有一套良好

10、的标准来配套。,软件的工业化生产过程应具备的特点: 明确的工作步骤 详细具体的规范化文档 明确的质量评价标准,概念,三、软件工程方法学,方法 工具 过程,2018/9/5,软件工程层次图:,管理:支持软件工程的根基在于对质量的关注。 过程:过程将技术层结合在一起,使计算机软件合理并及时开发出来。 方法:涵盖一系列的任务:分析、设计、编程、测试和维护。 工具:对过程、方法提供自动或半自动的支持。例:CASE软件工程环境。,工具(CASE),方法(任务),过程(构建框架),质量管理(基础),计算机辅助软件工程。集成了软件、硬件和一个软件工程数据库(仓库),形成了软件工程环境。,2018/9/5,软

11、件工程的一般视图:,软件工程完成对技术实体(计算机软件)的分析、设计、建造、验证和管理。 软件工程必须回答的问题: 要解决的问题是什么? 实体有哪些特点? 如何实现? 如何建造? 如何及时发现错误? 如何维护?,2018/9/5,软件工程方法学的分类,传统方法学生命周期方法学(结构化范型)采用结构化技术完成软件开发的各项任务面向对象方法学面向对象方法对象类继承用消息通信,2018/9/5,软件生命周期( life cycle ),什么是软件生命周期?,软件孕育、诞生、成长、成熟、衰亡的生存过程。,问题,为什么要研究软件生命周期?,!生命周期的全过程决定了软件工程的任务。 生命周期的三个组成部分

12、:软件定义、软件开发、软件运行与维护。 生命周期的六个步骤:制定计划、需求分析、设计、程序编码、测试及运行维护。,2018/9/5,为什么称为软件生命周期?,概念,2018/9/5,小结:,什么是软件危机?解决软件危机的途径?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题;软件工程化 软件生命周期都有几部分组成?软件定义、软件开发和软件维护 几个重要的概念:软件工程、软件危机、软件生命周期,2018/9/5,作业:,、课后练习中的第一题和第三题、讨论作业:假设你们是某软件公司的项目经理和系统架构师,现在得到了北京石油化工学院几个部门的软件招标信息:一、图书馆管理系统;二、学

13、生选课系统;三、人事管理系统;四、校医院的收费系统。老板要求你在四个系统中任选一个写项目申请书。(可以几位同学一组,下一节课每一组派一位或多位代表讲申请书),2018/9/5,申请书包括的内容、问题定义项目的目的和意义。、工程目标系统应解决的问题。、系统的主要功能及特色、可行性分析(经济和技术)经济可行性和技术可行性。,2018/9/5,第二章 软件过程,软件生命周期的基本任务软件设计模型,2018/9/5,一、软件生命周期的基本任务,问题定义“要解决什么问题?” 可行性研究“上一个阶段所确定的问题是否有行得通的解决办法”目的:用最小的代价在尽可能短的时间内确定问题是否能够解决,2018/9/

14、5,需求分析“系统必须做什么”对待开发软件提出的需求进行分析并给出详细的定义编写软件需求规格说明书提交管理机构评审,2018/9/5,概要设计 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应 详细设计 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础编写设计说明书,提交评审。,2018/9/5,编码把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”写出的程序应当是结构良好、清晰易读的,且与设计相一致的,2018/9/5,软件测试 单元测试:查找各模块在功能和结构上存在的问题并加以纠正组装测试:

15、 将已测试过的模块按一定顺序组装起来按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,2018/9/5,软件维护 改正性维护:运行中发现了软件中的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护: 为了增强软件的功能需做变更,2018/9/5,共 43 页 第47页,2.2瀑布模型,GB8566-88将软件生命周期划分为8个阶段,问题定义 可行性研究,概要设计 详细设计,2018/9/5,实际瀑布模型,特点: 阶段间具有顺序性和依赖性 推迟实现的观点(逻辑设计与物理设计分开) 质量保证观点,线性顺序,2018/9/5,2.3快速原型模型,用于最终系统的早期用户评价。 特点:开发工期短;质量有保证;风险最低,听取用 户意见,建造/修改原型,用户测试 运行原型,2018/9/5,2.4增量模型,先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。 系统的总体设计在初始子集设计阶段就应作出设想,2018/9/5,2.5螺旋模型,基本思想:使用原型及其他方法尽量降低风险(每个阶段前都增加了风险分析)。 适应:大规模软件,利于已有软件的重用减少过多的测试带来的风险维护和开发没有本质的区别,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 法律文献 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号