在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定该阶段的目标,完成这些目标的选择方案及其约束条件;其次从风险角度分析方案的开发策略,努力排除各种潜在的风险,在需求不适当的情况下可能需要建造原型系统;如果某些风险不能排除,该方案可能立即终止,否则继续启动下一步的软件开发和验证工作,并再次通过风险分析规定过程遵循的策略;最后,评价该阶段的结果,并规划下一个迭代。 从上述过程中可以看出,风险分析的作用是通过识别项目中的高风险问题,使开发人员制定适当的开发策略消除这些风险。
5. 某大学准备开发一个新的学生注册选课系统,以替换一个现有的系统。请设计一个适用于该系统开发的过程模型,并进一步描述该模型。 答案要点:
假设原有的学生注册课程系统是由学生手工提交书面选课单,理人员在客户端录入学生选课结果和课程成绩;算机上通过Internet充一些新功能和提高系统性能。从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但是原有的遗留系统中有些部分是可以重用的,因此我们可以采用组件模型实施软件开发:? 系统需求分析:由于该系统是现有系统的扩展,段,从而确定新系统的需求。? 遗留系统分析:在需求确定的基础上,开发人员分析遗留系统并研究新系统的总体结构,选择重用原有的课程信息管理部分,定系统需求和总体结构。? 设计开发阶段:开发人员进一步设计相关子系统,统,重新开发学生选课子系统,并实现与外部付费系统的接口。? 系统测试阶段:开发人员将所有子系统集成在一起,性能测试。根据所报告的测试问题,开发人员调试和修改程序。? 系统交付阶段:测试通过后,开发人员将系统及其相关文档交付用户验收。6. 请举例说明不同的过程模型组合使用的情况。答案要点:
在前面提到的企业管理组合在一起使用,即在需求分析阶段采用原型方法确定需求,统,并采用增量方式逐步交付整个系统。
第4章 需求工程(习题与参考答案)[选择题]
1. ( )在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。(A) A. 真 B. 假
2. ( )软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。(B) A. 真 B. 假
教师手工提交成绩单,教务管而在新的选课系统中,所有用户在自己的计
因此首先可以经过一个简单的需求分析阶
重新开发选课部分,必要时适当修改系统需求,最终确
将原有的课程信息管理部分封装为子系 交给测试人员开始全面的功能测试和
ERP系统项目中,可以将快速原型方法、组件开发模型和增量模型采用组件化的结构设计整个系 访问和操作该系统,该软件系统需要更新服务器和数据库等系统,并扩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. 需求分析的结果是产生定义下面(A. 信息 B. 功能 C. 性能
D. 以上所有选项
6. ( )目前存在一个很普遍的现象,即不同的客户提出的需求是相互矛盾的,但每个人都争辩自己是正确的。(A) A. 真 B. 假
7. ( )利益相关者(stakeholdersA. 真 B. 假
8. 需求规格说明描述了( )。(A)A. 计算机系统的功能、性能及其约束B. 每个指定系统的实现 C. 软件体系结构的元素 D. 系统仿真所需要的时间
9. 组织需求评审的最好方法是( A. 检查系统模型的错误 B. 让客户检查需求
C. 将需求发放给设计团队去征求意见D. 使用问题列表检查每一个需求 10. 使用跟踪表有助于( )。(C)A. 在后续的检查运行错误时调试程序B. 确定算法执行的性能
C. 识别、控制和跟踪需求的变化 D. 以上选项都不是
11. ( )需求工程师的任务是将所有利益相关者的信息进行分类以便允许决策者选择一个相互一致的需求集。(B) A. 真 B. 假
12. 下面的( )不是在项目启动阶段被提出的“与环境无关”的问题。)问题域的分析模型。D) D) (B)(B ()是将来购买所开发软件系统的人。 )。( )
A. 成功的解决方案将带来什么样的经济收益? B. 谁反对该项目? C. 谁将为该项目付款? D. 谁将使用该解决方案?
13. ( )开发人员与客户创建用例以帮助软件团队理解有多少类型的最终用户将使用这些功能。(B) A. 真 B. 假
14. 在各种不同的软件需求中,( )描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,( )是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。A. 业务需求 B. 功能需求 C. 非功能需求 D. 用户需求
15. 需求导出后产生的工作制品将依赖于(A. 预算多少
B. 将要构建的产品规模 C. 正在使用的软件过程 D. 利益相关者的需要
16. ( )用例参与者总是人员而不是系统设备。A. 真 B. 假
17. ( )在需求确认过程中需求模型被评审以保证其技术可行性。A. 真 B. 假
18. 在需求开发过程中,软件工程师应与客户合作共同定义(A. 客户可见的使用场景 B. 重要的软件特性 C. 系统的输入与输出 D. 选项A和B E. 选项A、B和C [练习题]
1. 请举例说明使用自然语言描述用户需求和系统需求的问题。答案要点:
用自然语言描述比较详细的需求时经常暴露以下问题,从而容易引起误解。? 由于自然语言存在二义性,因此人们对同一个术语经常存在语义理解上的偏差。? 用自然语言描述需求存在比较大的随意性,人们对同一个事物有完全不同的方式进行描述。
? 自然语言描述需求缺乏模块化,因此很难发现所描述需求之间的相关性。2. 请指出下面需求描述存在的问题,并进行适当的修改。(1) 系统用户界面友好。
(2) 系统运行时应该占用尽量少的内存空间。(3) 即使在系统崩溃的情况下,用户数据也不能受到破坏。B,C) )而不同。(B
B) (B) )。(E)
(() (4) ATM系统允许用户查询自己银行帐户的现存余额。 (5) ATM系统应该快速响应用户的请求。 (6) ATM系统需要检验用户存取的合法性。
(7) 所有命令的响应时间小于1秒;BUILD命令的响应时间小于5秒。 (8) 软件应该用JAVA语言实现。 答案要点: (1) 问题:“友好”是不可验证的。
改正:具有一年计算机使用经验的用户经过3小时的培训就可以学会使用该系统。 (2) 问题:“尽量少”存在歧义。
改正:系统运行时所占用的最大内存空间是(3) 问题:“不能受到破坏”是不可验证的。改正:如果系统发生崩溃,操作执行前的状态。(4) 该描述是正确的。(5) 问题:“快速”是不可验证的。改正:ATM系统将在(6) 问题:“如何验证合法性”是存在歧义的。改正:ATM系统将通过用户名和口令验证其存取的合法性。(7) 问题:所有命令中必然会包括改正:去掉关于(8) 问题:该描述不是功能需求或非功能需求,应该是对设计实现的一个约束条件。3. 需求工程包括哪些基本活动?每一项活动的主要任务是什么?答案要点:
需求工程分为需求开发和需求管理两个部分,析、规格说明和需求验证四个阶段。这些基本活动的主要任务包括:(1) 需求获取:采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。(2) 需求分析:分析和综合所采集的信息,建立系统的详细逻辑模型。(3) 需求规格说明:编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。(4) 需求验证:评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。
(5) 需求管理:定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。4. 请比较本章介绍的几种主要需求获取技术,说明每一种技术的优缺点和适用场合。答案要点: (1) 用户面谈优点:
? 可以与项目相关人员一对一地进行交谈和讨论;? 具有私密性,使被访者可以直率地和无隐瞒地回答问题;? 便于探查一些附加信息或反馈信息;? 有利于与客户建立良好的关系。缺点:
? 面谈是一种非常费时和高成本的方式;? 难以解决不同的项目干系人之间的冲突和矛盾;? 在地理位置相距较远的情况下很难实施。256MB。
那么该系统重新正常启动后,可以将用户数据恢复到最后未完成
1秒钟之内响应用户的请求。
BUILD命令,因此这两个需求描述是矛盾的。BUILD命令的需求描述。
而需求开发又可进一步分为需求获取、
需求分 适用场合:
? 适用于在初步理解整体概念的情况下讨论和交流一些细节问题。 (2) 需求专题讨论会 优点:
? 有助于了解系统需求;
? 有利于共享系统开发的成果; ? 给用户一种主人的感觉;
? 可以与足够多的项目干系人进行讨论和交流,且节省时间; ? 支持头脑风暴式的讨论。 缺点:
? 需要占用参与人员比较长的整块时间;
? 主持人的能力和会议的准备工作必须是非常好的,否则结果很糟。 适用场合:
? 适用于讨论和审查软件系统方案和模型,解决不同项目干系人之间的冲突和矛盾。 (3) 观察用户工作流程 优点:
? 通过直接观察的方式提取用户或系统的特性; ? 有助于理解难以用语言描述清楚的复杂业务。 缺点:
? 观察可能使用户紧张,从而表现得与往常不同。 适用场合:
? 适用于理解难以用语言描述清楚复杂业务过程。 (4) 原型化方法 优点:
? 通过一个可以运行的软件原型直观地理解和澄清问题,便于使开发人员与用户达成共识。 缺点:
? 用户容易产生误解,认为软件系统可以在原型的基础上很容易地构建,但实际上该原型的内部结构和程序质量比较差。 适用场合:
? 适用于用户需求不明确或描述不清楚的情况。
5. 哪些人应该参与需求评审?请画出一个需求评审的组织过程模型。 答案要点:
通常情况下,参与需求评审的人员应该包括需求分析员、项目经理、体系架构设计师、软件设计工程师、系统测试工程师、质量保证员、用户或市场代表、文档编写人员、领域专家和技术支持代表。
制定评审计划初始 需求文档 准备工作需求跟踪修改跟踪基线需求文档
6. 在某些紧急情况下,软件可能在需求变更请求被批准之前就进行修改。请给出一个修改过程模型,确保需求文档和系统实现不会产生不一致。 答案要点: 一般来说,应该尽量避免在需求变更请求被批准之前就直接修改程序的情况,这很容易导致变更失控而且需求描述与系统实现不一致。一旦出现这种情况,必须在系统变更完成后重新执行需求跟踪控制。
回溯检查跟踪链评估变更影响实施统一变更验证变更结果结束 开始 成功 失败 生成临时版本程序变更