![软件开发模型课件_第1页](http://file4.renrendoc.com/view/67880eaabb591fda6130ffcad0aca41d/67880eaabb591fda6130ffcad0aca41d1.gif)
![软件开发模型课件_第2页](http://file4.renrendoc.com/view/67880eaabb591fda6130ffcad0aca41d/67880eaabb591fda6130ffcad0aca41d2.gif)
![软件开发模型课件_第3页](http://file4.renrendoc.com/view/67880eaabb591fda6130ffcad0aca41d/67880eaabb591fda6130ffcad0aca41d3.gif)
![软件开发模型课件_第4页](http://file4.renrendoc.com/view/67880eaabb591fda6130ffcad0aca41d/67880eaabb591fda6130ffcad0aca41d4.gif)
![软件开发模型课件_第5页](http://file4.renrendoc.com/view/67880eaabb591fda6130ffcad0aca41d/67880eaabb591fda6130ffcad0aca41d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022年7月25日第1页第1章 概述本章内容结构本章引言学习目标教学内容本章小结思考和练习课堂讨论本章引言本书将分成3篇,全面详细地讲述软件工程的知识。第1篇按照生存周期模型详细阐述面向过程的软件工程;第2篇介绍面向对象软件工程的分析、设计和实现;第3篇则分别给出面向过程和面向对象软件工程队实验指导和案例。“软件工程”一词是由北大西洋公约组织(North Atlantic Treaty Organization,NATO)的计算机科学家在联邦德国召开的国际会议上首次提出来的。产生软件工程这门学科的时代背景是“软件危机”。软件工程的发展和应用不仅缓和了软件危机,而且促使一门新兴的工程学科诞生了
2、。本章将讲述软件、软件危机及软件工程的相关概念、历史发展和开发模型。2022年7月25日第2页2022年7月25日第3页学习目标掌握软件的定义、特点和分类理解软件危机的定义、表现形式、产生原因及解决途径理解和掌握软件工程的定义、目标、研究内容和基本原理,了解软件工程的发展史理解和掌握软件过程和软件生存周期的相关概念和特点了解不同软件开发模型的特点和应用范围理解传统软件工程和面向对象软件工程的区别与联系2022年7月25日第4页教学内容1.1 软件和软件危机 1.2 软件工程1.3 软件过程和软件生存周期1.4 软件开发模型1.5 传统软件工程和面向对象软件工程1.6 本章小结和习题 2022年
3、7月25日第5页1.1 软件和软件危机1.1.1 软件的定义、特点及分类1.1.2 软件危机的定义及表现形式1.1.3 软件危机的产生原因及解决途径2022年7月25日第6页1.1.1 软件的定义、特点及分类一、软件的定义软件不是程序,而是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。其中的方法和规则通常是在文档中说明并在程序中实现的。特别是当软件成为商品时,相关的文档资料是必不可少的。没有相关文档,仅有程序是不能称为软件产品的。程序是为了解决某个特定问题而用程序设计语
4、言描述的适合计算机处理的语句序列。文档则是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。 2022年7月25日第7页1.1.1 软件的定义、特点及分类二、软件的特点软件是一种特殊的产品,与传统的工业产品相比,它具有以下一些独特的特点。(1)软件是一种逻辑产品,而不是具体的物理实体,具有抽象性。(2)软件产品的生产主要是开发研制,没有明显的制造过程。(3)软件产品在使用过程中,不存在磨损、消耗、老化等问题(4)软件产品的开发主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做的”,生产效率低。2022年7月25日
5、第8页1.1.1 软件的定义、特点及分类二、软件的特点软件是一种特殊的产品,与传统的工业产品相比,它具有以下一些独特的特点(续)(5)软件产品的成本相当昂贵,软件费用不断增加,软件的研制需要投入大量的人力、物力和资金,生产过程中还需对产品进行质量控制,对每件产品进行严格的检验。(6)软件对硬件和环境有不同程度的依赖性,为了减少这种依赖性,在软件开发中提出了软件的可移植性问题。(7)软件是复杂的。软件是人类有史以来生产的复杂度最高的工业产品,软件是一个庞大的逻辑系统。软件开发,尤其是应用软件的开发常常涉及到其他领域的专门知识,这就对软件开发人员提出了很高的要求。 2022年7月25日第9页1.1
6、.1 软件的定义、特点及分类三、软件的分类从计算机系统角度看,分为两大类:系统软件和应用软件。从计算机软件用途来划分,分为:服务类、维护类和操作管理类。 2022年7月25日第10页1.1.2 软件危机的定义及表现形式软件危机的定义指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要包含了这样两方面的问题:一是如何开发软件以满足多软件日益增长的需求;二是如何维护数量不断增长的已有软件。软件危机的典型表现形式 (1)对软件开发成本和研制进度的估计常常很不精确。(2)“已完成”的软件不能满足用户要求。(3)软件产品质量差,可靠性得不到保证。(4)软件产品可维护性差。(5)软件成本在
7、计算机系统总成本中所占的比例逐年上升。(6)软件开发生产率提高的速度,远远跟不上计算机应用速度普及深入的趋势。1.1.3 软件危机的产生原因及解决途径产生原因(1) 软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。(2) 软件开发的管理困难。(3) 软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大。(4) 软件开发技术落后。(5) 生产方式落后。(6) 开发工具落后,生产效率提高缓慢。2022年7月25日第11页1.1.3 软件危机的产生原因及解决途径解决途径(1)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念。(2)要使用好的开发技术和
8、方法,并且要不断研究探索更好更有效的技术和方法。尽快消除在计算机系统早期发展阶段形成的一些错误观念和作法。(3)要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务。充分认识软件开发不是某种个体劳动的神秘技巧。(4)应该开发和使用好的软件工具。2022年7月25日第12页2022年7月25日第13页1.2 软件工程1.2.1 软件工程的定义及目标1.2.2 软件工程的研究内容和基本原理1.2.3 软件工程的发展史2022年7月25日第14页1.2.1 软件工程的定义及目标软件工程定义软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发和维护软件。19
9、68年的定义1993年IEEE给出的定义软件工程的不同定义使用了不同的词句,强调的重点也有所差异,但是它的中心思想,是把软件当作一种工业产品,要求“采用工程化的原理和方法对软件进行计划、开发和维护。”宗旨是为了提高软件生产率、降低生产成本,以较小的代价获得高质量的软件产品。2022年7月25日第15页1.2.1 软件工程的定义及目标软件工程的目标1)降低软件开发成本;2)满足用户要求的全部软件功能;3)符合用户要求,令用户满意的软件性能;4)具有较好的易用性、可重用性和可移植性;5)较低的维护成本,较高的可靠性;6)按合同要求完成开发任务,即使交付用户使用。2022年7月25日第16页1.2.
10、2 软件工程的研究内容和基本原理软件工程的研究内容软件工程的主要研究内容是指软件开发技术和软件开发过程管理两个方面。在软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和技术。在软件开发过程管理方面主要研究软件工程经济学和软件管理学。软件工程的基本原理用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查 开发小组人员应该少而精承认不断改进软件工程实践的必要性2022年7月25日第17页1.2.3 软件工程的发展史1. 程序设计时代 1946年到1956年为程序设计年代2. 程序系统时代 1956年到1968年为程序系统时代,或者程
11、序+说明时代3 软件工程时代1968年至今为软件工程年代,或者程序+文档时代。2022年7月25日第18页1.3 软件工程和软件生存周期1.3.1 软件过程1.3.2 软件生存周期2022年7月25日第19页1.3.1 软件过程ISO 9000把软件过程定义为:“把输入转化为输出的一组彼此相关的资源和活动”。软件过程是为了获得高质量所需要完成的一系列任务的框架,它规定了完成多项任务的工作步骤。其中框架由几个重要过程组成,包括用来获取、供应、开发、操作和维护软件所用的基本的、一致的要求。各种组织和开发机构可以根据具体情况进行选择和取舍。软件开发过程是把用户要求转化为软件需求,把软件需求转化为设计
12、,用代码来实现设计,对代码进行测试,完成各阶段的文档编制并确认软件可以投入运行使用的过程。2022年7月25日第20页1.3.2 软件生存周期软件生存周期是借用工程中产品生存周期的概念而得来的,是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止。软件的生存周期一般分为软件计划、软件开发和软件运行三个时期。2022年7月25日第21页1.3.2 软件生存周期软件计划时期(1)问题定义(2)可行性研究软件开发时期(1)需求分析(2)概要设计(3)详细设计(4)编码(5)测试软件运行维护时期2022年7月25日第22页1.4 软件开发模型1.4.1 瀑布模型1.4.2 快速原型模型1
13、.4.3 增量模型 1.4.4 螺旋模型1.4.5 喷泉模型1.4.6 基于构件的开发模型1.4.7 统一过程模型1.4.8 基于形式化的模型 模型是为了理解事物而对事物做出的一种抽象。建摸是软件工程最常使用的一种技术。所谓软件开发模型,就是为整个软件期建立的模型。2022年7月25日第23页1.4.1 瀑布模型瀑布模型也称生存周期模型或线性顺序模型,是WRoyce于1970年首先提出来的。这种模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型,包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。瀑布模型规定了由前至后、相互衔接的固定次序,恰如奔流不息拾级而
14、下的瀑布。在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的生存周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。而且是以文档为驱动,适合于需求很明确的软件项目开发的模型。2022年7月25日第24页1.4.1 瀑布模型需求分析需求规格说明书概要设计软件结构图详细设计模块说明编码验收测试集成测试单元测试源程序清单图1.2 瀑布模型各阶段的相互关系2022年7月25日第25页1.4.1 瀑布模型瀑布模型的特点(1)阶段的顺序性和依赖性:首先必须等前一阶段的工作完成之后,才能开始后一阶段的工作;其次前一阶段的输出文档就是后一阶段的
15、输入文档。(2)推迟实现的观点(3)质量保证的观点: 每一个阶段都必须完成所规定的相应文档; 每一个阶段结束之前都必须对已完成的文档进行评审(4)存在的问题:是一种理想的线性开发模式,缺乏灵活性。特别是无法解决软件需求不明确或不准确的问题。2022年7月25日第26页1.4.2 快速原型模型主要思想:首先快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践让用户了解未来目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进,用户会提出许多改进意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用,这样反复改进,最终建立完全符合用户需求的新系统。202
16、2年7月25日第27页1.4.2 快速原型模型需求分析原形开发原形评价最终软件设计最终软件实现图1.3 快速原型模型法生存期模型2022年7月25日第28页1.4.3 增量模型 增量模型也称为渐增模型,是瀑布模型的顺序特征和快速原型法的迭代特征相结合的产物,是一种非整体开发的模型。软件在模型中是“逐渐”开发出来的,把软件产品作为一系列的增量构件来设计、编码、组装和测试。每个构件由多个相互作用的模型构成,并且能够完成特定的功能。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。2022年7月25日第29页1.4.3 增量模型 规格说明设计编码和集成交付用户规格说明设计编码和
17、集成交付用户规格说明设计编码和集成交付用户图1.4 增量模型构件1:构件2 : 构件n:2022年7月25日第30页1.4.4 螺旋模型螺旋模型加入了瀑布模型与增量模型都忽略了的风险分析,即将两种模型结合起来,弥补了两种模型的不足。它是一种风险驱动的模型。螺旋模型是一种迭代模型,它把开发过程分为几个螺旋周期,每迭代一次,螺旋线就前一周,如图1.5所示。2022年7月25日第31页1.4.4 螺旋模型图1.5 螺旋模型2022年7月25日第32页1.4.5 喷泉模型喷泉模型是一种比较典型的面向对象软件开发模型,以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。图1.6 喷泉模型20
18、22年7月25日第33页1.4.6 基于构件的开发模型经过一定的设计和实现的类可称为构件,它们可以有不同的计算机软件系统中复用,在某个领域具有一定的通用性。基于构件的开发模型是利用预先封装的软件构件来构造应用软件系统,从而提高软件的重用性和可靠性。2022年7月25日第34页1.4.7 统一过程模型软件统一开发过程是经过近40多年的发展形成的,它是基于面向对象统一建模语言UML(Unified Modeling Language)的一种面向对象的软件过程模型。它汲取了多种生存周期模型的先进思想和丰富的实践经验而产生的。RUP(Rational Unified Process)是一个通用的过程框
19、架,可以用于各种不同模型的软件系统,各种不同的应用领域和不同规模的项目。RUP的特点是由用例驱动,以构架为中心,采用迭代和增量的开发策略。RUP软件生存周期是一个二维的软件开发模型。2022年7月25日第35页1.4.8 基于形式化的模型 变换模型和净室模型是两种比较典型的适合于形式化开发的模型。变换模型是结合形式化软件开发方法和程序自动生成技术的一种软件开发模型。它采用严格的、数学的表示体系来表示软件规格说明,从软件需求形式化说明开始,经过一系列变换,最终的得到了系统的目标程序。净室模型是一种化的增量开发模型。其基本思想是力求在分析和设计阶段就消除缺陷,却保正确,然后在无错误或“净室”的状态
20、下实现软件的开发。2022年7月25日第36页各种软件开发模型的对比1 瀑布模型 :经典,需求变化不大2 快速原型模型 :快速获取用户需求3 增量模型 :灵活,允许软件变化4 螺旋模型 :加入风险5 喷泉模型 :典型面向对象开发模型6 基于构件的开发模型:提高软件重用性和可靠性7 统一过程模型 :基于UML的OO过程模型8 基于形式化的模型 :确保严格、无措2022年7月25日第37页1.5 传统的软件工程和面向对象的软件工程1.5.1 传统软件工程方法1.5.2 面向对象软件工程方法1.5.3 两种软件工程方法的对比1.5.1 传统软件工程方法采用结构化技术(结构化分析、结构化设计和结构化实
21、现)来完成软件开发的各项任务具体过程如下: (1)采用结构化技术(结构化分析、结构化设计和结构化实现)完成软件开发的各项任务。(2)把软件生存周期划分成若干个阶段,然后顺序完成各个阶段的任务。 (3)每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。(4)在每一阶段结束之前必须正式地进行严格的技术审查和管理复审。 2022年7月25日第38页1.5.2 面向对象软件工程方法面向对象的开发方法的重点是放在软件生存周期的分析阶段。因为面向对象方法在开发的早起就定义了一系列面向问题领域的对象,即建立了对象模型,整个开发过程统一使用这些对象,并不过分充实和扩展对象模型。面向对象开发过程的特点是,开发阶段界限模糊,开发过程逐步求精,开发活动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 储物仓库出租合同范例
- 个人保安聘用合同范例
- 个人转让门市合同范例
- 代销合同与经销合同范例
- 免责保险合同范本
- ktv家具采购合同范本
- 二手卷板机销售合同范本
- 医院产后修复服务合同范本
- 北京留学中介合同范例
- 公司入股其它公司合同范例
- 社会主义发展史(齐鲁师范学院)知到智慧树章节答案
- 2023年高考真题-地理(辽宁卷) 含解析
- 课程思政融入高职院校应用文写作课程教学路径探析
- 2024全新钢结构安全培训
- 2025届高三数学一轮复习-分段函数专项训练【含答案】
- 腰椎间盘突出症课件(共100张课件)
- 《工程力学》课程教学大纲
- 2024至2030年中国女装行业市场发展监测及投资前景展望报告
- 7.1.2 直观图的画法-【中职专用】高一数学教材配套课件(高教版2021·基础模块下册)
- 皮肤癣菌病的分子诊断工具
- SL+575-2012水利水电工程水土保持技术规范
评论
0/150
提交评论