2008年上半年试题2
当前企业中业务都是在全球化、快速变化环境中运营,传统软件开发过程无法适应由此产生快速软件开发需求。20 世纪 90 年代后期,一些软件开发人员在“Agile Allicance 2001”中系统地阐述了敏捷开发原则,试图强调灵活性在快速且有效地生产软件中所发挥作用。目前,众多软件生产企业已经在实际软件开发过程中接纳并实践了敏捷开发方法中基本原则。
【问题1】
敏捷开发有许多典型方法,包括极限编程(eXtreme Programming)、Scrum、Crystal、DSDM等。请问这些方法共同基本原则是什么?
【问题2】
敏捷开发支持者往往夸大该方法优点,但是在实践中,敏捷方法基本原则有时确实很难实施。请用200字以内文字说明敏捷方法中哪些原则在实践中难以实施。
【问题3】
敏捷开发方法中最有名是极限编程。请说明极限编程中结对编程(Pair Programming)概念。
【问题4】
敏捷开发方法在具体实践过程中,往往需要开发环境或工具支持,一般称为快速应用开发技术和可视化开发技术。请用150字以内文字说明快速应用开发技术所包含工具有哪些,并简要说明可视化开发技术基本概念和技术原理。
正确答案及解析
正确答案
解析
一、试题分析
这是一道关于敏捷开发方法(主要是XP方法)问答题,共4个问题。在系统分析师考试指定参考用书《系统分析师技术指南》(张友生、王勇主编,清华大学出版社)中,详细介绍了敏捷开发方法和XP方法。
【问题1】
注重个体与交互,重点关注可以工作软件,提高客户参与度,以积极心态响应变化是敏捷方法论核心价值观。为了贯彻这四大价值观,敏捷联盟提出12条区别于重量级过程原则。
(1)尽早、持续交付有价值中间软件使客户满意。很多开发组织经常会在时间期限上进行没有原则地退让,其结果却是让客户一等再等,不仅没有按承诺兑现,甚至是时间超过一倍,但仍然不见软件踪迹。这种不守信状态,使得整个软件业走入了一个负螺旋发展。敏捷方法论提出了一种新逻辑,将尽早、持续地交付可运行中间成果,有价值中间结果,使得客户能够尽早地、持续地了解到软件开发进展,并且将需求变化、系统改进意见尽早地提出来,这会使得客户满意度大大提高。
(2)即使到了开发后期,也欢迎需求变化,利用响应变化创造竞争优势。敏捷方法论鼓励团队拥抱变化,通过应用各种技术来提高软件结构灵活性,本着简单原则进行设计,以响应变化能力作为团队核心竞争力。
(3)经常交付可工作软件,间隔时间可以是几周到几个月,间隔越短越好。由于敏捷方法论奉行“客户合作”、“客户参与”,而要让客户更加有效参与,经常性、频繁地交付可工作中间软件,将可以有效地加强开发人员与客户之间沟通,从而将隐藏需求变化及早触动。
(4)开发全过程,业务人员和开发人员必须天天都在一起工作。在开发中,不仅需要客户参与开发,还应该包括代表客户业务人员。因此在开发人员、客户、业务人员等相关干系人之间建立频繁而且密切交流与沟通,将是使项目保持高度灵活性关键。
(5)为开发人员提供环境和支持,给予信任,以人为本地构建项目。敏捷方法论是崇尚“以人为本”精神,认为项目成功最关键因素是人,其意义超过过程和工具。建立一支优秀团队,并在环境与精神上提供支持,给予信任,将是项目成功关键。这也是与传统“过程”为主管理思想最大不同。
(6)团队内部,最有效沟通方式莫过于面对面交谈。在重量级方法论中,人们尝试着通过编写规范、精美文档进行交流。而在敏捷方法论中则更加重视是开发团队成员之间面对面交谈,大家坐在一起,用一块白板,或是一张纸,一边绘制草图,一边交谈,这是最有效沟通方式。
(7)工作软件是度量进度最首要标准。要衡量工作进度,采用基点不是文档完成情况,不是已完成代码行数,而是可以工作软件完成了多少功能、实现了多少用例。这是敏捷方法论共同点,因为只有可工作软件才是有价值。
(8)提倡可持续开发速度,责任人、开发者和用户应保持一个长期、恒定开发速度。软件开发绝不是短跑,它更像一场挑战耐力马拉松长跑。因此,过早冲刺、在前期过度工作,将不利于项目按照持续开发速度进行下去。因此,敏捷方法论反对加班,因为这样行为会使得团队精力过早耗尽,过早地对项目失去兴趣和信心,从而得到事与愿违结果。
(9)不断关注好技能和设计会增加敏捷能力。保持软件高质量、简洁、健壮,是实现快速软件开发重要途径。因此只有大家都致力于编写高质量代码、不创造混乱,才能够提升敏捷能力。
(10)开发者本质是简单——使未完成工作最大化艺术。不管明天需求,只采用符合今天需求简单设计。因为谁也不知道明天是怎么样?变化太快了,今天设计考虑太多明天需求,就有可能做了过多无用功。
(11)自组织团队才能够做出最好架构设计和需求分析。最优秀团队不是被强权管理下团队,而是形成了一个良好协作,能够内部进行任务分解、协调团队。
(12)团队应定期在如何更有效工作方面进行反省,然后对自己行为做出改进。不断地回顾、总结,并从中找到团队未能最有效工作瓶颈点和问题点,并且通过细致分析与讨论,找到其要点,并做出相应改进是十分重要。
【问题2】
问题2问敏捷方法原则中哪些原则在实践中难以实施,这与问题1是相关联。只要理解了这些基本原则,这个问题就好解答。因为问是在“实践中难以实施”,所以这个问题可以答得灵活些,只要说得有道理都可以得分。
【问题3】
问题3考查结对编程概念,简单地说,结对编程就是2个人坐在一起写同一个程序。结对编程可以大大降低沟通成本,提高工作质量。
【问题4】
问题4是关于快速开发工具和可视化开发。快速应用开发(RAD)目是快速发布系统,RAD组合了5个方面技术,分别是进化原型、CASE工具(可进行正向工程和反向工程)、拥有能使用先进工具专门人员(一个RAD开发小组)、交互式JAD、时间表。例如,VB、Delphi、PB等都属于RAD工具。可视化开发就是在可视开发工具(例如,VB、Delphi、PB等)提供图形用户界面上,通过操作界面元素(例如,菜单、按钮等),由可视开发工具自动生成应用软件。这类应用软件工作方式是事件驱动。对每个事件,由系统产生相应消息,再传递给相应消息响应函数。
二、参考答案
【问题1】
(1)客户参与。
(2)增量式移交。
(3)开发团队技术应该得到承认和发扬。团队成员应该保持他们自己工作风格,不落俗套。
(4)接受变更。
(5)保持简单性。
【问题2】
(1)客户参与度往往依赖于客户参与意愿和客户自身代表性。
(2)团队成员性格可能不适合激烈投入,可能无法做到与其他成员之间良好沟通。
(3)对系统中变更作出优先级排序可能是极端困难。
(4)维护系统简洁性往往需要额外工作,但迫于移交时间表压力,可能没有时间执行系统简化过程。 【问题3】
结对编程:开发人员成对工作,检查彼此工作并提供支持,圆满完成任务。
【问题4】
快速应用开发中所包括工具有数据库编程语言、界面生成器、与办公应用连接、报告生成器。可视化开发是一种通过集成细粒度可复用构件来构造软件快速应用开发方法,其主要思想是用图形工具和可重用部件来交互地编制程序。可视化开发一般基于事件驱动原理。
你可能感兴趣的试题
在几种不同类型的软件维护中,通常情况下()所占工作量最大。
-
- A.更正性维护
- B.适应性维护
- C.完善性维护
- D.预防性维护
- 查看答案
在()中,项目经理的权力是最小的。
-
- A.强矩阵型组织
- B.平衡矩阵组织
- C.弱矩阵型组织
- D.项目型组织
- 查看答案
在项目实施的过程中,项目经理通过项目周报中的项目进度分析图表发现机房施工进度有延期风险。项目经理立即组织相关人员进行分析,下达了关于改进措施的书面指令。该指令属于( )
-
- A.检查措施
- B.缺陷补救措施
- C.预防措施
- D.纠正措施
- 查看答案
-
- A.见图A
- B.见图B
- C.见图C
- D.见图D
- 查看答案
-
- A.见图A
- B.见图B
- C.见图C
- D.见图D
- 查看答案