第1章 软件工程学_第1页
第1章 软件工程学_第2页
第1章 软件工程学_第3页
第1章 软件工程学_第4页
第1章 软件工程学_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

付宏,教授,软件与理论方向软件工程-软件构架与软件中间件计算机仿真与数值模拟联系方式:计算机楼B21713500822883fuhong@

2024/2/261/1062024/2/26时间、能力、关系时间52*5-30-35-12=183天上课睡觉吃饭其它4.57210.5能力(985+211+论文)坐下看想行动关系=讨论+协商+尊重2/1062015201420132012华为华为华为

华为中兴中兴中兴

中兴浪潮浪潮神州数码

神州数码方正方正海尔

海尔南瑞南瑞I方正

方正联创科技联创科技联创科技

熊猫东软东软浪潮

浙大网新用友用友浙大网新

浪潮浙大网新浙大网新同方电脑

东软宝信宝信东软

清华同方中国软件企业十大品牌企业排名

2024/2/263/1061Microsoft19751986操作系统(OA)和IT供应商2Oracle19771989应用软件、数据库产品、开发工具、专业服务集成化供应商,Oracl电子商务套件,Oracle10g新一代电子商务平台3SAP1972德国1993用户/服务器企业管理软件及协同服务解决方案供应商(IBM4人)SAPERP,SAP客户关系管理,SAP产品生命周期管理,SAP供应商关系管理,SAP供应链管理首钢矿业4Compuware19731996应用生命周期管理软件供应商——控制成本、降低风险、增加收入中软5NAI19891997合1998电子商务网络安全可用性解决方案供应商(美国网络联盟公司,反病毒厂商)中国石化6BMC19801999企业管理解决方案供应商——从业务角度开发帮助企业有效管理IT,发布IT管理策略中国联通7BEA19952003应用基础结构软件供应商(电信业软件、JAVA中间件)BillolemanEdscottAlfredChuang(庄思浩)东软8Infor20022005为努力进取公司提供商业解决方案软件供应商(中间件:企业资源计划、供应链计划和执行、客户与供应商关系管理、资产管理、产品生命周期管理、财务管理)利安电光源(香港)有限公司、中兴汽车、首钢实业公司9Sybase19841991企业集成解决方案供应商(电信、证卷、金融、政府、交通、能源)企业数据库管理系统、整合各种应用平台、企业信息流转换成经济效益中国电信10SAS19661976成1990智能软件供应商(数据仓库技术、分析方法、智能应用)中国移动中国工商银行世界十大著名软件公司2024/2/264/1062024/2/265/1062024/2/266/106刘积仁

2024/2/267/106张瑞敏2024/2/268/106孙丕恕,山东人,山东大学无线电专业毕业2024/2/269/1062024/2/2610/1062024/2/2611/106孙力斌

2024/2/2612/106(七)经中国人民银行批准的其他相关服务业务。中国银联股份有限公司总裁许罗德2024/2/2613/1062024/2/2614/1062024/2/2615/1062024/2/2616/106吉大正元吉大正元信息技术股份有限公司(以下简称“吉大正元”)是中国领先的信息安全专业服务提供商,成立于1999年2月,吉林大学为主要发起人,注册资本为人民币7500万元,经过七年发展,资产总额由1600万元递增到2.57亿元,年均增长速度为215%。吉大正元运营中心位于北京中关村,在东北、上海、深圳、武汉等8个区域设有分公司、办事处,控股山西省数字证书认证中心,参股国投安信数字证书认证中心。吉大正元主要从事信息安全产品的研发、生产、销售,并提供安全咨询、安全评估和安全集成等服务,同时参与制定多项国家和行业PKI/PMI标准,是国家信息安全标准技术委员会WG4PKI/PMI标准组、WG3密码算法和密码模块工作组的主要成员和子项目召集单位。吉大正元现已成为国内信息安全行业知名企业,是国内最大的公钥基础设施(PKI)产品供应商。根据中国电子商务协会的统计数据:目前吉大正元在PKI电子证书认证系统领域处于领先地位,市场占有率在70%以上。2024/2/2617/1062024/2/2618/106总目录第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第8章维护第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理2024/2/2619/106第1章软件工程学概述1.1软件危机理解

1.2软件工程掌握1.3软件生命周期掌握1.4软件过程掌握2024/2/2620/106第1章软件工程学概述1.1软件危机个体化的软件环境在60年代中期以前,通用硬件相当普遍软件是为每个具体应用而专门编写的,通常是规模较小的程序,编写者和使用者往往是同一个(或同一组)人软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序清单之外,没有其他文档资料保存下来2024/2/2621/106软件的作坊式生产从60年代中期到70年代中期是计算机系统发展的第二代时期随着计算机应用的日益普及,软件数量急剧膨胀软件维护工作,以令人吃惊的比例耗费资源。许多程序的个体化特性使得它们最终成为不可维护的。1968年北大西洋公约组织的计算机科学家在西德召开国际会议,正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。2024/2/2622/1061.1.1软件危机介绍1软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,满足对软件的日益增长的需求如何维护数量不断膨胀的已有软件

软件萧条、软件困扰

2024/2/2623/106软件危机的一些表现:(1)对软件开发成本和进度的估计常常很不准确(2)用户对“已完成的”软件系统不满意的现象经常发生。闭门造车(3)软件产品的质量往往靠不住。复查审查正确性证明(4)软件常常是不可维护的。可重用软件(5)软件通常没有适当的文档资料。里程碑、工具开发、维护(6)软件成本在计算机系统总成本中所占的比例逐年上升。大量人力(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。供不应求2024/2/2624/106

1.1.2产生软件危机的原因

1产生软件危机的原因一方面与软件本身的特点(特性)有关,另一方面也和软件开发与维护的方法不正确有关。软件特性

(1)形态特性:无形、不可见的逻辑实体。(2)智能特性:知识、实践经验、人类智慧的凝聚。(3)开发特性:个体劳动-个人行为、个人因素。(4)质量特性:可参照物不明确、测试技术局限性、

无问题软件难以确定(无法定量分析系统的性能)(5)生产特性:生产成本=设计开发成本2024/2/2625/106(6)管理特性:对大规模知识型工作者智力劳动的管理-培训、指导、激励、制度推行、过程

量化与监督、沟通、协调等。(7)环境特性:依赖于计算机系统。(8)维护特性:与使用和时间无关,修正遗留、隐藏的

缺陷。(9)废弃特性:它不会因为使用时间过长而被“用坏”

维护不划算-废弃或退役。(10)应用特性:国民经济+国防2024/2/2626/106方法上存在的问题(1)目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因,忽视分析、看重开发、轻视维护。(2)对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。(3)缺乏软件开发的经验、开发数据的积累。(4)软件人员与用户交流存在障碍-文化差异、需求工具。(5)软件开发过程不规范。(6)软件规模增大,复杂性指数上升。()xin(7)缺少有效的软件评测手段。2024/2/2627/1062生命周期一个软件从定义、开发、使用和维护,直到最终被废弃(孕育、诞生、成长、成熟、衰亡),要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期(生存周期)。问题定义可行性研究软件定义需求分析设计(概要设计、详细设计)编写程序(10%一20%)软件开发测试维护(55%-70%)运行维护2024/2/2628/1063变动的代价在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期引入一个变动要对所有已完成配置成分都做相应的修改,不仅工作量大,而且逻辑上更复杂,因此付出的代价剧增;在软件“已经完成”时再引入变动,则需要付出更高得多的代价。早中后高中低图1.1引入同一变动付出的代价随时间变化的趋势2024/2/2629/106软件维护比硬件维护更复杂,它与硬件的维护有本质差别2024/2/2630/1061.1.3消除软件危机的途径集体。软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。经验。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。推广。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。工具。应该开发和使用更好的软件工具。正如机械工具可以“放大”人类的体力一样软件工具可以“放大”人类的智力。2024/2/2631/1061.2软件工程

软件:是程序、数据及相关文档的完整集合。程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。软件分类系统软件:与计算机硬件系统配合,使计算机各部件、相关软件、数据-协调和高效工作的软件。应用软件:在系统软件的支持下,在特定领域内开发,为特定目的服务的一类软件。支撑软件:工具软件纵向支撑:软件生命周期某阶段工具-分析、设计、编码、测试、维护等工具横向支撑:软件生命周期活动工具-项目管理工具、配置管理工具可复用软件:软件的各种标准库-厂商提供2024/2/2632/1061.2.1软件工程的介绍1968年在第一届NATO会议上给出“软件工程就是为了经济地获得可靠的而且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理”。1993年IEEE更全面更具体的定义:“软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。”NorthAtlanticTreatyOrganizationInstituteforElectricalandElectronicsEngineers2024/2/2633/106软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它。2024/2/2634/106

软件工程具有下述本质特性:

1软件工程关注大型程序的构造2软件工程的中心课题是控制复杂性

3软件经常变化

4开发软件的效率非常重要

5和谐地合作是开发软件的关键

6软件必须有效地支持它的用户

7在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品2024/2/2635/1061.2.2软件工程的基本原理

著名的软件工程专家B.W.Boehm于1983年在一篇论文中提出了软件工程的七条基本原理。1用分阶段的生命周期计划严格管理

生命周期划分若干阶段、制定可行的计划、按计划开发、维护、管理2坚持进行阶段评审大部分错误是在编码之前造成的,据Boehm等人的统计,设计错误占软件错误的63%,编码错误仅占37%;错误发现与改正得越晚所需付出的代价也越高。2024/2/2636/1063实行严格的产品控制改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制,一切有关修改软件的建议,待别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。2024/2/2637/1064采用现代程序设计技术人们一直把主要精力用于研究各种新的程序设计技术。

SA-SD-SP技术,OOA-OOD-OOP技术。2024/2/2638/1065结果应能清楚地审查

软件产品是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。2024/2/2639/1066开发小组的成员应该少而精

开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,交流情况讨论问题而造成的通信开销也急剧增加。N(N-1)/2,可见随着人数N的增大,通信开销将急剧增加。因此,组成少而精的开发小组是软件工程的一条基本原理,合理5-8人。2024/2/2640/1067承认不断改进软件工程实践的必要性

Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验,积极收集各种数据。2024/2/2641/1061.2.3软件工程方法学软件工程:技术+管理技术:软件工程方法学包括3个要素:方法、工具和过程。方法:完成软件开发各项任务的技术

工具:运用方法提供的自动的或半自动的软件工程支撑环境过程:为了获得高质量的软件所要完成的一系列任务框架,规定了完成各项任务的工作步骤目前使用得最广泛的软件工程方法学分别是传统方法学和面向对象方法学管理:通过计划、组织、控制等一系列活动,合理的配置和使用各种资源,以达到既定的目标和过程。方法学:软件生命周期全过程使用的一整套技术和方法的集合。

2024/2/2642/1061传统方法学(称生命周期方法学或结构化范型)从时间角度对软件开发和维护的复杂问题进行分解,把软件生命周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,通过之后这个阶段才算结束;如果检查不过,则必须进行必要的返工,并且返工后还要再经过审查。审查的一条主要标准就是每个阶段都应该交出“最新式的”高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。这种方法历史悠久,为广大软件工程师所熟悉。自顶向下顺序的完成软件开发各阶段的任务。2024/2/2643/1062面向对象方法学是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法,把对象作为融合了数据及在数据上的操作行为的统一的软件构件把所有对象都划分成类按照父类与子类的关系,把若干个相关类组成一个层次结构的系统对象彼此间仅能通过发送消息互相联系面向对象方法学的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。主动、多次、反复迭代的过程2024/2/2644/1061.3软件生命周期一般说来,软件生命周期由软件定义、软件开发和软件运行维护三个时期组成,每个时期又进一步划分成若干个阶段。软件定义时期问题定义可行性研究需求分析软件开发时期总体设计详细设计系统设计编码和单元测试综合测试系统实现软件运行维护时期(运维)2024/2/2645/1061问题定义:要解决的问题是什么2可行性研究:确定问题有可行得通的解决办法吗?3需求分析:目标系统必须具备哪些功能。用正式文档准确地记录对目标系统的需求,产生规格说明书。4总体设计概括地说,应该怎样实现目标系统,应设计出低成本、中等成本、高成本3种方案,推荐最佳方案。2024/2/2646/1065详细设计设计每个模块,确定实现模块功能所需要的算法和数据结构。6编码和单元测试写出正确的容易理解、容易维护的程序模块。7综合测试通过各种类型的测试使软件达到预定的要求:集成测试:根据设计的软件结构,把经过单元检验的模块按某种选定的策略结合起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定,由用户对目标系统进行验收。2024/2/2647/1068软件维护,通常有四类维护活动:改正性维护:诊断和改正在使用过程中发现的软件错误适应性维护:修改软件以适应环境的变化完善性维护:根据用户的要求改进或扩充软件使它更完善预防性维护:修改软件为将来的维护活动预先做准备2024/2/2648/1062024/2/2649/106经典软件过程模型瀑布模型V模型快速原型模型阶段模型(增量模型与迭代模型)螺旋模型喷泉模型现代软件过程模型Rational统一过程敏捷过程与极限编程微软过程1.4软件过程2024/2/2650/106软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。过程的特性过程使用一定的资源,受一定的限制,并生成一定的中间及最终产品;过程中所包含的活动事先都规定好了;过程中每个活动的开始、结束有明确的规定;每项活动都有相应的指导原则,用以明确其目标;各活动之间以某种顺序组织;过程可能包括若干相互关联的子过程;过程中的活动、资源以及产品都可能受到约束。1.4软件过程1.4.1瀑布模型1特点(1)阶段间具有顺序性和依赖性

定义过程开发过程维护过程1问题的定义2可行性研究3需求分析4总体设计5详细设计6编码7测试8维护传统的瀑布模型必须等前一阶段的工作完成之后,才能开始后一阶段的工作。前一阶段的输出文档就是后一阶段的输入文档。2024/2/2651/106(2)推迟实现的观点对于规模较大的软件项目来说,编码开始得越早,最终完成开发工作所需要的时间反而越长。清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是瀑布模型开发软件的一条重要的指导思想(即设计之前的规约,编码之前的设计)。传统的瀑布模型定义过程开发过程维护过程1问题的定义2可行性研究3需求分析4总体设计5详细设计6编码7测试8维护2024/2/2652/106(3)质量保证的观点软件工程的基本目标是优质、高产。在瀑布模型的每个阶段都应坚持两个重要做法:第一,每个阶段都必须完成规定的文档。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。瀑布模型的本质是“一次通过”。2024/2/2653/106实际的瀑布模型2024/2/2654/1062优点与缺点优点:强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;阶段产品必须经过质量保证小组的验证。缺点:客户必须能够完整、正确和清晰地表达他们的需求;开发人员一开始就必须理解需求。缺乏灵活性。一旦软件需求存在偏差,就会导致开发出的软件产品不能满足用户的实际要求。在一个项目的早期阶段,过分地强调了基线和里程碑处的文档,可能要花费更多的时间,建立了一些用处不大的文档。直到项目结束之前,都不能演示系统的能力,增加了项目的风险。3瀑布模型适用的情况只适用于项目开始时需求就已确定的情况。需求变化小2024/2/2655/1062024/2/2656/106瀑布模型的历史功绩在支持开发结构化软件、控制软件开发复杂度、促进软件开发工程化方面起了显著作用;它为软件开发和维护提供了一种当时较为有效的管理模式,根据这一模式制定开发计划、进行成本预算、组织开发人员,以阶段评审和文档控制为手段,有效地对软件开发过程进行指导,从而对软件质量有一定程度的保证;我国曾在1988年根据该模型制定并公布了“软件开发规范”国家标准。1.4.2V模型

V模型是瀑布模型的变体,它反映了测试活动与分析和设计的关系(德国国防部1992)。编码形成了V的顶点,分析和设计在左边,测试和维护在右边。2024/2/2657/106

单元和集成测试针对的是程序的正确性系统测试验证系统设计由顾客完成的验收测试把测试步骤与需求说明的每一个元素联系起来,以此来确认需求被正确地实现。2024/2/2658/106

该模型中V的左边和右边的边线意味着,如果在验证和确认的过程中发现了问题,那么继续执行右边的测试步骤之前,重新执行V的左边以修正和改进需求、设计和编码。V模型使得某些迭代和重复工作更加清晰,而这些工作在瀑布模型中都是隐含的。瀑布模型的中心通常是文档和工件,而V模型的中心则是活动和正确性。2024/2/2659/106验证(Verification)目标是确定系统中各项功能可以正常工作,实质上是检查实现的质量如何。确认(Validation)目标是确定系统实现了全部的需求,确保开发方建造的是正确的、用户需要的产品。2024/2/2660/1062024/2/2661/106V模型的改良之处与存在的问题本质是把瀑布模型中一些隐含的迭代过程明确出来,使开发活动和验证活动的相关性更加明显;V模型使抽象等级的概念也更明显:所有从需求到实现部分的活动关注的是建立更多的系统详细表述,而所有从实现到交付运行的活动关注的是对系统的验证和确认。和瀑布模型一样,都是对软件开发过程过份简单、理想化的抽象,对需求变化的适应性差。1.4.3快速原型模型1快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品功能的一个子集。2原型在开发中的作用:

(1)获得用户的真正需求;

(2)可用于为一个项目或项目中某些部分,确定技术、成本和进度的可能性。3快速原型模型中各主要部分

(1)原型快速分析:指在分析者和用户的紧密配合下,快速确定软件系统的基本要求.(2)原型构造:在原型分析的基础上,根据基本需求规格说明,忽略细节,只考虑主要特性,快速构造一个可运行的系统。2024/2/2662/106(3)原型运行与评价:软件开发人员与用户频繁通信、发现问题、消除误解的重要阶段,目的是发现新需求并修改原有需求。(4)原型修正:对原型系统,要根据修改意见进行修正。(5)判定原型完成:如果原型经过修正或改进,获得了参与者的一致认可,那么原型开发的迭代过程可以结束2024/2/2663/1062024/2/2664/106快速原型模型设计验证编码验证综合测试维护快速原型验证规格说明验证变化的需求验证2024/2/2665/106优点有助于满足用户的真实需求文档能正确描述用户需求开发基本是线性顺序通过原型进行学习快速缺点可能会增加成本原型系统的内部结构并不重要,重要的是必须迅速构造原型,依据用户意见迅速的修改原型,原型可以是最终产品的一部分,也可以抛弃。2024/2/2666/1061.4.4增量模型(渐增模型)增量模型有一个假设,即需求可以分段,成为一系列增量产品,每一增量可以分别地开发。增量模型把软件产品作为一系列的增量构件来设计、编码和测试。每个构件由多个相互作用的模块构成,能完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。分解时必须遵守的约束条件是,当把新构件集成到现有软件中去时,所形成的产品必须是可测试的。2024/2/2667/106图1.5增量模型概要设计验证需求分析验证规格说明验证针对每个构件,完成详细设计、编码和集成,经测试后交付给用户维护2024/2/2668/1062024/2/2669/1062024/2/2670/106规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户·········构件1:构件2:构件n:图1.6风险更大的增量模型2024/2/2671/106优点1.是瀑布模型的变体,具有瀑布模型的优点,产品分期交付。2.第一个可交付版本所需要的成本和时间是很少的;3.开发由增量表示的小系统所承担的风险是不大的;4.由于能很快发布第一个版本,可以减少用户需求的变更;5.允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。6.用户对产品有充裕的的时间进行学习和适应缺点1.如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;2.如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;3.管理发生的成本、进度和配置的复杂性,可能会超出一些组织的能力。2024/2/2672/106困难1.在把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发的产品2.软件体系结构必须是开放的3.本身具有矛盾性,一方面要求开发人员把软件看作一个整体,另一方面要求开发人员把软件看作构件序列,且构件间彼此独立2024/2/2673/106该模型的适用情况在开始开发时,需求很明确,且产品还可被适当地分解为一些独立的、可交付的软件;在开发中,期望尽快提交其中的一些增量产品。例如:一个数据库系统,它必须通过不同的用户界面,为不同类型的用户提供不同的功能。在这一情况下,首先实现完整的数据库设计,并把一组具有高优先级的用户功能和界面作为一个增量;以后陆续构造其它类型用户所需求的增量。2024/2/2674/106迭代开发是在一开始就移交一个完整的系统,然后在每一个新的发布版本中改变每个子系统的功能。

1.4.5迭代模型2024/2/2675/106图1.6迭代模型规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户版本1:版本2:版本n:2024/2/2676/1061.4.6螺旋模型

Boehm(1988)从涉及到的风险的角度来看待软件开发过程,提出用螺旋模型,把开发活动和风险管理结合起来以降低和控制风险。2024/2/2677/106

螺旋模型的基本思想是:是用原型及其他方法来尽量降低风险。1确定阶段目标,为完成阶段目标选择方案,设定这些方案的约束条件2用建造原型的方法来排除上述方案中潜在的风险3用瀑布模型开发4评价该阶段工作,计划下阶段工作2024/2/2678/106维护风险分析快速原型验证风险分析规格说明验证风险分析变化的需求验证风险分析设计验证风险分析编码验证风险分析综合测试图1.7简化的螺旋模型2024/2/2679/1062024/2/2680/106螺旋模型的特点:实质上相当于在瀑布模型的每个阶段开始前引入风险分析,并由客户对阶段性产品做出评审,这对保证软件产品质量十分有利;由于引入风险分析等活动,测试活动的确定性增强了;螺旋模型最外层代表维护,开发与维护采用同样方式,使维护得到与开发同样的重视。螺旋模型主要适用于内部开发的大规模软件项目,只有内部开发项目,才能在风险过大时方便终止项目。2024/2/2681/106螺旋模型适用性:主要适合内部开发,否则风险分析必须在签订合同前完成,或者争取客户的最大理解;只适合大型软件项目的开发,否则,每个阶段的风险分析将占用很大一部分资源,增加成本;对开发人员的风险分析能力是极大的考验,否则,模型将退化到瀑布模型,甚至更糟。2024/2/2682/1061.4.6

喷泉模型(面向对象过程模型)进一步开发运行状态集成和测试阶段编码阶段面向对象设计阶段面向对象分析阶段需求阶段维护期“喷泉”体现了面向对象软件开发过程迭代和无缝的特性2024/2/2683/106圆圈的重叠,表明两个活动之间存在交迭面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的无缝过度。注意事项为避免使用喷泉模型开发软件时开发过程过于无序,应该把一个线形过程作为总目标面向对象范型本身要求经常对开发活动进行迭代或求精2024/2/2684/106最佳实践—6条软件开发经验①迭代式开发:复杂系统的需求会经常改变,通过一系列细化、若干渐进反复,得出有效解决方案的迭代方法②管理需求:确定需求是一个连续的过程,在提取组织功能需求和约束时RUP使用用例和脚本实现③使用基于构件的体系结构:构件是功能清晰的模块和子系统,系统现存的、第三方开发商提供的④可视化建模:用无歧异的模型,可为文字、图形、数学表达式,RUP采用UML⑤验证软件质量:质量评估内建在贯穿于整个开发过程的、由全体成员参与的所有活动中⑥控制软件变更:变更是不可避免的,但要有管理变更的能力,对迭代软件进行控制、跟踪、监控修改1.4.7RUP(RationalUnifiedProcess)2024/2/2685/106RUP软件开发生命周期2024/2/2686/1062024/2/2687/106核心工作流业务建模

了解目标系统的机构、商业运作需求

开发人员、用户对需求达成共识分析与设计

建立分析、设计模型实现

设计转化成结果测试

识别、确认缺陷并消除部署

生成目标系统的可运行版本,移交给用户配置与变更管理

跟踪维护开发过程中Artifacts的完整性和一致性项目管理

提供项目管理框架,为软件开发项目制定计划、人员配备、执行和监控等方面的使用准则,并为风险管理提供框架环境

软件开发环境,包括过程管理和工具支持2024/2/2688/106RUP软件开发生命周期2024/2/2689/1062024/2/2690/106RUP软件开发生命周期2024/2/2691/1062024/2/2692/106工作阶段初始阶段:建立业务模型,定义最终产品视图,确定项目的范围精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求构建阶段:开发所有构件和程序,集成为用户需要的产品,测试所有功能移交阶段:把开发出的产品提交给用户使用适用性迭代开发,所有项目2024/2/2693/1061.4.8敏捷过程与极限编程敏捷过程(2001/2,17位—敏捷软件开发宣言TheManifestooftheAgileAlliance)敏捷过程由4个简单的价值观构成个体和交互胜过过程和工具-团队、环境可以工作的软件胜过面面俱到的文档-简明客户合作胜过合同谈判-变化、团队协同响应变化胜过遵循计划-计划灵活、可塑、调整2024/2/2694/106极限编程是敏捷过程中最富盛名的一个,其中“极限”的含义是指把最好的开发实践运用到极致。目前极限编程已经成为一个典型的开发方法,广泛应用于需求模糊且经常改变的场合。特点:对变化和不确定性反应更快速,更敏捷;快速的同时保持可持续的开发速度。极限编程(eXtremeProgramming,XP)2024/2/2695/106客户作为开发团队的成员使用用户素材(正在进行的关于需求的谈话内容的助记符)短交付周期(每两周完成一次迭代)验收测试结对编程(一人写、一人查)测试驱动的开发(测试先行,先制定测试计划)集体所有(程序代码属于整个开发小组,每个成员都有修改代码的权利,都对全部代码负责)极限编程的有效实践2024/2/2696/106持续

温馨提示

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

评论

0/150

提交评论