软件工程课件之第1章软件工程学概述(张海潘编著).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程课件之第1章软件工程学概述(张海潘编著).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课件 软件 工程学 概述 张海潘 编著
- 资源描述:
-
1、学习目的:学习目的:n软件工程是计算机专业一门重要的专业课。软件工程是计算机专业一门重要的专业课。n目的在于培养学生用工程化的原理及方法开发目的在于培养学生用工程化的原理及方法开发软件系统,把专业知识同实际项目结合起来,软件系统,把专业知识同实际项目结合起来,为将来从事计算机软件的开发及应用维护工作为将来从事计算机软件的开发及应用维护工作打下坚实的基础。打下坚实的基础。n对于培养学生的软件素质,提高学生的软件开对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。发能力与软件项目管理能力具有重要的意义。参考书:参考书:n现代软件工程,张家浩,机械工业出版社现代软件工程
2、,张家浩,机械工业出版社n软件工程:实践者的研究方法,软件工程:实践者的研究方法,Roger S. pressman,郑人杰等译,机械工业出版社,郑人杰等译,机械工业出版社n软件工程导论学习辅导,张海藩,清华大学出软件工程导论学习辅导,张海藩,清华大学出版社版社总目录:总目录:第第1章章 软件工程学概述软件工程学概述第第2章章 可行性研究可行性研究第第3章章 需求分析需求分析第第4章章 形式化说明技术形式化说明技术第第5章章 总体设计总体设计第第6章章 详细设计详细设计第第7章章 实现实现第第8章章 维护维护第第9章章 面向对象方法学引论面向对象方法学引论第第10章章 面向对象分析面向对象分析
3、第第11章章 面向对象设计面向对象设计第第12章章 面向对象实现面向对象实现第第13章章 软件项目管理软件项目管理 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期软件生命周期 1.4 软件过程软件过程第第1章章 软件工程学概述软件工程学概述1.1 软件危机软件危机计算机系统:计算机系统:是指适当的组织在一起的一系列系统元素是指适当的组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。信息的处理而完成预先定义的目标。计算机系统计算机系统软件软件硬件硬件人员人员数据库数据库文
4、档文档过程过程程序程序数据结构数据结构相关文档相关文档电子计算设备电子计算设备电子机械设备电子机械设备用户和操作者用户和操作者大型、有组织的信息集合大型、有组织的信息集合手册、表格、图形等描述性信息手册、表格、图形等描述性信息一系列步骤一系列步骤对软件的认识:对软件的认识:n1950:程序:程序n1960:程序:程序+文档(不包括管理文档)文档(不包括管理文档)n1970:程序:程序+文档文档+数据数据n1984:软件管理是过程管理,:软件管理是过程管理,CMM1.0能力成能力成熟度模型熟度模型n1996:UML统一建模语言统一建模语言计算机系统计算机系统4个不同的发展阶段:个不同的发展阶段:
5、时期时期硬件硬件软件软件早期时代早期时代20世纪世纪60年年代中期以前代中期以前晶体管晶体管计算机计算机程序设计阶程序设计阶段段个体化生产个体化生产第二代第二代20世纪世纪60年年代中期到代中期到70年代中期年代中期集成电集成电路计算路计算机机程序系统阶程序系统阶段段作坊式生产作坊式生产软件危机出软件危机出现现软件工程诞软件工程诞生生第三代第三代20世纪世纪70年年代中期到代中期到80年代中期年代中期微处理微处理器器个人计个人计算机算机软件工程阶软件工程阶段段工程化思想工程化思想分布式系统分布式系统第四代第四代20世纪世纪80年年代中期至今代中期至今面向对象阶段面向对象阶段硬件与软件综合硬件与
6、软件综合软件开发第四代技术软件开发第四代技术 面向批处理 有限的分布 自定义软件 初期 多用户 实时 数据库 软件产品 第二阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响 第三阶段 强大的桌面系统 面向多项技术 专家系统 人工神经网络 并行计算 网络计算机 第四阶段 1950 年 1960 年 1970 年 1980 年 1990 年 2000 年 计算机软件发展的计算机软件发展的4个阶段个阶段 1.1.1 软件危机的介绍软件危机的介绍软件危机软件危机(软件萧条、软件困扰软件萧条、软件困扰):是指在计算机是指在计算机软件的开发和维护过程中所遇到的一系列严重软件的开发和维护过程中所遇到
7、的一系列严重问题。实际上,几乎所有软件都不同程度地存问题。实际上,几乎所有软件都不同程度地存在这些问题。在这些问题。软件危机包含下述两方面的问题:软件危机包含下述两方面的问题:n如何开发软件,满足对软件日益增长的需求;如何开发软件,满足对软件日益增长的需求;n如何维护数量不断膨胀的已有软件。如何维护数量不断膨胀的已有软件。软件危机的典型表现:软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准)对软件开发成本和进度的估计常常很不准确;确;(2)用户对)用户对“已完成的已完成的”软件系统不满意的现软件系统不满意的现象经常发生;象经常发生;(3)软件产品的质量往往靠不住;)软件产品的质量
8、往往靠不住;(4)软件常常是不可维护的;)软件常常是不可维护的;(5)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比)软件成本在计算机系统总成本中所占的比例逐年上升;例逐年上升;(7)软件开发生产率提高的速度,远远跟不上)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势计算机应用迅速普及深入的趋势 。1.1.2 产生软件危机的原因产生软件危机的原因 (1)与软件本身的特点有关)与软件本身的特点有关n软件是逻辑部件。软件是逻辑部件。n软件不会被软件不会被“用坏用坏”,如果发现了错误,很,如果发现了错误,很可能是开发时期引入。可
9、能是开发时期引入。n软件规模庞大,而且程序复杂性将随着程序软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。规模的增加而呈指数上升。(2)与软件开发与维护的方法不正确有关)与软件开发与维护的方法不正确有关n忽视软件需求分析的重要性。对用户要求没忽视软件需求分析的重要性。对用户要求没有完整准确的认识就匆忙着手编写程序。越有完整准确的认识就匆忙着手编写程序。越早开始写程序,完成它所需要用的时间往往早开始写程序,完成它所需要用的时间往往越长。越长。n认为软件开发就是写程序并设法使之运行。认为软件开发就是写程序并设法使之运行。程序只是完整的软件产品的一个组成部分。程序只是完整的软件产品的一
10、个组成部分。一个软件产品必须由一个完整的配置组成,一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。软件配置主要包括程序、文档和数据等成分。在软件开发的不同阶段进行修改需要付出的在软件开发的不同阶段进行修改需要付出的代价是很不相同的,见图代价是很不相同的,见图1.1。图图1.1 引入同一变动付出的代价随时间变化的趋势引入同一变动付出的代价随时间变化的趋势n轻视软件维护。维护是极端艰巨复杂的工作,需要花轻视软件维护。维护是极端艰巨复杂的工作,需要花费很大代价。软件维护的费用占软件总费用的费很大代价。软件维护的费用占软件总费用的55%70%。软件工程学的一个重要目标就是
11、提高软。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。件的可维护性,减少软件维护的代价。1.1.3 消除软件危机的途径消除软件危机的途径 n对计算机软件有正确的认识。对计算机软件有正确的认识。n认识到软件开发是一种组织良好、管理严密、认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。各类人员协同配合、共同完成的工程项目。n应该推广使用在实践中总结出来的开发软件应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。的成功技术和方法,并继续研究探索。n应该开发和使用更好的软件工具。应该开发和使用更好的软件工具。n总之,为了解决软件
12、危机,既要有总之,为了解决软件危机,既要有技术技术措施措施(方法和工具方法和工具),又要有必要的组织,又要有必要的组织管理管理措施。措施。 1.2 软件工程软件工程 1.2.1 软件工程的介绍软件工程的介绍 软件工程:软件工程:是指导计算机软件开发和维护的一门是指导计算机软件开发和维护的一门工程工程学科。采用工程的概念、原理、技术和方学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件方法结合起来,以经济地开发出
13、高质量的软件并有效地维护它,这就是软件工程。并有效地维护它,这就是软件工程。 软件工程的代表性定义:软件工程的代表性定义:nFritz Bauer:软件工程是为了经济地获得可靠的和能软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工在实际机器上高效运行的软件而建立和使用的好的工程原则。程原则。nIEEE:软件工程是(软件工程是(1)将系统化的、规范的、可度)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(将工程化应用于软件中;(2)()(1)中所述方法的研)中所述方法的研究
14、。究。n计算机科学技术百科全书:计算机科学技术百科全书:软件工程是应用计算机科软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。制作软件的工程。软件工程的划代(无公认的定义):软件工程的划代(无公认的定义):n1970年末之前,传统软件工程,瀑布模型。年末之前,传统软件工程,瀑布模型。n1980年后,面向对象软件工程,面向对象语年后,面向对象软件工程,面向对象语言以言以Smalltalk-80的出现为标志。的出现为标志。n1984年后,软件过程工程,掀起软件过程运年后,软件过程工程,掀起软件过程运动,动,1991年
15、出现的年出现的CMM是典型代表。是典型代表。n1990年后,构件工程,基于构件的软件开发年后,构件工程,基于构件的软件开发方法,可重用的构件组装成新系统。方法,可重用的构件组装成新系统。软件工程的本质特性:软件工程的本质特性:n软件工程关注于大型程序的构造软件工程关注于大型程序的构造n软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性n软件经常变化软件经常变化n开发软件的效率非常重要开发软件的效率非常重要n和谐地合作是开发软件的关键和谐地合作是开发软件的关键n软件必须有效地支持它的用户软件必须有效地支持它的用户n在软件工程领域中是由在软件工程领域中是由具有一种文化背景的人具有一种文化
16、背景的人替具有另一种文化背景的人创造产品替具有另一种文化背景的人创造产品1.2.2 软件工程的基本原理软件工程的基本原理 n用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理n坚持进行阶段评审坚持进行阶段评审n实行严格的产品控制实行严格的产品控制n采用现代程序设计技术采用现代程序设计技术n结果应能清楚地审查结果应能清楚地审查n开发小组的人员应该少而精开发小组的人员应该少而精n承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性1.2.3 软件工程方法学软件工程方法学 n软件工程包括软件工程包括技术技术和和管理管理两方面的内容。两方面的内容。n管理:管理:通过计划、组织和控
17、制等一系列活动,合通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过理地配置和使用各种资源,以达到既定目标的过程。程。n技术技术(软件工程方法学软件工程方法学):通常把在软件生命周期通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法全过程中使用的一整套技术方法的集合称为方法学学(methodology),也称为范型,也称为范型(paradigm)。软件工程方法学软件工程方法学3要素:要素:n方法:是完成软件开发的各项任务的技术方法,回答方法:是完成软件开发的各项任务的技术方法,回答“怎样做怎样做”的问题;的问题;n工具:是为运用方法而提供的自动的或半自动
18、的软件工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境;如,工程支撑环境;如,CASE(Computer-Aided Software Engineering )工具工具n过程:需要完成的一系列任务的框架,它规定了完成过程:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。各项任务的工作步骤。1. 传统方法学传统方法学(生命周期方法学或结构化范型生命周期方法学或结构化范型)强调强调自顶向下自顶向下n采用结构化技术来完成软件;采用结构化技术来完成软件;n划分为若干个阶段,然后顺序地完成每个阶段的任务;划分为若干个阶段,然后顺序地完成每个阶段的任务;每个阶段的任务相对独立,而且
19、比较简单,降低了整每个阶段的任务相对独立,而且比较简单,降低了整个软件开发工程的困难程度;个软件开发工程的困难程度;n前一个阶段是后一个阶段的前提和基础,而后一阶段前一个阶段是后一个阶段的前提和基础,而后一阶段提出的解法更具体,细节更多;提出的解法更具体,细节更多;n每个阶段结束前必须从每个阶段结束前必须从技术和管理技术和管理两方面对这个阶段两方面对这个阶段的开发成果进行严格的检查,通过之后这个阶段才算的开发成果进行严格的检查,通过之后这个阶段才算结束;保证质量,提高可维护性;结束;保证质量,提高可维护性;n当软件规模庞大,或者的需求模糊或随时间而变化时,当软件规模庞大,或者的需求模糊或随时间
20、而变化时,传统方法学往往不成功;维护起来仍然很困难。传统方法学往往不成功;维护起来仍然很困难。2. 面向对象方法学面向对象方法学强调主动地多次强调主动地多次反复迭代反复迭代面向对象方法:面向对象方法:把数据和行为看成同等重要,它把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。紧密地结合起来的方法。面向对象方法学面向对象方法学4个要点:个要点:n对象对象(object):融合了数据及在数据上的操作行:融合了数据及在数据上的操作行为。为。n类类(class):类是对具有相同数据和相同操作的一:类是对具有相同数据和相同
21、操作的一组相似对象的定义。组相似对象的定义。n继承:按照父类与子类的关系,把若干个相关继承:按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。类组成一个层次结构的系统。n消息:对象彼此间仅能通过发送消息互相联系。消息:对象彼此间仅能通过发送消息互相联系。面向对象方法学的优点:面向对象方法学的优点:n面向对象方法学的尽量模拟人类习惯的思维方面向对象方法学的尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。认识世界解决问题的方法与过程。n面向对象方法学开发软件的过程,是一个主动面向对象方法学开发软件的过程
22、,是一个主动地多次反复迭代的演化过程,保证了在各项开地多次反复迭代的演化过程,保证了在各项开发活动之间的平滑过渡。发活动之间的平滑过渡。n促进了软件重用。最终的软件产品由许多较小促进了软件重用。最终的软件产品由许多较小的、基本上独立的对象组成,每个对象相当于的、基本上独立的对象组成,每个对象相当于一个微型程序,而且大多数对象都与现实世界一个微型程序,而且大多数对象都与现实世界中的实体相对应,降低了复杂性,提高了可理中的实体相对应,降低了复杂性,提高了可理解性,简化了开发和维护工作。解性,简化了开发和维护工作。软件四化:软件四化:n构架平台化构架平台化n组建业务化组建业务化n编码自动化编码自动化
23、n管理工厂化管理工厂化n以面向对象技术为手段,以可重用软件构件化以面向对象技术为手段,以可重用软件构件化和体系架构为基础,以工业化生产方式和管理和体系架构为基础,以工业化生产方式和管理支撑体系为核心的软件新变革。支撑体系为核心的软件新变革。1.3 软件生命周期软件生命周期 三个时期八个阶段:三个时期八个阶段:软件生命周期由软件定义、软件开软件生命周期由软件定义、软件开发和运行维护发和运行维护(也称为软件维护也称为软件维护)三个时期组成,每个三个时期组成,每个时期又进一步划分成若干个阶段。时期又进一步划分成若干个阶段。 三个时期:三个时期:八个阶段:八个阶段:软件生命周期软件生命周期软件定义软件
展开阅读全文