软件工程-原理、方法与应用(第二版) 01 软件工程概论.ppt

上传人:s****8 文档编号:69579505 上传时间:2023-01-07 格式:PPT 页数:34 大小:185KB
返回 下载 相关 举报
软件工程-原理、方法与应用(第二版) 01 软件工程概论.ppt_第1页
第1页 / 共34页
软件工程-原理、方法与应用(第二版) 01 软件工程概论.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《软件工程-原理、方法与应用(第二版) 01 软件工程概论.ppt》由会员分享,可在线阅读,更多相关《软件工程-原理、方法与应用(第二版) 01 软件工程概论.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第1章章 软件工程概论软件工程概论学习目标u掌握软件的概念及特点 u掌握软件危机的产生及消除途径 u掌握软件工程的概念及其研究内容 u掌握软件生存周期的定义及其模型 1第第1章章 软件工程概论软件工程概论 教学内容 1.1 引 言 1.2 软件概述 1.3 软件危机 1.4 软件工程 1.5 软件生存周期 1.6 软件生存周期模型 本章小结 21.1 1.1 引引 言言 计算机及其相关技术的发展是很快的,但软件的开发没有摆脱手工制作的过程,开发人员对软件开发的认识存在一些偏差,严重影响了软件的发展。于是,许多计算机和软件科学家进行了一些尝试,把其他工程领域中行之有效的方法运用到软件开发中来,

2、形成了软件工程。本教材以大家都比较熟知的学生成绩管理系统为案例,进行软件工程的讲解与学习。返回目录31.1 1.1 引引 言言学生成绩管理系统总体框图如下:返回目录41.1 1.1 引引 言言 系统模块功能确定以后,下一步就要对模块的功能和性能、数据结构、用户界面等进行必要的设计;然后进入程序编码、软件测试等阶段,而后方可交付用户使用。在用户使用的过程中,还要对程序进行不断的完善与修改,以满足用户的实际需要。返回目录51.2 软件概述软件概述 1.2.1 软件的定义 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。可以写作为:软件=程序+数据+文档。程

3、序:程序是按事先设计好的功能和性能要求执行的指令序列。数据:数据是指程序能正常处理信息的数据和数据结构。文档:文档是与程序运行和维护有关的图文资料。返回目录61.2 软件概述软件概述1.2.2 软件的特点(1)软件具有抽象特征。(2)软件具有无明显制造过程特征。(3)软件无备件的特征。(4)手工制作特征。(5)成本昂贵特征。71.2 软件概述软件概述1.2.3 软件的分类 1按软件功能进行划分 (1)系统软件 (2)支撑软件 (3)应用软件 2按软件规模进行划分 按开发软件所需的人力、时间以及完成的源程序行数,可确定六种不同规模的软件。如表1.1所示。81.2 软件概述软件概述表1.1软件规模

4、的分类 类别参加人员数研制期限产品规模(源程序行数)微型114周0.5k小型116月1k2k中型2512年5k50k大型52023年50k100k甚大型100100045年1M(=1000k)极大型20005000510年1M10M91.2 软件概述软件概述1.2.4 软件的发展 1程序设计阶段 20世纪40年代中期到20世纪60年代中期 2.程序系统阶段 20世纪60年代中期到20世纪70年代中期 3.软件工程阶段 20世纪70年代中期到20世纪90年代 4.第四代技术阶段 101.3 软件危机软件危机 20世纪60年代中期以后,一些开发大型软件系统的要求提了出来。然而软件技术的进步一直未能

5、满足形势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难题。遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控制的局面,出现了所谓的“软件危机”。软件危机是指在软件开发和维护中所产生的一系列严重的问题。一是如何开发软件,满足用户对软件的需求,二是如何维护数量众多的已有软件。1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“。”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。返回目录111.3 软件危机软件危机1.3.1 1.3.1 软件危机产生的原因软件危机产生的原因(1)软件是逻辑部件,缺乏“可见性”,且软件产品

6、往往规模庞大,维护困难。(2)软件一般要使用510年,在这段时间里,软件需求发生变化等,都需要及时地对软件进行维护,以延长软件的使用寿命。(3)软件开发技术落后,生产方式和开发工具落后。(4)软件开发人员忽视软件需求分析的重要性,轻视软件维护。1.3.2 1.3.2 软件危机的表现形式软件危机的表现形式(1)软件发展速度跟不上硬件的发展和用户的需求。(2)对软件成本和进度估计不准确,用户不满意。(3)软件产品质量差,可靠性不能保证。(4)软件产品可维护性差。(5)软件没有合适的文档资料。121.3 软件危机软件危机1.3.3 1.3.3 解决软件危机的途径解决软件危机的途径(1)应该加强软件开

7、发过程的管理。(2)推广使用开发软件的成功技术与方法,并且不断探索更好的技术与方法。(3)开发和使用好的软件工具,建立软件工程支持环境。总之,为了解决软件危机,既要有技术措施(好的方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。131.4 软件工程软件工程 1968年和1969年北大西洋公约组织成员国软件工作者两次召开会议(NATO会议),讨论摆脱软件危机的办法,提出了软件工程的概念,试图建立并使用正确的工程方法开发出成本低、可靠性好并能高效运转的软件,从而解决或缓解软件危机。返回目录141.4 软件工程软件工程1.4.1

8、 1.4.1 软件工程的定义及目标软件工程的定义及目标 人们曾从不同的角度,给软件工程下过各种定义。Fritz Bauer曾经为软件工程下了定义:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。”1983年IEEE给出的定义为:“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。中华人民共和国国家标准GB/T114571995软件工程术语的定义是:“软件工程是软件开发、运行、维护和引退的系统方法”。许多定义的主要思想都是强调在软件开发过程中需要应用工

9、程化原则的重要性。软件工程是指导计算机软件开发和维护的工程学科。151.4 软件工程软件工程 软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户要求的软件产品。图1.2 软件工程目标之间的关系 161.4 软件工程软件工程1.4.2 1.4.2 软件工程学的范畴软件工程学的范畴 软件工程学所研究的主要内容包括:软件开发技术和软件工程管理两个方面。其中:软件开发技术包含:1软件开发方法学(Software Development Methods)(1)传统方法学 传统方法学也称为生

10、命周期方法学或结构化范型(2)面向对象方法学 面向对象=对象+类+继承+消息通信2软件工具(Software Tools)3软件工程环境(Software Engineering Environment,简称SEE)4软件工程管理171.4 软件工程软件工程1.4.3 1.4.3 软件过程软件过程 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。在完成开发任务时必须进行一些开发活动,并且使用适当的资源,在过程结束时将把输入转化为输出。因此,ISO 9000把过程定义为“使用资源将输入转化为输出的活动所构成的系统。”此处,“系统”的含义是广义的:“系统是

11、相互关联或相互作用的一组要素。”181.4 软件工程软件工程1.4.4 1.4.4 软件工程的基本原理软件工程的基本原理 著名软件工程专家B.W.Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)软件工程结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性 遵循前6条基本原理,能够实现软件的工程化生产;按照第7条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。191

12、.5 软件生存周期软件生存周期1.5.1 软件生存周期定义软件生存周期定义 软件生存周期是从设计软件产品开始到产品不能使用为止的时间周期。软件产品从问题定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程就是软件生存周期。概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。返回目录201.5 软件生存周期软件生存周期1 1定义时期定义时期 主要任务是:确定软件开发工程必须完成的总目标;确定工程可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。软件定义时期通常进一

13、步划分成3个阶段,即问题定义、可行性研究和需求分析。2 2开发时期开发时期 具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。3 3维护时期维护时期 主要任务是使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。211.5 软件生存周期软件生存周期1.5.2 软件生存

14、周期划分阶段的原则软件生存周期划分阶段的原则 软件生存周期划分阶段的原则如下:(1)各阶段的任务彼此间尽可能相对独立。这样便于逐步完成各个阶段的任务,能够简化各个阶段的工作,容易确立系统开发计划。(2)同一阶段的工作任务性质尽可能相同。这样有利于软件工程的开发和组织管理,明确系统各类开发人员的分工与职责范围,以便协同工作,保证质量。221.5 软件生存周期软件生存周期1.5.3 1.5.3 软件生存周期各阶段的任务软件生存周期各阶段的任务 1问题定义 该阶段是软件生存期中最短的一段。该阶段要确定系统“解决什么问题”。系统分析员通过问题定义阶段弄清楚问题的性质、软件系统的目标和规模,并以书面的形

15、式向用户提交,请用户审查和认可。2可行性研究 该阶段对问题定义阶段确定的系统目标进行全面地分析,研究完成该项软件任务的可行性,探讨解决问题的可能方案,并对可利用的资源(计算机硬件、软件、人力等)、成本、可取得的效益、开发的进度做出估算,制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。231.5 软件生存周期软件生存周期1.5.3 1.5.3 软件生存周期各阶段的任务软件生存周期各阶段的任务3需求分析 该阶段主要解决的问题是“目标系统必须做什么”,也就是要深入描述软件的功能和性能;确定软件设计的限制和软件与其他系统元素的接口;定义软件的其他有效性需求,并用“需求规格说明书”的

16、形式准确地表达出来,提交管理机构评审。4软件设计 该阶段是软件工程的技术核心,主要任务是把已确定了的各项需求转换成一个相应的体系结构,通常细分成总体设计和详细设计两个阶段。总体设计:又称概要设计,需要解决的问题是“应该如何较宏观地解决问题”。详细设计:该阶段需要解决的问题是“如何具体地实现这个系统”。241.5 软件生存周期软件生存周期1.5.3 1.5.3 软件生存周期各阶段的任务软件生存周期各阶段的任务 5编码和单元测试 该阶段的主要任务就是按照选定的语言把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”。6综合测试 测试是保证软件质量的重要手段,

17、其主要方式是在设计测试用例的基础上检验软件的各个组成部分。7运行/维护 其原因可能有:运行中发现了错误需要修正;为适应变化了的工作环境,需要做适当变更;为增强软件的功能需做变更等。因此,软件人员在这一时期的主要工作就是做好软件维护。251.6 软件生存周期模型软件生存周期模型1.6.1 瀑布模型(瀑布模型(Waterfall model)瀑布模型(也称线性顺序模型或软件生存周期模型),是W.Royce在1970年提出的。瀑布模型遵循软件生存期的划分,明确规定各个阶段的任务,各个阶段的工作自上而下、顺序展开,如同瀑布流水,逐级下落。瀑布模型把软件生存周期划分为计划时期(或定义时期)、开发时期和运

18、行时期。这三个时期又分别细分为若干个阶段,参看图1.4。返回目录261.6 软件生存周期模型软件生存周期模型图1.4 软件生存周期的瀑布模型 271.6 软件生存周期模型软件生存周期模型瀑布模型软件开发具有以下几个特征:1阶段间的顺序性和依赖性 2推迟实现的观点3质量保证的观点 瀑布模型为软件开发和软件维护提供了一种有效的管理图式。根据这一图式制定开发计划、进行成本预算、组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。但其最为突出的缺点是该模型缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。这些问题的存在对软

19、件开发会带来严重影响,最终可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才有所察觉。281.6 软件生存周期模型软件生存周期模型1.6.2 快速原型快速原型模型模型 是快速建立起来的可以在计算机上运行的程序,它能完成的功能往往是最终产品能完成功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通常用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用经过多次调整原型使其满足用户的需求之后,开发人员便可以将用户的真正需求确定下来;第二步则是在第一步的基础上开发用户满意的软件

20、产品。此模型可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。291.6 软件生存周期模型软件生存周期模型1.6.3 增量增量模型模型 图1.5 增量模型 301.6 软件生存周期模型软件生存周期模型 由于增量模型将整个产品分解成若干个构件进行逐步交付,因此软件开发可以较好地适应需求的变化,用户可以不断地看到所开发软件的可运行中间版本,从而降低了开发风险。增量模型也存在如下缺陷:l由于各个构件是逐渐并入已有的软件体系结构中,所以加入构件必须不破坏以构造好的系统部分,这需要软件具备开放式的体系结构。l在开发过程中,需求的变化

21、是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型,但是也很容易退化为边做边改的方式,从而使软件过程的控制失去整体性。311.6 软件生存周期模型软件生存周期模型1.6.4 1.6.4 螺旋模型(螺旋模型(spiral modelspiral model)1986年,B.W.Boehm提出了螺旋模型。螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。螺旋模型沿着螺线旋转,如图1.6所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:(1)制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析分析所选方案

22、,考虑如何识别和消除风险;(3)实施工程实施软件开发;(4)客户评估评价开发工作,提出修正建议。321.6 软件生存周期模型软件生存周期模型 图1.6 螺旋模型 33本本 章章 小小 结结u随着软件规模的不断扩大,引发了软件危机,从而导致了软件工程的出现。u本章介绍了软件、软件工程、软件生存周期及其模型的一些基本概念,论述了软件工程学的基本范畴,阐述了目前比较常见的几种软件开发模型的基本理论、基本特点。u软件工程的目标指明了软件开发项目应追求和应达到的标准。u软件生存周期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。u目前常见的模型有瀑布模型、快速原型模型、增量模型、螺旋模型等。它们各有特色,开发人员可根据项目的不同特点,选用不同的开发模型。返回目录34

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com