1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,软件工程,国内软件开发的现状,国内软件开发现状,中、小规模软件开发组织的现状和美国,10,年前的情况一样,软件开发过程没有明确规定,文档不完整、不规范,软件项目的成功往往是“个人英雄主义”的结果,大多数,IT,企业长期面临软件质量低下、进度延误、费用超支等难题,持续不断的信息化建设带来的却是软件重复开发,软件适应不了发展的环境,软件不可维护,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,软件企业的现状,软件企业与软件危机现象,IT,产业
2、已经成为我国支柱产业之一,软件企业的发展:,“,轰轰烈烈,”,强大的软件企业:,“,十个手指就掰完了,”,软件企业的,“,慢性病,”,“,产品质量低下、诚信度低、进度延误、成本高昂,”,问题的根源在那里?,专业教育?人才?政府扶持不够?产业投资?,“,No,!,”,答案是:,“,软件企业的内功太差,“,个人成果,妥善保存,请勿传播,解读破解这些现象的原因,恶劣的慢性病:“软件危机”,许多企业没有战死沙场,却被病魔折磨的奄奄一息,没有获得“免疫力”的新企业又雨后春笋般诞生,它们前赴后继,延续着相似的故事,造成“快速诞生、快速死亡”的企业生存方式,软件企业平均寿命,2.5,年,极度的社会财富浪费
3、确诊病因”,30,多年前,(1968,年,),,,NATO,会议称之为“软件危机”,个人成果,妥善保存,请勿传播,解读破解这些现象的原因,医治慢性病的药理:“软件工程”,软件工程是一类“工程”,工程是将理论和知识应用于实践的科学!,软件工程的核心:用工程化的方法组织软件开发,借鉴传统工程的原理和方法,以求高效地开发高质量软件,应用了计算机科学、数学、工程和管理科学,计算机科学和数学用于构造软件模型与算法,工程科学用于制定规范、设计泛型、评估成本,管理科学用于计划、资源、质量和成本的控制管理,个人成果,妥善保存,请勿传播,课程介绍,教学计划,授课与自学内容(,1:2,),1.,软件工程概述,
4、2.,可行性研究,3.,需求分析,4.,形式化说明技术(自学),5.,总体设计,6.,详细设计,7.,实现,8.,软件维护,9.,面向对象方法学,10.,面向对象分析,11.,面向对象设计,12.,面向对象实现(自学),13.,软件项目管理,个人成果,妥善保存,请勿传播,课程介绍,教学计划,课程设计(实践环节),要求学生选择一个规模适度的软件课题,结合课程的学习进度,写出相应各阶段的文档(允许,2-3,个同学合作),安排,12,学时(,4,次)上机实践和测试,完成软件开发各阶段的文档,文档要求:,系统分析报告,需求分析报告,总体设计报告,详细设计报告,测试报告,个人成果,妥善保存,请勿传播,课
5、程介绍,我对课程内容的观点,理论是核心,如何与实际工作(实战!)相结合,工程理论与,IT,软件研发的工作流程和步骤相结合,教材与参考,张海藩,,软件工程导论,(第五版),侧重于:工程理论全面概括的介绍,参考书:赵池龙,,实用软件工程,(第,2,版),个人成果,妥善保存,请勿传播,课程介绍,自我介绍,我的身份:,教师,/,项目经理,/,企业经营者,我的体会:,传授思想和方法,建立软件开发工程化的概念,迎合企业需求,我的观点:,来源于企业实践、专业论著和个人体会(其中个人观点,仅供参考!),个人成果,妥善保存,请勿传播,企业的目标,理解企业的根本目标,企业的,“,宪法,”,“,合理地赚取尽可能多的
6、利润,使企业利益最大化,”,“,利润,”,是企业生存和发展之本,企业所有的特定目标和行动都是围绕上述目标展开的,案例与评论,明星科技企业,“,巨人公司,”,的成败,企业必须专心致志地,“,赚钱,”,,理智地规避伪善的社会事务,防止企业被非目标事务拖累,个人成果,妥善保存,请勿传播,企业的目标,企业的根本目标,企业的本性就是,“,惟利是图,”,,无论大企业和小商贩都是一样,企业惟利是图的本性就像,“,低俗赤裸的真理,”,案例分析,明星科技企业,“,巨人公司,”,的成败,企业必须专心致志地,“,赚钱,”,,理智地规避伪善的社会事务,防止企业被非目标事务拖累,个人成果,妥善保存,请勿传播,软件工程在
7、软件企业中的作用,推论,企业的根本目标决定了,“产品开发之道”,“企业用人之道”,产品开发之道,开发正确的产品(,开发能为企业赚取利润的产品),正确地开发产品(,努力使产品为企业赚取尽可能多的利润),企业用人之道,用正确的人(,利用能为企业赚取利润的人),正确地用人(,努力使人为企业赚取尽可能多的利润),个人成果,妥善保存,请勿传播,软件工程和项目管理,企业对项目管理看法,项目的执行意味着什么?,合同的执行,企业合同,“,变现,”,的过程,合同赢利与亏损的,“,押宝,”,过程,项目管理的价值体现,提升项目本身的经济效益,提升客户满意度,提升项目成员的综合素质,个人成果,妥善保存,请勿传播,软件
8、企业中的经营之道,企业经营中的战略与战术,决策过程:企业各级领导的第一职责,“,开发正确的产品,”,“,用正确的人,”,“,正确地决策,”,执行过程:企业各个团队的第一职责,“,正确地开发产品,”,“,正确地用人,”,“,正确地执行,”,有效的项目管理是保障,“,正确地执行,”,的手段,企业的成功是建立在,“,正确地决策,”,和,“,正确地执行的基础上的,个人成果,妥善保存,请勿传播,我看软件工作者的职业生涯,软件,“,白领,”,的职业发展之路,程序员,“,出身,”,编程这活究竟该干多久?,程序员是吃,“,青春饭,”,的:合适的年龄,2030,岁,20,岁,大学,水平差,进步快,25,岁,技能
9、和效率达到最高,水平停滞不前,30,岁,编程效率下降,已经不是编程主力,程序员应从事更有价值的工作,“,三十而立,”,的含义,建立家庭,过上小康的日子,事业有所建树,不再是无名小卒,个人成果,妥善保存,请勿传播,我看软件,“,白领,”,的职业生涯,软件,“,白领,”,的职业发展之路,程序员的收入和在企业的地位,收入中等偏下,面临年轻程序员的压力,程序员的编程水平,使用一种语言,,2,年可成为专家,技能和经验到达一定水平,很难再有提高,年长程序员的出路,软件工程,项目管理,个人成果,妥善保存,请勿传播,我看软件,“,白领,”,的职业生涯,软件,“,白领,”,的职业发展之路,职业发展之路,第一阶段
10、职业程序员,第二阶段:成为项目经理或技术负责人,第三阶段:成为机构管理人员,软件白领的,“,合格,”,、,“,良好,”,和,“,优秀,”,最佳年龄为,25,岁、,30,岁和,35,岁,实现难度:,“,比较容易,”,、,“,需要努力,”,和,“,需要奋斗,”,个人成果,妥善保存,请勿传播,我看软件,“,白领,”,的职业生涯,项目经理的职业发展之路,项目团队成员,项目经理助理,项目经理,高级项目经理,PMO,成员,职能部门经理,项目管理经理,管理高层,职业经理人,个人成果,妥善保存,请勿传播,我看软件,“,白领,”,的职业生涯,项目经理的职业发展之路,项目团队成员,项目经理助理,项目经理,高级项
11、目经理,PMO,成员,项目经理导师,PMO,专员,项目管理专家,项目管理顾问,个人成果,妥善保存,请勿传播,软件工程课程目的,正确理解和认识,“,软件,”,的概念及其特点,掌握,软件工程,的原则、方法和思想来系统地开发软件,尤其是复杂、庞大软件的开发,了解和接触各种,软件开发技术和工具,软件工程,是软件技术和管理人员,必备,的课程,个人成果,妥善保存,请勿传播,课程内容提纲,软件工程概述:,“,摆脱软件危机的困扰,”,软件的概念,软件危机,软件工程,软件生命周期,软件过程,个人成果,妥善保存,请勿传播,软件的概念,在运行中能提供所希望的功能和性能的指令集(即,程序,),使程序能够正确运行的,数
12、据结构,(逻辑结构,存储结构,运算),描述程序研制过程和方法使用的,文档,程序,软 件,可执行部分,不可执行部分,文档,1,文档,2,文档,3,个人成果,妥善保存,请勿传播,软件的概念,计算机硬件,程 序,内 存,CPU,数据抽象,过程抽象,应用问题,软件文档,1,软件文档,n,抽象过程,个人成果,妥善保存,请勿传播,软件的概念,软件的特点,是逻辑部件,不是物理部件,缺乏可见性,管理和控制生产过程相当困难,维护困难和复杂,生产只需复制,软件开发尚未完全摆脱手工的开发方式,软件开发复杂,费用较高且其性质如成本、进度等难以估计,软件的开发和运行受计算机系统的限制,而开发更加依赖于开发人员的业务素质
13、智力、人员的合作、组织和管理,个人成果,妥善保存,请勿传播,软件的概念,基于软件功能的划分,系统软件,支撑软件,应用软件,基于软件开发方式的划分,实时处理软件,分时软件,交互式软件,批处理软件,基于软件规模的划分,微型软件,小型软件,中型软件,大型软件,甚大型软件,极大型软件,基于软件服务对象的范围,定制软件,产品软件,个人成果,妥善保存,请勿传播,软件的概念,软件的发展,程序设计阶段,20,世纪,50,年代初期至,60,年代中期,程序系统阶段,20,世纪,60,年代中期至,70,年代末期,软件工程阶段,始于,20,世纪,70,年代中期,第四阶段,个人成果,妥善保存,请勿传播,课程内容提纲,
14、软件工程概述:,“,摆脱软件危机的困扰,”,软件的概念,软件危机,软件工程,软件生命周期,软件过程,个人成果,妥善保存,请勿传播,软件危机,计算机的发展与软件危机,个体化的软件环境,除了程序清单,没有任何资料,软件作坊,软件危机的出现,1968,北约在原西德提出,“,软件工程,”,概念,个人成果,妥善保存,请勿传播,软件危机,计算机的发展与软件危机,软件危机含义,软件的开发和维护过程所遇到的一系列问题,包含两个方面,如何开发软件,已满足日益增长的需求,如何维护数量不断膨胀的已有软件,软件危机表现,对软件开发成本和进度的估计常常很不准确,用户对,“,已完成的,”,软件系统不满意的现象经常发生,软
15、件产品质量往往靠不住,个人成果,妥善保存,请勿传播,软件危机,计算机的发展与软件危机,软件危机表现,软件常常是不可维护的,软件通常没有适当的文档资料,软件成本在计算机系统总成本中所占比例逐年上升,软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势,以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些,个人成果,妥善保存,请勿传播,软件危机,产生软件危机的原因,与软件本身的特点有关,逻辑部件,可见性差,管理可控制软件开发很困难,客观上软件维护比较困难,需要人员协作和科学管理,与软件开发与维护的方法不正确有关,采用了错误的方法和技
16、术,忽视软件需求分析的重要性,过早地开始编码工作,轻视软件维护的重要性,个人成果,妥善保存,请勿传播,软件危机,产生软件危机的原因,软件是有生命周期,软件从定义、开发、使用、维护到终止的时期,软件生命期中的有关经验数据,编码通常占软件开发全部工作量的,10%,20%,软件测试占软件开发全部工作量的,40%,50%,设计错误占软件错误的,63%,,编码错误占,37%,软件维护费用占软件总投资的,55%,70%,软件后期变更比早期变更代价高,23,个数量级,个人成果,妥善保存,请勿传播,软件危机,高 中 低,分析 设计 编程 测试 维护,修改错误的阶段,代价,(成本、质量、效率),原始要求,正确的
17、规格说明,错误的规格说明,需求分析,设计,正确的设计,错误的设计,对错误说明的设计,编码,正确编码,对错误说明的编码,错误编码,对错误设计的编码,测试,正确功能,潜伏的错误,不可改正的错误,可改正的错误,不完善的软件,个人成果,妥善保存,请勿传播,软件危机,消除软件危机的途径,对软件有一个正确的认识,软件,程序,方法规则,数据,文档,软件开发应该组织良好、管理严密、协调配合,推广使用成功的技术和方法,应用开发和使用好的软件工具,总之,为了消除软件危机,既要有技术措施,(,方法和工具,),,又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科,
18、个人成果,妥善保存,请勿传播,课程内容提纲,软件工程概述:,“,摆脱软件危机的困扰,”,软件的概念,软件危机,软件工程,软件生命周期,软件过程,个人成果,妥善保存,请勿传播,软件工程,软件工程的产生,软件危机,分析根源,解决途径,软件工程,产生:,1968,NATO,计算机科学会议,软件工程,是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,个人成果,妥善保存,请勿传播,软件工程,软件工程的产生,定义:,定义,1,:,软
19、件工程就是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立和使用完善的工程原理,定义,2,:,软件工程是,(1),把系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程;,(2),研究,(1),中通道的途径,个人成果,妥善保存,请勿传播,软件工程,软件工程的本质特征,软件工程关注大型程序的构造,把一个人在较短时间内写出的程序称为小型程序,把多人合作用时半年以上才写出的程序称为大型程序,。,软件工程的中心课题是控制复杂性,软件的复杂性主要不是由于问题的内在复杂性造成的,而是由必须处理的大量细节造成的,软件经常变化,个人成果,妥善保存,请勿传播,软件工程,软件工程的本质特征,开发
20、软件的效率非常重要,软件供不应求日益严重,和谐地合作是开发软件的关键,纪律是成功地完成软件开发项目的关键,软件必须有效地支持它的用户,仅仅用正确的方法构造系统还不够,还必须构造出正确的系统,提供产品、用户手册、培训资料,不同文化背景的人创造产品,缺乏应用领域的相关知识是软件开发项目出现问题的常见原因,个人成果,妥善保存,请勿传播,软件工程,软件工程的基本原理,著名的软件工程专家,B,W,Boehm,提出了软件工程的七条基本原理。,他认为这七条原理是确保软件产品质量和开发效率的原理的最小集合,软件工程的,7,条基本原理,1.,用分阶段的生命周期计划严格管理,2.,坚持进行阶段评审,3.,实行严格
21、的产品控制,4.,采用现代程序设计技术,5.,结果应能清楚的审查,6.,开发小组的人员应少而精,7.,承认不断改进软件工程实践的必要性,软件工程,软件工程的基本原理,软件工程的,7,条基本原理,用分阶段的生命周期计划严格管理,坚持进行阶段评审,第一,大部分错误是在编码之前造成的,第二,错误发现与改正得越晚,所需付出的代价也越高,实行严格的产品控制,实行基准配置管理,个人成果,妥善保存,请勿传播,软件工程,软件工程的基本原理,软件工程的,7,条基本原理,采用现代程序设计技术,结果应能清楚的审查,为了提高软件开发过程的可见性,更好地进行管理,应根据软件项目的目标及完成期限,规定组织的责任和产品标准
22、从而使得所得到的结果能够清楚地审查,开发小组的人员应少而精,开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素,承认不断改进软件工程实践的必要性,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,软件工程,软件工程方法学,方法学,(methodology),:指在软件生命周期全过程中使用的一整套技术的集合,也称为范型,(paradigm),软件工程方法学包括三个要素,这就是方法、工具和过程,方法是完成软件开发的各项任务的技术方法,回答,“,如何做,”,的问题,工具是为方法的运用提供自动的或半自动的软件支撑环境,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规
23、定了完成各项任务的工作步骤。,目前使用得最广泛的软件工程方法学,传统方法学,面向对象方法学,个人成果,妥善保存,请勿传播,软件工程,过程,管理部分,方法,技术手段,工具,自动或半自动地支持软件的开发和管理,过程,方法,工具,软件工程,要素之间相互关联和支持,个人成果,妥善保存,请勿传播,软件工程,传统方法学,生命周期方法或结构化范型,将软件过程依次分成若干阶段,按顺序开展每个阶段的任务,每个阶段进行严格的技术审查和管理复审,提交,“,最新的,”,文档,个人成果,妥善保存,请勿传播,软件工程,传统方法学的优点:,通过将软件生命周期划分成若干个阶段降低了整个软件开发过程的困难程度;,每个阶段结束前
24、的严格审查保证了软件的质量,提高了软件的可维护性。,传统方法学的缺点:,当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,而且维护起来仍然很困难。,原因:把数据和操作人为地分离成了两个独立的部分。,个人成果,妥善保存,请勿传播,软件工程,面向对象方法学,模拟人类认识和解决问题的方法和过程,主导反复迭代的演化过程,把数据和行为封装在一起,OO,方法学的,4,个要点,把对象(,Object,)作为融合了数据及在数据上的操作行为的统一软件构件,把所有对象都划分成类(,Class,),按照父类,(,或称基类,),与子类,(,或称派生类,),的关系,把若干
25、个相关类组成一个层次结构的系统,(,也称为类等级,),对象彼此间仅能通过发送消息互相联系,个人成果,妥善保存,请勿传播,软件工程,面向对象方法学的优点,降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作,促进了软件重用,个人成果,妥善保存,请勿传播,软件工程,软件工程的目标,正确、可靠、可维护、可重用,可追踪、可移植、可操作、有效性,软件工程的原则,抽象和模块化,信息隐藏和局部华,一致性、完整性和可验证性,个人成果,妥善保存,请勿传播,课程内容提纲,软件工程概述:,“,摆脱软件危机的困扰,”,软件的概念,软件危机,软件工程,软件生命周期,软件过程,个人成果,妥善保存,请勿
26、传播,软件生命周期,软件定义,软件开发,运行维护,需求分析,可行性研究,问题定义,总体设计,详细设计,综合测试,编码和单元测试,系统设计,系统实现,改正性维护,完善性维护,预防性维护,适应性维护,个人成果,妥善保存,请勿传播,软件生命周期,可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,软件使用与维护,个人成果,妥善保存,请勿传播,1.,问题定义,问题定义阶段必须回答的关键问题是:,“,要解决的问题是什么,”,2.,可行性研究,该阶段要回答的关键问题是:,“,上一个阶段所确定的问题是否有行得通的解决办法,”,。,软件生命周期,个人成果
27、妥善保存,请勿传播,3.,需求分析,这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答,“,目标系统必须做什么,”,这个问题。,这个阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为,规格说明,(specification),。,软件生命周期,个人成果,妥善保存,请勿传播,4.,概要设计,这个阶段的基本任务是,概括地回答,“,怎样实现目标系统,?,”,概要设计的另一项主要任务就是设计程,序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系,软件生命周期,个人成果,妥善保存,请勿传播,5.,详细设计,详细设计阶段的任务就是把解法具体化,也就是回答,“
28、应该怎样具体地实现这个系统,”,这个关键问题。,这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明,软件生命周期,个人成果,妥善保存,请勿传播,6.,编码和单元测试,这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。,7.,综合测试,这个阶段的关键任务是通过各种类型的测试,(,及相应的调试,),使软件达到预定的要求。,集成测试:根据设计的软件结构,把经过单元检验的模块按某种选定的策略结合起来,在装配过程中对程序进行必要的测试。,验收测试:按照规格说明书的规定,由用户对目标系统进行验收,软件生命周期,个人成果,妥善保存,请勿传播,8.,软件维护,维护阶段的关键任务是,通过各种
29、必要的维护活动使系统持久地满足用户的需要,通常有四类维护活动:改正性维护、适应性维护、完善性维护、,预防性维护,生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此也称为过程模型,软件生命周期,个人成果,妥善保存,请勿传播,课程内容提纲,软件工程概述:,“,摆脱软件危机的困扰,”,软件的概念,软件危机,软件工程,软件生命周期,软件过程,个人成果,妥善保存,请勿传播,软件过程,是为获得高质量软件所需完成的一系列任务的框架,他规定了完成各项任务的工作步骤,过程定义了,运用方法的顺序、应交付的文档、所需采取的管理措施,以及标示阶段任务的里程碑,通常使用生命周期模型简洁地描述软件过程,
30、软件过程,个人成果,妥善保存,请勿传播,瀑布模型,在,20,世纪,80,年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在仍是软件工程中应用最广泛的过程模型,瀑布模型特点,阶段间具有顺序性和依赖性,推迟实现的观点,清楚地区分逻辑设计与物理设计,软件过程,个人成果,妥善保存,请勿传播,可行性研究,需求分析,概要设计,详细设计,实 现,组装测试,确认测试,使用与维护,软件过程,个人成果,妥善保存,请勿传播,传统的瀑布模型,软件过程,瀑布模型特点,质量保证的观点:每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务,每个阶段结束前都要对所完成的文档进行评审,个人成果,妥善
31、保存,请勿传播,实际的瀑布模型,实际的瀑布模型是带,“,反馈环,”,的,缺点,缺乏灵活性,在交付之前,缺乏可见性,软件过程,个人成果,妥善保存,请勿传播,瀑布模型的优缺点,瀑布模型的优点:,可强迫开发人员采用规范的方法;,严格地规定了每个阶段必须提交的文档;,要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。,瀑布模型的成功在很大程度上是由于它基本上是一种,文档驱动,的模型,瀑布模型的缺点:,“,瀑布模型是由文档驱动的,”,,缺乏灵活性:,仅通过静态的规格说明很难全面正确地认识动态的软件产品。,要求用户不经过实践就提出完整准确的需求是不切实际的。,由于瀑布模型完全依赖于书面的规格说明
32、很可能导致最终开发出的软件不能真正满足用户的需要。,个人成果,妥善保存,请勿传播,快速原型模型,快速原型,是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。,个人成果,妥善保存,请勿传播,快速原型模型,软件过程,快速原型的本质是,“,快速,”,采用软件重用技术,在算法的时,/,空开销方面也可以让步,原型应充分展示软件的可见部分,个人成果,妥善保存,请勿传播,优点:,有助于获取用户需求,加强对需求的理解,尽早发现软件中的错误,支持需求的动态变化,不足:,不能支持风险分析,适合于需求动态变化,事先难以确定系统,软件过程,个人成果,妥善保存,请勿传播,
33、增量模型也称为渐增模型,使用增量模型开发软件时,把产品作为一系列的增量构件来设计、编码、集成和测试。,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心,的功能。,软件过程,个人成果,妥善保存,请勿传播,增量模型,软件过程,个人成果,妥善保存,请勿传播,风险更大的增量模型,(并行地构造部件),软件过程,个人成果,妥善保存,请勿传播,软件过程,增量模型的优点:,能在较短的时间内向用户提交可完成部分功能的产品,逐步增加产品功能可以使用户有较充裕的时间学习和适应,困难:,在把每个新的增量构件集成到现有的软件体系结构中时,必须不
34、破坏原来已经开发的产品,软件体系结构必须是开放的,本身具有矛盾性,一方面要求开发人员把软件看作一个整体,另一方面要求开发人员把软件看作构件序列,构件间彼此独立,个人成果,妥善保存,请勿传播,螺旋模型,螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析,软件过程,个人成果,妥善保存,请勿传播,简化的螺旋模型,软件过程,个人成果,妥善保存,请勿传播,螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:,制定计划,确定软件目标,选定实施方案,弄清项目开发的限制,风险分析,分析所选方案,考虑如何识别和消除风险,实施工程,实施软件开发,客户评估,评价开发工作,提出修正建议,并计划下一个
35、阶段的任务,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,螺旋模型的优点,有助于获取用户需求,加强对需求的理解,尽早发现软件中的错误,支持需求的动态变化,支持风险分析,可降低或者消除软件开发风险,适合于需求动态变化,事先难以确定并且开发风险较大的系统,软件过程,个人成果,妥善保存,请勿传播,螺旋模型的缺点,过多的迭代次数会增加开发成本,延迟提交时间,只适合大型软件项目的开发,否则,每个阶段的风险分析将占用很大一部分资源,增加成本,对开发人员的风险分析能力是极大的考验,软件过程,个人成果,妥善保存,请勿传播,喷泉模型,迭代是软件开发过程中普遍存在内在属性,“喷泉”模型体现了面向对象
36、软件开发过程的迭代和无缝的特性,软件过程,软件过程,Rational,统一过程,Rational Unified Process,,,RUP,Rational,公司推出的一种完整的软件过程,总结多年商业化验证的,6,条有效的开发经验,被称为“最佳实践”,迭代开发(可运行版本),管理需求(用例),使用基于构件的体系结构,可视化建模(,UML,),验证软件质量(内建的质量评估过程),控制软件变更,个人成果,妥善保存,请勿传播,软件过程,Rational,统一过程,RUP,软件开发生命周期,二维生命周期模型,横轴:核心工作流,纵轴:时间,核心工作流,业务建模、需求、分析和设计、实现、测试、部署,支持
37、工作流,配置和变更管理、项目管理、环境,个人成果,妥善保存,请勿传播,软件过程,个人成果,妥善保存,请勿传播,软件过程,Rational,统一过程,RUP,工作阶段,把软件生命周期划分成,4,个阶段,初始阶段,精华阶段,构建阶段,移交阶段,RUP,迭代式开发,迭代和渐增式开发,个人成果,妥善保存,请勿传播,软件过程,敏捷过程与极限编程,敏捷过程(,Agile Process,,,AP,),敏捷方法(,Agile Methodology,,,AM,),敏捷建模(,Agile Modeling,,,AM,),极限编程(,eXtreme,Programming,,,XP,),个人成果,妥善保存,请勿
38、传播,软件过程,敏捷过程,重载过程,CMM/CMMI,、,RUP,、,ISO 9001,轻载过程,敏捷过程,文档适度、度量适度、管理适度,“沟通、简单、反馈、勇气”,2001.2,月,17,位软件方法学家联合成立“敏捷软件开发联盟”,起草“敏捷软件开发宣言”,个人成果,妥善保存,请勿传播,软件过程,敏捷过程,“敏捷软件开发宣言”阐述的,4,条价值观,个体和交互胜过过程和工具,可以工作的软件胜过详尽的文档,与客户协作胜过合同谈判,响应计划胜过遵循计划,个人成果,妥善保存,请勿传播,软件过程,极限编程,eXtreme,Programming,,,XP,XP,的,12,个有效实践,客户作为开发团队成
39、员(,On Site Customer,),计划博弈(,Planning Game,),系统隐喻(,System Metaphor,),简化设计(,Simple Design,),集体拥有代码(,Collective Code Ownership,),结对编程(,Pair Programming,),测试驱动(,Test-driven,),个人成果,妥善保存,请勿传播,软件过程,极限编程,XP,的,12,个有效实践,小型发布(,Small Releases,),重构(,Refactoring,),持续集成(,Continuous integration,),代码规范(,Coding Stand
40、ards,),XP,开发人员典型日工作模式(早九晚五),个人成果,妥善保存,请勿传播,软件过程,极限编程,XP,的,12,个有效实践,小型发布(,Small Releases,),重构(,Refactoring,),持续集成(,Continuous integration,),代码规范(,Coding Standards,),XP,开发人员典型日工作模式(早九晚五),个人成果,妥善保存,请勿传播,软件过程,极限编程,XP,的整体开发过程,个人成果,妥善保存,请勿传播,软件过程,极限编程,XP,的迭代过程,个人成果,妥善保存,请勿传播,软件过程,微软过程,Microsoft,拥有自己的软件开发过
41、程,微软过程准则,项目计划应该兼顾未来的不确定因素,用有效的风险管理来减少不确定因素,经常生成并快速地测试软件的过度版本,采用快速循环、迭代的开发过程,用创造性的工作来平衡产品特性和产品成本,项目进度表应该具有较高的稳定性和权威性,使用小型项目组并发地完成工作,个人成果,妥善保存,请勿传播,软件过程,微软过程,微软过程准则,在项目早期把软件配置基线化,项目后期则冻结产品,使用原型验证概念,对项目进行早期论证,把零缺陷作为追逐的目标,里程碑评审的目的是改进工作,切忌相互指责,个人成果,妥善保存,请勿传播,软件过程,微软过程,微软软件生命周期,个人成果,妥善保存,请勿传播,软件过程,微软过程,微软过程模型,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,本章结束,下一章节导读:,“,可行性研究,”,






