题目详情

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】

快速应用开发中所包括的工具有数据库编程语言、界面生成器、与办公应用的连接、报告生成器。可视化开发是一种通过集成细粒度可复用构件来构造软件的快速应用开发方法,其主要思想是用图形工具和可重用部件来交互地编制程序。可视化开发一般基于事件驱动的原理。

包含此试题的试卷

你可能感兴趣的试题

问答题

阅读以下关于Web系统架构设计的教述,在答题纸上回答问题1至问题3。

【说明】

某公司拟开发一个智能家居管理系统,该系统的主要功能需求如下:1)用户可使用该系统客户端实现对家居设备的控制,且家居设备可向客户端反馈实时状态;2)支持家居设备数据的实时存储和查询;3)基于用户数据,挖掘用户生活习惯,向用户提供家居设备智能化使用建议。

基于上述需求,该公司组建了项目组,在项目会议上,张工给出了基于家庭网关的传统智能家居管理系统的设计思路,李工给出了基于云平台的智能家居系统的设计思路。经过深入讨论,公司决定采用李工的设计思路。

【问题1】 (8分)

请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。

【问题2】 (12分)

请从下面给出的(a) ~ (j) 中进行选择,补充完善图5-1中空(1) ~ (6)处的内容,协助李工完成该系统的架构设计方案。

高级系统架构设计师,历年真题,《系统架构设计师》案例分析真题

(a) Wi-FI

(b) 蓝牙

?驱动程序

(d)数据库

(e)家庭网关

(f)云平台

(g)微服务

(h)用户终端

(i)鸿蒙

(j)TCP/IP

【问题3】 (5分)

该系统需实现用户终端与服务端的双向可靠通信,请用300字以内的文字从数据传输可靠性的角度对比分析TCP和UDP通信协议的不同,并说明该系统应采用哪种通信协议

查看答案
问答题

某医院拟委托软件公司开发一套预约挂号管理系统,以便为患者提供更好的就医体验,为医院提供更加科学的预约管理。本系统的主要功能描述如下:

(a)注册登录

(b)信息浏览

(c)账号管理

(d)预约挂号

(e)查询与取消预约

(F)号源管理

(g)报告查询

(h)预约管理

(i)报表管理

(j)信用管理

【问题1】 (6 分)

若采用面向对象方法对预约挂号管理系统进行分析,得到如图2-1所示的用例图。请将合适的参与者名称填入图2-1中的(1)和(2)处,使用题干给出的功能描述(a)(j),完善用例(3)(12)的名称,将正确答案填在答题纸上。

高级系统架构设计师,历年真题,《系统架构设计师》案例分析真题

【问题2】 (10分)

预约人员(患者)登录系统后发起预约挂号请求,进入预约界面。进行预约挂号时使用数据库访问类获取医生的相关信息,在数据库中调用医生列表,并调取医生出诊时段表,将医生出诊时段反馈到预约界面,并显示给预约人员;预约人员选择医生及就诊时间后确认预约,系统反馈预约结果,并向用户显示是否预约成功。

采用面向对象方法对预约挂号过程进行分析,得到如图2-2所示的顺序图,使用题干中给出的描述,完善图2-2中对象(1),及消息(2)~(4)的名称,将正确答案填在普题纸上请简要说明在描述对象之间的动态交互关系时,协作图与顺序图存在哪些区别?

高级系统架构设计师,历年真题,《系统架构设计师》案例分析真题

【问题3】 (9分)

采用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型,请分别介绍这3种模型,并详细说明它们之间的关联关系,针对上述模型,说明哪些模型可用于软件的需求分析?

查看答案
问答题

阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3。

【说明】

某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存(Redis)的混合架构实现。

经过规范化设计之后,该系统的部分数据库表结构如下所示。

供应商(供应商ID,供应商名称,联系方式,供应商地址);

药品(药品ID,药品名称,药品型号,药品价格,供应商ID);

药品库存(药品ID,当前库存数量);

订单(订单号码,药品ID,供应商ID,药品数量,订单金额)。

【问题1】 (9分)

在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。例如当用户查询商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。

为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查询性能。修改后的药品关系结构为:

药品(药品ID,药品名称,药品型号,药品价格,供应商ID,供应商名称,当前库存数量) ;

请用200字以内的文字说明常见的反规范化设计方法,并说明用户查询商品信息应该采用哪种反规范化设计方法

【问题2】 (9分)

王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。

【问题3】 (7分)

该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。

(1) Redis的数据类型包括String、 Hash、 List、 Set和ZSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。

(2)请用200字以内的文字解释说明解决Redis和MySQL数据实时同步问题的常见方案

查看答案
问答题

某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程,采用自助方式进行智能应用设计、实现与部署,并可以开发新算法组件加入平台中。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:

(a)平台用户分为算法工程师、软件工程师和管理员等三种角色,不同角色的功能界面有所不同;

(b)平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问;

(c)平台支持分布式部署,当主站点断电后,应在20秒内将请求重定向到备用站点;

(d)平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式;

(e)平台主站点宕机后,需要在15秒内发现错误并启用备用系统;

(f)在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒;

(g)平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作;

(h)平台需要对用户的所有操作过程进行详细记录,便于审计工作;

(i)平台部署后,针对界面风格的修改需要在3人天内完成;

(j)在正常负载情况下,平台应在0.5秒内对用户的界面操作请求进行响应;

(k)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致;

(l)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。

在对平台需求、质量属性描述和架构特性进行分析的基础上,公司的架构师给出了三种候选的架构设计方案,公司目前正在组织相关专家对平台架构进行评估。

【问题1】 (9分)

在架构评估过程中,,质量属性效用树(utility tree)是对系统质属性进行识别和优先级排序的重要工具。 请将合适的质量属性名称域入图1-1中(1)、(2)空白处,并从题干中的(a)-(i)中选择合适的质量属性描述,填入(3)-(6)空白处,完成该平台的效用树。

高级系统架构设计师,历年真题,《系统架构设计师》案例分析真题

【问题2】 (16分)

针对该系统的功能,赵工建议采用解释器(interpreter)架构风格,李工建议采用管道过滤器(ppe-and-hlter)的架构风格,王工则建议采用隐式调用(implicit invocation)架构风格。请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格

查看答案
问答题

某项目进入详细设计阶段后,项目经理为后续活动制定了如图2所示的网络计划图,图中的“△”标志代表开发过程的一个里程碑,此处需进行阶段评审,模块1和模块2都要通过评审后才能开始修复。

高级信息系统项目管理师,历年真题,《信息系统项目管理师》案例分析真题

项目经理对网络图中的各活动进行了成本估算,估计每人每天耗费的成本为1000元,安排了各活动的人员数量并统计了模块1、模块2的开发和测试活动的工作量(如表2所示),其中阶段评审活动不计入项目组的时间和人力成本预算,如表2所示。

高级信息系统项目管理师,历年真题,《信息系统项目管理师》案例分析真题

[问题1] (3分)

请计算该项目自模块开发起至模块测试全部结束的计划工期。

[问题2] (10分)

详细设计完成后,项目组用了11天才进入阶段评审。在阶段评审中发现:模块1开发已完成,测试尚未开始;模块2的开发和测试均已完成,修复工作尚未开始,模块2的实际工作量比计划多用了3人?天。

(1)请计算自详细设计完成至阶段评审期间模块1的PV、EV、AC,并评价其进度和成本绩效。

(2)请计算自详细设计完成至阶段评审期间模块2的PV、EV、AC,并评价其进度和成本绩效。

[问题3] (8分)

(1)如果阶段评审未作出任何调整措施,项目仍按当前状况进展,请预测从阶段评审结束到软件集成开始这一期间模块l、模块2的ETC(完工尚需成本)(给出公式并计算结果)。

(2)如果阶段评审后采取了有效的措施,项目仍按计划进展,请预测从阶段评审结束到软件集成开始这一期间模块1、模块2的ETC(完工尚需成本)(给出公式并计算结果)。

[问题4] (4分)

请结合软件开发和测试的一般过程,指出项目经理制定的网络计划和人力成本预算中存在的问题。

查看答案

相关题库更多 +