A. 降低计划的粒度 B. 深入地分析需求 C. 所有成员同意该计划 D. 开
始设计
8. 在攻克技术难题时,最佳的开发团队组织模型是( )。(A)
A. 民主式结构 B. 主程序员式结构 C. 技术管理混合式结构 D. 以上所有
选项都不是 9. 在选择开发团队组织结构时应考虑( )因素。(E)
A. 沟通的复杂程度 B. 最终程序的规模大小 C. 发布日期的严格程度 D. 项目预算的多少
E. 选项A,B和C 10. 在软件开发过程中避免受挫的最佳方法之一是( )。(A)
A. 给予团队成员对于过程和技术决策的更多控制权 B. 给予团队成员对于过程和技术决策的更少控制权 C. 向团队成员隐瞒坏消息直到事情有所改善 D. 根据生产效率奖励团队成员 11. 下面的( )软件特性不是引起项目协调困难的一个因素。(B)
A. 互操作性 B. 性能 C. 规模 D. 不确定性
12. 在进行项目范围活动时,问题分解的主要范围是( )。(E)
A. 客户工作流程 B. 需要发布的功能 C. 用于发布功能的过程 D. 软件过程模型 E. 选项B和C
13. ( )随着项目计划的不断形成,产品分解和过程分解经常是同时发生的。(A) 14. 为了将项目失败的风险减少到最小,项目经理需要采取( )。(D)
A. 将项目团队规模增加一倍 B. 要求更大的预算 C. 顺利地开始 D. 跟踪过程
E. 选项B和C 15. ( )估算不可靠的唯一原因是估算人员缺乏经验。(B)
16. ( )由于软件项目估算不完全可靠,所以项目开始后可以忽略这些估算。(B) 17. 软件项目规划的目的是( )。(C)
A. 使客户相信项目是可行的 B. 使用历史项目数据
C. 使项目管理者合理地估算成本和进度 D. 在投标项目之前确定大概的利润
边界 18. 软件项目所需的人数应该( )。(D)
A. 在估计开发需要的努力之后决定 B. 由项目预算数量决定 C. 从评价系统复杂性来决定 D. 以上所有选项 19. ( )估计待开发软件产品的规模必须基于像代码行等直接度量单位。(B) 20. 代码行估算技术需要以( )为基础进行问题分解。(C)
A. 信息域值 B. 项目进度 C. 软件功能 D. 软件过程活动 21. 功能点估算技术需要以( )为基础进行问题分解。(A)
A. 信息域值 B. 项目进度 C. 软件功能 D. 软件过程活动
22. 经验估算模型是基于( )。(C)
A. 专家基于过去项目经验的判断 B. 期望值估计的细化
C. 来自历史项目数据的回归模型 D. 反复试验决定参数和系数
23. COCOMO II 是现代经验估算模型的一个实例,它需要以( )为单位的程序规模信息。
(B)
A. 功能点 B. 代码行 C. 工作量 D. 以上任何选项 24. ( )功能点不能用于估算面向对象的软件。(B)
25. ( )软件项目延迟是不可避免的,而且无法解释其原因。(B) 26. ( )将开发团队人数增加一倍可以保证项目完成时间减少一半。(B) 27. 任务集是( )的集合。(A)
A. 工作任务、里程碑、工作产品 B. 任务分配、成本估算、度量单位 C. 里程碑、可交付物、度量单位 D. 责任、里程碑、文档 28. ( )主动的风险管理有时被描述为救火。(B) 29. 软件风险总是包括( )两个特性。(C)
A. 救火和危机管理 B. 已知的和未知的风险 C. 不确定和损失 D. 安置人员和预算 30. 风险的三种主要类型是( )。(B)
A. 商业风险、人员风险、预算风险 B. 项目风险、技术风险、商业风险 C. 计划风险、技术风险、人员风险 D. 管理风险、技术风险、设计风险
31. 下面的( )是有效的软件配置项。(E)
A. 软件工具 B. 文档 C. 可执行程序 D. 测试数据 E. 以上所有选
项 32. 下面的( )配置对象通常不包括在项目数据库中。(C)
A. 设计规格说明书 B. 可执行程序 C. 组织结构描述 D. 测试计划 33. 基线(Baseline)是指在项目生命周期的不同时间点上,一个或一组配置项通过( )
而进入正式受控的一种状态。(C)
A. 存取控制 B. 质量控制 C. 正式评审 D. 变更管理 34. ( )软件工作产品一旦成为基线就不能再更改了。(B)
35. ( )如果开发小组使用自动化的项目数据库工具,那么就不需要变更控制。(B) 36. 下面的( )不是软件配置管理的任务。(C)
A. 变更控制 B. 配置状态报告 C. 统计质量控制 D. 版本控制 37. 配置状态报告的主要目的是( )。(C)
A. 允许项目经理修改项目进度和成本估算 B. 评估软件开发人员和组织的绩
效
C. 确保变更信息传达到受影响的团体 D. 选项A和C
E. 选项A、B和C
1. 简要说明软件项目管理的过程。
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
软件项目管理的主要过程如下:
(1) 项目启动与建议:在项目启动阶段,定义项目的商业需求,确定项目的目标和实
现方法,大致估算项目的成本和进度。
(2) 项目规划与进度:在项目规划阶段,明确项目的各种活动、里程碑和可交付的成
果,制定软件开发计划。
(3) 项目组织与执行:根据项目任务的要求选择合适的开发人员,组建项目团队和协
调项目资源,按照计划执行和推进整个项目。
(4) 项目监督与评价:在项目执行过程中,密切关注项目的进展情况,综合评价整个
项目的实际进展,及时发现和报告实际情况与计划的偏差,在必要的情况下采取纠正行动,同时控制和管理项目的变更。 (5) 项目交付与总结:完成正式的项目交付工作,客户对所交付的软件产品进行验收,
项目团队培训用户并移交文档,最后分析和总结项目的经验教训。 2. 某个软件项目需要30名开发人员,现有两种人员组织方案:
(1) 将30人划为一个开发组统一管理;
(2) 按每个小组6人的方式,将30人分为5个小组。 请分析比较上述两种方案的优缺点。 由于软件规模的增大,需要多人组成开发小组共同参与一个项目的开发。但是当多个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,这就产生了所谓沟通复杂性的问题。沟通需要花费时间和代价,也会引起软件错误的增加,降低开发效率。
(1) 优点:30人集中在同一个开发小组,人员任务的分配和调度相对容易;
缺点:沟通复杂性高,从而导致人员之间配合混乱,开发效率低。 (2) 优点:30人划分成5个小组,降低了沟通复杂性,提高开发效率;
缺点:小组之间的协调配合难度大。 3. 在选择人员进行软件项目开发时,应该考虑哪些因素? 参考答案: 参考因素 说明 应用领域的经验 为了成功地开发系统,开发人员必须了解相关的应用领域。 平台的经验 在编写底层程序时该因素很重要。 编程语言的经验 该因素对于短周期的项目是很重要的。 教育背景 该因素可以显示候选人应该掌握的基础知识和学习能力,由于开发人员的经验可以在项目实践中获得,该因素并非是关键的。 沟通能力 由于项目成员需要与其他人员、管理者和客户进行口头和书面交流,该因素是十分重要的。 适应性 适应性可以通过候选人的各种经历进行判断,该因素反映出一个的学习能工作态度 个性 力。 项目成员应该有积极的工作态度,乐于学习新技术,该因素很重要但是难以评估。 候选人必须与团队成员关系融洽,尚没有软件工程方面的特定个性类型,该因素很重要但是难以评估。 第4章 需求工程
1. ( )在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(A) 2. ( )软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。
(B) 3. 在项目初始阶段,开发任务的目标是( )。(A)
A. 理解基本问题 B. 确定所需的解决方案 C. 确定需要解决方案的人员 D. 以上选项都不是 E. 选项A、B和C 4. 下面的( )将造成需求获取困难的问题。(E)
A. 预算(budgeting) B. 范围(scope) C. 理解(understanding) D. 挥发性(volatility) E. 选项B、C和D
5. 需求分析的结果是产生定义下面( )问题域的分析模型。(D)
A. 信息 B. 功能 C. 性能 D. 以上所有选项
6. ( )目前存在一个很普遍的现象,即不同的客户提出的需求是相互矛盾的,但每个人
都争辩自己是正确的。(A) 7. ( )利益相关者(stakeholders)是将来购买所开发软件系统的人。(B) 8. 需求规格说明描述了( )。(A)
A. 计算机系统的功能、性能及其约束 B. 每个指定系统的实现 C. 软件体系结构的元素 D. 系统仿真所需要的时间
9. 组织需求评审的最好方法是( )。(D)
A. 检查系统模型的错误 B. 让客户检查需求
C. 将需求发放给设计团队去征求意见 D. 使用问题列表检查每一个需求 10. 使用跟踪表有助于( )。(C)
A. 在后续的检查运行错误时调试程序 B. 确定算法执行的性能 C. 识别、控制和跟踪需求的变化 D. 以上选项都不是
11. ( )需求工程师的任务是将所有利益相关者的信息进行分类以便允许决策者选择一个
相互一致的需求集。(B) 12. 下面的( )不是在项目启动阶段被提出的“与环境无关”的问题。(B)
A. 成功的解决方案将带来什么样的经济收益? B. 谁反对该项目?
C. 谁将为该项目付款? D. 谁将使用该解决方案?
13. ( )开发人员与客户创建用例以帮助软件团队理解有多少类型的最终用户将使用这些
功能。(B) 14. 在各种不同的软件需求中,( )描述了用户使用产品必须要完成的任务,可以在用例
模型或方案脚本中予以说明,( )是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。(B,C)
A. 业务需求 B. 功能需求 C. 非功能需求 D. 用户需求 15. 需求导出后产生的工作制品将依赖于( )而不同。(B)
A. 预算多少 B. 将要构建的产品规模 C. 正在使用的软件过程 D. 利益相关者的需要
16. ( )用例参与者总是人员而不是系统设备。(B)
17. ( )在需求确认过程中需求模型被评审以保证其技术可行性。(B)
18. 在需求开发过程中,软件工程师应与客户合作共同定义( )。(E)
A. 客户可见的使用场景 B. 重要的软件特性 C. 系统的输入与输出 D. 选项A和B E. 选项A、B和C
1. 请举例说明使用自然语言描述用户需求和系统需求的问题。
用自然语言描述比较详细的需求时经常暴露以下问题,从而容易引起误解。
??由于自然语言存在二义性,因此人们对同一个术语经常存在语义理解上的偏差。 ??用自然语言描述需求存在比较大的随意性,人们对同一个事物有完全不同的方式
进行描述。 ??自然语言描述需求缺乏模块化,因此很难发现所描述需求之间的相关性。
2. 请指出下面需求描述存在的问题,并进行适当的修改。
(1) 系统用户界面友好。 (2) 系统运行时应该占用尽量少的内
存空间。
(3) 即使在系统崩溃的情况下,用户数据也不能受到破坏。 (4) ATM系统允许用户查询自己银行帐户的现存余额。
(5) ATM系统应该快速响应用户的请求。 (6) ATM系统需要检验用户存取的合
法性。
(7) 所有命令的响应时间小于1秒;BUILD命令的响应时间小于5秒。 (8) 软件应该用JAVA语言实现。 答案要点:
(1) 问题:“友好”是不可验证的。
改正:具有一年计算机使用经验的用户经过3小时的培训就可以学会使用该系统。 (2) 问题:“尽量少”存在歧义。
改正:系统运行时所占用的最大内存空间是256MB。 (3) 问题:“不能受到破坏”是不可验证的。
改正:如果系统发生崩溃,那么该系统重新正常启动后,可以将用户数据恢复到最后未完成操作执行前的状态。 (4) 该描述是正确的。
(5) 问题:“快速”是不可验证的。 改正:ATM系统将在1秒钟之内响应用户的请