软件工程学概述-2学时Chapter1.ppt_第1页
软件工程学概述-2学时Chapter1.ppt_第2页
软件工程学概述-2学时Chapter1.ppt_第3页
软件工程学概述-2学时Chapter1.ppt_第4页
软件工程学概述-2学时Chapter1.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/8/17,1,Chapter 1 软件工程学概述,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件开发模型,2020/8/17,2,1.1 软件危机(Software Crisis),2020/8/17,3,程序(一组计算机指令) 数据(操作对象) 文档(设计报告、规格说明、使用维护手册),软件 = 程序+数据+文档,1、软件是什么,软件:计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。,2020/8/17,4,Frederick P. Brooks, Jr.,一本在软件领域绝无仅有,20余年畅销不衰的必读经典,2020/8/17

2、,5,拉布雷阿的焦油坑(Mural of La Brea Tar Pits),过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。,2020/8/17,6,IBM 360机的操作系统 开发时间:1963-1966年 投入人力:5000人年 代码量:100万行 结果:每次发行的新版本都是从上一个版本找出1000个错误而修正的结果,2、软件危机的典型事例,“正像一只逃亡的野兽落到泥潭中作垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难,程序设计工作正像这样一个泥潭一批批程序员被迫在泥潭中拼命挣扎,谁也没有料到问题竟会陷入这样的困境。”,1963年美国飞往火星的火

3、箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 3,2020/8/17,7,软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。,游荡在软件 世界的幽灵,1968年,北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词。,软件危机包含两方面问题: 如何开发软件,以满足不断增长,日趋复杂的需求; 如何维护数量不断膨胀的软件产品。,3、什么是软件危机,2020/8/17,8,4、软件危机的主要表现,对软件开发成本和进度的估计常常不准确。开发成本超出

4、预算,实际进度比预定计划一再拖延的现象并不罕见。 用户对“已完成”系统不满意的现象经常发生。 软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。 软件的可维护程度非常之低。 软件通常没有适当的文档资料。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。,2020/8/17,9,5、软件危机仍在继续 影响软件质量的糊涂认识(1/2),在项目的初始阶段对系统若明若暗就开始写程序; 认为软件是灵活的容易修改,对软件需求的改变不以为然; 程序调试成功标志着工作的结束; 程序运行前无法评价程序的质量; 一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、

5、可多可少等等;,2020/8/17,10,虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来; 虽然开发了许多软件工具,但很多开发者对使用这些工具兴趣不大; 为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具; 在软件开发过程中,进度迟后就增派更多的程序员突击,赶进度; ,软件危机仍在继续 影响软件质量的糊涂认识(2/2),2020/8/17,11,引入同一变化付出的代价随时间变化的趋势,2020/8/17,12,6、产生软件危机的原因及解决途径,原因: 软件生产本身存在着复杂性; 与软件开发所使用的方法和技术有关。,解决途径 管理措施 技术措施(方法和工具)

6、,软件工程,2020/8/17,13,1.2 软件工程(Software Engineering),2020/8/17,14,1、软件工程定义(1/3),Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。 IEEE:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。 Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。,2020/8/17,15,软件工程定义(2/3),软件工程是一类求解软件的工程,它 应用计算机科学、数学(用于构造模型和算法)和管

7、理科学(用于计划、资源、质量和成本等的管理)等原理, 借鉴传统工程(用于制定规范、设计范型、评估成本、权衡结果)的原则和方法, 创建软件以达到提高质量、降低成本的目的。,2020/8/17,16,软件工程定义(3/3),软件工程是一门交叉学科 软件开发技术 软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理 软件管理学 软件经济学 软件心理学,2020/8/17,17,软件工程的历史(略),起源于20世纪50年代 年轻的学科,2020/8/17,18,软件工程的历史(略),1、60年代末80年代初 状况:软件系统的规模、复杂性以及在关键领域的广泛应用促进了软件开发过程采纳工程化

8、的方法进行管理。 研究:开发模型、支持工具、开发方法。 成果:瀑布模型、结构化语言(Pascal等)、结构化方法、各种管理方法(如费用估算、文档复审)。 事件:前期主要研究系统实现技术;后期则开始强调管理和软件质量。 焦点:软件项目,2020/8/17,19,2、80年代初现在 状况:“软件工厂”的概念已经提出。 研究:软件生产技术,特别是软件复用技术和软件生产管理的研究和实践。 成果:提出了具有广泛应用前景的面向对象方法和相关的编程语言。 事件:软件过程改进。在工业实践中建立起一种量化的评估程序,判定软件组织成熟的程度。 焦点:软件过程,软件工程的历史(略),2020/8/17,20,近几年

9、: 研究从过程管理转向产品开发,更加注重新的程序开发范型和软件生产。 范围:面向agent语言、复用技术、需求分析规格说明的形式化研究、高智能高自动化的CASE成为热点。,软件工程的历史(略),2020/8/17,21,软件工程的历史(略),20世纪60年代晚期,刊物上开始出现软件工程的专业文章 出现专业杂志 ACM Transactions on Software Engineering and Methodologies Software Engineering Notes IEEEs Transactions on Software Engineering Software,2020/8

10、/17,22,我国软件业的现状(略),我国软件业的规模 具有自主软件研发能力的软件企业约5700家。 从事软件销售、维护和服务的企业5000多家。 营业规模超过一亿元的软件企业达到100家以上 市场销售额占世界市场不到2 国内的软件市场国外软件厂商占主导,2020/8/17,23,与印度的比较(略),2001年我国软件销售总额96.3亿美元,软件企业约5000家,从业人员29万。 2001年印度软件销售总额102.3亿美元,软件企业约6000家,从业人员40万。 2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。 印度在软件出口方面,则一直保持高速

11、的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为77.8亿美元,已经占到了印度全部出口总额的10.5。,2020/8/17,24,我国软件业发展不理想的原因(略),政策 盗版 我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。,2020/8/17,25,它山之石(略),印度软件业能够这么迅速地发展起来,最重要的原因是从标准化与产品流程入手,重视管理。 印度的软件开发管理的特点是流程重于项目。 项目经理一般都是从编码人员升上来的,至少有四年以上的经验 公司所有的东西(包括草稿)都有文档 注重标准化

12、,注重开发的流程管理,以与国际接口。 目前印度软件公司中有170家公司获得ISO9000质量标准认证,是世界上获得质量认证软件企业最多的国家。在得到卡内基-梅隆大学软件工程学会最高级别的全球23家计算机软件公司中,有15家是印度公司。,2020/8/17,26,2、软件工程的本质特征,1、软件工程关注大型程序的构造 2、软件工程的中心课题:控制复杂性 3、软件经常变化 4、开发软件的效率非常重要 5、和谐地合作是开发软件的关键 6、软件必须有效地支持它的用户 7、在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品,2020/8/17,27,3、软件工程的基本原理,1、用分阶段

13、的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果能清楚地审查 6、开发小组的成员应该少而精 7、承认不断改进软件工程实践的必要性,2020/8/17,28,4、软件工程的方法学,传统方法学 生命周期方法学或结构化范型; 采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务; 使用适当的软件工具或软件工程环境来支持结构化技术的运用; 把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。 采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地进行开发。,2020/8/17,2

14、9,4、软件工程的方法学,传统方法学(续) 前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。 每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。 在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果没通过检查,则必须进行必要的返工,而且返工后还要再经过审查。,2020/8/17,30,4、软件工程的方法学,面向对象方法学 把对象(object)作为融合了数据及在

15、数据上的操作行为的统一的软件构件。用对象分解取代了传统方法的功能分解。 把所有对象都划分成类(class)。 继承:类的层次结构 对象彼此间仅能通过发送消息互相联系。,2020/8/17,31,1.3 软件生命周期(Software lifecycle),软件从孕育、诞生、成长、成熟、衰亡的生存过程。,2020/8/17,32,软件生命周期各阶段的基本任务,1、问题定义 要解决的问题是什么? 2、可行性研究 有行得通的解决办法吗? 3、需求分析 目标系统必须做什么? 4、总体设计(概要设计) 怎样实现目标系统?怎么做?,2020/8/17,33,软件生命周期各阶段的基本任务,5、详细设计(模块

16、设计) 怎样具体地实现系统? 6、编码及单元测试 用程序设计语言表达详细设计的结果,并对每一个模块进行测试。 7、综合测试 集成测试:根据设计的软件结构,把各模块装配起来,在装配过程中进行的测试。 验收测试:按规格说明书的要求,由用户对目标进行验收。,2020/8/17,34,软件生命周期各阶段的基本任务,8、软件维护:持久地满足用户的需要。 改正性维护:诊断和改正在使用过程中发现的软件错误。 适应性维护:修改软件以适应环境的变化。 完善性维护:根据用户的要求改进或扩充软件使其更完善。 预防性维护:为将来的维护活动先做准备。,2020/8/17,35,1.4 软件过程模型,2020/8/17,

17、36,软件过程模型软件过程的抽象表示,完成软件的一系列任务的框架,规定工作步骤 瀑布模型(重点了解) 快速原型模型 增量模型 螺旋模型 喷泉模型 ,演化模型,2020/8/17,37,1、瀑布模型,2020/8/17,38,2020/8/17,39,瀑布模型,最早提出的开发模型 传统生命周期模型,2020/8/17,40,瀑布模型的特点,阶段间具有顺序性和依赖性。 推迟程序的物理实现:区分逻辑设计和物理设计 质量保证:每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。 易于组织,易于管理:因为你可以预先完成所有计划。 是一种严格线性的、按阶段顺序的、逐步细化的过程模型(开发

18、模式)。,瀑布模型适合哪些场合呢?有何缺点呢?,2020/8/17,41,瀑布模型适用场合,当有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适。 当你对一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,瀑布模型也特别合适。 对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。 在质量需求高于成本需求和进度需求的时候,它尤为出色。 当开发队伍的技术力量比较弱或者缺乏经验时,瀑布模型更为适合。,2020/8/17,42,瀑布模型的缺陷,在项目开始的时候,用户常常难以清楚地给出所有需求;用户与开发人员对需求理解存在差异。 实际的项目很少按照顺序模型进行。 缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的,导致“阻塞状态”。反馈信息慢,开发周期长。 虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的”,但是在需求被很好地理解的情况下,仍然是一种合理的方法。,2020/8/17,43,Q & A,软件工程? 软件工程的基本特征? 软件生命周期? 瀑布模型?,2020/8/17,44,2、原型模型(快速原型模型 Rapid Prototype Model),2020/8/17,45,原型模型,经常有这样的情况,用户定义了软件一般性

温馨提示

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

评论

0/150

提交评论