大学计算机需求工程复习.docx
《大学计算机需求工程复习.docx》由会员分享,可在线阅读,更多相关《大学计算机需求工程复习.docx(41页珍藏版)》请在冰豆网上搜索。
大学计算机需求工程复习
第2章需求基础
1.从下面的事件当中,你可以替Jeannine总结出哪些教训?
投资经理Jeannine对一个新的投资跟踪系统具有强烈的需求。
她需要做出快速决策来考虑可能进行的投资和撤销投资,耽误一个小时就可能给公司造成几千美元的损失。
最后她放弃了使用公司的信息系统,因为公司的信息系统没有给予她的请求足够高的服务优先级。
她找到软件开发商,购买了一套看似可以满足她要求的软件。
但高层管理人员不同意使用,而且还遇到了其他一些问题。
首先,财务审计员重新评估了公司的投资策略和投资政策。
Jeannine并不知道这一点,于是新的系统没有计入正在被考虑的新政策。
她自己的职员抵制这个系统产生的有关投资和撤销投资的建议。
新系统使用了公司信息系统现有的文件结构,却发现她的职员两年前就放弃使用那些文件了,因为那些文件没有包括全面分析可选替代投资方案所需的数据。
她的职员也批评新系统的设计,说很小的操作错误就会把系统带入“混乱”状态,而且很难恢复过来。
她的一些下级经理坚持要有图形形式的报告,而新系统无法产生这些报告。
最后的问题是,Jeannine不能确定新的系统是否可以进行适当的修改(数据库结构修改和程序修改)以满足新的需求而不用重写所有的程序。
而且她的老板也不能肯定是否会出资请一位顾问来解决这些问题。
分析:
他首先让我们找了里面的所有需求,然后再一个一个对应业务、用户和系统需求,发现有业务需求,但是不精确,有用户需求,没有系统需求。
另外还要考虑非功能性需求,比如对外接口,质量属性,性能需求,约束。
最后提了一点很多用户会考虑购买软件而非开发一个软件,这也是一个问题
【一】:
1没有获得高层支持
2财政部支持
3下属抵制使用
4信息不流通,文件使用不一致
5要求的图形报告没有
6不知道是否能修改,
【二】:
(1)她没有仔细认真地分析问题;
(2)她没有及时跟相关人员交流信息,没能把握住有价值信息;
(3)她没能及时跟公司员工交流,引用过时的文件结构;
(4)她没有仔细研究分析新引进的系统的性能需求是否满足;
(5)她没有仔细研究新引进的系统的功能需求是否满足;
(6)她没有仔细研究引进的系统的质量属性,对外接口是否满足。
2.根据下列描述,说明新的直接销售和财务处理系统的业务需求有哪些?
EspeciallyforYouJewelers是大学城的一个小珠宝零售商。
在过去的两年里,EspeciallyforYou在它的商业方面经历了极大的发展,可是,它的财务业绩却与它的发展不同步。
现在的事务处理系统部分手动、部分自动,不能有效的追踪客户账单和收据,EspeciallyforYou难以确定为什么它的成本这么高。
此外,EspeciallyforYou频繁地实行特价以吸引顾客。
它不知道这些特价是否有利可图,是否带来其他的销售。
EspeciallyforYou也想增加回头客,所以它需要一个客户数据库。
EspeciallyforYou想按照一个新的直接销售和财务处理系统以帮助解决这些问题。
解答:
业务需求:
保持财务业绩与它的发展同步;有效地追踪客户账单和收据;降低成本;实行特价时能够知道是否有利可图,是否带动去他的销售;增加回头客。
业务需求如BR。
BR1:
实现客户账单和收据的有效追踪;
BR2:
实现产品特价时的利润和相关销售情况检查;
BR3:
实现一个客户数据库。
3.对上一题,如果由你来着手发现用户需求,你打算在哪些方面开展工作?
解:
先定义明确的业务需求,获得开发系统的必要性,根据业务需求,协调涉众的立场,限定问题的范围,指导用户需求的获取过程:
和涉众沟通(即向业务人员了解相关的业务知识,业务流程;再和销售人员沟通,由于他们的顾客是流动的,不确定的,只能通过销售人员间接获取来自于顾客的用户需求,了解他们的背景和习惯),最后根据业务需求对用户需求进行过滤和选择,得到充分必要用户需求。
4.设想你自己就是ATM机的唯一用户,写出你对ATM机系统的用户需求。
解:
UR1:
使用户可以根据系统的明确操作提示做出正确的反应;
UR2:
用户插入银行卡后需要输入密码,得到验证后才可进行有效的具体操作;
UR3:
在用户进入系统后,可以选择使用查询金额、存取现金、转账的功能;
UR4:
用户能够正确、安全地退出系统。
5.对上一题,再设想你是需求工程师,尝试将用户需求转换为系统(级)需求
●描述业务需求、用户需求和系统(级)需求的区别与联系。
Ø业务需求:
系统建立的战略出发点,表现为高层次的目标,它描述了组织为什么要开发系统
为了满足用户的业务需求,需求工程师需要描述系统高层次的解决方案,定义系统应该具备的特性(Feature)
参与各方必须要对高层次的解决方案达成一致,以建立一个共同的前景(Vision)
特性说明了系统为用户提供的各项功能,它限定了系统的范围(Scope)
Ø用户需求:
执行实际工作的用户对系统所能完成的具体任务的期望
描述了系统能够助用户做些什么。
直接用户、间接用户
对所有的用户需求,都应该有充分的问题域知识作为背景支持
特性:
模糊不清晰、多特性混杂、多逻辑混杂
Ø系统需求:
用户对系统行为的期望,一系列的系统行为联系在一起可以帮助用户完成任务,满足业务需求;系统需求可以直接映射为系统行为,定义了系统中需要实现的功能,描述了开发人员需要实现什么。
用户需求---->系统需求的过程:
首先需要分析问题领域及其特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型;
然后将用户需求部署到系统模型当中,即定义系列的系统行为,让它们联合起来实现用户需求,每一个系统行为即为一个系统需求。
该过程就是需求工程当中最为重要的需求分析活动,又称建模与分析活动。
SR1:
(1)系统显示用户插入磁卡的动态图像,正确标明插卡位置;
(2)用户根据提示,正确插入磁卡;
(3)系统读取磁卡卡号,界面显示输入密码的提示;
SR2:
(1)对用户输入的密码,系统自动进行字符匹配;
(2)匹配正确的话,进入具体操作界面;
(3)匹配不正确的话,警告密码不正确,并提示再次输入;
SR3:
(1)若用户选择查询金额图标和查询金额币种,系统读取银行数据库中用户对应的信息,反馈在用户界面上;
(2)若用户选择取款图标和金额币种及输入金额数目,系统读取用户请求,接受金额,修改数据库中该用户对应的信息,并提示成功与否;
(3)若用户选择存款图标和金额币种,系统弹出存款框,用户放入现金,系统接收现金并辨认真伪,并反馈存入金额数目,得到用户确认后,修改数据库中该用户对应的信息,并提示成功与否;
(4)若用户选择转账图标和金额币种并输入对方账号和转账金额数目,系统读取用户请求,修改数据库中所涉及到的用户的信息,并提示成功与否;
SR4:
(1)用户选择退出图标;
(2)系统提示拔卡信息。
6.对ATM机系统,除了功能性需求之外,还有哪些需求需要定义?
试一一写出这些需求。
性能需求:
在用户点击图标后,系统在3s内作出反应。
质量属性:
易用、可靠、安全、容错、可恢复、可维护。
约束:
当用户输入密码次数等于3次后就不再提示输入密码,并自动锁定银行卡。
第3章需求工程过程
1.除了需求开发的四个活动和需求管理活动之外,需求工程当中还有没有需要执行的活动?
如果有的话,它们是哪些活动?
给出你的理由。
解:
还有其他一些活动,例如:
过程管理活动和项目管理活动。
过程管理活动是跟踪项目开发过程,记录项目开发过程当中所遇到的问题或者教训等等。
项目管理活动是管理项目开发的一系列问题与进度,管理人员配置,以求达到最该效益。
2.需求开发过程具有迭代特性,但是不是所有项目的需求开发过程都必须是迭代完成的?
如果不是,请给出举例和理由。
解:
●不是,一般对于业务领域不熟悉的项目,需求是具有迭代性的,需要对业务领域的认知,有一个认识到知识重构的过程。
对于某些固定需求且熟悉的项目,比如学校课程的作业软件工程实践电梯系统,就不需要迭代开发
●需求获取——>需求分析——>需求规格说明——>需求验证。
当然并不是所有项目的需求开发过程是迭代完成的,比如:
当某一项目开发过程中,用户需求非常简单,开发人员已经相当明确用户需求,这时,就不需要返回到需求获取阶段以继续用户需求的获取,这样,也就不需要迭代完成。
当然,这种情况非常少见。
3.需求开发的迭代特性与软件开发过程的迭代式开发有什么关系?
它们之间会互相影响吗?
如果会,那么有哪些影响?
没什么关系
●会相互影响,需求的迭代开发决定了软件的迭代开发,因此需求的迭代导致了软件开发迭代的深度和时间长度,而开发的迭代也会体现需求的迭代。
软件开发的迭代性指的是在软件生命周期整体开发迭代,针对变更的需求或者新增的需求一种减少风险的开发模式
●需求开发的迭代特性只是软件开发过程的迭代式开发的一个子过程,软件开发过程是一个相当庞大的工程,需要在软件开发过程的各个阶段都需要进行开发工作的迭代,当然也包括需求开发中的迭代。
它们之间互相影响。
如果需求开发中的迭代不能很好地完成需求分析任务,就必将影响到软件开发过程的其他迭代阶段的进行。
增量式:
需求->需求->需求->。
。
。
->需求->开发。
。
。
无需求迭代
演化式:
需求->开发->需求->开发->需求->开发。
。
。
有需求迭代
4.需求工程细节知识的实践性对不同项目的需求开发过程的差异性有没有影响?
如果有,请说明影响是什么。
如果没有,请说明是哪些因素产生了不同项目的需求开发过程的差异性。
没有影响。
其实是需求开发过程的差异性一定程度上导致了细节知识的实践性。
现实世界问题的复杂性和差异性主要导致了需求开发过程的差异性
第4章需求获取概述
复3.在各种关于软件的调研中,无一例外地发现”缺乏用户参与”是导致软件失败的最大原因,是说明有哪些因素会导致用户参与不足?
应该怎样解决?
解:
缺乏用户参与的原因:
1.用户数量太多,选择困难2.用户认识不足,不愿参与3.用户情绪抵制,消极参与4.没有明确的用户
怎样解决:
总的来说,要解决缺乏用户参与的困难,就要求开发者在进行需求获取时,能够对系统的用户以及用户的替代原等相关涉众进行分析,了解他们的特征、类别、任务、取向等,并在需求获取中采取对策避免用户参与不足现象的发生。
需求获取的内容:
(1)问题与描述:
用来承载和解释需求的问题与特性,现实世界的业务运行状况。
(2)环境与约束:
属于一种特殊的问题与特性,限定了解系统部署的环境和条件。
需求获取的来源:
(1)涉众:
用户;客户;领域专家;市场人员、销售人员等其他用户替代源
(2)硬数据:
登记表格、单据、报表等定量文档;备忘录、日志等定性文档
(3)相关产品:
原有系统;竞争产品;协作产品
(4)重要文档:
原有系统的规格说明书;竞争产品的规格说明书;协作产品的规格说明书;客户需求文档
(5)相关技术标准和法规:
相关法律、法规及规章制度;行业规范,行业标准;领域参考模型
需求获取的方法:
(1)传统方法:
问卷调查、面谈、硬数据分析、文档检查、需求剥离等
(2)集体获取方法:
头脑风暴(Brainstorming)、专题讨论会(Workshop)、JAD等
(3)原型
(4)模型驱动方法:
基于场景的方法、基于目标的方法和多视图的方法
(4)认知方法:
任务分析(TaskAnalysis)、协议分析(ProtocolAnalysis)等
(5)基于上下文的方法:
观察、民族志(Ethnography)和话语分析(ConversationAnalysis)
第5章确定项目的前景和范围
复3.要完整的描述系统的高层解决方案,需要描述哪些方面
系统特性,解决方案的边界,解决方案的约束
案例:
1.你被任命为替换学生财务资助项目的项目经理。
你想开发一个工作陈述来定义范围并降低范围蔓延的风险。
财务资助部门的主管坚持要你15个月、600000美元的预算内替换他现有的系统就可以了。
他说这就是你需要知道的全部,不需要浪费时间开发一个工作陈述了。
省略工作陈述的风险是什么?
你将如何说服主管?
解:
【一】不做工作陈述的风险:
1.在获取需求时,用户往往从各自的立场出发考虑问题,提出相应的功能需求。
如果没有工作陈述,用户就不会从共同的方向上考虑和理解问题,对系统的期望也就产生了较大的差距。
2.没有工作陈述,就等于在用户之间发生需求冲突时,就没有可以用来指导并且调节协商的项目前景,冲突问题也就很难解决。
风险:
1需求理解错误2不能按时完成(超期超资)3做出来的不是想要的
定义范围的必要性:
1.加强用户和开发人员的理解,定义一致的理解2.降低风险
【二】:
(省略工作陈述的风险是不能明确项目的前景和范围。
如果省略了工作陈述的话,你就不能和用户进行很好的沟通与交流,这样,项目的问题也就不能明确,即,开发人员无法与涉众对问题达成共识;无法明确问题,也就无法发现正确的业务需求,无法定义良好的解决方案及系统特性,继而无法明确项目的前景和范围,这样就会造成项目的不稳定甚至失败!
)
【三】:
(通过准确的工作陈述来定义项目范围,可以帮助涉众建立现实的期望,包括第一版范围,后续版本范围、限制与排除。
第一版范围概述产品的第一个版本中实现的主要特性,描述产品的质量特性,可以为不同类别的用户提供预期利益。
后续版本能够实现更多的需求和特性,并完善最初的功能。
尤其要说明的是,管理范围蔓延的方法之一,是定义项目包含的需求与不包含的需求之间的界限,应该列出涉众可能希望得到,但不在产品或其某个特定版本计划之内的功能和特性。
)
2.某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。
她每周都收到一份过期未付款的账户名单。
这份报告已经从两年前的250个账户增加到现在的1250个账户。
为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。
严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查客户的一项或几项数据。
过去半天的工作量现在增加到了每周三天。
即使在确定了严重拖欠债务的账户后,如果没有查阅该账户三年内的历史资料,Liz也不能做出最后的信用决定(例如严厉的催款电话、断绝信用或将这个账户转给一个收账代理)。
另外,Liz需要报告所有账户中过期未付款的、拖欠债务的、严重拖欠债务的和呆死账的比例。
目前的报告中并没有给她提供这个信息。
假设现在需要你来开发一个软件,解决Liz面对的难题。
那么你认为Liz现在遇到的问题有哪些?
你希望新的软件应该达成哪些业务目标?
你怎样设计软件的高层解决方案和系统特性?
问题
业务目标
高层解决方案
系统特性
帐户太多,工作量太大
减少检查人员的工作量
能够快速、自动查询客户账户
建立一个数据库系统用来存放客户账户信息
降低工作复杂度
能够分析一个客户是否为问题账户
根据特定的判定问题账户的算法检索辨别出问题账户
需查阅账户的大量历史数据
能够给出一个问题账户的三年内的历史数据
工作人员能够检查该账户的三年内的历史数据
能够按账户号查询该账户三年历史数据
问题账户所占比例没有显示
能够计算问题账户所占比例
即时显示问题账户所占比例
根据查询结果,自动计算并显示问题账户所占比例
4.职工福利和工资顾问遇到了一些问题。
她的工作是为雇员提供他们的福利建议。
公司刚刚磋商了一个新的医疗保险方案,这个方案要求雇员从7个保健组织和首选的供应商方案中进行选择。
保健组织和供应商按照雇员的分类、贡献、免赔额、受益人、服务内容和允许的服务提供商而各不相同,目的是尽可能为雇员提供最灵活的福利,用以使公司的花费极小化并控制付给保险商的费用(这将对公司被收取的后续保险费产生一定的影响)。
这个顾问被请来为雇员选择最合适的保险方案。
她目前以手工方式答复这些请求。
但目前的选择比新计划中的选择要直接得多。
她需要解释新的选择:
它们包括什么,不包括什么,它们的费用和可能费用是多少,具有什么优缺点。
但是,雇员对新计划不信任,这种情况迫使她需要向雇员提供更多具体的建议和答复。
她可能不得不为许多雇员逐步建立假定情境——可能的最坏假定情境。
这种假定将要根据每个雇员的收入、婚姻和家庭状况、目前的健康风险等进行个人定制。
在逐步建立一些样本假定时,她发现:
(1)从信息系统部门获得工资和个人数据需要一天时间。
(2)雇员数据存储在许多文件夹中,而且并不总是被正确地更新。
当冲突数据变得很明显时,除非解决了矛盾,否则就不可能继续她的工作。
(3)计算复杂。
为一个雇员创建投资和退休假定常常需要花费一整天或更长时间。
(4)有些人担心保险计划会被提供给未授权的个人,例如以前的配偶或者非直系亲属。
(5)计算中可变条件的复杂性导致经常出错,很多错误可能一直未被发现。
假设现在需要你来开发一个软件,解决职工福利和工资顾问的问题。
那么你认为她现在遇到的问题有哪些?
你希望新的软件应该达成哪些业务目标?
你怎样设计软件的高层解决方案和系统特性?
解决方案有哪些重要的约束?
解答:
问题,业务目标,高层解决方案
问题
业务目标
高层解决方案
不能有效地从信息部门获得工资和个人数据
减少从信息部门获得工资和个人数据的时间;
度量标准(Scale):
一次从信息部门获得工资和个人数据的时间;
计量方法(Meter):
检查信息部门数据库日志;
理想标准:
减少50%;一般标准:
减少30%;最低标准:
减少20%;
由软件从信息部门的数据库中检索出工资和个人数据,减少所需信息获取的时间
雇员数据太过分散,而且不能及时正确地更新
集中雇员数据,并且正确更新
由软件来分析雇员数据的各种特征,及早识别出数据所在位置;或由软件集中处理雇员数据,及早识别出不准确的或没有及时更新的数据,提交人工处理或自行更新
计算复杂
降低计算的复杂性
由软件来处理投资和退休假定的计算的复杂过程
雇员信息不能得到及时有效正确的更新
及时有效正确地更新雇员信息
由软件来分析个人数据的准确性,及早识别出不准确的个人信息,提交人工处理;
或定时更新数,提高数据的准确性;
计算中可变条件的复杂性
降低计算中可变条件的复杂性
由软件来处理计算中可变条件的复杂性,降低出错率
雇员担心保险计划会授权给未授权的人
提供高保密性
由软件来设置保险计划的用户权限,并只能通过内网访问
由计算复杂性导致的错误没有被发现
提供发现错误,纠正错误功能
由软件来实现自动化的发现错误,纠正错误的功能
系统特性:
●根据信息部门提供的数据库查询工资和个人数据;
●根据原始数据重新整理数据并更新;
●提交查询信息;
●创建投资和退休假定的计算过程;
●通过公司的内联网访问系统,根据个人情况更新信息;
●模拟计算中可变条件的变化;
●提供最灵活的福利方案。
重要的约束有:
约束源
约束
操作性
雇员信息必须有备份
设备预算
有自己已有的系统上开发
技术要求
应用面向对象的方法
行政要求
需要信息部门的信息
系统
空间不应该超过20M字节
环境
安全性
第6章涉众分析与硬数据采样
思1.以“用户为中心”和“重视用户价值”是20世纪90年代之后的一种软件开发趋势,涉众分析可以从哪些方面实现“用户为中心”和“重视用户价值”?
解:
用户是最终使用和操作产品的人,他们是使用软件的目的是为了更好的完成自己的任务,满足组织的目标要求。
因此,一个成功的软件要能够协助用户有效的完成实际工作,用户也就自然应该是需求获取的主要信息来源。
需求工程师需要了解用户实际工作的开展状况和用户希望软件系统能够给予他们的帮助。
用户参与是以用户为中心的设计方法的核心思想,它要求开发者建立和用户的直接联系,尽早地关注与用户和用户的执行过程,通过及时获得用户的反馈来调整软件设计,以完成高质量的设计。
另一方面,用户参与就是反对通过和市场人员、管理者等中间媒介来了解用户。
在以用户为中心的设计方法中,用户需要参与软件开发的全过程,并且对最终软件设计和质量具有非常重要的影响,所以在该方法中参与用户的选择和普通的涉众代表采样有所不同,要吧他们区分开来。
思2.相当多的软件工程实践者认为:
开发团队和用户建立良好的合作关系对项目的成败具有至关重要的意义,请从需求工程的角度分析这句话,并说明采用哪些手段可能建立和用户的良好合作关系
解:
他们建立了良好的合作关系后,可以降低风险。
(建立良好合作关系以后,可以更好地增加用户的参与程度;并且,可以加深用户方和开发方之间对于彼此领域的理解;开发方可以更方便的找出用户存在的认知困境;另外,可以更方便地与用户达成对于系统理解的一致;从而降低需求理解错误而产生的风险的发生概率)
理解用户:
对用户的基本特征描述(个人特征、工作特征、少数会涉及地理特征)
评估用户:
优先级评估、风险评估、共赢分析
与用户协商,处理用户间对于项目期望冲突
用户的个人特征和工作特征的描述可以帮助更好的确定功能需求。
案例:
3.Rolland实业公司拥有着自己的软件开发部门——IS部门,负责为公司完成各种信息系统的开发。
现在,IS部门给Rolland公司的部门结构重组带来了难题。
非IS部门的管理人员正施加压力,要求实施一种新的组织结构,其中大部分需求工程师将直接向他们的业务用户组(例如会计、财务、生产)汇报工作,而不是向IS部门汇报工作。
非IS部门的管理人员认为:
在目前的结构下,由于需求工程师向信息服务部门汇报工作,所以为了方法计算处理,他们往往希望“改变每一件事情”。
为了保证系统能够满足IS的标准,非IS部门的管理人员同意在IS部门保留一个需求工程师小组,他们对所有的系统项目具有最终的决定权。
IS部门的经理们正抵制这种变化。
他们认为:
需求工程师如果离开IS部门,将会在技术上“走入歧途”;将需求工程师彼此分开会减少他们的思想交流,最终难以创新;数据文件和程序会产生不必要的重复;由于程序员仍属于IS部门,需求工程师和程序员的冲突将会增加。
在这个问题上,需求工程师分成了两个阵营,他们明白用户更直接地控制其系统的命运的好处。
然而,他们担心当遇到预算超支和技术延迟时,用户和用户管理层将很难谅解。
需求工程师还担心,如果他们被重新分配到IS部门之外,远离那些更侧重于技术的同事,会导致他们技术的退化。
关于此事的决策可能将由IS部门的上层决定。
你认为此事应该如何处理?
解:
●找出问题产生的根源,分析问题背后的问题
●涉众分析,找出冲突所在,找出矛盾的焦点
●解决信息系统部门与非信息部门之间的冲突
首先,需要细分涉众类别,这里用户,需求工程师和程序员都属于涉众类别。
需要分析他们各自的赢利条件,以在相互妥协中尽力实现一个共赢的结局。
分析涉众的关注点和兴趣取向。
了解涉众的个人特征和工作特征,以便对软件系统的功能进行合理的调整。
选择合适的代表参与项目的开发。
定期举行讨论会,让用户知道项目的进展情况。
优先级评估,风险评估,共赢分析…
4.对第2章的案例题1,你认为Jeannine在涉众分析方面有哪些工作欠缺?
根本没有涉众分析,使用的是组织级的系统,应该分析
5.为下面的每一个涉众描述选项试举一例,说明对这些选项进行描述的必要性和忽略这些选项描述可能造成的风险:
个人特征、工作特征、地理和社会特征、关注点和兴趣、目标期望、被影响程度、力量程度。
解:
个人特征:
年龄:
老年人字大
工作特征:
电脑使用程度
地理和社会特征:
文化背景:
中国和台湾
关注点和兴趣:
反对还是赞同
目标期望:
领导的目标
被影响程度:
使用频率
力量程度:
是否可以影响项目实施,领导
●涉众个