敏捷软件方法的学习辅助管理系统设计 第4页
器前进行开发,一人打字编程另一人查看其编码,配对的两人是不固定的,建议每天轮换。
(8)设计改进(Design Improvement):在整个开发过程中,应对程序结构进行持续不断的梳理(Refactoring,在不影响程序的外部可见行为的情况下,按高内聚松耦合的原则对程序内部结构进行改进), 保持代码简洁、无冗余。
(9)持续集成(Continuous Integration):保持项目组中所有开发的模块始终是组装完毕、集成良好且可执行的,一旦新的模块通过了单元测试,应立即将其组装、集成,形成新的可执行系统。
(10)代码共享(Collective code Ownership):任何结对开发者在任何时候都可改进项目组中的任何代码。
(11)编码标准(Coding Standard):对编程风格(命名、注释、格式等)要有一个大家认可的、共同遵守的标准,使整个程序如同一人编写。
(12)可持续步调(Sustainable Pace):整个项目的开发节奏应该是可长期维持的,XP提出每周40小时工作制,以使开发人员能长期保持高效率工作。
3.XP的开发过程
(l)整体开发过程
如图2-1所示。用户代表提出用户故事(User stories,类似于用例,但更简单,不超过三句话即可,一般只涉及功能要求),项目组据此进行讨论提出系统比拟,在此活动中有可能要进行体系结构的刺探(Spike,意在试探解决有关技术难点,走通技术路线)。在系统比拟和用户故事的基础上,根据用户设定的优先级制订交付计划(制订计划中可能需要对某个技术难点进行刺探),然后开始多个迭代过程(每个迭代一般为1~3周),在迭代期内产生的新用户故事不在本迭代内解决,以保证开发不受干扰。经验收测试通过后交付使用。
图2-1 XP开发整体过程
(2)迭代过程
如图2-2所示。根据交付计划和项目速率(Project velocity,实际开发时间和估计时间的比率,如估计1天完成的工作实际为2 天,项目速率为2),选择要优先完成的用户故事或待消除的Bugs,将其分解为可在1~2天内完成的任务,制定本次迭代计划,然后通过每天的站立会议(Stand up meeting,参加人员站着开会以缩短时间\提高效率)解决碰到的问题、调整迭代计划,会后是代码共享式的开发工作,开发人员要确保新功能100%通过单元测试,并立即组装形成新的可运行版本,由用户代表进行验收测试。
图2-2 迭代开发过程
(3)代码共享的编程
如图2-3所示。 图2-3 代码共享编程
(4)xp的计划/反馈循论文网http://www.lwfree.com/ 六维毕业论文http://www.751com.cn/ 时它又是面向对象开发的行业标准语言—标准建模语言甲ML)的创立者。RUP将一个项目分解成多个开发周期,将每个开发周期分解为多个阶段:先启阶段、精化阶段、构建阶段、和移交(产品化)阶段。RUP在软件开发中确定了一系列“工作流”,或主题:业务建模、需求、分析、设计、实现、测试、部署、配置和变更管理、项目管理、环境管理。所有的工作流在每个阶段都会涉及,但每个工作流的重要性和成效在不同阶段有所不同。
RuP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Ineeption)、细化阶段E(laboratino)、构造阶段(Consturetion)和交付阶段份ansition)。
RUP具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
2.3.3 SCRUM
由Ken Schwaber和Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行动,奋力实现同一目标──胜利)。SCRUM 方法最初实践于Easel 公司(1993 年),现已被数十家公司数百个项目开发中应用,适用于需求难以预测的复杂商务应用产品的开发[11]。SCRUM提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master、SCRUM Team、Demo等模式已被PLOP作为组织和过程模(Organizational and Process Pattern)的标准[12]。
SCRUM将工业过程控制中的概念应用到软件开发中来,认为软件开发过程更多是经验性过程(Empirical Process),而不是确定性过程(Defined Process)。确定性过程是可明确描述的、可预测的过程,因而可重复(Repeatable)执行并能产生预期的结果,并能通过科学理论对其最优化。经验性过程与之相反,应作为一个黑箱(Black box)来处理,通过对黑箱的输入输出不断进行度量,在此基础上,结合经验判断对黑箱进行调控,使其不越出设定的边界,从而产生满意的输出。SCRUM方法将传统开发中的分析、设计和施视为一个黑箱,认为应加强黑箱内部的混沌性,使项目组工作在混沌的边沿,充分发挥人的创造力,将经验性过程按确定性过程来处理(如瀑布模型),必将使过程缺乏适应力。
2.3.4 Crystal方法系列
由Alistir Cockburn提出,与其它Agile方法的提出者不同,Cockburn的研究基于对IBM公司近四十个项目(这些项目有大有小,方法有轻载和重载,时间跨度为1980~1999年)案例的调查。他认为不同的项目需采用不同的开发方法,并随着开发的进行应不断细调(On-the-fly tuning),也就是连续不断的过程改进。据此他提出了一系列方法(Crystal Clear、Crystal yellow、Crystal Orange、Crystal Red等,名称借自于自然界中的晶体,有透明的、黄色的、橙色的等)作为基本参照和一些原则来指导方法的调整。
Crystal 方法系列的核心理念:软件开发可视为创造和交流相协调的过程,其中人的因素是第一位的,软件开发的第一目标是交付有用的、可运行的软件,其次是保持开发工作的可延续性。
Crystal 方法系列对具体的开发过程并没有严格的要求。它强调某个方法应有哪些角色及多少人参与、组织结构如何、迭代周期多长、应有哪些中间文档、采用哪些工具等。如Crystal Clear,用在6 人左右的项目组(无下层小组),迭代周期应为2-3个月,角色应有项目资助者、高级设计开发员、设计开发员和用户,开发制品有:交付序列、进度安排、有注解的用例、设计纲要、通用对象模型、可执行代码、移植代码、测试用例和户手册。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>