小规模分布(small release)是XP的基本元素之一。试用200字以内文字分别说明: (1)原型系统和XP小规模发布的系统的主要差别是什么? (2)为什么该项目组没有采用原型开发方法? 在项目组的后续讨论中,李工提出,如果项目规模扩大

admin2007-10-08  13

问题 小规模分布(small release)是XP的基本元素之一。试用200字以内文字分别说明:
   (1)原型系统和XP小规模发布的系统的主要差别是什么?
   (2)为什么该项目组没有采用原型开发方法?
在项目组的后续讨论中,李工提出,如果项目规模扩大,XP将不再适用。王工对此表示赞同,但同时提出可以将XP方和和传统软件开发过程相结合。试用200字以内文字,简要说明如何将XP方法和传统软件开发过程相结合。

选项

答案(1)可以将XP和传统软件开发过程中的增量式开发过程相结合。 (2)将大规模项目划分为若干个具有共同目标的小规模项目,用XP方法论组织小项目开发,用传统软件过程方法论监控全局。 (3)在此基础上,建立面向目标的项目管理。 要求说明XP与传统过程方法的结合方法,也就是如何在同一个项目中运用。 第二步:根据问题要点,仔细阅读正文,找出相应段落 (1)在题目的第一段中包括项目的基本描述,即某公司要在现场开发一个网站应用系统,该系统的特点是规模不大;工期短;用户需求不明确;没有大的技术风险;系统中的一些模块可以外包给其他的公司开发。 在上面的描述中,较重要的是现场开发、网站应用、规模不大、工期短、需求不明确、无大的技术风险、部分外包。 (2)在题目的第二段中,阐明了采用XP的理由,即XP方法简洁,能减轻开发人员的负担、快速适应市场、缩短投资回收期。 (3)在题目的第三段中,只说提出了一些XP存在的问题,但并没有具体地说明,不过,给出了一个信息,即建议考虑使用原型法。说明所指出的问题,一定是可以用原型法来解决的。 (4)在第三个问题的描述中,提出了“如果项目规模扩大,XP将不再适用”,这也是指明了结合XP与传统过程方法的重要原因,说明回答应该围绕这个主题来进行。 第三步:分析试题的内容,构思答案的要点

解析 [问题1]
   当客户有一个合理的要求,但对细节则没有任何线索时,原型法开发是一个十分常用的方法。本题所涉及的项目就是属于需求不明确的,因此能够有效利用原型法进行解决。
   原型法开发从需求收集开始,开发者和客户在一起定义软件的总体目标,标识出已知的需求,并规划出需要进一步定义的区域。然后就是“快速设计”,快速设计集中于软件中那些对用户或客户可见的部分的表示(如输入方式和输出格式)。快速设计导致原型的创建。原型由用户或客户评估并进一步细化待开发软件的需求。逐步调整原型使其满足客户的要求,同时也使开发者对将要做的事情有理好的理解,这个过程是迭代的。
   理想情况下,原型可以作为标识软件需求的一种机制。如果建立了可运行原型,开发者就可以在其基础上试图利用已有的程序片断或使用工具(如报表生成器、窗口管理器)来尽快生成可运行的程序。
   原型开发方法在实施时,存在的问题主要包括以下2个方面:
   (1)客户似乎已经看到了软件的工作版本,却无法理解为了使原型很快能够工作,没有考虑软件的总体质量和长期的可维护性。
   (2)开发者常常需要实施上的折中以使原型能够尽快工作。
   因此,通常采用原型法,都会在客户和开发者之间达成协议:构建原型仅是为了定义需求,之后就被抛弃了(至少是部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。这种原型开发方法也称作“抛弃型原型开发”。
   当然,也可以采用逐渐演进的方式进行原型开发,即系统以逐步增加的方式进行开发,以便于随时根据客户或最终用户的反馈来修正系统。大多数渐进原型都是从一个用户界面原型开始逐步演化出整个系统的。不过采用原型开发可能出现的风险是:不切实际的进度和预算、项目可控性降低、缺乏最终用户或客户的反馈(因为容易让客户的目标陷入界面而忽略本质,反而造成问题)、产品性能不佳、不切实际的性能期望、设计不佳、可维护性差、目标偏移,而且还有一个最重要的就是原型开发阶段效率一般都较低效。
   XP认为“客户确切地知道需求,而且当实现其需求后,他仍然认同”,这种现象几乎不存在。因此,在xP方法论中最重要的一件事情就是尽早、尽量频繁地发布。如果可能,第一次发布时间不应超过2个月,此后每2个月发布一次。要注意的是,XP中每次发布的内容不是演示版,而是实用版。也就是说,并不是仅仅将其演示给客户看,让其评论,最后放到一边,继续等待最后的开发结果;而是交付使用的子集,让客户每一天都在使用。
   另外,为了保证开发出来的结果与客户的预想接近,XP方法论认为最重要的是需要将客户请到开发现场。在项目中有客户在现场明确用户需求,并做出相应的业务决策,这对于XP项目有着十分重要的意义。这时因为,仅靠简单的用户需求是不充分的,还需要大量地与客户沟通。在本题中所列举的项目是在现场开发,因此现场客户是有保证的。
   [问题2]
   XP的核心是其总结的沟通、简单、反馈、勇气4大价值观。它包括12种最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40h、现场客户以及编码标准。
   从XP方法论本身来说,首先第一类潜在问题是精神和观念上的,即是否能够得到开发人员、管理者以及客户3方面的支持与理解。简单设计、测试先行、重构、集体代码所有制、编码标准、持续集成都从某种意义上违背了程序员的传统习惯;而小型发布、结对编程、每周工作40h,经常会让管理者不可理解,以致认为XP是黑客文化,是为开发人员谋福利而来的;而现场客户实践则经常无法得到客户的理解和满足,另外许多客户在接受每一次小规模发布时,也会提出异议。
   另外,XP方法论属于轻量级,也就是文档量少,遵从“代码就是文档”的思想。因此虽然XP方法论中是有“当非要文档时才编写”的说法,但却容易使得团队忽视文档,从而降低系统的可维护性、易用性以及其他的一些问题。除了培训教育之外,通常还可以采用的解决方案是利用诸如“敏捷建模”策略,在2个极端中间取一个合理的阈值。
   本题中还有一个十分重要的信息,那就是该项目将部分外包。由于XP方法论强调人的作用,团队之间通过集体代码制、结对编程等方式来提升交流与合作,从而提升生产率。但是如果项目有部分外包的话,将会破坏这种结构,甚至可能影响到发布计划。
   应试者可从上面的叙述中提取所需的答案。
   [问题3]
   XP方法论的创始人Kent Beck在其《拥抱变化:解析极限编程》一书中明确指出:“XP是适合于中小型团队在需求不明确或者迅速变化的情况下进行软件开发的轻量级方法学”。它与传统的方法论最大的不同如下。
   (1)拥有短周期内的早期、具体和持续的反馈。
   (2)它递增地进行计划编制,也就是在项目的一开始就迅速提供一个总体计划,然后在项目的整个生命周其内不断地发展它。
   (3)它针对不断变化的业务需求灵活地对功能的实现进行计划的能力。
   (4)它依赖于由程序员或客户编写的自动测试来监控开发进度。
   (5)它依赖于口头交流、测试和源代码来沟通系统的结构和意图。
   (6)它依赖于整个系统存在期间一直持续的进化式设计过程。
   (7)它依赖于技术水平一般的程序员之间的紧密协作。
   (8)它依赖于能够同时满足程序员的短期本能和项目的长期利益的实践。
   因此,它并不是与传统的方法论有着“不同戴天”的变化,而是存在很多的结合点,能够有效地在传统方法论中结合XP开发方法的。
   集中式方法是传统的软件工程方法的共同特点。它的优点在于具有共同的、清晰确定的目标,而且是一个结构化的过程,领导团队贯穿各个软件开发阶段。它们最大的缺点是缺乏负责员工的参与,而且客户的反馈也很少,导致解决方案的接纳度降低。
   XP开发方法则高度涉及员工和客户,可以保证较高的解决方案接纳度。不过当其运用到几个局部问题上往往不能产生与多个团队一起共享的改进,加上XP方法的无结构,因此一个必须包含几个人的复杂问题不能用它来产生一个全面的概念。
   (1)层次化结合
   基于这样的想法,可以提出层次化的管理。
   ①在上层,建立一种面向目标的项目管理,它通过产生一个大致概念把问题组织成一种高级结构。
   ②将目前有局部化问题的每个部分都通过定义一个自身的XP团队,用一种极限编程的方法来予以解决。
   如图6-6所示,XP团队主要在独立的基础上发挥功能。同时,他们通过跟踪全局目标和衡量局部改进的顶层管理团队,以一种松散的方式被联系起来。
   
   (2)实践引入式结合
   另外一种结合的方式是仍然按照传统过程方法论进行过程的管理,引入XP的实践,实现优势互补。其中比较典型的包括如下内容。
   ①现场客户:这个实践是对传统过程方法论缺乏客户参与的最好补充。
   ②简单设计:只为今天设计,不过多地考虑明天的需要,因为现在的假设可以是错误的,也许明天还有更好的实现方式——这是XP提倡的简单原则,它也可以无缝地借用到用传统过程方法论进行管理的项目中。
   ③小型发布:每次迭代都实现一次小型的发布,提交一个能够让用户开始投入使用的小型版本,可以有效地加强反馈,缩短开发进程,提高软件质量。其中也可结合每日构建进行持续集成,予以保障与支持。
   ④测试先行、重构:这是保持“小步快走”的关键实践,对于软件质量的提高有很大的帮助。
   除此之外,XP方法论中的其他实践也能够有效地在传统的开发过程中发挥作用。
转载请注明原文地址:https://kaotiyun.com/show/SeQZ777K
0

最新回复(0)