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】
快速应用开发中所包括的工具有数据库编程语言、界面生成器、与办公应用的连接、报告生成器。可视化开发是一种通过集成细粒度可复用构件来构造软件的快速应用开发方法,其主要思想是用图形工具和可重用部件来交互地编制程序。可视化开发一般基于事件驱动的原理。
【说明】利用ASP+access开发网站管理系统,设计以下两个网页Add_form.asp 和Add.asp,通过它们将网站信息添加到数据库test.mdb 中website表中。下图是Add_form.asp 浏览页面,在其上输入需要添加页面内容后,单击"确定"按钮,执行Add.asp 页面完成相应内容添加到数据库test.mdb 中。
问题1:完成程序中空白处填空。
<% Option Eplicit%><Html><head><title>添加记录示例</title></head>(1)align="center">添加新网站</h2><center><table border="1" width="90%"><form name ="form1"method="(2)"action=(3)"><tr><td>网站名称</td><td><input type="(4)"name="name" size=20></td></tr><tr><td>网站地址</td><td><input type="text"name="URL" size=40></td></tr><tr><td>网站简介</td><td>(5) name ="into" row="2"cols="40"wrap="solf "></textarea></td></tr><tr><td> </td><td><input type=(6)" "value="确定"><input type=(7)" "value="(8)"</td></tr></from></table></center></body></html>
添加数据记录执行程序add.asp:
<% Otion Eplicit><% '如果上面信息已经填全了,就添加记录,否则给出错误提示信息Dim connSet conn=server.(9)("ADODB.Connection")conn.Open "Dbq="&Server,mappath("(10)")&";Driver={Microsoft Access Driver(*.mdb)};"Dim strSql,varName,varURL,varlntro,rs '定义变量VarName=Request.Form("(11)")VarURL=Request.Form(" URL")VarIntro =Request.Form("Intro")(12)="Insert into website (name,URL.intro,submit_date)Values( "&varName &","&_varURL&","& varIntro &",# "&Date( )&" # )" 'Date( )表示取服务器时间Set rs=conn.(13) (strSql)index.asp" '添加成功,则返回首页index.asp…response.(14) "请将所有信息填写完整"response. (15)"add_form.asp"%>
备选答案
(1).A.b3 B. h2 C.h3 D.空白
(2)A. get B. post C.put D.pull
(3)A.add.asp B.add C.add_form.asp D.continue
(4)A.submit B.option C.radio D.text
(5)A. textarea B.text C.select D.option
(6)A.submit B.reset C.radio D.text
(7)A.submit B.reset C.radio D.text
(8)A.submit B.确定 C.reset D.重写
(9)A.mappath B.cereateobject C.application D.server
(10)A.test B.test.mdb C.website D.website.table
(11)A.name B.text C.requesto D.response
(12)A. strSql B.varName C.varURL, D.varlntro
(13)A.open B.execute C.requesto D.response
(14)A.write B.rewrite C.redirect D.direct
(15)A.write B.rewrite C.redirect D.direct
某机器字长为n,最高位是符号位,其定点整数最大值为( )。【由于网页格式问题,答案中N表示N次方】
10个成员组成开发小组,若任意两人之间都有沟通路径,则一共有(7)条沟通路径
在软件设计阶段,划分模块原则是,一个模块( )。
以下关于结构化开发方法叙述中,不正确是( )。
由于内网P2P、视频/流媒体、网络游戏等流量占用过大,影响网络性能,可以采用(50) 来保障正常Web及邮件流量需求。
要在一台主机上建立多个独立域名站点,下面方法中(42)是错误。
以下关于CPU叙述中,错误是( )。
属于CPU中算术逻辑单元部件是在( )。