版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 2引言引言 课程介绍课程介绍n为什么要学习软件工程为什么要学习软件工程n软件工程的主要内容软件工程的主要内容n本书讲授主要内容本书讲授主要内容n软件工程的课程特点软件工程的课程特点3为什么要学习软件工程为什么要学习软件工程软件工程是计算机学科中一个年轻并且充满活力的研究领域。软件工程是计算机学科中一个年轻并且充满活力的研究领域。自自2020世纪世纪6060年代末期,人们为克服年代末期,人们为克服“软件危机软件危机”在这一领域做了大在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软件开发实践中发挥了重要作用。今天
2、,现代科学技术将人类带入了件开发实践中发挥了重要作用。今天,现代科学技术将人类带入了信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信息社会高技术竞争的关键领域之一。息社会高技术竞争的关键领域之一。 软件工程是指导计算机软件开发与维护的工程学科,它采用工软件工程是指导计算机软件开发与维护的工程学科,它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,而证明正确的管理技术和当前能够得到的最好的技术方法
3、结合起来,以便经济地开发出高质量的软件并有效地维护它。以便经济地开发出高质量的软件并有效地维护它。4软件工程的主要内容软件工程的主要内容n方法与技术:方法与技术:软件开发方法主要讨论软件开发的各种方软件开发方法主要讨论软件开发的各种方法及其工作模型。同时讨论具体实现的技术;法及其工作模型。同时讨论具体实现的技术;n工具及环境:工具及环境:软件工具为软件工程方法提供了支持,研软件工具为软件工程方法提供了支持,研究计算机辅助软件工程究计算机辅助软件工程CASE,建立软件工程环境;,建立软件工程环境;n管理技术:管理技术:软件工程管理是指对软件工程全过程的控制软件工程管理是指对软件工程全过程的控制和
4、管理,包括计划安排、成本估算、项目管理和软件质和管理,包括计划安排、成本估算、项目管理和软件质量管理;量管理;n标准与规范:标准与规范:软件工程标准化与规范化,使得各层工作软件工程标准化与规范化,使得各层工作有章可循,以保证软件生产率和软件质量的提高。有章可循,以保证软件生产率和软件质量的提高。5n软件工程学概述软件工程学概述n可行性研究可行性研究n需求分析需求分析n形式化说明技术形式化说明技术n总体设计总体设计n详细设计详细设计n实现实现n维护维护n面向对象方法学引面向对象方法学引论论n面向对象分析面向对象分析n面向对象设计面向对象设计n面向对象实现面向对象实现n软件项目管理软件项目管理6软
5、件工程的课程特点软件工程的课程特点n学科理论及其知识应用的多维性学科理论及其知识应用的多维性n浓厚的方法学色彩浓厚的方法学色彩n实践性、指导性强实践性、指导性强n工程化工程化7软件工程是集工程科学、计算机科学、数学和管理软件工程是集工程科学、计算机科学、数学和管理科学等理论和知识于一身,并将其应用到软件开发实践科学等理论和知识于一身,并将其应用到软件开发实践的一门学科。的一门学科。q工程科学工程科学:制定规范、设计模型、评估成本及确定权衡;:制定规范、设计模型、评估成本及确定权衡;q计算机科学和数学计算机科学和数学:构造模型与算法;:构造模型与算法;q管理科学管理科学:计划、资源、质量和成本的
6、管理:计划、资源、质量和成本的管理因此,支持软件工程的基础学科理论及其知识的运因此,支持软件工程的基础学科理论及其知识的运用是多方面的。从这一意义上说,软件工程也是综合性、用是多方面的。从这一意义上说,软件工程也是综合性、交叉性的学科。交叉性的学科。8 作为软件工程的要素之一,软件工程方法学不仅是课程作为软件工程的要素之一,软件工程方法学不仅是课程学习的主要内容,而且贯穿到软件开发活动的全过程之中。学习的主要内容,而且贯穿到软件开发活动的全过程之中。方法是完成软件开发各项任务的一整套技术的集合,从软件方法是完成软件开发各项任务的一整套技术的集合,从软件分析、设计、实现、维护到软件项目管理,无处
7、不体现方法分析、设计、实现、维护到软件项目管理,无处不体现方法的运用。只有当这些方法在实践中不断得到完善和发展时,的运用。只有当这些方法在实践中不断得到完善和发展时,软件工程才会成为一种普遍使用的规范。目前使用最广泛的软件工程才会成为一种普遍使用的规范。目前使用最广泛的软件工程方法学是软件工程方法学是传统方法学传统方法学和和面向对象方法学面向对象方法学,二者特点,二者特点鲜明,内涵丰富,是软件工程中最具指导性的技术组成部分。鲜明,内涵丰富,是软件工程中最具指导性的技术组成部分。9软件工程的目标、原则和方法都是从软件开发的软件工程的目标、原则和方法都是从软件开发的实践中总结出来并不断发展而形成的
8、,它们对软件开实践中总结出来并不断发展而形成的,它们对软件开发有着广泛和现实的指导意义。软件开发过程中的问发有着广泛和现实的指导意义。软件开发过程中的问题都会在软件工程中给予讨论和解决,许多原则和方题都会在软件工程中给予讨论和解决,许多原则和方法甚至是非常具体和易于操作的。因此,软件工程是法甚至是非常具体和易于操作的。因此,软件工程是一门实践性和指导性很强的工程应用学科。一门实践性和指导性很强的工程应用学科。10普通工程学的知识在软件工程中得到充分的体普通工程学的知识在软件工程中得到充分的体现。工程规划、模型设计、项目的组织和管理、质现。工程规划、模型设计、项目的组织和管理、质量控制等都已经规
9、范化和标准化。一个软件从设计、量控制等都已经规范化和标准化。一个软件从设计、生产、实施到维护,经历的就是一个工程项目的执生产、实施到维护,经历的就是一个工程项目的执行过程。所以说,掌握软件工程的工程化特点,学行过程。所以说,掌握软件工程的工程化特点,学会用工程的观点和方法去指导软件开发的实践,是会用工程的观点和方法去指导软件开发的实践,是学好软件工程的要领之一。学好软件工程的要领之一。11本章介绍软件和软件工程的基本概念本章介绍软件和软件工程的基本概念q软件与软件危机软件与软件危机q软件工程学的范畴软件工程学的范畴q软件生命周期软件生命周期q软件过程软件过程121.1 1.1 软件与软件危机软
10、件与软件危机n软件的定义软件的定义n软件的特征软件的特征n软件危机软件危机131、软件的发展、软件的发展n体系结构体系结构n主机结构主机结构文件服务器结构文件服务器结构n客户客户/服务器系统服务器系统服务器服务器/浏览器结构浏览器结构n编码语言编码语言n机器代码机器代码汇编代码汇编代码n高级程序语言高级程序语言人工智能语言人工智能语言n开发工具开发工具n分离的开发工具分离的开发工具集成的可视化开发系统集成的可视化开发系统n简单的命令行调试器简单的命令行调试器方便的多功能的调试器方便的多功能的调试器142、软件的发展阶段软件的发展阶段n程序程序n程序程序+文档文档n软件工程软件工程独唱独唱小合唱
11、小合唱合唱合唱万人大合唱万人大合唱 | | | 简单程序简单程序 较复杂程序较复杂程序 软件软件15 3 3、软件定义、软件定义软件软件=程序程序+数据数据+文档文档q程序程序:为了解决某个特定问题而用程序设计语言描述:为了解决某个特定问题而用程序设计语言描述 的适合计算机处理的语句序列的适合计算机处理的语句序列q数据数据:使程序正常执行所需、能正常操纵信息的数据:使程序正常执行所需、能正常操纵信息的数据 结构结构q文档文档:与程序开发、维护和使用有关的图文材料,即:与程序开发、维护和使用有关的图文材料,即 软件开发活动的记录软件开发活动的记录16软件是一种逻辑实体,不是具体的物理实体;软件是
12、一种逻辑实体,不是具体的物理实体;软件产品的生产主要是研制;软件产品的生产主要是研制;软件具有软件具有“复杂性复杂性”,其开发和运行常受到计算机系,其开发和运行常受到计算机系统的限制,有些软件甚至依赖于硬件的配置;统的限制,有些软件甚至依赖于硬件的配置;软件成本昂贵,其开发方式目前尚未完全摆脱手工生软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式;产方式;软件不存在磨损和老化问题,但存在退化问题;软件不存在磨损和老化问题,但存在退化问题;软件通常是针对特定的应用而设计的,需要花费大量软件通常是针对特定的应用而设计的,需要花费大量的资源进行项目规划与需求分析,开发周期较长,成的资源进行项目规
13、划与需求分析,开发周期较长,成本和进度很难估计。本和进度很难估计。17软件与硬件的对比软件与硬件的对比q软件开发不同于硬件设计软件开发不同于硬件设计q软件更依赖于人,成本很难估算,人力占产品成本的大软件更依赖于人,成本很难估算,人力占产品成本的大部分;部分;q硬件设计与人的关系相对小一些,智力成本占产品成本硬件设计与人的关系相对小一些,智力成本占产品成本的一小部分。的一小部分。q软件生产不同于硬件制造软件生产不同于硬件制造q软件成为产品后,制造只是简单的拷贝;软件成为产品后,制造只是简单的拷贝;q硬件的制造是一个复杂的过程,仍可能引入质量问题。硬件的制造是一个复杂的过程,仍可能引入质量问题。q
14、软件维护不同于硬件维修软件维护不同于硬件维修18软件开发的发展过程软件开发的发展过程软件数量多软件数量多规模大规模大软件成本高软件成本高质量低质量低个体化软件开发方法个体化软件开发方法软件维护困难软件维护困难软件危机软件危机软件工程软件工程计算机应用发展计算机应用发展19n定义定义计算机软件的计算机软件的开发开发和和维护维护过程所遇到的一系列严重问题。过程所遇到的一系列严重问题。n表现表现n对软件开发成本和进度的估算很不准确;对软件开发成本和进度的估算很不准确;n用户很不满意;用户很不满意;n质量很不可靠;质量很不可靠;n没有适当的文档;没有适当的文档;n软件成本比重上升;软件成本比重上升;n
15、供不应求:软件开发生产率跟不上计算机应用迅速深供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势入的趋势。 20n客观:软件本身特点客观:软件本身特点n逻辑部件逻辑部件n规模庞大规模庞大n维护费用急剧上升维护费用急剧上升n生产技术进步缓慢生产技术进步缓慢n主观:不正确的开发方法主观:不正确的开发方法n忽视需求分析忽视需求分析n错误认为:软件开发错误认为:软件开发=程序编写程序编写n轻视软件维护轻视软件维护21维护软件的代价是巨大的:维护软件的代价是巨大的:n修改程序困难,抽调大量人员,影响其他软件修改程序困难,抽调大量人员,影响其他软件开发等。开发等。n越晚发现错误,改正的成本就越高越晚发
16、现错误,改正的成本就越高( (因此强调重因此强调重视需求视需求) )。22硬件软件100%19551970198523软件技术进步落后于需求增长软件技术进步落后于需求增长借用G.Booch的一个著名的比喻:“开发一个复杂的软件系统和编写一个简单程序开发一个复杂的软件系统和编写一个简单程序大不一样。其间的差别,如同建造一座大厦和搭大不一样。其间的差别,如同建造一座大厦和搭一个狗窝的差别。一个狗窝的差别。”软件危机必定爆发需要软件工程来解决但它解决不了所有问题24n软件开发方法学软件开发方法学n软件工具软件工具n软件工程环境软件工程环境n软件工程管理软件工程管理25 19831983年年IEEEI
17、EEE:软件工程是开发、运行、维护和修复软件软件工程是开发、运行、维护和修复软件的系统方法。的系统方法。 FairlyFairly:软件工程学是为了在成本限额以内完成开发和软件工程学是为了在成本限额以内完成开发和修改软件产品所需要的系统生产和维护技术及管理学科。修改软件产品所需要的系统生产和维护技术及管理学科。 Fritz BauerFritz Bauer:软件工程是为了经济地获得可靠的且能软件工程是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用的完善在实际机器上有效地运行的软件,而建立和使用的完善的工程化原则。的工程化原则。 19931993年年IEEEIEEE:软件工程
18、是把系统化的、规范的、可度软件工程是把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;把工程化应用于软件中;研究研究中的提到的途径。中的提到的途径。26 把软件当作一种把软件当作一种工业产品,要求工业产品,要求“采用采用工程化的原理与方法对软件进行计划、开发工程化的原理与方法对软件进行计划、开发和维护和维护”。27软件工程的本质特性n1. 软件工程关注于大型程序的构造n2. 软件工程的中心课题是控制复杂性n3. 软件经常变化n4. 开发软件的效率非常重要n5. 和谐地合作是开发软件的关键n6. 软件必须
19、有效地支持它的用户n7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品28软件工程的基本原理Boehm总结的最小集合n1. 用分阶段的生命周期计划严格管理n2. 坚持进行阶段评审n3. 实行严格的产品控制n4. 采用现代程序设计技术n5. 结果应能清楚地审查n6. 开发小组的人员应该少而精n7. 承认不断改进软件工程实践的必要性29n软件开发技术软件开发技术n软件开发方法学软件开发方法学n软件工具软件工具n软件工程环境软件工程环境n软件工程管理软件工程管理n软件管理学软件管理学n软件经济学软件经济学n软件度量学软件度量学30n软件的发展软件的发展n程序程序软件软件
20、软件产品软件产品n软件开发方法的发展软件开发方法的发展n结构化程序设计结构化程序设计n面向对象程序设计面向对象程序设计31n定义定义帮助开发软件的软件帮助开发软件的软件n举例举例编译程序、编辑程序、连接程序、计算机操作系统编译程序、编辑程序、连接程序、计算机操作系统32n定义定义方法与工具相结合,再加上配套的软、硬方法与工具相结合,再加上配套的软、硬件支持就形成软件工程环境。件支持就形成软件工程环境。33n目的目的n为了按照进度及预算完成软件开发计划,实为了按照进度及预算完成软件开发计划,实现预期的经济和社会效益。现预期的经济和社会效益。n内容内容n成本估算、进度安排、人员组织和质量保证成本估
21、算、进度安排、人员组织和质量保证n涉及管理学、度量学和经济学等学科涉及管理学、度量学和经济学等学科34n程序设计方法的两次飞跃程序设计方法的两次飞跃n面向对象程序设计的优势面向对象程序设计的优势n两类软件工程范例的简单比较两类软件工程范例的简单比较35n结构化程序设计结构化程序设计n程序程序=数据结构数据结构+算法算法n认为程序由一组被动的数据和一组能动的过认为程序由一组被动的数据和一组能动的过程所构成程所构成n面向对象程序设计面向对象程序设计n程序程序 = 对象对象 + 消息消息36n传统软件工程传统软件工程n以结构化程序设计为基础以结构化程序设计为基础n软件分析软件分析 总体设计总体设计
22、详细设计详细设计 面向过程的面向过程的编码编码 测试测试 n面向对象软件工程面向对象软件工程n以面向对象程序设计为基础以面向对象程序设计为基础n软件分析与对象抽取软件分析与对象抽取 对象详细设计对象详细设计 面向对面向对象的编码象的编码 测试测试 37n可以有效地降低软件的复杂性,简化程序的可以有效地降低软件的复杂性,简化程序的开发;开发;n使因修改程序而引发软件故障的机会大大减使因修改程序而引发软件故障的机会大大减少,令大型软件的维护更快、更简单。少,令大型软件的维护更快、更简单。38存款取款利息结算帐户余额帐户余额利息结算存 款取 款面向过程的编码语言面向过程的编码语言 面向对象的编码语言
23、面向对象的编码语言(程序与数据分离)(程序与数据分离)(操作与数据统一为一个整体)(操作与数据统一为一个整体)39两类软件工程范型的简单比较n传统软件工程传统软件工程n软件分析软件分析 总体设计总体设计 详细设计详细设计 面向过程的面向过程的编码编码 测试测试 n面向对象软件工程面向对象软件工程n软件分析与对象抽取软件分析与对象抽取 对象详细设计对象详细设计 面向对象面向对象的编码的编码 测试测试 40软件工程的应用软件工程的应用n软件工程指导中小型软件软件工程指导中小型软件n软件工程指导大型软件软件工程指导大型软件n软件工程的成就软件工程的成就n软件工程的局限软件工程的局限41分类 程序规模
24、子程序数开发时间开发人数极小 500行以下102014周1人小1K2K行255016月1人中5K50K行250100012年25人大50K100K行23年520人甚大 1M行45年1001000人极大 1M10M行510年20005000人技术技术/方法方法/工具工具/管理管理低低高高42n定义定义n一个软件从开始计划起,到废弃不用止,称为软一个软件从开始计划起,到废弃不用止,称为软件的生存周期。件的生存周期。n包括计划、开发与运行三个时期。包括计划、开发与运行三个时期。n计划时期:问题定义、可行性研究、需求分析计划时期:问题定义、可行性研究、需求分析n开发时期:总体设计、详细设计开发时期:总
25、体设计、详细设计 编码和单元测试、综合测试编码和单元测试、综合测试n运行时期:系统维护阶段运行时期:系统维护阶段划分阶段的意义:划分阶段的意义:简化每一步的工作内容,使因软件规简化每一步的工作内容,使因软件规 模增大而大大增加的软件复杂性变得模增大而大大增加的软件复杂性变得 易于控制和管理。易于控制和管理。43可行性研究可行性研究 ( (该问题是否有行得通的解决办法该问题是否有行得通的解决办法) )软件定义软件定义需求分析需求分析 ( (目标系统必须做什么目标系统必须做什么) )总体设计总体设计 ( (怎样实现目标系统怎样实现目标系统) )软件生软件生命周期命周期问题定义问题定义 ( (要解决
26、的问题是什么要解决的问题是什么) )详细设计详细设计 ( (应该怎样具体地实现这个系统应该怎样具体地实现这个系统) )编码和单元测试编码和单元测试 ( (写出正确的容易理解、写出正确的容易理解、 容易维护的程序模块容易维护的程序模块) )综合测试综合测试( (集成测试和验收测试集成测试和验收测试) )系统设计系统设计系统实现系统实现软件开发软件开发运行维护运行维护 ( (改正性维护、适应性维护、改正性维护、适应性维护、 完善性维护、预防性维护完善性维护、预防性维护) )( (系统分析系统分析) )44 在实际从事软件开发工作时,软件规模、种类、开在实际从事软件开发工作时,软件规模、种类、开发环
27、境及开发时使用的技术方法等因素,影响阶段的划发环境及开发时使用的技术方法等因素,影响阶段的划分。分。 生命周期模型规定了把生命周期划分成哪些阶段及生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。各个阶段的执行顺序,因此,也称为过程模型。 我国国家标准我国国家标准计算机软件开发规范计算机软件开发规范(GB8566-88)(GB8566-88)把软件生命周期的划分成把软件生命周期的划分成8 8个阶段:可行性研究与计划、个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、组装测试、确需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用和维护认测
28、试、使用和维护。45n任务任务n调查用户需求,分析新系统的主要目调查用户需求,分析新系统的主要目 标,分析开发该系统的可行性并确定系统的需求。标,分析开发该系统的可行性并确定系统的需求。n问题定义问题定义n明确明确“用户需要计算机解决什么问题用户需要计算机解决什么问题”n提出关于提出关于“系统目标与范围的说明系统目标与范围的说明”请用户确认。请用户确认。n可行性研究可行性研究n明确明确“上一阶段确定的问题是否有行得通的解决办法上一阶段确定的问题是否有行得通的解决办法”n提出一套或多套在技术上可行、在经济上有较高效益提出一套或多套在技术上可行、在经济上有较高效益的可操作解决方案。的可操作解决方案
29、。46n需求分析需求分析n概括地回答概括地回答“怎样实现目标系统怎样实现目标系统?”?”n弄清楚用户对软件系统的全部需求;弄清楚用户对软件系统的全部需求;n用用“需求规格说明书需求规格说明书”准确表达出来;准确表达出来;n系统分析员必须和用户密切配合,充分交流信息系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统需求。以得出经过用户确认的系统需求。4748n软件设计软件设计n将需求转变为软件的表示形式将需求转变为软件的表示形式n总体设计总体设计(概要设计概要设计)n建立软件系统的总体结构,形成系统的功能结构图;建立软件系统的总体结构,形成系统的功能结构图;n定义功能模块的接口
30、,包括模块功能、关系及接口界面定义定义功能模块的接口,包括模块功能、关系及接口界面定义n设计全局数据库或数据结构设计全局数据库或数据结构n规定设计约束,定义软件系统的边界并给出约束说明规定设计约束,定义软件系统的边界并给出约束说明n编制概要设计文档编制概要设计文档 n详细设计详细设计n模块详细设计,包括模块详细功能、算法、数据结构和接口模块详细设计,包括模块详细功能、算法、数据结构和接口信息的设计,拟定模块测试方案;信息的设计,拟定模块测试方案;n编制模块的详细规格说明编制模块的详细规格说明49n编码编码n选择一种程序设计语言;选择一种程序设计语言;n写出正确的容易理解、容易维护的源程序模块;
31、写出正确的容易理解、容易维护的源程序模块;n产生可执行的目标程序。产生可执行的目标程序。50n测试测试-保证软件质量的重要手段保证软件质量的重要手段n任务任务n保证输出与要求的一致;保证输出与要求的一致;n发现错误。发现错误。n单元测试单元测试n验证模块功能及接口与文档的一致性验证模块功能及接口与文档的一致性n集成测试集成测试n将经过单元测试的模块逐步进行组装和测试将经过单元测试的模块逐步进行组装和测试n生成可运行的系统源程序并编写组装测试报告生成可运行的系统源程序并编写组装测试报告n确认测试确认测试n软件系统测试软件系统测试n编制确认测试文档编制确认测试文档n软件评审,通过后交付用户使用软件
32、评审,通过后交付用户使用n系统测试系统测试513 3、运行时期、运行时期n使用使用n将软件安装在用户确定的运行环境中使用将软件安装在用户确定的运行环境中使用n维护维护n通过各种必要的维护活动使系统持久地满足用户通过各种必要的维护活动使系统持久地满足用户的需要。的需要。n对所有的维护写出维护报告。对所有的维护写出维护报告。n通常有四类维护活动通常有四类维护活动n改正性维护改正性维护n适应性维护适应性维护n完善性维护完善性维护n预防性维护预防性维护n退役:软件一旦完成其使命,就要终止对软件产品的退役:软件一旦完成其使命,就要终止对软件产品的 支持,软件停止使用。支持,软件停止使用。52n软件过程软
33、件过程n为了获得高质量软件所需完成的一系列任务的框架,为了获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。它规定了完成各项任务的工作步骤。n一个有效的软件过程应该是定义一组适合一个有效的软件过程应该是定义一组适合于所从事的项目的任务集合。于所从事的项目的任务集合。n一个任务集包括一组软件工程工作任务、一个任务集包括一组软件工程工作任务、里程碑和可交付的产品。里程碑和可交付的产品。n通常用生命周期模型来描述软件过程,生通常用生命周期模型来描述软件过程,生命周期生命模型规定了把生命周期划分成命周期生命模型规定了把生命周期划分成哪些阶段及各阶段执行的顺序哪些阶段及各阶段执行
34、的顺序53n又称线性顺序模型或生存周期模型又称线性顺序模型或生存周期模型nW.Royce于于1970年首次提出年首次提出n各个阶段的工作顺序展开各个阶段的工作顺序展开n重要的指导思想重要的指导思想n把逻辑设计与物理设计划分开,尽可能推把逻辑设计与物理设计划分开,尽可能推迟程序的物理实现迟程序的物理实现54用户要求用户要求编码编码需求分析需求分析模块说明模块说明详细设计详细设计需求规格说明需求规格说明软件结构图软件结构图总体设计总体设计单元测试单元测试程序清单程序清单确认测试确认测试综合测试综合测试系统测试系统测试瀑瀑布布模模型型的的阶阶段段与与文文档档55瀑布模型的特点瀑布模型的特点n阶段间的
35、顺序性和依赖性阶段间的顺序性和依赖性n相邻两个阶段有因果关系,要求严格顺序执行相邻两个阶段有因果关系,要求严格顺序执行n上一阶段的变换结果是下一阶段变换的输入上一阶段的变换结果是下一阶段变换的输入n每个阶段都要进行阶段性评审,确认后转下一阶段每个阶段都要进行阶段性评审,确认后转下一阶段n推迟实现的观点推迟实现的观点n尽可能推迟软件的编码时间尽可能推迟软件的编码时间n质量保证的观点(文档驱动性)质量保证的观点(文档驱动性)n每个阶段都要完成规定的文档;每个阶段都要完成规定的文档;n每个阶段都要对已完成的文档进行复审,尽早发现每个阶段都要对已完成的文档进行复审,尽早发现问题,消除隐患。问题,消除隐
36、患。56同一变动同一变动付出的代价随时间变化的趋势付出的代价随时间变化的趋势57带带“反馈环反馈环”的瀑布模的瀑布模型型修改设计的反馈维护追溯的反馈58n瀑布模型的优点瀑布模型的优点可强迫开发人员采用规范的方法可强迫开发人员采用规范的方法严格地规定了每个阶段必须提交的文档严格地规定了每个阶段必须提交的文档要求每个阶段交出的所有产品都必须经过质量保要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证证小组的仔细验证n瀑布模型的缺点瀑布模型的缺点n周期长:顺序推进,环环审查周期长:顺序推进,环环审查n需求难以准确把握需求难以准确把握( (不能准确提出和沟通、不能不能准确提出和沟通、不能快速适
37、应变化的需求快速适应变化的需求) ),导致返工甚至推倒重来,导致返工甚至推倒重来n无法预测新引入模块的影响无法预测新引入模块的影响n最终的形式难以预料最终的形式难以预料n不适合需求模糊的系统不适合需求模糊的系统 59 快速原型模型的第一步是快速建立一个能反映用快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系
38、统,然后再次请用户试的意见快速地修改原型系统,然后再次请用户试用用。一旦用户认为这个原型系统确实能做他们所。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。根据这份文档开发出的软件可以满足用户的真实需求。 60需求分析需求分析原型开发原型开发最终系统设计最终系统设计原型评价原型评价最终系统实现最终系统实现用户用户反馈反馈61 快速原型的本质是快速原型的本质是“快速快速”。开发人员应该尽。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,可能快地建造出原型系统
39、,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。需求,一旦需求确定了,原型将被抛弃。 适用于需求确定性不高的系统开发。适用于需求确定性不高的系统开发。62n怎样保证怎样保证“快快”?n原型模型仅包括未来系统的主要功能,以及系统的原型模型仅包括未来系统的主要功能,以及系统的重要接口。重要接口。n开发原型系统时尽量使用能缩短开发周期的语言和开发原型系统时尽量使用能缩短开发周期的语言和工具。工具。63n特点特点n原型驱动型原型驱动型n过程的交互性与迭代性过程的交互性与迭代性n优点优点n用户在开发过程中可
40、以完善对软件系统的需求;用户在开发过程中可以完善对软件系统的需求;n开发周期相对缩短,成本较低;开发周期相对缩短,成本较低;n有效发挥用户与开发人员之间的密切配合作用;有效发挥用户与开发人员之间的密切配合作用;n充分体现逐步发展、逐步完善的原则。充分体现逐步发展、逐步完善的原则。n缺点缺点n频繁的需求变化会使开发过程难于管理和控制;频繁的需求变化会使开发过程难于管理和控制;n原型的快速开发和修改对技术要求比较高,需要原型的快速开发和修改对技术要求比较高,需要较好的工作基础。较好的工作基础。64n基本思想基本思想n把软件产品作为一系列的增量构件来设计、实把软件产品作为一系列的增量构件来设计、实现
41、、集成和测试。开发时分批逐步向用户提交现、集成和测试。开发时分批逐步向用户提交产品,每次提交一个满足用户需求子集的增量产品,每次提交一个满足用户需求子集的增量构件,直到最后一次得到满足用户全部需求的构件,直到最后一次得到满足用户全部需求的完整产品为止。完整产品为止。n将软件分解成增量构件时的约束条件将软件分解成增量构件时的约束条件n当把新构件集成到现有软件中时,所形成的产当把新构件集成到现有软件中时,所形成的产品必须是可测试的。品必须是可测试的。65 使用增量模型时,第一个增量构件往往使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心实现软件的基本需求,提供最核心的功能。的功能。
42、66n优点优点n能在较短的时间内向用户提交部分功能的构件;能在较短的时间内向用户提交部分功能的构件;n逐步增加产品功能可以使用户有较充裕的时间学习逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新软件可能给用户带来和适应新产品,减少一个全新软件可能给用户带来的冲击。的冲击。n缺点缺点n增量构件的划分依赖于系统功能的构成和软件开发增量构件的划分依赖于系统功能的构成和软件开发人员的经验;人员的经验;n要求软件系统的体系结构具有高度的可扩充性和开要求软件系统的体系结构具有高度的可扩充性和开放性。放性。67风险更大的增量模型显示出一旦确定了用户需求风险更大的增量模型显示出一旦确定了
43、用户需求后,就着手拟定第一个构件的规格说明文档,完成规后,就着手拟定第一个构件的规格说明文档,完成规格说明文档后将转向第二个构件的规格说明,与此同格说明文档后将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件。时设计组开始设计第一个构件。规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户规格说明规格说明设计设计实现和集成实现和集成交付客户交付客户构件构件1 1构件构件2 2构件构件n n68n基本思想基本思想 使用原型及其他方法来尽量降低风险。理解这种使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是
44、模型的一个简便方法,是把它看作在每个阶段之前都把它看作在每个阶段之前都增加了风险分析过程的快速原型模型增加了风险分析过程的快速原型模型。 螺旋模型的每一个周期都包括螺旋模型的每一个周期都包括需求分析、风险分需求分析、风险分析、工程实现和评审析、工程实现和评审4 4个步骤个步骤。每迭代一次,过程完。每迭代一次,过程完成一个周期,软件开发前进一个层次,系统生成一个成一个周期,软件开发前进一个层次,系统生成一个新的版本。新的版本。69n每个螺旋周期的工作步骤及各步骤的任务每个螺旋周期的工作步骤及各步骤的任务n需求分析需求分析n确定目标、方案和限制条件确定目标、方案和限制条件n风险分析风险分析n评估方
45、案、标识风险和解决风险评估方案、标识风险和解决风险n工程实现工程实现n开发确认产品开发确认产品n评审评审n评价该阶段的工作并计划下一个阶段的工作评价该阶段的工作并计划下一个阶段的工作70n完整的螺旋模型完整的螺旋模型螺旋模型主要适用于内部开发的螺旋模型主要适用于内部开发的大规模软件项目。当风险过大时,大规模软件项目。当风险过大时,可方便的终止项目。可方便的终止项目。71可把它看作在每可把它看作在每个阶段之前都增个阶段之前都增加了风险分析过加了风险分析过程的快速原型模程的快速原型模型型72n特点特点n瀑布模型瀑布模型+快速原型快速原型+风险分析风险分析n迭代过程迭代过程n优点优点n强调可选方案和
46、约束条件有利于已有软件的重用;强调可选方案和约束条件有利于已有软件的重用;n有助于把软件质量作为软件开发的一个重要目标;有助于把软件质量作为软件开发的一个重要目标;n减少过多测试或测试不足带来的风险;减少过多测试或测试不足带来的风险;n维护只是模型的另一个周期,在维护和开发之间并没维护只是模型的另一个周期,在维护和开发之间并没有本质区别。有本质区别。n缺点缺点n需耗费大量资金和时间用于风险评估;需耗费大量资金和时间用于风险评估;n要求开发人员具有丰富风险评估经验和有关知识;要求开发人员具有丰富风险评估经验和有关知识;n开发过程比较复杂;开发过程比较复杂;n给过程管理和控制带来了一定的难度。给过
47、程管理和控制带来了一定的难度。73 迭代是软件开发过程中普遍存在的一种内在属性。迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。喷泉模型是典型的面向对象生命周期化范型中更常见。喷泉模型是典型的面向对象生命周期模型。模型。1.4.5 1.4.5 喷泉模型喷泉模型7475 由于面向对象方法在概念和表示方法上的一致性,由于面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的无缝过渡,在分
48、析、设计和保证了各项开发活动之间的无缝过渡,在分析、设计和编码各阶段并不存在明显的边界编码各阶段并不存在明显的边界( (有相互重叠有相互重叠) ),“喷泉喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。这个词体现了面向对象软件开发过程迭代和无缝的特性。 为避免使用喷泉模型开发软件时开发过程过分无序,为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程作为总目标。应该把一个线性过程作为总目标。但是,同时也应该记但是,同时也应该记住,面向对象范型本身要求经常对开发活动进行迭代或住,面向对象范型本身要求经常对开发活动进行迭代或求精。求精。76nRUP:是以用例为驱动、以系统架构为中心的迭代与增量过程。n1. 最佳实践n迭代式开发n管理需求n使用基于构件的体系结构n可视化建模n验证软件质量n控制软件变更77n2. RUP软件开发生命周期软件开发生命周期n9个核心工作流个核心工作流n业务建模业务建模n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年四川自贡市属事业单位考试聘用人员高频重点提升(共500题)附带答案详解
- 2025下半年北京市延庆县事业单位招聘39人历年高频重点提升(共500题)附带答案详解
- 2025上海地铁第一运营限公司多职能队员(巡视)(储备)招聘50人高频重点提升(共500题)附带答案详解
- 2025上半年贵州六盘水市事业单位及国企业招聘应征入伍大学毕业生【92】人高频重点提升(共500题)附带答案详解
- 2025上半年四川省江油市事业单位招聘95人历年高频重点提升(共500题)附带答案详解
- 农村建设诚信承诺书模板
- 银行网点智能系统布线合同
- 商场屋面瓦安装合同
- 2024年租房合同终止协议3篇
- 2024年物业中介服务定金协议
- 生产安全事故应急资源调查报告(参考模板)
- 生物信息学在微生物研究领域中的应用
- 分布式光伏发电项目并网验收意见单
- 看听学一册单词大全
- 网站隐私政策模板
- YY∕T 1831-2021 梅毒螺旋体抗体检测试剂盒(免疫层析法)
- 沪教版生物科学八年级上册重点知识点总结
- 消弧产品规格实用标准化规定
- 装饰装修工程施工合理化建议和降低成本措施提要:完整
- 己内酰胺的生产工艺.
- 第十四章35kV变电站保护整定值计算实例
评论
0/150
提交评论