版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章第一章 软件工程概述软件工程概述河南警察学院信息安全系刘磊软件工程导论学期项目(大作业)学期项目(大作业):计划:全部同学分成小组,每组计划:全部同学分成小组,每组5-8人,每人,每一个小组推选一位负责人,作为项目经理。一个小组推选一位负责人,作为项目经理。项目经理有权利对小组其它的人员进行具项目经理有权利对小组其它的人员进行具体的角色分工和人事调整。每组人员的角体的角色分工和人事调整。每组人员的角色可为:色可为: 1. 项目经理项目经理 2. 系统分析人员系统分析人员 3. 系统设计人员系统设计人员 4. 系统实施人员系统实施人员 5. 系统测试人员系统测试人员 要求:要求: 项目经理
2、负责:组织、分工、控制进度项目经理负责:组织、分工、控制进度; 对每位组员成绩有浮动调整权;对每位组员成绩有浮动调整权; 项目经理奖罚:引起过半数组员不满,则改选;项目经理奖罚:引起过半数组员不满,则改选; 带领全组顺利完成任务,总评加分。带领全组顺利完成任务,总评加分。小组成员:在项目经理的统一协调下完成项目,小组成员:在项目经理的统一协调下完成项目,根据完成的质量来决定最后的成绩。根据完成的质量来决定最后的成绩。内内 容容1. 全套文档和说明书(书面)全套文档和说明书(书面)2. 总体设计报告总体设计报告 (演讲)(演讲)3. 推出推出 v1.0 (现场验收)(现场验收)4. 推出升级版(
3、可选)推出升级版(可选)5. 面向对象分析练习题一道(演讲)面向对象分析练习题一道(演讲)6. 推出期末最终版并制作案例总结报告(现场推出期末最终版并制作案例总结报告(现场验收和演讲)验收和演讲)目目 的的 体验软件工程各阶段的主要工作,特别注意吸取教训;体验软件工程各阶段的主要工作,特别注意吸取教训; 学会与他人合作,培养团队精神,单干户将得不到成绩。学会与他人合作,培养团队精神,单干户将得不到成绩。 从现在开始,谁也不知道我们的从现在开始,谁也不知道我们的项目会不会成功,但是请牢记:目标、项目会不会成功,但是请牢记:目标、交流与合作、内省交流与合作、内省引言引言从愚公移山说开去从愚公移山说
4、开去【先秦先秦】列子列子汤问汤问 太行太行,王屋二山,方七百里,高万仞,本在冀州之南,河阳之北。王屋二山,方七百里,高万仞,本在冀州之南,河阳之北。(现位于,河南省济源市。)(现位于,河南省济源市。) 北山愚公者,年且九十,面山而居。惩山北之塞,出入之迂也。聚北山愚公者,年且九十,面山而居。惩山北之塞,出入之迂也。聚室而谋曰:室而谋曰:“吾与汝毕力平险,指通豫南,达于汉阴,可乎?吾与汝毕力平险,指通豫南,达于汉阴,可乎?”杂然相杂然相许。其妻献疑曰:许。其妻献疑曰:“以君之力,曾不能损魁父之丘,如太行、王屋何?以君之力,曾不能损魁父之丘,如太行、王屋何?且焉置土石?且焉置土石?”杂曰:杂曰:“
5、投诸渤海之尾,隐土之北。投诸渤海之尾,隐土之北。”遂率子孙荷担者遂率子孙荷担者三夫,叩石垦壤,箕畚运于渤海之尾。邻人京城氏之孀妻有遗男,始龀,三夫,叩石垦壤,箕畚运于渤海之尾。邻人京城氏之孀妻有遗男,始龀,跳往助之。寒暑易节,始一反焉。跳往助之。寒暑易节,始一反焉。 河曲智叟笑而止之曰:河曲智叟笑而止之曰:“甚矣,汝之不惠。以残年余力,曾不能毁甚矣,汝之不惠。以残年余力,曾不能毁山之一毛,其如土石何?山之一毛,其如土石何?”北山愚公长息曰:北山愚公长息曰:“汝心之固,固不可彻,汝心之固,固不可彻,曾不若孀妻弱子。虽我之死,有子存焉;子又生孙,孙又生子;子又有曾不若孀妻弱子。虽我之死,有子存焉;
6、子又生孙,孙又生子;子又有子,子又有孙;子子孙孙无穷匮也,而山不加增,何苦而不平?子,子又有孙;子子孙孙无穷匮也,而山不加增,何苦而不平?”河曲河曲智叟亡以应。智叟亡以应。 操蛇之神闻之,惧其不已也,告之于帝。帝感其诚,命夸娥氏二子操蛇之神闻之,惧其不已也,告之于帝。帝感其诚,命夸娥氏二子负二山,一厝朔东,一厝雍南。自此,冀之南,汉之阴,无陇断焉。负二山,一厝朔东,一厝雍南。自此,冀之南,汉之阴,无陇断焉。愚公是一位工程名家愚公是一位工程名家第第1 1章章 软件工程概述软件工程概述 本章主要内容本章主要内容 软件的发展、定义及特征;软件危机的表现及解决途径;软件工程的定义及三要素,软件工程的基
7、本原理及目标;软件生存周期的概念和内容;五种软件开发模型;软件开发方法和开发工具;传统软件工程和面向对象软件工程。 本章重点:本章重点:软件工程的定义及三要素,软件工程的基本原理及目标;五种软件开发模型;软件开发方法和开发工具; 本章难点:本章难点:五种软件开发模型的使用。 工程工程 在现代社会中,“工程”一词有广义和狭义之分。就狭义而言,工程定义为“以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品过程”。就广义而言,工程则定义为由一群人为达到某种目的,在一个较长时间周期内进行协作活动的过程。
8、 参阅工程系统论,王连成著,中国宇航出版社。“工程”是科学的某种应用,通过这一应用,使自然界的物质和能源能够通过各种结构、机器、产品、系统和过程,以最短的时间和精而少的人力做出高效、可靠且对人类有用的东西。工程的分类工程的分类将自然科学的理论应用到具体工农业生产部门中形成的各学科。如:水利工程、化学工程、土木建筑工程、遗传工程、系统工程、生物工程、海洋工程、环境微生物工程用较多的人力、物力来进行较大而复杂的工作,需要一个较长时间周期内来完成。如:城市改建工程、京九铁路工程、菜蓝子工程、探月工程关于工程的研究称为“工程学”。工程学是一门应用学科,是用数学和其他自然科学的原理来设计有用物体的进程。
9、关于工程的立项称为“工程项目”一个全面的、大型的、复杂的包含各子项目的工程称为“系统工程”工程的主要依据是数学、物理学、化学,以及由此产生的材料科学、固体力学、流体力学、热力学、输运过程和系统分析等。依照工程对科学的关系,工程的所有各分支领域都有如下主要职能:(1)研究:应用数学和自然科学概念、原理、实验技术等,探求新的工作原理和方法。(2)开发:解决把研究成果应用于实际过程中所遇到的各种问题。(3)设计:选择不同的方法、特定的材料并确定符合技术要求和性能规格的设计方案,以满足结构或产品的要求。(4)施工:包括准备场地、材料存放、选定既经济又安全并能达到质量要求的工作步骤,以及人员的组织和设备
10、利用。(5)生产:在考虑人和经济因素的情况下,选择工厂布局、生产设备、工具、材料、元件和工艺流程,进行产品的试验和检查。(6)操作:管理机器、设备以及动力供应、运输和通信,使各类设备经济可靠地运行。(7)管理及其他职能。工程师和科学家是一样的吗?工程师和科学家是一样的吗? 实践工程学的人叫做工程师。工程师利用科学家发现的知识,制造对人类有用的物体或工具。 科学家经常要问“为什麽?”,他们关心了解人类不懂的知识,科学家不必关心经济问题,他们想法获得必要的经费(如政府拨款、企业投资、私人赞助等),然后专心去研究,把这些经费花光,如果得到的是和原先设想的完全相反的结果,经费也没有白花。 工程师则相反
11、,他们必须使制造出来的物体,在经济上是可行的,否则没有任何用处,如果一件产品的成本高于其市场价值,无人光顾,这种产品就无法生产,所以对工程师来说,经济观念是必备的。 软件工程是一门研究如何用系统化、规范化、可度量等工程原则和方法去进行软件的开发和维护的学科。即将工程化应用于软件过程。工程着重应用,软件工程一定是软件过程的一个“产出”,一个个各有特色的实例! 软件工程包括两方面内容:软件开发技术和软件项目管理。 软件开发技术包括软件开发方法学、软件工具和软件工程环境。 软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。第第1 1章章 软件工程概述软件工程概述 主要内容
12、:主要内容:1.1 1.1 软件与软件危机软件与软件危机 1.2 1.2 软件工程软件工程 1.31.3 软软件生存周期件生存周期 1.41.4 软件过程软件过程 1.1 1.1 软件与软件危机软件与软件危机 1.1.11.1.1软件的定义软件的定义 软件是指计算机系统中与硬件相互依存的一部分,包括程序、相关数据和及其说明文档。程序是按照事先设计的功能和性能要求执行的指令序列;数据是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的文字或图形资料1.1.1 软件的特点软件的特点1.1.2 1.1.2 软件的特征软件的特征 (1)软件是一种逻辑产品,是以程序和文档形式存在。(2)软件
13、使用过程中,不会磨损、老化。(3)软件一旦研究开发成功,其生产过程就变成复制过程。(4)软件对硬件和环境有着不同程度的依赖性升级和移植。(5)手工方式生产,开发人员压力大、(6)软件是复杂度最高的工业产品,但通用性差。(7)软件涉及人类社会的各行各业,涉及到领域专门知识,这对软件工程师提出了很高的要求。软件开发应该有明确的分工。(8)软件生产过程的不可见性,增加了管理的难道。(9)软件产品的生产成本主要体现在软件的开发和研制上。软件的成本昂贵。1.1 软件和软件危机软件和软件危机1.1.3 1.1.3 软件危机软件危机 软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。1、
14、对软件的要求:、对软件的要求:用户的需求更高、涉及的领域更广软件运行环境更加庞大软件更新换代更加频繁1.1 软件和软件危机软件和软件危机2、软件生产的现状:、软件生产的现状:对软件的开发成本和进度的估计常常不正确,开发成本超出预算。开发进度不能保障,交付时间一再拖延。“已完成”的软件不满足用户的需求软件产品的质量没有保证。软件通常没有适当的文档软件的成本不断提高,特别是软件维护成本迅速增加,已经占据软硬件总成本的40%75%。硬硬 件件软件开发软件开发软件维护软件维护1955年年 1970年年 1985年年100%80%60%40%20%1.1 软件和软件危机软件和软件危机3.产生软件危机的原
15、因:产生软件危机的原因:与软件的特点有关与软件开发和维护的方法有关软件生产至今尚未摆脱手工生产方式。忽视需求分析和设计工作。没有规范的维护要求和记录。 IBM公司1963-1966年开发IBM360操作系统,项目花了5000人-年的工作量,最多时有1000人投入开发工作,写出100万行源程序,但发行的每一新版本都是上一版1000个错误的修正。 事后负责人F.D.Brooks总结教训时说:“正象一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深。最后无法逃脱灭顶的灾难。程序设计工作正像这样一个泥潭,一批批程序员被迫在泥潭中拼命挣扎,谁也没料到问题竟会陷入这样的困境” 美国阿波罗8号太空飞船
16、的一个软件错误,造成了存储器部分信息丢失;而阿波罗14号在飞行的10天中,出现了18个软件错误。1900年错误1992年,来自明尼苏达州怀俄明的玛丽收到一份幼儿园的入园通知,她当时是104岁。闰年错误1988年2月29日,一家超市因出售过期一天的肉而被罚款1000美元。因为在肉的标签上打印保质期的计算机程序没有考虑到1988年是闰年。接口误用1990年4月10日,在伦敦地铁运营过程中,司机还没上车,地铁列车就驶离车站。当时司机按了启动键,正常情况下如果车门是开着的,系统就应该可以阻止列车起动。当时的问题是司机离开了列车去关一扇卡着的门,但当门终于关上时,列车还没有等到司机上车就开动了。安全问题
17、软件工程学院的CERT组(ComputerEmergencyResponseTeam,计算机紧急反应小组)是一个政府资助的组织,用来协助社区处理安全事件、突发事件和安全技能方面的问题。美国报道的CERT的安全事件从1990年的252件增加到2000年的21756件,而到2001年已增加到了40000多件。拖延和超支在1995年,由于新丹佛尔国际机场自动行李系统的错误,造成旅客行李箱的损坏。机场则被迫推迟16个月再开放,且大部分采用手工行李系统,产生32亿美元超支。拖延和超支(2)2002年的Swanick空运控制系统,包括英格兰和威尔士全部空运线路。在系统交付时,已延期6年且严重超支(实际花费
18、6.23亿英傍,原计划花费3.5亿英镑),其中两次主要的系统升级是在运输操作员培训已经开始后才交付的。延期交付1984年,经过18个月的开发,一个耗资2亿美元的系统交付给了威斯康星州的一家健康保险公司。但是该系统无法正常工作,只好追加了6千万美元,又花了3年才解决了问题。不必要的复杂性麦克道尔道格拉斯的C-17货机因为控制系统的软件问题,而超支5亿美元。C-17含有19台机载计算机,80个微处理器以及6种不同的编程语言。1.2软件工程发展简史1.问题的引出问题的引出先看几个图例先看几个图例简陋的小屋简陋的小屋不用设计不用设计新农村别墅造型图别墅的平面图、切面图图书馆信息管理系统功能设计图书馆信
19、息管理系统功能设计图书馆信息管理系统需求表图书馆信息管理系统需求表图书馆信息管理系统逻辑模型设计(部分)图书馆信息管理系统逻辑模型设计(部分)图书馆信息管理系统数据设计图书馆信息管理系统数据设计过程设计过程设计图书馆信息管理系统界面设计图书馆信息管理系统物理模型设计图书馆信息管理系统物理模型设计结论:结论: 软件生产同建筑行业一样需要工程化、规模化、自动化、标准化。 软件生产过程中也有中间环节(设计物理模型、逻辑模型、界面、数据、过程等等),也可以随时进行质量检查。 软件生产中也需要有高效的工具。 软件生产人员也可以细分为:分析员、设计员、程序员、测试员、操作员、维护人员等等。 软件生产低水平
20、的手工作坊不能适应当今的大规模软件开发需求1.2软件工程的定义和目标1993IEEE: 软件工程是软件工程是:将系统化的、规范的、可度量的方法应用于软件的开发、将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,运行和维护过程,即将工程化应用于软件开发和管理之中,对中所选方法的研究。对中所选方法的研究。 注意:软件工程研究所依据的基础理论:数学、计算机科学、经济学、工程学、管理学和心理学等学科。其中数学和计算机科学用于构造模型、分析算法;工程学用于评估成本、制定规范和标准;管理学和心理学用于进度、资源、环境、质量、成本等的分析和管理。1.2.1
21、 软件工程的概念 软件工程学是一门指导软件开发和维护的工程学科,是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来生产软件,以达到提高质量、降低成本的目的。为软件开发提供为软件开发提供“如何做如何做”的技术。如怎样定项目计划、怎的技术。如怎样定项目计划、怎样实施需求分析、如何测试等。样实施需求分析、如何测试等。为软件工程方法提供自动或半自动软件支撑环境。如软件开发为软件工程方法提供自动或半自动软件支撑环境。如软件开发工具、测试工具等。软件开发的不同阶段可使用不同的工具。工具、测试工具等。软件
22、开发的不同阶段可使用不同的工具。将软件工程划分为若干阶段,分配方法和工具,定义每个阶将软件工程划分为若干阶段,分配方法和工具,定义每个阶段的先后顺序和完成标志。段的先后顺序和完成标志。软件工程发展简史软件工程发展简史 1968年FritzBauer在NATO(北大西洋公约组织)会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)” 20世纪70年代形成了软件工程的概念、框架、方法和手段。 80年代到90年代,研究重点是面向对象的分析和设计,称为对象工程。 90年代后期,基于构件的开发方法,即第三代软件工程,也称为构件工程。软件工程
23、研究的主要内容软件工程研究的主要内容技术方面:研究软件开发方法、软件开发过程、软件开发工具和环境。管理方面:主要研究软件管理学、软件经济学、软件心理学。强调规范化和文档化规范化和文档化规范化:使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式关注国标、行标。文档化: 把软件的设计思想、设计过程和实现过程完整地记录下来,便于各类相关人员交流和沟通; 使软件开发过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理; 是验收、质量检测的标准和依据。软件工程的基本目标软件工程的基本目标 付出较低的开发成本; 达到预期的软件功能; 取得较好的软件性能; 使
24、软件易于移植; 需要较低的维护费用; 能按时完成开发工作,及时交付使用。 互补关系: 互斥关系: 低开发成本 易于维护 高可靠性 高性能 按时交付 图 1.1 软件工程目标之间的关系 1.3软件工程7条基本原理软件工程专家B.W.Boehm提出了软件工程的7条基本原理 :原理原理1、用分阶段的生命周期计划严格管理、用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 测试验收计划 运行维护计划原理原理2、坚持进行阶段评审、坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。经过大量的统计数据表明,大部分错误是在编码之前造成的,其中,设计错误约占软
25、件错误的63%,编码错误仅占37%。错误发现与改正的越晚,所需付出的代价也越高。因此,在每个阶段都应该进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。软件工程7条基本原理原理原理3、实行严格的产品控制、实行严格的产品控制基准配置又称基线配置,它们是经过阶段评审后的软件配置成份。基准配置管理的思想是:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审和控制,获得批准以后才能实施修改。目的是当需求变动时,其它各阶段的文档或代码随之相应变动,以保证软件的一致性。软件工程7条基本原理原理原理4、采用现代程序设计技术、采用现代程序设计
26、技术自从提出软件工程概念后,人们一直把主要精力用于研究各种新的程序设计技术。60年代末提出了结构化程序设计技术,以后又进一步发展出结构化分析与设计技术、面向对象的分析和设计技术。实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件质量。软件工程7条基本原理原理原理5、结果应能清楚地审查、结果应能清楚地审查 软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,明确地规定开发小组的责任和产品标准,从而使所得到的产品有明确的标准能清楚地审查。软件工程7条基本原理原理原理6、开发小组的人员应该少而精、开发小组的
27、人员应该少而精软件开发小组成员的素质应该好,人数不宜过多。素质高的人员开发效率高、质量好、错误少。开发小组人员过多,信息交流造成的通信开销会急剧增加。软件工程7条基本原理原理原理7、承认不断改进软件工程实践的必要性、承认不断改进软件工程实践的必要性遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,因此,应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。软件工程7条基本原理1.4 1.4 软件生存周期软件生存周期 软件生存周期是指一个计算机软件从功能确定、设计,到开发成功投入使用,并
28、在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程。包括制定计划(可行性研究)需求分析软件设计程序编码软件测试运行维护 在实践中,整个开发周期经常不是明显地划分,而是分析、设计、实现,再分析、再设计、再实现等迭代执行。本教材对软件生命周期的划分本教材对软件生命周期的划分1 、软件定义时期、软件定义时期任务:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。通常分为问题定义、可行性研究和需求分析三个阶段。60软件定义时期的三个阶段软件定义时期的三个阶段问题定义阶段回答:回答:“要
29、解决的问题是什么?”可行性研究阶段回答:“对于上一个阶段所确定的问题有行得通的解决办法吗?需求分析(RequirementAnalysis)回答“为了解决这个问题,目标系统必须做什么?用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明书(specification)。612 、软件开发时期、软件开发时期具体设计和实现前一个时期定义的软件,通常分为四个阶段:总体设计(概要设计)回答:“概括地说,应该怎样实现目标系统?”根据需求分析,设计软件的体系结构;定义结构中的组成模块。详细设计(模块设计)回答:“应该怎样具体地实现这个系统呢?”对每个模块要完成的工作进行具体的描述,为源程序编写打
30、下基础。编写设计说明书,提交评审。二者统称系统设计62软件开发时期四个阶段软件开发时期四个阶段程序编写(Coding,Programming):把软件设计转换成计算机可以接受的程序代码。软件测试(Testing):按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,包括单元测试和组装测试。二者统称系统实现633、运行维护(软件维护)时期(、运行维护(软件维护)时期( Running/Maintenance )使软件持久的满足用户的需要。包括:l改正性维护:运行中发现了软件中的错误需要修正。l适应性维护:为了适应变化了的软件工作环境,需做适当变更。l完善性维护:当用
31、户有新的要求时,应该及时改进软件以满足用户的要求。l预防性维护:即修改软件为将来的维护活动预先做准备。64几个关于软件生命周期阶段的问题几个关于软件生命周期阶段的问题问题一:开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?问题二:系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?问题三:软件定义时期的三个阶段,各自回答什么关键问题?问题四:软件开发时期有几个阶段?各自回答什么关键问题?652 、什么是软件生命周期模型、什么是软件生命周期模型又称:软件开发模型软件过程模型软件工程范型。指软件项目从需求定义直至软件经使用后废弃为止,
32、跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。常见的有:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型661.5 1.5 软件开发模型软件开发模型1.5.1 1.5.1 瀑布模型瀑布模型瀑布模型(waterfall model)是由W. Royce于1970年提出来的。 瀑布模型依据软件生命周期方法学开发软件,各阶段的工作自顶向下、从抽象到具体的顺序进行。瀑布模型规定了各项软件工程活动,包括:制定开发计划、需求分析和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。如图所示。 特点特点 瀑布模型严格按
33、照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。 它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。 因此,它是一种以文档作为驱动的模型瀑布模型优点和特点瀑布模型优点和特点优点:优点: 提供了软件开发的基本框架,有利于大型软件开发过提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。究与使用,因此,在软件工程中占有重要的地位。特
34、点:特点: (1) 阶段间具有顺序性(必须等前一阶段的工作完成之后才能开始后一阶段的工阶段间具有顺序性(必须等前一阶段的工作完成之后才能开始后一阶段的工作)和依赖性(前一阶段的输出文档是后一阶段的输入文档)。作)和依赖性(前一阶段的输出文档是后一阶段的输入文档)。 (2)推迟实现的特点推迟实现的特点 只有完成测试后,系统才能开始运行。清楚地区分逻辑设计与物理设计,尽可只有完成测试后,系统才能开始运行。清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。 (3)质量保证质量保证 为了
35、保证软件质量,在瀑布模型的每个阶段都应该坚持以下两个做法:为了保证软件质量,在瀑布模型的每个阶段都应该坚持以下两个做法: 第一,每一个阶段都必须完成规定的文档;第一,每一个阶段都必须完成规定的文档; 第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。正错误。瀑布模型缺点瀑布模型缺点(1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 (2)需对大量冗余信息进行分析。按照“瀑布式生命周期法”的要求,首先要对整个系统的业务流程和信息进行全面的分析,以致对大量与目标
36、系统毫无关系的信息分析造成了极大的浪费,加大了系统分析的工作量。有的MIS开发,仅系统分析就长达数月,甚至一年以上。(3)过高地要求用户的稳定和准确表达,但由于用户对计算机管理缺乏深入的了解,往往做不到。(4)开发过程中出现错误,通常要到系统实施过程中才能查验。(5)不支持软件复用的概念;也不支持“原型”的概念。(6)开发周期长。通常在完成编码之前,看不到任何运行或演示。由于存在以上种种问题,再加之环境因素变动较快,近年来开发的许多MIS,有些还未投入使用,就由于系统组织结构和管理过程发生变化而需重新进行系统分析和设计,有的在投入运行后不久就已报废,明显地缩短了MIS的寿命。瀑布模型适应场合瀑
37、布模型适应场合 瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。 应用有一定的局限性。1.5 1.5 软件开发模型软件开发模型1.5.2快速原型化模型快速原型模型是为克服瀑布模型的缺点于20世纪80年代推出的。快速原型法基本思想是:1. 由用户、客户和开发者进行快速需求分析,产生系统规格说明;2. 软件开发人员根据该规格说明快速产生一个可运行的原型;运行该原型,以便向用户展示软件系统应有的部分或全部的功能和性能,并评价其规格说明的完整性、准确性和一致性;3. 根据评价结果,进一步精化和细化规格说明;4. 该过程可重复多
38、次,直到最终的规格说明演化成与用户和客户一致的、可执行的系统为止。 需求的采集和细化 快速设计 建造原型 用户评价原型 对原型加工(需求精确化) 产品样品(需求确认) 图 1.3 快速原型 原型模型优缺点原型模型优缺点 优点:与用户见面快;开发成功率高,适合于需求不确定的大系统。 缺点:周期长,开发成本高。 原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。 它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。1.5 1.5 软件开发模型软件开发模型1.5.3 1.5.3 增量模型增
39、量模型 增量模型规定软件的开发过程是一次开发产品的一个部分。首先应该开发产品的基本部分,然后再逐步开发产品的附加部分。增量模型的开发过程示意图 可行性论证 验证 需求分析 验证 体系结构设计 验证 对每个构件进行详细设计、实现、 集成、 测试,交付给用户 验证 维护 图 1.4 增量模型 增量模型优缺点增量模型优缺点优点:l能在较短的时间内,提供可完成部分工作的初步产品给用户;l用户有较为充裕的时间学习和适应新产品。缺点:对开发人员技术能力要求较高,要求能从系统整体出发正确划分增量构件,并进行分别开发,最后能很好地集成这些构件。76一种风险更大的增量模型一种风险更大的增量模型有可能提高开发速度
40、,但需要密切地监控整个开发过程,否则将冒构件无法集成到一起的风险,。77分析分析分析分析分析分析分析分析设计设计设计设计设计设计设计设计编码编码编码编码编码编码编码编码测试测试测试测试测试测试测试测试构件构件1构件构件2 构件构件3构件构件4 1.4 .4 螺旋模型(螺旋模型(spiral model ) 大型软件开发面临的重要问题:软件风险如: 产品交付给用户之后,用户不满意; 开发进度落后,开发成本超出预算; 产品完成前关键的开发人员跳槽; 在产品投人市场前,竞争对手发布了一个功能相近,价格更低的软件 构建原型能使某些类型的风险降到最低.781.4 1.4 软件开发模型软件开发模型1.4.
41、4 1.4.4 螺旋模型螺旋模型 螺旋模型(spiral model)是B. Boehm于1988年提出的。螺旋模型将瀑布模型和原型模型结合起来,不仅体现了两个模型的优点,而且还增加了两个模型都忽略了的风险分析,弥补了两者的不足。 螺旋模型的结构如图1.5所示,它由四部分组成:制定计划、风险分析、实施开发、客户评估。螺旋式周期螺旋式周期 螺旋模型沿着螺线旋转(一个螺旋式周期),在四个象限上分别表达四个方面的活动,即: 制定计划确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略 风险分析分析所选方案,考虑如何识别和消除风险,风险角度分析该策略 实施工程实施软件开发,启动一个开发阶
42、段 客户评估评价前一步开发工作,提出修正建议,计划下一轮的工作。螺旋模型的优点螺旋模型的优点1)支持用户需求的动态变化。这就要求构造的原型的总体结构、算法、程序、测试方案应具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。2)原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。3)螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。4)螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。缺点缺点1)
43、如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;2)使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。1.5 1.5 软件开发模型软件开发模型1.5.5 1.5.5 喷泉模型喷泉模型它是以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。喷泉模型如图1.6所示。 各种模型的比较各种模型的比较模型模型优点优点缺点缺点瀑布模型瀑布模型规范,文档驱动系统可能不满足客户真正的需求快速原型快速原型克服了瀑布型
44、的缺点增量模型增量模型开发早期回报明确,易于维护要求开放的软件体系结构螺旋模型螺旋模型风险驱动,适用于大型项目开发风险分析人员需要有经验且经过充分训练861.4.6 RUP Rational 统一过程模型统一过程模型最佳实践:1、迭代式开发2、管理需求3、使用基于构件的体系结构4、可视化建模5、验证软件质量6、控制软件变更1.4.6 RUP Rational 统一过程模型统一过程模型RUP中的软件生命周期分为四个顺序的阶段中的软件生命周期分为四个顺序的阶段1初始阶段初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本
45、阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。初始阶段结束时是第一个重要的里程碑:生命周期目标(LifecycleObjective)里程碑。生命周期目标里程碑评价项目基本的生存能力。2细化阶段细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。细化阶段结束时第二个重要的里程碑:生
46、命周期结构(LifecycleArchitecture)里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。此刻,要检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。RUP中的软件生命周期分为四个顺序的阶段中的软件生命周期分为四个顺序的阶段3构造阶段在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。构建阶段结束时是第三个重要的里程碑:初始功能(InitialOperational)里程碑。初始功能里程碑决定了产品是否可以在测
47、试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。4交付阶段交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。在交付阶段的终点是第四个里程碑:产品发布(ProductRelease)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。敏捷过程敏捷过程 (AP)
48、流派有:极限编程,SCRUM,动态系统开发,特征驱动开发等四条基本价值观:1个体和交互胜过过程和工具2可以工作的软件胜过面面俱到的文档3客户合作胜过全同谈判4响应变化胜过遵循计划敏捷过程敏捷过程 (AP)由价值观引出的12条敏捷原则:1我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。4在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。5围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他
49、们能够完成工作。6在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。7工作的软件是首要的进度度量标准。8敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。9不断地关注优秀的技能和好的设计会增强敏捷能力。10简单使未完成的工作最大化的艺术是根本的。11最好的构架、需求和设计出自于自组织的团队。12每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。敏捷过程敏捷过程 (AP) 极限编程(xp)extremepromming的价值观如下:1改善沟通2寻求简单3获得反馈4富有勇气适用范围:具有有限资源及有限
50、时间的小项目 微软过程微软过程(MP)微软过程原则:1制定计划时兼顾未来不确定因素2通过有效的风险管理减少不确定因素的影响3经常生成过渡性的版本并快速测试来提高产品的稳定性及可测性4快速循环递进的开发过程5从产品特性和成本控制出发创造性地工作6创建确定的进度表7使用小型项目组并发完成工作,并设置多个同步8将大型项目分解成多个可管理的单元,以便更快地发布产品9用产品的前景目标和概要说明指导项目开发工作-先基线后冻结10避免产品走形11使用原型验证概念,进行开发前的测试12零缺陷概念13非责难式的里程碑评审会微软开发产品的每个生命周期分五个阶段1构想阶段2计划阶段3开发阶段4稳定阶段5发布阶段1.
51、5 1.5 软件开发模型软件开发模型【例1.1】假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?解:解:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时、应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反
52、映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。1.传统方法学传统方法学(生命周期方法学或结构化范型)生命周期方法学或结构化范型)l 采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务;l 把软件生命周期划分为若干个阶段,按顺序完成每个阶段的任务;l 每个阶段开始和结束都有严格的标准,对任何
53、两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准;l 每一个阶段结束之前都必须进行正式严格的技术审查和管理复审96传统方法学的优点:传统方法学的优点:l分解任务,分工合作,降低整个软件开发工程的困难;l采用科学的管理技术和良好的技术方法对每个阶段成果都进行严格的审查。保证了软件的质量。 传统方法学的缺点: 把数据和操作人为地分离成两个独立的部分,增加了软件开发与维护的难度。972 、面向对象方法学(、面向对象方法学( OO,Object- oriented ) 模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间(也称
54、为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。98面向对象方法学面向对象方法学 4 要点要点l把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。l把所有对象都划分成类(class)。l按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。l对象彼此间仅能通过发送消息互相联系。99二者区别二者区别l传统方法学:强调自顶向下顺序地完成软件开发的各阶段任务。l面向对象方法:是主动地多次反复迭代的演化过程1001.6 1.6 传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程2. 面向对象方法的主要
55、优点 符合人们通常的思维方式 高度连续性 重用性好 可维护性好 软件过程成熟度软件过程成熟度 SEI(卡内基梅隆大学软件工程研究所)提出了个综合模型(CMM),定义了当一个组织达到不同的过程成熟度时应该具有的软件工程能力。 为了确定一个组织目前的过程成熟度,SEI使用了一个能力成熟度模型(评估调查表)和五个等级方案。该模型定义了在不同级别上具有的关键活动。 SEI的模型提供了衡量一个组织软件工程实践能力的有效性方法,且建立了过程成熟度的五个级别。能力等级能力等级特点特点关键过程关键过程第一级初始级(最低级)软件工程管理制度缺乏,过程缺乏定义、混乱无序。成功依靠的是个人的才能和经验,经常由于缺乏
56、管理和计划导致时间、费用超支。管理方式属于反应式,主要用来应付危机。过程不可预测,难以重复。第二级可重复级基于类似项目中的经验,建立了基本的项目管理制度,采取了一定的措施控制费用和时间。管理人员可及时发现问题,采取措施。一定程度上可重复类似项目的软件开发。需求管理,项目计划,项目跟踪和监控,软件子合同管理,软件配置管理,软件质量保障第三级已定义级已将软件过程文档化、标准化,可按需要改进开发过程,采用评审方法保证软件质量。可借助CASE工具提高质量和效率。组织过程定义,组织过程焦点,培训大纲,软件集成管理,软件产品工程,组织协调,专家审评第四级已管理级针对制定质量、效率目标,并收集、测量相应指标。利用统计工具分析并采取改进措施。对软件过程和产品质量有定量的理解和控制。定量的软件过程管理和产品质量管理第五级优化级(最高级)基于统计质量和过程控制工具,持续改进软件过程。质量和效率稳步改进。缺陷预防,过程变更管理和技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年企业文化展示系统项目投资申请报告代可行性研究报告
- 2024年矿业测量仪器项目资金申请报告代可行性研究报告
- 新冠肺炎的护理查房
- 盆景项目可行性研究报告
- 年产xx家居节能项目可行性研究报告(项目说明)
- 高三一轮复习课件 自然地理之地质灾害
- 5.1植被课件高中地理人教版(2019)必修一
- 大班下学期语言教案:月亮姑娘做衣裳
- 舌系带护理诊断及措施
- 纪律教育活动启动会
- 新版RoHS环保知识培训教学内容
- 2025届炎德英才大联考物理高二上期末学业水平测试试题含解析
- 2024年执业药师资格继续教育定期考试题库附含答案
- 蚯蚓与土壤肥力提升2024年课件
- 店铺管理运营协议合同范本
- 天津市和平区2024-2025学年高一上学期11月期中英语试题(含答案含听力原文无音频)
- 2024年全国烟花爆竹储存作业安全考试题库(含答案)
- 2024年高中化学教师资格考试面试试题与参考答案
- DB11-T 2315-2024消防安全标识及管理规范
- 全科医生转岗培训结业考核模拟考试试题
- 吃动平衡健康体重 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
评论
0/150
提交评论