作者:徐建祥(
				
						
								netpirate@gmail.com
						
				
				)
		
		
				时间:
				
				
						2006/09/22
				
		
		
				来自:
				http://www.anymobile.org
		
		
				
						
						 
				
		
		
				
						
								1、软件过程
						
								
								
						
				
		
		
				
						 
				
		
		
				
						       
				
				随着软件系统的规模和复杂性的增加,其开发成本和风险随之增加,软件的质量问题已成为制约软件发展的关键因素之一。
		
		
				
						       
				
				所谓软件过程,即软件项目的开发过程,是指软件生命周期中,用于开发和维护软件产品的一系列过程,它与团队的组织管理以及开发技能相辅相成,全面提升软件产品的质量。
		
		
				
						       
				
				近年来,软件过程日益得到重视,国际软件界的敏捷、统一热也在持续升温。
				与传统的开发过程相比,敏捷过程更强调快速灵活反应,主动迎接和适应变化,主张更紧密的客户与开发商协作,以人为本的可持续发展,典型的有
				XP
				(极限编程)、
				FDD
				(特征驱动开发)等;统一软件过程以
				RUP
				为代表,采用
				OO
				技术对软件开发过程本身进行业务建模,集成了迭代开发、用例驱动、
				UML
				可视化建模、
				OOAD
				、架构设计、项目管理等许多主流先进的当代软件工艺。
		
		
				
						       
				
				在软件项目开发过程中,应该能够识别、分析不同软件项目的特点,采用相对适合的开发实践来适应软件开发过程,保证对软件开发的有效支持,如
				RUP
				与
				XP
				的融合。
		
		
				
						 
				
		
		
				
						
								2、
						
						XP
						,极限编程
				
		
		
				
						 
				
		
		
				极限编程(
				eXtreme Propgramming
				,
				XP
				)是由
				Kent Beck
				在
				1996
				年开创,是一种演进式的原型化方法,以最大化发挥人的能量为核心目标,以“小步快走”的逻辑指导开发,具有沟通高效、设计简单、反馈迅速等特点,是一种轻量级、敏捷的过程方法。
		
		
				极限编程基于四个价值目标:沟通(
				communication
				)、简化
				(simplicity)
				、反馈
				(feedback)
				和勇气
				(courage)
				,由
				12
				个最佳实践为这四个价值提供支持。
		
		
				极限编程的生命周期包括
				4
				个基本活动:编码
				(coding)
				、测试
				(testing)
				、聆听
				(listening)
				、设计
				(designing)
				。
		
		
				2.1 4
				
						个价值目标
				
		
		
				
						       
				
				沟通:让开发人员集体负责所有代码并结队工作,鼓励与客户及团队内部保持沟通。
		
		
				简化:鼓励只开发当前的功能,避免过多的文档,专注于最小化解决方案,做好为为新特性改变设计,在系统隐喻和代码规范下不断重构的准备。
		
		
				反馈:通过单元测试和功能测试获得快速反馈。
		
		
				勇气:提倡积极面对现实和处理问题的勇气,拥抱变化。
		
		
				2.2 12
				
						个最佳实践
				
				
		
		
				
						
								
 
(图片1 XP最佳实践)
             
				
				有计划的开发:通过结合使用优先级“故事”和技术估算,确定下一版本的功能。
				
				
		
		
				小型发布:以小的增量版本经常向客户发布软件。
		
		
				系统隐喻:隐喻是一个高层次的系统构想;需要不断的细化架构,来指导全部开发。
		
		
				简单设计:通过保持代码简单从而保证设计简单。不断的在代码中寻找复杂点并且立刻进行移除。
		
		
				测试驱动:“先测试,后编码”。用户编写测试内容以对
				"
				故事
				"
				进行测试。程序员编写测试内容来发现代码中的任何问题。在编写代码前先编写测试内容。
		
		
				重构:这是一项简化技术,用来移除代码中的重复内容和复杂之处。
		
		
				结对编程:团队中的两个成员使用同一台计算机开发所有的代码。一个人编写代码或者驱动,另一个人同时审查代码的正确性和可理解性。
		
		
				集体代码所有权:任何人都拥有所有的代码。提高代码透明度,增强团队合作精神。
		
		
				持续集成:每天按任务多次创建和集成系统,随着需求变化,进行不断的回归测试。
		
		
				每周
				40 
				小时工作制:程序员在疲劳时无法保证最高效率。连续两周加班是绝对不允许的,否则会影响工作效率。
		
		
				现场客户:至少有一名真实的客户全天候工作于开发环境中,帮助定义系统、编写测试内容并回答问题。
		
		
				编码规范:程序员采用统一的编码规范。
		
		
				总体来说,
				XP
				部分满足了
				CMM2~3
				级关键过程域
				(KPA)
				的要求,
				XP
				侧重与过程和技术,
				CMM
				更注重组织和管理。
		
		
				
						 
				
		
		
				
						
								3、
								  
						
				
				
						FDD
						,特征驱动开发
				
		
		
				特征驱动开发(
				Feature Drive Develop
				,
				FDD
				),
				Together
				创始人
				Peter Coad
				所创。通过特征来制定开发计划,以每日构建为核心,强调按特征分步开发和交付。一个特征就是一个小的、具有客户价值的功能,通常表示为
				<action><result><object>
				。
		
		
				
						 
				
		
		
				
						
								4、
								  
						
				
				
						RUP
						,
						Rational
						统一过程
				
		
		
				
						 
				
		
		
				迭代软件开发的发展背景:软件的不确定和高风险等特性,使得传统的瀑布式开发力不从心;迭代有助于尽快发现和解决风险;迭代有助于控制项目的节奏,加快反馈,增强项目的控制力度,实现过程的有序化;迭代符合人们对事物的认识逐步加深,解决问题的能力随经验逐步提高。
				
				
						
								
						
				
				
		
		
				
						       Rational
				统一过程(
				Rational Unified Process
				,
				RUP
				),是用例驱动、以体系结构为中心,迭代、增量的软件开发过程。适合大、中型项目。
		
		
				RUP 
				强调采用现代软件开发的一些最佳实践,作为一种降低开发新软件所带来的内在风险的方式。这些最佳实践包括:
				
				
		
		
				1) 
				迭代开发;
		
		
				2) 
				管理需求;
		
		
				3) 
				使用基于组件的构架;
		
		
				4) 
				可视建模;
		
		
				5) 
				持续的质量验证;
		
		
				6) 
				控制变更。
				
				
		
		
				RUP
				是一个迭代过程,确定了任何软件开发项目的四个阶段:初始阶段、精化阶段、构建阶段和交付阶段。每个阶段包括一次或多次迭代;每一次迭代都会生成更加接近最终产品的可执行版本。 
		
				a
				、初始阶段:识别和规避项目的主要风险,建立用例模型框架,并制定里程碑日期的阶段计划;
		
		
				b
				、精化阶段:分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素,完成部分优先级最高的用例开发;
		
		
				c
				、构建阶段:分为多个迭代,逐步完成不同优先级的用例开发,核心
				Case->
				高风险
				Case->
				次核心
				Case->
				其它
				Case
				;
		
		
				d
				、交付阶段:进行各种功能、性能测试,进行产品化、部署,完成整个系统的开发工作。
				
				
						
								
								
(图片2 RUP概述图)
				
				
		
		
				
						RUP 
				
				
						迭代开发过程:
		
		
				a
				、第一次迭代
		
		
				1)  
				捕获需求
		
		
				2)  
				建立初始的领域模型
		
		
				3)  
				建立用例模型框架
		
		
				4)  
				制定开发计划
		
		
				b
				、第二次迭代
		
		
				1)  
				关键用例的
				Robustness
				分析与交互建模
		
		
				2)  
				体系结构设计
		
		
				3)  
				建立类模型
		
		
				4)  
				关键用例的开发与测试
		
		
				5)  
				完善用例模型
		
		
				c
				、第
				n
				次迭代
		
		
				完成所有用例的分析、设计与开发。
		
		
				d
				、最后的迭代
		
		
				1)  
				整体测试:进行各种功能、性能和压力测试。
		
		
				2)  
				部署与安装:生成相应的部署图。
		
		
				3)  
				产品化:进行一些产品化的包装。
		
		
				
						注:每一次迭代之后,都应该交付一个可以运行的中间版本。
				
				
						
								
								
								
(图片3 RUP迭代流)
				
		
		
				
						
								5、  
						
						SPP
						,精简并行过程
				
		
		
				精简并行过程(
				Simplified Parallel Process
				,
				SPP
				),对
				CMMI 3
				级以内各过程域的内容和要求作了“精简”处理,包括
				19
				个过程域、
				40
				余个规程和近
				60
				个文档模板
				。强调在产品生命周期之内,项目管理过程、项目研发过程和机构支撑过程“并行”开展。
				
				
						
								
								
						
				(图片4 SPP)
		
				
						
						
				
		
		
				软件过程改进解决方案(
				SPIS
				)――林锐发明。
		
		
				核心组成部分
		
		
				1) 
				软件过程改进咨询服务;
		
		
				2) 
				软件工程与项目管理培训;
		
		
				3) 
				基于
				Web
				的集成化项目管理工具,
				Future
				。
				
				
		
		
				Future
				采用
				CMMI
				和
				SPP
				为参考标准。主要功能包括项目规划、项目监控、质量管理、配置管理、需求管理、日常工作管理等。
				
				
		
		
				网站:
				http://www.chinaspis.com
		
		
				
				
		
		
		
	posted on 2006-09-22 15:51 
Xu Jianxiang 阅读(1193) 
评论(0)  编辑  收藏  所属分类: 
Design Research