辽工大邱云飞老师需求工程复习资料 - 图文 下载本文

目录

第一部分 绪论 .................................................................................... 2 第2章 需求工程过程 .................................................................. 2 第3章 需求工程过程 .................................................................. 4 第4章 需求获取概述 .................................................................. 5 第二部分 需求获取 ............................................................................ 5 第5章 确定项目的前景和范围 .................................................. 5 第6章 涉众分析与硬数据采样 .................................................. 9 第7章 需求获取方法之面谈 .................................................... 12 第8章 需求获取方法之原型 .................................................... 16 第9章 需求获取方法之观察与文档审查 ................................ 19 第10章 需求组织 ...................................................................... 21 第三部分 需求分析 .......................................................................... 21 第11章 需求分析概述............................................................... 21 第12章 过程建模 ...................................................................... 25 第13章 数据建模 ...................................................................... 28 第14章 面向对象建模 .............................................................. 31 第四部分 需求的文档化和验证 ...................................................... 36 第15章 需求规格说明 .............................................................. 36 第16章 需求验证 ...................................................................... 38

~ 1 ~

第一部分 绪论 第2章 需求工程过程

案例题

1. 从下面的事件当中,你可以替Jeannine总结出哪些教训? 投资经理Jeannine对一个新的投资跟踪系统具有强烈的需求。她需要做出快速决策来考虑可能进行的投资和撤销投资,耽误一个小时就可能给公司造成几千美元的损失。

最后她放弃了使用公司的信息系统,因为公司的信息系统没有给予她的请求足够高的服务优先级。她找到软件开发商,购买了一套看似可以满足她要求的软件。但高层管理人员不同意使用,而且还遇到了其他一些问题。

首先,财务审计员重新评估了公司的投资策略和投资政策。Jeannine并不知道这一点,于是新的系统没有计入正在被考虑的新政策。

她自己的职员抵制这个系统产生的有关投资和撤销投资的建议。新系统使用了公司信息系统现有的文件结构,却发现她的职员两年前就放弃使用那些文件了,因为那些文件没有包括全面分析可选替代投资方案所需的数据。她的职员也批评新系统的设计,说很小的操作错误就会把系统带入“混乱”状态,而且很难恢复过来。

她的一些下级经理坚持要有图形形式的报告,而新系统无法产生这些报告。 最后的问题是,Jeannine不能确定新的系统是否可以进行适当的修改(数据库结构修改和程序修改)以满足新的需求而不用重写所有的程序。而且她的老板也不能肯定是否会出资请一位顾问来解决这些问题。 解答:

解答一:(1)她没有仔细认真地分析问题;

(2)她没有及时跟相关人员交流信息,没能把握住有价值信息; (3)她没能及时跟公司员工交流,引用过时的文件结构; (4)她没有仔细研究分析新引进的系统的性能需求是否满足; (5)她没有仔细研究新引进的系统的功能需求是否满足;

(6)她没有仔细研究引进的系统的质量属性,对外接口是否满足。 解答二:业务需求中没有和高层管理人员沟通好;她提出的用户需求没有和用户(自己的职员)沟通好,也没有向开发人员提出可行性、质量属性(可扩展性)等。

解答三:没有获得高层支持;财政部支持;下属抵制使用;信息不流通,文件使用不一致;要求的图形报告没有;不知道是否能修改

2. 根据下列描述,说明新的直接销售和财务处理系统的业务需求有哪些? Especially for You Jewelers是大学城的一个小珠宝零售商。在过去的两年里,Especially for You在它的商业方面经历了极大的发展,可是,它的财务业绩却与它的发展不同步。现在的事务处理系统部分手动、部分自动,不能有效的追踪客户账单和收据,Especially for You难以确定为什么它的成本这么高。此外,Especially for You频繁地实行特价以吸引顾客。它不知道这些特价是否有利可图,~ 2 ~

是否带来其他的销售。Especially for You也想增加回头客,所以它需要一个客户数据库。Especially for You想按照一个新的直接销售和财务处理系统以帮助解决这些问题。

解答:业务需求:保持财务业绩与它的发展同步;有效地追踪客户账单和收据;降低成本;实行特价时能够知道是否有利可图,是否带动去他的销售;增加回头客。

解答:业务需求如BR。

BR1:实现客户账单和收据的有效追踪;

BR2:实现产品特价时的利润和相关销售情况检查; BR3:实现一个客户数据库。 3.

解答:

先定义明确的业务需求,获得开发系统的必要性,根据业务需求,协调涉众的立场,限定问题的范围,指导用户需求的获取过程:和涉众沟通(即向业务人员了解相关的业务知识,业务流程;再和销售人员沟通,由于他们的顾客是流动的,不确定的,只能通过销售人员间接获取来自于顾客的用户需求,了解他们的背景和习惯),最后根据业务需求对用户需求进行过滤和选择,得到充分必要用户需求。 4.

解答:

UR1:使用户可以根据系统的明确操作提示做出正确的反应; UR2:用户插入银行卡后需要输入密码,得到验证后才可进行有效的具体操作; UR3:在用户进入系统后,可以选择使用查询金额、存取现金、转账的功能; UR4:用户能够正确、安全地退出系统。 5. 解答:

SR1:(1) 系统显示用户插入磁卡的动态图像,正确标明插卡位置; (2)用户根据提示,正确插入磁卡;

(3)系统读取磁卡卡号,界面显示输入密码的提示;

SR2:(1)对用户输入的密码,系统自动进行字符匹配; (2)匹配正确的话,进入具体操作界面;

(3)匹配不正确的话,警告密码不正确,并提示再次输入; SR3:(1)若用户选择查询金额图标和查询金额币种,系统读取银行数据库中

用户对应的信息,反馈在用户界面上;

(2)若用户选择取款图标和金额币种及输入金额数目,系统读取用户请

求,接受金额,修改数据库中该用户对应的信息,并提示成功与否;

(3)若用户选择存款图标和金额币种,系统弹出存款框,用户放入现金,

系统接收现金并辨认真伪,并反馈存入金额数目,得到用户确认后,修改数据库中该用户对应的信息,并提示成功与否;

(4)若用户选择转账图标和金额币种并输入对方账号和转账金额数目,

系统读取用户请求,修改数据库中所涉及到的用户的信息,并提示成功与否;

SR4:(1)用户选择退出图标; (2)系统提示拔卡信息。 6. 解答:

~ 3 ~

性能需求:在用户点击图标后,系统在3s内作出反应。 质量属性:易用、可靠、安全、容错、可恢复、可维护。

约束:当用户输入密码次数等于3次后就不再提示输入密码,并自动锁定银行卡。

第3章 需求工程过程

思考题

1. 除了需求开发的四个活动和需求管理活动之外,需求工程当中还有没有需要

执行的活动?如果有的话,它们是哪些活动?给出你的理由。

解答: 还有其他一些活动,例如:过程管理活动和项目管理活动。过程管理活动是跟踪项目开发过程,记录项目开发过程当中所遇到的问题或者教训等等。项目管理活动是管理项目开发的一系列问题与进度,管理人员配置,以求达到最大效益。

2. 需求开发过程具有迭代特性,但是不是所有项目的需求开发过程都必须是迭代完成的?如果不是,请给出举例和理由。 解答:

不是,在问题域很简单或者非常成熟的情况下不需要迭代完成。

(不是,一般对于业务领域不熟悉的项目,需求是具有迭代性的,需要对业务领域的认知,有一个从认识到知识重构的过程。对于某些固定需求且熟悉的项目,比如学校课程的作业软件工程实践电梯系统,就不需要迭代开发)

(需求获取——>需求分析——>需求规格说明——>需求验证。当然并不是所有项目的需求开发过程是迭代完成的,比如:当某一项目开发过程中,用户需求非常简单,开发人员已经相当明确用户需求,这时,就不需要返回到需求获取阶段以继续用户需求的获取,这样,也就不需要迭代完成。当然,这种情况非常少见。)

3. 需求开发的迭代特性与软件开发过程的迭代式开发有什么关系?它们之间会互相影响吗?如果会,那么有哪些影响? 解答:需求开发的迭代特性只是软件开发过程的迭代式开发的一个子过程,软件开发过程是一个相当庞大的工程,需要在软件开发过程的各个阶段都需要进行开发工作的迭代,当然也包括需求开发中的迭代。它们之间互相影响。如果需求开发中的迭代不能很好地完成需求分析任务,就必将影响到软件开发过程的其他迭代阶段的进行。

需求开发的迭代性指的是对于开发者对知识的认知水平在某一点上,发生重构,使得知识体系复杂性下降,而继续积累知识的过程

软件开发的迭代性指的是在软件生命周期整体开发迭代,针对变更的需求或

~ 4 ~

者新增的需求一种减少风险的开发模式

4. 需求工程细节知识的实践性对不同项目的需求开发过程的差异性有没有影响?如果有,请说明影响是什么。如果没有,请说明是哪些因素产生了不同项目的需求开发过程的差异性。

解答:没有。问题域的特性导致了不同项目的需求开发过程的差异。

丁老师解答:没有影响。其实是需求开发过程的差异性一定程度上导致了细节知识的实践性。现实世界问题的复杂性和差异性主要导致了需求开发过程的差异性

第4章 需求获取概述

复习题:

缺少用户参与的原因。和解决方法。

1. 用户数量太多,选择困难——涉众分析,完整性,代表性 2. 用户认知不足,不愿意参与——积极交流,加强理解 3. 用户情绪抵制,消极参与——平衡、共赢分析 4. 没有明确的用户——用户替代源 5. 管理上的障碍——求得高层支持。

第二部分 需求获取

第5章 确定项目的前景和范围

复习题:

高层解决方案描述方法。 1. 方案问题标识 2. 方案描述 3. 方案优势 4. 方案代价 5. 方案边界 6. 方案约束

案例题

1. 你被任命为替换学生财务资助项目的项目经理。你想开发一个工作陈述来定义范围并降低范围蔓延的风险。财务资助部门的主管坚持要你15个月、600

~ 5 ~

000美元的预算内替换他现有的系统就可以了。他说这就是你需要知道的全部,不需要浪费时间开发一个工作陈述了。省略工作陈述的风险是什么?你将如何说服主管?

解答一:不做工作陈述的风险: 1. 在获取需求时,用户往往从各自的立场出发考虑问题,提出相应的功能需求。如果没有工作陈述,用户就不会从共同的方向上考虑和理解问题,对系统的期望也就产生了较大的差距。 2. 没有工作陈述,就等于在用户之间发生需求冲突时,就没有可以用来指导并且调节协商的项目前景,冲突问题也就很难解决。

风险:1需求理解错误2不能按时完成(超期超资)3做出来的不是想要的 定义范围的必要性:1.加强用户和开发人员的理解,定义一致的理解2.降低风险

解答二:省略工作陈述的风险是不能明确项目的前景和范围。如果省略了工作陈述的话,你就不能和用户进行很好的沟通与交流,这样,项目的问题也就不能明确,即,开发人员无法与涉众对问题达成共识;无法明确问题,也就无法发现正确的业务需求,无法定义良好的解决方案及系统特性,继而无法明确项目的前景和范围,这样就会造成项目的不稳定甚至失败!

解答三:通过准确的工作陈述来定义项目范围,可以帮助涉众建立现实的期望,包括第一版范围,后续版本范围、限制与排除。第一版范围概述产品的第一个版本中实现的主要特性,描述产品的质量特性,可以为不同类别的用户提供预期利益。后续版本能够实现更多的需求和特性,并完善最初的功能。尤其要说明的是,管理范围蔓延的方法之一,是定义项目包含的需求与不包含的需求之间的界限,应该列出涉众可能希望得到,但不在产品或其某个特定版本计划之内的功能和特性。

2. 某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查客户的一项或几项数据。过去半天的工作量现在增加到了每周三天。即使在确定了严重拖欠债务的账户后,如果没有查阅该账户三年内的历史资料,Liz也不能做出最后的信用决定(例如严厉的催款电话、断绝信用或将这个账户转给一个收账代理)。另外,Liz需要报告所有账户中过期未付款的、拖欠债务的、严重拖欠债务的和呆死账的比例。目前的报告中并没有给她提供这个信息。

假设现在需要你来开发一个软件,解决Liz面对的难题。那么你认为Liz现在遇到的问题有哪些?你希望新的软件应该达成哪些业务目标?你怎样设计软件的高层解决方案和系统特性? 解答:

~ 6 ~

问题 业务目标 高层解决方案 系统特性 帐户太多,工作减少检查人员的能够快速、自动查询建立一个数据库量太大 工作量 客户账户 系统用来存放客户账户信息 降低工作复杂度 能够分析一个客户是根据特定的判定否为问题账户 问题账户的算法检索辨别出问题账户 需查阅账户的大能够给出一个问工作人员能够检查该能够按账户号查量历史数据 题账户的三年内账户的三年内的历史询该账户三年历的历史数据 数据 史数据 问题账户所占比能够计算问题账即时显示问题账户所根据查询结果,自例没有显示 户所占比例 占比例 动计算并显示问题账户所占比例

3. 职工福利和工资顾问遇到了一些问题。她的工作是为雇员提供他们的福利建议。公司刚刚磋商了一个新的医疗保险方案,这个方案要求雇员从7个保健组织和首选的供应商方案中进行选择。保健组织和供应商按照雇员的分类、贡献、免赔额、受益人、服务内容和允许的服务提供商而各不相同,目的是尽可能为雇员提供最灵活的福利,用以使公司的花费极小化并控制付给保险商的费用(这将对公司被收取的后续保险费产生一定的影响)。

这个顾问被请来为雇员选择最合适的保险方案。她目前以手工方式答复这些请求。但目前的选择比新计划中的选择要直接得多。她需要解释新的选择:它们包括什么,不包括什么,它们的费用和可能费用是多少,具有什么优缺点。但是,雇员对新计划不信任,这种情况迫使她需要向雇员提供更多具体的建议和答复。

她可能不得不为许多雇员逐步建立假定情境——可能的最坏假定情境。这种假定将要根据每个雇员的收入、婚姻和家庭状况、目前的健康风险等进行个人定制。在逐步建立一些样本假定时,她发现:(1)从信息系统部门获得工资和个人数据需要一天时间。(2)雇员数据存储在许多文件夹中,而且并不总是被正确地更新。当冲突数据变得很明显时,除非解决了矛盾,否则就不可能继续她的工作。(3)计算复杂。为一个雇员创建投资和退休假定常常需要花费一整天或更长时间。(4)有些人担心保险计划会被提供给未授权的个人,例如以前的配偶或者非直系亲属。(5)计算中可变条件的复杂性导致经常出错,很多错误可能一直未被发现。

假设现在需要你来开发一个软件,解决职工福利和工资顾问的问题。那么你认为她现在遇到的问题有哪些?你希望新的软件应该达成哪些业务目标?你怎样设计软件的高层解决方案和系统特性?解决方案有哪些重要的约束? 解答: 问题 业务目标 高层解决方案 ~ 7 ~

不能有效地从信息部门获得工资和个人数据 减少从信息部门获得工资和个人数据的时间; 度量标准(Scale):一次从信息部门获得工资和个人数据的时间; 计量方法(Meter):检查信息部门数据库日志; 理想标准:减少50%;一般标准:减少30%;最低标准:减少20%; 雇员数据太过集中雇员数据,并且正确更新 分散,而且不能及时正确地更新 由软件从信息部门的数据库中检索出工资和个人数据,减少所需信息获取的时间 由软件来分析雇员数据的各种特征,及早识别出数据所在位置;或由软件集中处理雇员数据,及早识别出不准确的或没有及时更新的数据,提交人工处理或自行更新 计算复杂 降低计算的复杂性 由软件来处理投资和退休假定的计算的复杂过程 雇员信息不能及时有效正确地更新雇员信由软件来分析个人数据的准得到及时有效息 确性,及早识别出不准确的个正确的更新 人信息,提交人工处理; 或定时更新数,提高数据的准确性; 计算中可变条降低计算中可变条件的复杂由软件来处理计算中可变条件的复杂性 性 件的复杂性,降低出错率 (1) 系统特性: ? 根据信息部门提供的数据库查询工资和个人数据; ? 根据原始数据重新整理数据并更新; ? 提交查询信息;

? 创建投资和退休假定的计算过程;

? 通过公司的内联网访问系统,根据个人情况更新信息; ? 模拟计算中可变条件的变化; ? 提供最灵活的福利方案。

重要的约束有: 约束源 约束 操作性 雇员信息必须有备份 设备预算 有自己已有的系统上开发 技术要求 应用面向对象的方法 行政要求 需要信息部门的信息 系统 空间不应该超过20M字节 环境 安全性

~ 8 ~

第6章 涉众分析与硬数据采样

1、涉众分析中的以用户为中心的体现。

用户是最终使用和操作产品的人,他们是使用软件的目的是为了更好的完成自己的任务,满足组织的目标要求。因此,一个成功的软件要能够协助用户有效的完成实际工作,用户也就自然应该是需求获取的主要信息来源。需求工程师需要了解用户实际工作的开展状况和用户希望软件系统能够给予他们的帮助。 用户参与是以用户为中心的设计方法的核心思想,它要求开发者建立和用户的直接联系,尽早地关注与用户和用户的执行过程,通过及时获得用户的反馈来调整软件设计,以完成高质量的设计。另一方面,用户参与就是反对通过和市场人员、管理者等中间媒介来了解用户。

在以用户为中心的设计方法中,用户需要参与软件开发的全过程,并且对最终软件设计和质量具有非常重要的影响,所以在该方法中参与用户的选择和普通的涉众代表采样有所不同,要吧他们区分开来。

2、相当多的软件工程实践者认为:开发团队和用户建立良好的合作关系对项目的成败具有至关重要的意义。请从需求工程的角度分析这句话,并说明采用哪些手段可能建立和用户的良好合作关系。 第一问:涉众分析——风险评估

第二问:可以参考涉众分析结果的作用 理解用户:对用户的基本特征描述(个人特征、工作特征、少数会涉及地理特征) 评估用户:优先级评估、风险评估、共赢分析 与用户协商,处理用户间对于项目期望冲突

用户的个人特征和工作特征的描述可以帮助更好的确定功能需求。

案例题

3.

? 找出问题产生的根源,分析问题背后的问题 ? 涉众分析,找出冲突所在,找出矛盾的焦点 ? 解决信息系统部门与非信息部门之间的冲突

解答:首先,需要细分涉众类别,这里用户,需求工程师和程序员都属于涉众类别。需要分析他们各自的赢利条件,以在相互妥协中尽力实现一个共赢的结局。分析涉众的关注点和兴趣取向。 了解涉众的个人特征和工作特征,以便对软件系统的功能进行合理的调整。选择合适的代表参与项目的开发。定期举行讨论会,让用户知道项目的进展情况。优先级评估,风险评估,共赢分析?

4、对第2章的案例题1,你认为Jeannine在涉众分析方面有哪些工作欠缺? 解答: 根本没有涉众分析,使用的是组织级的系统,应该分析

~ 9 ~

5、为下面的每一个涉众描述选项试举一例,说明对这些选项进行描述的必要性和忽略这些选项描述可能造成的风险:个人特征、工作特征、地理和社会特征、关注点和兴趣、目标期望、被影响程度、力量程度。 解答:

? 涉众个人特征和工作特征的描述可以帮助更好的确定功能需求; ? 涉众的输赢条件和受影响程度可以帮助解决涉众之间的需求冲突; ? 涉众的重要性、影响力、关注点和兴趣取向可以用来发现项目的潜在风险; 年龄、性别、学历、职业、职务 生活方式、个性、对新技术的态度 个人特征 技能 身体能力及限制,例如色盲 任务 工作特征 使用状况(利用程度、使用频率等) 技能和经验(新手――专家) 地理:区域、国家 地理和社会特征 文化背景 社会关系 例:个人特征:年龄:老年人 字大 工作特征:电脑使用程度

地理和社会特征:文化背景:中国和台湾 关注点和兴趣:反对还是赞同 目标期望:领导的目标 被影响程度:使用频率

力量程度:是否可以影响项目实施,领导

对个人特征和工作特征的描述可以帮助更好地确定功能需求; 也可以帮助形成对涉众类别的理解

6、Phil Ittup是系统分析员团队中的一员,他受委任去与组织成员面谈,为系统研究收集材料。企业称为Fall Back工业,它有5个管理层。此外,生产、会计、营销、系统、物流和高层管理是将受到所建议的系统影响的职能区域。每个阶层大约有40人。生产层共有80人,会计层有35人,营销层有42人,系统层有10人,物流层有28人。高层管理有5人。Phil应该怎样选择面谈对象?为什么?

~ 10 ~

解答:(1)选择面谈对象的时候采用随机抽样,从5个阶层以及生产、会计、营

销、系统、物流各选择2-3名客户参与面谈。高层管理均要参加面谈。因为在选择面谈的时候要力争均衡的收集用户的需求,因此要涉及各方面受系统影响的人。

采样的规则:控制人数(4~8),教材上册,P87

(2)高层管理的人最先面谈。然后是系统层。其余层的面谈对象根据实际情况可以先后安排面谈的时间,不一定要分先后顺序。 跟高层管理人员进行面谈,采用漏斗结构,因为各个高层管理人员对各自管理的层次从大体上有准确的把握,有助于开发人员首先获取对项目的广度方面的认识,也能获取一些较为详细的信息。跟具体部门人员进行面谈,采用菱形(必要时,金字塔)结构,因为这种面谈较为具体,问题常为封闭式问题,这样有助于分析人员获得深度认识。 基本规则:(1)先业务需求,后用户需求,所以先领导后普通; (2)开始漏斗,领导漏斗

(3)普通用户菱形,必要时金字塔 面谈的结构及其特点:教材上册,P96

7、Maverick公司是一家有15年历史的国内货物运输公司,假设你的小组担当Maverick公司的系统分析与设计团队,为Maverick公司的所有业务设计一个计算机化或者增强设计计算机化的项目。Maverick主要进行卡车零运,管理人员按照实时处理(Just In Time)原则工作。在这个原则指导下,他们建立了包括发货人、收货人和承运公司的伙伴关系,目的是准时运输和交付生产线上需要的材料。Maverick主张用626台拖拉机拖运货物,它拥有45000平方英尺的仓库和21000平方英尺的办公场地。

1) 制定分析Maverick公司的信息需求时,应当收集的硬数据列表。(提示:想像一下该公司要开展的工作,应该会有哪些登记表格)。 2) 设计一种采样机制,使得小组在不必查看这家公司15年来产生的所有文档的情况下,形成对该公司的清晰认识。

解答:(1) 定量硬数据:

发货及收货的明细表 货物的中转表

拖拉机和仓库的使用情况表 定性硬数据:

日常业务描述文档

描述发货人、收货人和承运公司的伙伴关系文档 参考硬数据的类型:教材上册,6.5

(2)将这15年公司的情况用图表表达出来,形成对15年以来公司状况的认识,获取生产情况的时候将大致相同的年份列出来,采样时候只需要在大致相同的年份中抽取一份作为样本。

参考采样规则:教材上册,P90

~ 11 ~

第7章 需求获取方法之面谈

案例题

1.在重新浏览面谈日程的时候,你发现有几个问题看上去不合适。下面是准备问Sampson纸产品公司销售经理的原问题。这家公司想把它的一些销售信息放到Web上去,以便经理们可以交互地评论它,从而优化他们的销售方案。用更合适的方式,重新写下面的问题。

(1) 你的下属告诉我,你非常渴望有一台计算机。这是真的么? (2) 我是这个领域的新手,我有没有忽略什么呢?

(3) 你在销售计算中最常用的信息资源是什么,使用频度如何? (4) 其它销售经理认为,把一些月度销售商品放到Web上,然后做趋势分

析,将会是一种主要改进,你同意他们的做法吗?

(5) 没有比你现在使用的陈旧的方法更好的销售方案吗? 解答:(有错误问题:同时问两个问题;隐含和暗示;提问题时上下文相关;问的问题牵扯到了被问的对象,如最后一题的陈旧)

(1) 你的下属告诉我,你非常渴望有一台计算机。这是真的么?

你对计算机的使用态度如何?

你认为作为一个销售经理,是不是应该拥有一台计算机?(诱导性

问题)

(2) 我是这个领域的新手,我有没有忽略什么呢?

我问的问题如何,你有什么要补充的么?

我是不是还忽略了什么?(上下文无关问题)

(3) 你在销售计算中最常用的信息资源是什么,使用频度如何?

将两个问题分开

1、你在销售计算中最常用的信息资源是什么(双筒问题) 2、使用频度如何?

(4) 其它销售经理认为,把一些月度销售商品放到Web上,然后做趋势分

析,将会是一种主要改进,你同意他们的做法吗? 你和其他经理一样,都同意。。。,是吗?

你认为把一些月度销售商品放到Web上,然后做趋势分析会是一种改进吗?(诱导性问题)

(5) 没有比你现在使用的陈旧的方法更好的销售方案吗?

对于现在的销售方法,你有什么更好的改进方法么? 还有比目前方法更好的销售方案吗?(上下文无关问题)

2.作为系统分析项目的一部分,需要为生产数字钟的Chronos公司更新自动化会计功能。你将要同首席会计Harry Straiter面谈。写出4到6个涉及他所使用的信息资源、信息格式、决策频度、需求的信息性质和决策样式的面谈目标。

(1) 说明你将如何联系Harry以安排一次面谈。

(2) 说明在这场面谈中你会使用哪种面谈结构?为什么?

(3) Harry有3个下属也使用这个系统。你和他们面谈吗?为什么? (4) 写出3个开放式问题,在面谈前通过电子邮件寄给Harry。用一句话

~ 12 ~

解释为什么应当由人而不是由电子邮件来指导面谈?

解答一:(1)参考面谈过程的准备阶段:P99

打电话或者email给Harry,因为要进行深入面谈,可以先将一些问

题通过 email发给他

(2)采用菱形面谈结构,因为目的是要更新自动化会计功能.也可以考虑

使用漏斗结构

(3)应当面谈,因为下属和领导应该具有不同的目标,而这些目标是领导

不能提供的

考察点:涉众的分类 采用漏斗型。以一般的开放式的问题开始,有助于分析人员取得总体

认识,然后再逐步就某些问题展开深入面谈。

(4)参考规则:(1)面谈获取信息的类型,P93 (2)面谈的优点,P105

面谈是复杂的过程,可以实现很多的目标,只有依靠人的灵活和主观

能动性才能使面谈达到最优效果。 解答二

(1) 说明你将如何联系Harry以安排一次面谈。

(打电话,预约:联系个人,安排一次会见,内容,选个时间,让他找个时间,安排个地点)

提前打电话或者发送电子邮件通知Harry,告知面谈内容,商定面谈时间和地点;提前通知可以给Harry时间去考虑面谈事宜。如果要进行一次深入的面谈,可以把问题通过电子邮件提前发给Harry,让他有时间仔细考虑答复。(P120)

(2) 说明在这场面谈中你会使用哪种面谈结构?为什么?

(首席会计师,leader,专家型的人面谈结构同普通用户不同) 漏斗结构,适合领导专家(根据上课笔记)

(3) Harry有3个下属也使用这个系统。你和他们面谈吗?为什么?

(涉众分析中不同涉众有不同特点,下属和他之间有没有差异,有差异则要;没差异,则为什么)

应当面谈,因为Harry和其下属对软件系统的开发和应用具有的发言权和决定权不同,属于不同的涉众类别。Harry属于领域专家,而其下属属于该系统的用户,下属和领导使用这个系统的目标不同,下属是为了更好的完成自己的任务,满足组织的目标,他们是主要的信息来源,所以应当面谈。

应当面谈,因为下属和领导应该具有不同的目标,而这些目标是领

导不能提供的

考察点:涉众的分类

(4) 写出3个开放式问题,在面谈前通过电子邮件寄给Harry。用一句

话解释为什么应当由人而不是由电子邮件来指导面谈?获取许多语言文字之外的其它信息,如声音动作语气等

(三个开放式问题随便写,纸面记录和其他几种记录方式的优缺点,

~ 13 ~

人的信息传达有几个方面,每个方面各占多少。只靠邮件就只剩文字了,交流中只剩文字的手段了,会产生什么缺点)

(好像很多不知怎么一句话概括)

由于面谈中可能会实现很多目标,涉及很多复杂问题,所以面谈一般应该由人而不是电子邮件来来管理(P120)。 笔录的优点有:

? 使会见者专心和集中精力; ? 帮助回忆重要的问题; ? 表现会见者对面谈的兴趣; ? 表明会见者是有准备的。

虽然笔录有一些好的优点,但也有一些缺点:

? 丢失很多被会见者在谈话中表现出来的语调、停顿等语音信息; ? 做笔记时,会让被会见者说话犹豫;

? 造成对事实注意过多,而对感觉及观点注意过少。 录音和摄像的优点有: ? 记录了更多的信息;

? 会见者能轻松地倾听并更快速地做出响应; ? 可以完整的重现面谈过程。 录音和摄像也有很多的缺点:

? 被会见者可能会紧张,回答不自在; ? 数据采集的代价较高;

? 事后进行信息寻找时难以定位。

3.对第6章的案例题6,说明Phil应该怎样开展他的面谈工作?包括:面谈对象选择的先后顺序,每次的面谈结构。说明原因。 解答:

(列了需求的计划

打算安排几轮面谈,每次的参与人员

每次面谈结构,可能的话可以安排第三个轮次的面谈,分析原因 第一个轮次获得前景和范围 第二个轮次详细

第三个轮次验证需求)

进行三轮面谈,具体安排如下: 第一轮面谈:

面谈对象:高层管理员 面谈结构:漏斗式结构

因为第一轮面谈主要是为了获得项目的前景和范围,通过探讨一些高层次的问题来和项目目标推导出业务需求,并根据问题帮助确定系统高层次的解决方案和系统特性,从而到了项目的前景和范围文档。而这种问题的讨论需要高层的管理员和对整个业务了解的人,所以第一轮的面谈对象是高层管理员。 根据面谈结构的特性,漏斗式的面谈结构适合于领导和专家这样的被会见对

~ 14 ~

象,所以选择漏斗式结构。 第二轮面谈:

面谈对象:管理层以下的员工 面谈结构:菱形式结构?

第二轮面谈的目标是为了获取详细的需求。详细的需求涉及系统的各个层次,而各个层的工作目标和工作特性各不相同,所以需要要各个层次的工作人员进行面谈。

第三轮面谈:

面谈对象:各个层次的职员

面谈结构:长序列的封闭式问题?

第三轮面谈的目标是为了验证已获取的需求。分析汇总了获取的需求后,将获得的需求分类罗列后,根据具体不同的需求需要向各个层面的涉众确认验证已经获取的需求,保证需求的正确性,完整性,一致性。 由于需求已经基本确定,所以采取封闭式问题。

4.下面是系统分析团队的一名成员提出的第一份面谈报告:“在我看来,面谈进行的很好。我和他就这个问题聊了一个半小时。他告诉我有关公司的所有历史,很有意思。他也提到,自他来到该公司的16年间,公司没有任何变化。我们不久将再次举行会面,以及结束这次面谈,因为我们还没有深入研究我准备的问题。”

(1) 试评论这个面谈报告。假设你要团队成员使用图1提供的报表,那么

他漏了什么主要信息?

(2) 什么信息对面谈报告来说是无关紧要的?

(3) 如果真的发生了报告中提及的情况,则必须向队友提出哪3个建议,

以帮助他更好地举行下一次面谈。 面谈对象:SalDomask 日期:3月3日 会见者:S.Cabbot 主题:计算机使用 面谈的目标:找出关于计算机使用的态度; 获得用户的使用估计; 看最新建议的系统的观点是否满足目标吗? 下次面谈的目标: 找出Sal怎样看待系统支持部门。 找出下一个面谈对象的观点。 面谈的要点: Sal说道:“计算机是我的朋友。” “一直”都在用计算机。 迫不及待地要熟悉新系统。 会见者的观点: 对了解更对有关系统如何促进工作感兴趣。 如果不使用计算机进行工作,会感到枯燥。 将成为新系统的热情支持者/促进者。 (1) 解答:试评论这个面谈报告。假设你要团队成员使用图1提供的报表,

~ 15 ~

那么他漏了什么主要信息?

(打算干嘛面谈目标,实际有没有) 面谈时间稍长,而且控制不佳。

遗漏了关于“最新建议的系统的观点”

(2) 什么信息对面谈报告来说是无关紧要的?

(面谈目标和内容无关) 有关公司所有的历史。

(3) 如果真的发生了报告中提及的情况,则必须向队友提出哪3个建议,

以帮助他更好地举行下一次面谈。

(三个建议的重点是那些是帮助控制面谈主题的)

1.控制面谈的过程。面谈开始的时候可以通过例如谈公司历史来酝酿一下交流的气氛,但是不能偏离主题。如果长时间的谈论不相关的信息的时候,需求分析人员就可以委婉的提醒面谈对象,并重新切回正题。

2.注意保持面谈的主题。针对每个面谈的目标,要在面谈的过程中安排合适的提示,逐一引导面谈对象对各个主题的叙述。

3.总结面谈的要点,注意此次面谈过程的成功和失误,明确下次的目标,以便为下次面谈做充分的准备。

6.假设现在由你来负责所在学校选课系统的需求工作,现在需要你来安排一次群体面谈,你打算怎么做? (群体面谈的准备阶段)

计划面谈

1.确定参与人员(涉众、主持人、负责人、分析人员、记录人员、观察员 )

2.安排会谈时间 (全职的2-4天参与会议 ,拟定一份议程 ) 3.选择会谈地点 (充足的空间,道具支持,良好的餐饮服务 )

4.准备会谈内容 (面谈的主题和范围,会议的议程,需求的预期和会谈的目标,各种材料)

第8章 需求获取方法之原型

案例题

1. “每当我认为已经获取用户的信息需求时,他们却已经发生了变化。这就像

试图射中一个运动目标。在半数时间里,我认为甚至用户自己也不知道需要什么。”Flo Chart说。他是2Good 2 Be True公司的需求工程师,该公司负责为几家制造公司的营销部门调查产品的用途。

(1) 用一段话向Flo chart解释,原型化方法怎样才能帮他更好地定义用户的信息需求。

(2) 用一段话评论Flo Chart的观察:“在半数时间里,我认为甚至用户自己也不知道需要什么。”一定要解释原型化方法怎样才能真正地帮助用户更

~ 16 ~

好地理解和阐明他们自己的信息需求。

(3) 用一段话向Flo Chart建议:一个具备原型特征的交互式Web站点缘何能解决Flo关于捕获用户信息需求的问题。

解答:(1)答案主题

(1)根据需要确定原型类型;(2)进行原型开发;(3)获得用户反馈;

(4)定义所得需求

(2)答案要以“隐含知识”和“用户表述时的主观加工”为主题

(3)原型化方法利用直观化的界面来最快程度的得到用户的反馈,通过

用户的反馈 来获知其实际的需求

2. “我有一个绝妙的主意!”Bea Kwicke宣布,他是系统团队的一位新来的需

求工程师,“让我们跳过所有的SDLC垃圾,直接为一切设计原型。我们的项目会进展的更快,还可以节省时间和金钱,并且所有的用户会感到我们似乎很在意他们,而不是连续几个月不与他们交谈。”

(4) 列出你(作为与Bea同一个团队的成员)用来劝阻她不要试图放弃

SDLC,而直接为所有项目设计原型的原因。

(5) Bea对你所说的话很失望。为了鼓励她,用一段话向她说明,你认为

适用于原型化方法的情形。

解答:(1)主要原因:原型仅仅是开发当中使用的一种手段,它利用得当可以加速开发的进程,但不能代替软件开发中的所有工作。

原型开发最大的缺点就是:成本太高,高的让人难以接受。所以原型

方法只在必要的时候使用原型方法。通常来说,如果用户需求出现了模糊,不清晰,不完整等具有一定不确定性的特征,就可以考虑使用原型方法。

原型方法的复杂性使得它会给项目引入了新的风险。

(2)情形见下表,尤其是其中红色的部分 废弃型 演化型 阐明并细化用例和功能性需实现核心用例 求 水平型 根据优先级实现其他用例 识别遗漏功能 使得系统适应快速变化的需要 研究用户界面方法 实现并扩充核心功能 实现并扩充核心算法 测试并调整性能 垂直型 演示系统可行性 用户需求出现了模糊,不清晰,不完整等一定不确定性的特征,就可以使用原型。 如果开始是以缺陷需求为起始点,需要不断调整的情况,就可以使用探索式原型开发

如果开始拥有清晰地用户需求,但是开发者对这些需求的实现方法,实现效果和可行性没有太大的把握,则可以使用实验式原型的方法

如果开始有清晰的需求也有项目积累下来的原型资产,这样的情况可以使用演化式原型开发

~ 17 ~

3. Itall多年来一直担任Tun-L-Vision公司的系统分析员。在你加入该系统分

析团队以后,建议在目前项目中把原型化方法作为SDLC的一部分,Itall说:“当然可以,但是你不能太在意用户所说的话。他们也不知道自己需要什么。我会做原型化工作,但是我不会‘观察’任何用户。” (1) 在不明确否决Itall的前提下,尽可能巧妙地说明原型化过程中观察用户反应、用户建议和用户创新的重要性的原因。

(2) 用一段话描述,如果系统的某部分已经被原型化,并且在后续系统中没有考虑用户的反馈信息,可能会出现什么情况?

解答:原型只是手段,目的是为了验证系统功能,所以为了修正原型,要观察用户反应、用户建议和用户创新的重要性 用户不满意,延期改进,功能过于简单,默认知识等

解答:(1)通过观察用户的反应会得到比较多的信息,比如说观察到用户总是出错则说明设计有问题,用户在某个界面停留很久这就说明软件的导航有问题,通过观察发现用户老是从一个位置移到另一个位置,说明界面中按钮放置的有问题,有的时候用户使用的方式超出了我们的想象(用户创新),像这些都要通过观察得到。在评估中,用户会对原型系统的人机教会和功能设置提出建议,这些建议可以帮助开发者们改进,改变或调整原型,从来可以是原型更接近于它的目标实现。对于用户的创新则是用户潜在的需求,这些可以通过观察还有用户的反馈中得到,做到以上,我们可以获得很多信息,使我们的原型更加完善。 (2)如果系统的某部分已经被原型化,但是在后续系统中没有考虑用户的反馈信息,这个原形都不能算是一个符合要求的原型。这样会导致开出来的原型根本就不符合用户需求,开发出来以后用户不满意可能会受到用户的抵制。可能在后期才被发现,开发方需要做很大的调整修改,导致项目延期,严重者可能会导致项目的失败。

4. Nordic Designs 是一家专营Scandinavia 当代家具的连锁企业,它已经发

布了一则夸耀其配送信息系统原型的公司简讯。简讯报道声称:“我们的配送信息系统原型一发布就投入使用了。绝对没有任何修改的必要,经理们说它是追踪家具配送的最佳解决方案。不久就可以你们商店中接触原型了。” (1) 这则报道的作者对原型化方法概念明显存在什么样的误解?用一段话解释它。

原型的目的,原型是为了在最终物件之前,避免特殊性,不是为了投入使用,也不是为了不修改

(2) 如果用户期望原型“绝对没有任何修改的必要”的话,列出原型设计者可能会面临的问题。

解答:(1)这则报道中提到“我们的配送信息系统原型一发布就投入使用了”

~ 18 ~

可以看出作者误解了一点:开发出的原型不是最终的软件,原型不能直接发布使用,我们使用原型的目的是获取需求的内容,而不是获取原型的代码,原型代码最终应该是会被抛弃的。作者还说“绝对没有修改的必要”这句话显然有问题,原型开发的过程中腰不断地根据评估者反馈的不足进行原型的修改,调整完后还要准备再次原型评估,如果不能通过,则在根据反馈,观察进行原型修正,所以不能说“绝对没有任何修改的必要”。

(2)首先原型是本来就是用来获取需求的,最终代码一定要被抛弃,不然开发出来的软件质量会很差。 如果用户期望原型“绝对没有修改的必要”的话,也就是说一次就获取完需求,显然这样的方法是不可行的,不能获取到完整明确的需求,这样会导致配送系统漏洞多,不能满足用户的需求,不受用户的欢迎甚至抵制,严重的可能影响到业务 花费大力气在原型上,时间花费过大

第9章 需求获取方法之观察与文档审查

复习题

1. 情境性事件。定义,特性。解决方法。

情境性事件,是指某些事件只有和它们发生时的具体环境联系起来,才能得到合理的理解。对于此类事件,需要将它们放在发生时的情景中进行解释,才能明确其意图。

? 突现性——并发突现 ? 局部性——此地 ? 暂时性——此时 ? 涉身性——此人 ? 开放性——开放外延

? 模糊性——无法精确定义,基于潜知识

解决:

? 理解复杂的系统事件 ? 获取工作中的异常处理

? 获取与用户认知不一致的实际知识 ? 了解用户认知 ? 获取潜知识

2. 采样观察的两种方法;优缺点. 时间采样(随机性) 通过随机的观察减少偏差 对频繁发生事件取代表性事件进行观察 事件采样 (流程性) 允许在行为展开过程中观察 允许对指定的重要事件进行观察 优点 ~ 19 ~

缺点 用分段的方式来收集数据不能提供全面信息的时间 漏掉不经常发生却很重要的事件 发现异常流程 验证用户知识和实际工作的一致性 消耗大量时间 漏掉频繁发生事件的代表性样本 获取默认知识 验证用户知识和实际工作的一致性 适用情景 案例题

1. “我知道你有很多材料。那些材料里到底有什么?”Betty Kant问道,她是MIS特别工作组的负责人。MIS特别工作组是你的系统团队联络Sawder家具公司的桥梁。你拖了一大堆材料,正准备离开这栋楼。

“哦,是过去6个月的一些财政决算、生产报表,还有Sharon给我的一些业绩报表,业绩报表涵盖了过去6个月的目标和工作业绩。”你在回答时,有些纸掉到了地上,“你为什么问这个问题呢?”

Betty为你拾起纸并把它放到最近的桌子上,回答道:“因为你根本不需要这些垃圾。你来这里要做一件事情,就是和我们这些用户谈话。从这些材料中得不到任何有益的信息。”

(1) 只有告诉Betty你从每份文档中找到的东西才能使她相信每份文档都是

重要的。用一段文字解释文档为需求工程师提供了什么帮助? 二玉哥哥语:看看书上 文档采样 那部分就知道了 参考答案:

不同的文档为需求工程师提供了不同的帮助,譬如:

? 需求规格说明书:帮助需求工程师发现需求信息,从而进行需求的

重用

? 硬数据:通过研究和阅读也可以发现需求的相关信息 ? 客户的续修文档:可以得到粗粒度的需求 通过分析这些文档,可以获取组织业务的问题域信息、业务工作流程的业务细节中存在的问题等。一个有经验的需求工程师会从现有的文档中获取事实,理解问题域。 文档类型 文档审查方法 描述 相关产品的需求规格说明 需求重用 分析相关产品的规格说明,发现可以移植到到新产品中的需求信息,进行需求的重用 问题域信息 用户界面特征 业务需求、组织策略、政策法规 ~ 20 ~

硬数据 文档分析 阅读、研究得到的硬数据,从中发现需求信息 问题域信息 工作流程 业务细节 抽取客户的需求文档中的需求描述 粗粒度需求 客户的需求文档 需求剥离

(2) 在你和Betty谈话的时候,意识到实际上也需要其他的定量文档。列出

你缺少的东西。

二玉哥哥语:看看定量的和定性的就知道了

参考答案:

? 定量硬数据缺少:

数据收集表格:反应组织的信息域,收拾正在使用的每张表格,连同填写和分发说明一起,与填好的表格进行对比 ? 定性硬数据缺少:

? 整个组织的描述文档:Sawder公司的组织结构图 ? 业务指导文档:Sawder公司的工作指南和规章手册 ? 业务备忘:

第10章 需求组织——??

思考2 。

场景方法的作用。与用例驱动的思想的联系。

第三部分 需求分析 第11章 需求分析概述

需求优先级定义方法;优缺点。

累积投票 区域划分 Top-N 数据量化 思考题

1. 分析“结构化分析”和“面向对象分析”的过程,说明它们为什么都开始于

系统的边界定义?

~ 21 ~

解答:二玉哥哥语:和第二章相关:第二章云“软件要完成用户的任务需

要和外界协调互动“开始于边界是因为边界是它们互动的地方。系统分析给自己做个定位的话,是先分析互动的反应,然后分析系统内部的反应,所以框架中有一些叫系统外部行为等,在需求早期阶段都是外部分析,到了后期阶段才会进入内部分析

参考答案:

软件要完成用户的任务需要和外界协调互动,经过问题分析之后一般可以得到高层次的解决方案及系统特性。而一个系统通常会有很多高层次问题,虽然问题分析之后可以得到解系统为了解决某一问题而需要具备的知识片段,却无法将这些片段自动连接为整个系统的概要全图,所以很有必要将各个问题的分析结果进行综合与处理,已确定整个解系统的功能,建立系统的边界。

之所以把系统边界作为需求分析的起点,是因为边界是软件和外界互动的地方。解系统为自己做定位,首先要分析互动的反应,然后分析系统内部的反应,所以,框架中有一些系统的外部行为等。

一般情况下,在需求分析的早期阶段做的都是外部分析,从系统的边界图开始,逐一分析和细化系统和外界的交互,以保证最终产品的行为能够和环境形成互动,以满足用户的需求;然后在需求分析的后期阶段,才会逐渐进入内部分析。

结构化分析:

①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,生 成数据字典和基元描述;④建立人机接口,提出可供选择的目标系统物理模型的DFD;⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;⑥选择一种 方案;⑦建立完整的需求规约。

面向对象分析:

①确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。②确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。③确定主题(subject)。主题是指事物的总体概貌和总体分析模型。④确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。⑤确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方

~ 22 ~

法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。

所有建模技术都必须明确系统所涉及的功能,只有明确软件与现实世界的边界,懂得系统的上下文,才有可能建立模型。

2. 列举结构化分析的各种技术,说明它们的数学基础是什么? 解答:形式化方法? 数据流图?结构化建模 有限状态机思想?状态转移矩阵?面向对象建模

二玉哥哥语:有些有基础,而有些是没有基础的,结构化、数据流图、ERD、状态图(结构化的一种)都是有基础的,有些数据流图的细节方法是没

有基础的

参考答案:

结构化分析技术:数据流图、实体联系图、状态转移图、功能实

体矩阵、实体生命历史和事件实体矩阵。

以数据流动为中心,以DFD为核心技术,以λ演算为数学基础。

3. 列举面向对象分析的各种技术,说明它们是对结构化分析技术的继承和借鉴吗?如果是,那么说明它们借鉴了哪些结构化分析技术,如果不是,那么说明它们的数据基础是什么?

二玉哥哥语:很明显是,怎么是的看看发展历史的那张表

参考答案:

面向对象技术:用例图、类图、交互图、活动图、对象约束语言状态图和工作流

借鉴的结构化分析技术:实体关系图、数据流图、状态转移图

~ 23 ~

4. “事件”和“事物”一直是进行需求分析的一个重要思路,你对此如何评价?

解答:二玉哥哥语:有作用却也有局限性。事物和事件正好对应着结构化

方法的两条路径,一个是DFD,一个是ERD,可参考书上结构化分析有两条路径这块内容,在结构化分析方法那章。但在面向对象里就不太好用了,因为面向对象的核心是多对象协同,多对象协同既不是事件,也不是事物,所以面向对象开始使用场景。事件就是行为,就是DFD;事物就是数据,就是ERD。

参考答案:

? 事件: 可以描述、值得记录的在某一特定时间和地点发生的事情。

通过对事件的分析可以将复杂的系统需求分解成易处理并能更好理解的小单元。

事件可分为以下几类:外部事件、临时事件、状态事件。 ? 事物: 在面向对象的编程中,这些事物是在系统中相互交互的对象。 事物的类型:实物;角色;组织部门;设备;突发事件、事件或交互;地点/位置 ? 结构化分析:事物和事件正好对应着结构化方法的两条路径,一个是DFD,

一个是ERD

~ 24 ~

? 面向对象分析:核心是多对象的协同,而多对象既不是事件,也不是事

物,而是基于场景的。所以,在面向对象分析中,事件就是行为,指的就是DFD;事物就是数据,指的就是ERD。

第12章 过程建模

案例题

1. 根据下列叙述性描述,为描述的内容绘制一个上下文DFD。

校园书店“课本库存系统”的目的是向学生提供本地大学课程的课本。大学的教学部门通过一个“课本主清单”向书店提交初始数据,包括课程、教师、课本和预计注册人数。书店生成一个“购买订单”,“购买订单”被送到供应课本的出版公司。图书订单随着一个“包装清单”到达书店,它被接收的部门检查和验证。学生填写包含课程信息的“购书要求”,当他们付了书款之后就得到一个“销售单据”。 解答:

~ 25 ~

课本主清单 教学部门 课本库存 系统 课本主清单 书店 购买订单 销售单据 学生 购买订单 出版公司 包装清单 购书要求

2. 建立一个决策表,正确反映下面的课程评分策略 一个学生可以得到一个期末课程成绩A、B、C、D、F。为了给出学生的期末课程成绩,老师首先确定一个学生的初始期末成绩,具体按照以下的方式确定:

头三次作业和测验中总成绩不低于90分,并且第4次作业成绩不低于70分的学生,这门课将得到成绩A。头三次作业和测验总成绩低于90但不低于80,并且第4次作业成绩不低于70的学生,这门课将得到成绩B。头

~ 26 ~

三次作业和测验总成绩低于80但不低于70,并且第4次作业成绩不低于70的学生,这门课将得到成绩C。头三次作业和测验总成绩低于70但不低于60,并且第4次作业成绩不低于70的学生,这门课将得到成绩D。头三次作业和测验总成绩低于60,或者第4次作业成绩低于70的学生,这门课将得到成绩F。一旦老师确定了学生的初始成绩,他将决定最后的课程成绩。如果学期期间旷课不多于3堂课,这个学生的学生课程成绩将同他的初始成绩一样。否则,学生的学期课程成绩将比他的初始课程成绩低一级。

存在某些条件使得老师无法采取行动吗?如果有,你将如何改正错误?你的决策表可以通过消除不可能的规则或合并规则进行简化吗? 解答:

1)存在使老师无法采取行动的条件,当初始期末成绩为F,并且旷课多于3

堂时。

2)改正错误:添加条件,当初始期末成绩为F,旷课多于3堂时,不

做降级处理

3)这个看自己的图说,

下面给出最终图

条件和行动 头三次作业>=90 >=90 和测试总成绩 第四次作业>=70 >=70 成绩 旷课堂数 成绩A 成绩B 成绩C 成绩D 成绩E 成绩F <=3 X >3 X 规则 >=80>=80>=70>=70并并并并<90 <90 <80 <80 >=70 >=70 >=70 >=70 >=60并<70 >=70 <=3 X >3 X <=3 X >3 X <=3 X >=60<60 并<70 >=70 >=0并<=100 >3 任意 X X >=0并<=100 <70 任意 X

3. 如果基本数据类型是单字符char,有效域为{‘a~z’, ‘0~9’, ‘A~Z’},那么请以此为基础定义其他的数据类型:String,Integer(32位),Date(1900-01-01之后,包括1900-01-01)。 解答:(此题不确定,自行斟酌) String=1{[‘a’-‘z’| ‘0’-‘9’| ‘A’-‘Z’]}n (n正无穷) Integer=[1|2|3|4|5|6|7|8|9]+31{‘0’-‘9’}31

~ 27 ~

Date=(闰年???)

第13章 数据建模

1. 为下列描述建立ERD Burger World分销中心为45家Burger World特许经销商提供供应服务。你参与了为分销中心构造一个数据库系统的项目。每个特许经销商对下一个月其Burger World的菜单产品提交一份当天的销售计划。所有的菜单产品需要有配方和(/或)包装。基于商店销售计划,系统必须每天生成一个当天的配方需求,然后,将那些需求合成为每周一次的购买需求和发货需求。 解答:

2. 我们企业的MIS 部门想构造一个数据库来跟踪所有的硬件和软件。我们拥有工作站、网络服务器和外设,而且MIS 部门想跟踪软件包以及这些软件包的许可证。有些软件许可证是针对单机的,我们可以把这个软件安装在网络服务器上,但只能允许与许可证授权的用户数同样多的网络用户使用该软件。我们还拥有网络许可证,单个网络许可证授权了一定数量的用户。非网络许可证可以安装在工作站或服务器上。我们想跟踪软件许可证安装在哪里。某些许可证可以在某个时间未被安装在任何地方。我们还必须能够证明

~ 28 ~

安装软件的合法性。每个许可证必须被跟踪到一个购买订单、赠品或者一次租借。我们也可以订购一些软件。我们订购软件包,同时收到许可证。请通过集体讨论构造数据模型和属性。 解答:

Software *PK SID 名称 版本号 *FK LID 1 Register 0...* License *PK LID 类型 授权数 安装限制 *FK LOID 1 Origin 1...* LicenseOrigin *PK LOID 来源类型 产生日期 1 0...1 install N Hardware *PK HID 1 类型 名称

3. 结合下图的表格内容,给出相应的ERD描述 ~ 29 ~

A-1 Information SystemsEmployee ProfileDate:EmployeeInformationFormJune 10, 2005 JohnFirst NameJacobsLast NameHome Phone:Home Address: CM.I.Birth Date:Marital Status: 308 - 57 - 1314Social Security No.( 407) 423-45981456 Forest DriveOrlando, FL 32859-0032December 5, 1981 M: S:??Emergency Contact Information Primary ContactFirst Name:Last Name:M.I.Relationship:Home Address:Secondary ContactFirst Name:Last Name:M.I.Relationship:Home Address:Home Phone:Work Phone:Form 1732a - July 2003JanetJacobsLSpouse1456 Forest DriveOrlando, FL 32859-0032( 407) 423-4598( 407) 306-1508Home Phone:Work Phone:RobertJacobsWFather2435 Doe Path Ln.Daytona Beach, FL34566( 904) 859-7845Retired

解答:

~ 30 ~

第14章 面向对象建模

行为模型的技术和试用情景

? 交互图(Interaction Diagram)

描述在特定上下文环境中一组对象的交互行为 通常描述的是单个用例的典型场景 包括:

? 顺序图(Sequence Diagram) ? 通信图(Communication Diagram)

? 交互概述图(Interaction Overview Diagram) ? 时间图(Timing Diagram)

? 活动图(Activity Diagram)

以“流”(控制流和数据流)处理为侧重点描述系统的行为 通常以组织的整体业务流程为描述对象的

? 状态图(State Diagram)

主要用于描述重要而且复杂的对象的所有行为

这个对象的行为通常要涉及很多(甚至大部分)的用例

OO的主要建模活动

1. 从用例描述中识别出对象和类;

2. 分析用例的描述信息,添加类的属性和类之间的关联; 3. 从用例描述中识别系统行为; 4. 将系统行为分配给类;

5. 综合考虑类的属性与行为,细化类的职责,建立完全的对象模型。

~ 31 ~

需求获取需求分析象和类需求工程软件设计细化的对象模型软件实现领域模型寻找对需求用例模型实例用现将行为分配到类,进一步细化对象模型粗略行为模型细化的行为模型完全的对象模型编程程序代码需求源 思考题

1. 在需求获取阶段,需求工程师收集了大量的样本,包括文档、表格和报告,解释这些样本对面向对象建模有哪些用处。

解答:帮助人们识别类、对象、活动顺序时序与事物状态

2. 比较包括CRC策略在内的各种对象与类的发现方法,说明各种的优缺点和

适用场景。 解答:

名次分析:源于ERD 倾向于数据驱动 数据库为主,作用 行为分析:行为复杂时 倾向于行为驱动 控制行为复杂 CRC:面对复杂情况 数据行为综合考虑,需要限定和规则

在拥有充分需求信息描述的情况下,发现对现象和类的主要方法有三种:使用概念类分列表、名词分析和行为分析。使用概念类分类列表和名词分析又被称为经典方法,因为他们主要来源于经典分类理论,产生的概念类具有数据驱动的特征。这两种方法易于使用,而且他们产生的数据驱动的领域模型也特别适合于对信息系统的问题域进行描述。相比之下,行为分析就是以概念聚类为基础的职责驱动的方法,它适合描述复杂希特同系统和控制系统。 概念类分类列表:事先给出一个概念类的分类列表,然后又分析人员在需求信息中寻找相应类别的候选对象,最后对候选对象进行确定和归纳,形成概念类。 名词分析师一种运用语言分析的实用方法,名词分析从文本描述中识别出有关的名词和名词短语,然后将它们作为候选的对象,最后对候选对象进行确定和归纳,形成概念类。

行为分析,和名词分析不同的是,行为分析师从需求描述中搜寻动词,识别出系统行为,然后找出系统的主动对象和被动对象作为候选对象。找出候选对象后,就按照对象的含义进行对象的确定,针对确定后的对象,以其发起行为的组合作为特征描述,并以特征的相似性进行归纳分类,产生概念类。

~ 32 ~

前面的面向对象建模方法都是适用于简单情况下的建模方法,在需求信息比较明确时,他们能够发挥很好的作用。但是在复杂情况下,需求的获取和分析是交织前进的,也就是说在进行分析和建模时没有非常明确和固定的需求信息可以利用,此时前面描述的建模方法很难取得好的效果。

基于CRC卡的职责驱动方法是一种用来处理复杂情况的面向对象建模方法,比前面描述的面向对象建模方法复杂很多,需要更多的实践经验和技巧。CRC是Candidates Responsibilities和Callaborators的缩写,基于CRC可以建立一种索引卡片,CRC卡。每个卡片代表了一个被发现的候选对象。卡的背面是关于候选对象的非正式描述,卡的正面记录了对象的职责(所维护状态和可以执行状态的行为)和协作者。CRC卡简洁方便可以随时被移动、修改或者丢弃,所以它特别适合在复杂的系统中充当进行对象的发现和设计思想的挖掘,即进行复杂情况下的面向对象的分析和设计。

概念类分列表 简单方式 案例题

1. 基于以下描述开发一个领域模型。 这个例子是一个简化了的大学图书馆系统。当然,图书馆系统必须跟踪书的情况,同时还要维护关于书的标题及副本的信息。书的标题维护信息是关于名称、作者、出版商和目录号等信息。每个副本维护副本号、版本、印刷日期、ISBN、本书状态和归还日期等信息。

同时图书馆系统也要跟踪图书馆借书人的情况。由于它是一个大学图书馆,所以有几种类型的借书人,他们有各自不同的特权。这里包括教职工借书人、研究生借书人和本科生借书人等。借书人的基本信息包括姓名、地址和电话号码等。对于教职工借书人,还要包括诸如办公室地址和电话等信息。对于研究生借书人,还要包括研究项目和导师信息等。对于本科生借书人,还要包括项目和所有学分信息等。

图书馆系统也要跟踪借出书本信息。当一个借书人捧着一堆书去借书台办理借书手续时,借出这个事件就发生了。随着时间的过去,一个借书人可以多次从图书馆中借书。一次可以借出多本图书。

如果借书人想要的书已被借出,他可以预约。每个预约只针对一个借书人和一个标题。预约日期、优先权和完成日期等信息需要维护。当借书完成,系统会将这本书与借出联系起来。 解答:

1发现对象和类

候选对象 : 人:借书人 教职工借书人、研究生借书人和本科生借书人 图书馆管理员

事物: 书 副本

组织: 图书馆 借书手续 预约手续 概念: 预约日期 标题 借书终端 事件: 借书 预约

摒弃对象: 标题:只有状态没有行为

~ 33 ~

预约日期: 无状态无行为 (黑体为剩下的) 2建立类之间的关联 需要协作的概念类: 借书人 借书终端 图书管理员 借书终端 借书手续 书 预约手续 书

问题域内的联系: 3 添加类的重要属性

2. 结合题1和下面的描述,给出大学图书馆系统的用例模型。 借书人根据图书馆的信息来检索书名,同时检索这本书是否可以被借出。如果一本书的所有副本都被借出了,那么借书人可以根据书名预订这本书。当借书人把书拿到借书台的时候,管理员可以为这些书办理归还手续。管理员要跟踪新书到达的情况。

图书馆的管理者有属于自己的活动。他们要分类打出关于书的标题的表格,还要在线检查所有过期未还的书,也标出来。而且,图书馆系统还可以从另外一个大学的数据库中访问和下载借书人的信息。

解答:借书人根据图书馆的信息来检索书名,同时检索这本书是否可以被借出。如果一本书的所有副本都被借出了,那么借书人可以根据书名预订这本书。当借

~ 34 ~

书人把书拿到借书台的时候,管理员可以为这些书办理归还手续。管理员要跟踪新书到达的情况。

图书馆的管理者有属于自己的活动。他们要分类打出关于书的标题的表格,还要在线检查所有过期未还的书,也标出来。而且,图书馆系统还可以从另外一个大学的数据库中访问和下载借书人的信息 先找用户再找目标。

图书馆用例检索书名预订图书借书人借阅图书图书管理员归还图书列举书单查询未还书访问借书人其他学校下载信息

3. 下面是一段用例的描述,针对一个汽车保险系统中“将一辆新车加入一个已有保单中”的用例。请你为其设计系统顺序图和活动图。

1) 客户打电话给保险公司,并提供他的保单号,办事员输入这个信息,系统显示基本的保单。然后办事员检查信息,以确保保险费通用及保单有效。

2) 客户给出要添加的汽车的牌子、模型、年份和车辆识别代号(VIN),办事员输入这些信息系统验证这些数据是否有效。然后客户选择期望的保额类型,以及每种类型的数量,办事员输入这些信息,系统会逐一记录并根据保单限制验证所请求的数量。输入所有的保额后,系统验证保额总和,包括保单上的其他汽车。

3) 最后,客户必须要确认所有的驾驶员,以及他们驾驶汽车的时间比例。如果有一个新驾驶员加入,则调用另一个用例“增加新驾驶员”。

4) 整个过程最后,系统更新保单,计算新的保险费,打印新的保单说明,邮寄给保单所有人

解答:

几个活动 数据流 参与人角色 甬道

顺序图 活动图

~ 35 ~

系统用 户开始新的销售处理输入客户保单号显示基本保单检查信息 loop [未输入完信息]添加输入汽车信息 验证有效性选择保额类型数量限制请求 记录限制请求 loop [有新的驾驶员]增加新驾驶员反馈信息确认驾驶员 系统更新表单计算保险费用打印保单说明邮寄保单

第四部分 需求的文档化和验证 第15章 需求规格说明

1. 规格说明的读者;目的;要求

项目管理人员:项目估算;任务划分——全面准确的需求 设计、开发人员:完成工作——正确性,可度量 测试人员:测试计划——全面准确正确。 手册编写人员:用户手册的框架 维护人员、培训人员、律师??

2. 规格说明的技巧和原则

~ 36 ~

原则

——写作是一门艺术 ——文档化的目标是交流

技巧

1. 组织结构

? 内容位置安排得当 ? 引用或强化但不重复

2. 表达方式

? 根据内容,选择合适的方式 ? 使用系统的表达方式

3. 细节描述

? 定义术语表或数据字典 ? 避免干扰文本 ? 避免歧义词汇

思考题

1. 在需求获取和需求分析当中采用哪些手段可以保证最终需求集的完备性、一致性和正确性? 解答:完备性,

需求规格说明文档时完备的,当且仅当1描述了用户所有有意义的需求,包括功能、性能、约束、质量属性和对外接口;2定义了软件对所有情况的所有实际输入(无论有效输入还是无效输入)的响应;3为文档中的所有插图、图、表和术语、度量单位的定义提供了完整的引用和标记。需求的完备性要求不能遗漏任何需求或者必要的信息,为避免需求遗漏,需求工程师要做好业务需求的分析,建立并控制正确的项目规范,建立业务需求、用户需求和系统需求的跟踪关系也用于发现需求的遗漏现象。文档内所有TBD(待解决问题)被全部解决之前,需求规格说明文档都是不完备的。

一致性,1细节的需求不能同高层次的需求相冲突,2同一层次的不同需求之间也不能互相冲突。也就是说,软件需求规格说明文档既要在所含内容上保持一致,也要和更高层次的文档(例如系统需求规格说明书)所含的内容保持一致。为保证需求规格说明文档的一致性,由开发人员和非开发人员对于其进行手工评审时非常必要的。 正确性,保证文档中每个单一需求都是优秀的需求。单一需求的优秀特性可以使整份文档满足正确性,无歧义和可验证。正确性是文档内的所有需求都有正确性,无歧义指的问胆囊管选中的指令,可验证文档内所有的所有需求都是可验证的

~ 37 ~

第16章 需求验证

1. 多种需求验证的方法应该如何结合运用? 解答:

需求验证的方法:需求评审(静态分析,需求验证的一种主要方法), 原型与模拟,开发测试用例,用户手册编制,利用跟踪关系,自动化分析

每个需求都需要经过评审,对于动态行为评审不能完成的就要通过原型和模拟的方法来验证。在正常的工作当中,可以顺便用上用户手册,测试用例,跟踪等方法在一些错误之处或者一些需求上进行验证,也是比较有效的。总而言之,大多数情况下,需求都是在静态的方式下被加以验证的(评审的方法),也可以说几乎说的需求都要经过评审的方法进行验证,个别动态复杂的需求需要用原型与模拟的方法进行验证,工作之间产生的衔接可以用上开发测试用例,用户手册等方法,这样可以实现高效的综合运用。

~ 38 ~