第四章调查系统需求1系统需求调查和分析是开发软件系统最重要的阶段,也是最困难的阶段。在以往建设失败的项目中,80%是由于系统分析的不明确而造成的。因此一个项目成功的关键因素之一,就是对系统分析的把握程度。2需求的调研其实做需求调研的时候最重要的目的在于资料收集,或许小孩的那种打破砂锅的方式会引起客户的反感,但是实际项目中往往需要的就是这些比较周全的调研方式,能够考虑到的问题点都需要和客户确认,尽量避免想当然的做法,只是采用的方式可能需要优化一下,采用良好的方式,尽量得到客户的最大配合。34系统分析各阶段的目标范围定义阶段这个项目看起来是否值得考虑?问题分析阶段真的值得构建一个新系统吗?需求分析阶段用户需要什么?想从新系统中得到什么?逻辑设计阶段新系统必须做什么?决策分析阶段最佳方案是哪一个?5收集信息分析员通过与用户交谈或观察工作得到信息。通过回顾计划文档和方案说明得到信息。分析员需要收集技术信息。通过对现有用户和未来用户的活动的区分和理解,通过对目前和将来活动的发生地点的区分,并通过区分公司内部和外部所有其他系统的接口来理解现有的系统。关键问题:是否已经拥有了全部的信息来定义系统所必须完成的工作?6目标与约束目标:项目是否成功的度量准则。即,给定合适的资源下,希望实现的预期结果。如新系统处理订单的时间必须比现在减少50%以上。目标必须是精确的、可度量的。约束:针对实现目标的限制或界限。如最终期限、预算和所需技术,一般来说,约束是不能改变的。7定义系统需求收集到的信息:描述技术需求的和功能需求。功能需求:需要系统完成什么样的工作?定义功能需求:并不是简单地写下一些事实和数据,而是要创建许多不同类型的模型来帮助记录和关联系统需求。8需求的优先级划分一旦已经充分理解了系统的需求,并且需求的细节模型也已经设计完成,这时要确定哪种系统需求和技术需求对系统来说是非常关键的。即对用户提出的功能进行优先级的划分。完成这项活动时,应该回答的关键问题:系统要完成的最重要的事是什么?9逻辑模型能够很详细地展示系统需要完成哪些功能,而不依赖任何技术的模型。通常系统分析包括创建详细的逻辑模型。10物理模型表明系统将如何真正实现的模型。系统设计包括创建详细的物理模型。11分析阶段的活动及相应的关键问题分析阶段的活动关键问题收集信息我们是否已经拥有了全部的信息来定义系统所必须完成的工作定义系统需求我们需要系统做什么需求的优先级划分系统要完成的最重要的事是什么构建可行性的发现原型我们可以证明这种技术能够实现我们想让它完成的那些功能吗?我们是否已经构建出一些原型可以使用户完全理解新系统的潜在功能产生、评估候选方案创建系统的最好方案是什么和管理部门一起复查各种建议我们是否应该继续、设计和实现我们提出的系统12什么是需求获取(发现)?需求获取(Requirementsdiscovery):系统分析员用来识别或提取系统问题和解决用户需求的过程和技术。系统需求:定义了软件系统必须实现的功能,或者系统必须具备的特性。有时也称为业务需求。13功能需求与非功能需求功能需求:描述系统必须完成的活动或过程的一种系统需求。非功能需求:描述系统必须具备的特性、特点、品质和约束条件。14续功能需求是根据公司进行商业交易的过程和商业规则确定的。功能需求经常以满足系统改进目标所需的输入、输出、过程和存储的数据的形式定义。非功能需求的例子如:性能(吞吐量和响应时间)、易学易用性、效益、安全。15需求获取过程发现问题和分析问题获取需求归档需求和分析需求管理需求16发现问题和分析问题获取需求是为了解决问题。为了获得成功,系统分析员必须熟练掌握发现问题和分析问题的技术。没有经验的系统分析员在试图分析问题时常犯的一个错误是把症状当成问题。17获取需求给出对问题的理解,系统分析员就可以开始定义需求。发现事实:通过研究、会议、面谈、问卷、采样和其它技术收集系统问题、需求和优先顺序的一种形式化过程(调查研究)。也称为数据收集或信息收集。18归档和分析需求对需求草案进行归档用例决策表需求表分析需求解决问题遗漏的需求矛盾的需求不可行的需求重叠的需求二义性的需求形式化需求需求定义文档与利益相关人员沟通19需求管理管理对需求改变的过程。整个系统生命期系统需求都有可能发生变化;研究表明,在系统完成之间,一个项目50%以上的需求可能发生变化。20需求获取法系统分析的所有方法都需要某种形式的需求获取。两种主要技术:调查研究技术——也叫信息收集(或寻求事实),收集有关系统问题、方案需求和需求优先权等的信息。可采用抽样、实地调研、观察、咨询、面谈。联合需求计划(JRP)——将所有的系统所有者、系统用户、系统分析员和设计人员、构造人员组织在一起,进行系统分析。JRP是联合应用开发的一部分。214.3信息收集技术主要问题复查现有报表、表格和过程描述主持与用户的面谈和讨论观察并记录商业过程分发和收集调查表主持联合需求计划(JRP)会议22主要问题1.业务处理过程是什么样的2.业务过程应该怎样完成3.需要什么样的信息主题对用户来说的问题业务处理过程是什么样的你要干什么业务过程应该怎样完成如何完成它?或需要哪些步骤需要什么样的信息你要使用哪些信息?你要使用什么样的表单或报告231.业务处理过程是什么样的主题“你要干什么?”的核心是要理解商业功能。该问题是可以进行“沟通”的第一步。作为一个系统分析员,你必须仔细地识别出在改进的系统中,这些商业功能哪些是重要的,哪些是需要保留的,而哪些是可能要删除的。242.商业过程应该怎样完成主题“如何完成它?”是把讨论从现有系统转向新系统的方法。核心是新系统应该如何支持这项功能,而不是它在现有系统下如何执行。用户通常只愿谈论现有的系统,但对系统分析员来说,超越现有的处理过程才是最关键的。他(她)必须能够使用户看到将由新技术带来的商业处理方法更高效、更实用。253.需要什么样的信息主题“需要哪些信息?”通过定义新系统必须支持的具体信息详细描述了第三个问题。对第二和第三个问题的回答形成了定义系统需求的基础。新系统分析员的缺点:没有对所有需要的信息进行区分。为了得出正确的解决方案,分析员必须了解任何细节的本质情况。26复查现有报表、表格和过程描述外部信息源:公司外部,即业界的专业公司和其他一些公司。内部信息源:现有的商业文档和过程描述。获得对过程最初理解的一个好方法。新系统分析员对现有系统的初步复查将是他们很快跟上开发速度。识别出在面谈中也许不会提及的商业规则。27对现存的文档、表格、文件进行抽样组织结构图描述问题的备忘录和其它文档当前系统的标准操作规程完整的表格手册和计算机屏幕及报表数据库样本……28从收集到的文档中可以得出问题的症状与原因组织中谁理解这些问题支持目前系统的业务功能需要由系统收集和报告的数据的数据类型需要通过面谈了解的问题291.准备面谈确立面谈目的确定要包括的相关用户确定参加会议的项目小组成员建立要讨论的问题和要点列表复查有关文档和资料确立时间和地点通知所有参加者有关会议的目的、时间和地点302.主持面谈衣着得体准时到达限制面谈时间寻找异常和错误情况深入调查细节认真做好记录指出和记录未作回答的条目和未解决的问题313.面谈的后续工作复查笔记的准确性、完整性和可理解性把所收集的信息转化为适当的模型和文档确定需要进一步澄清的问题域适当的时候向参加会议的每一个人发一封感谢信(备忘录)32打开沟通渠道的指南带着积极的态度开会让别人放松让他们知道你在聆听问问题不要做任何假设记笔记33观察观察商业过程可以帮助理解业务功能。观察时必须能够根据相关的业务过程将新系统可视化。对办公室进行快速浏览或者自己亲身实践用户的工作。注意理解并关心用户的需要和感情。直接参加业务实践这是一种为弄清某种较复杂业务活动的现状而采取的方法,无疑这是一种好的方法。系统开发者参加手工系统的业务实践,这是缩短用户与开发者之间的距离,取得共同评议的最好办法。用这种调查方法所调查的结果是最准确、最可靠的,这在后面的分析、设计阶段就可以减少与用户打交道的时间,建成的应用系统也将会较符合实际,也较可靠。开发人员参加业务实践尽管很好,但这太浪费时间,再说也没有多少业务活动非要亲自去实践不可,所以这种方法不是用得很多的。3435使用活动图来进行记录一种工作流图,用来描述一个过程中的多个顺序活动和并行活动,即活动图的目标是显示复杂过程内部的各个步骤及它们之间的顺序约束。活动图有助于对业务过程、工作流、数据流和复杂算法进行建模。也可以对用例实现甚至是程序实现来建模。活动图很像传统的流程图,但与传统的流程图不同,活动图可以同时显示顺序和并发的控制流程。对于分布式系统而言,这一点非常重要。活动图可用于任何观点和目的,但常用于可视化业务流程及过程和用例。分发和收集调查表一般而言制作一份调查表至少要经过如下三个步骤:①明确调查目的和对象。②设计问题。③决定问题顺序。设计问题时要尽量做到以下几点:①问题明确、简练、易于回答。②问题不能太多,以15~20个为宜。③用词通俗,忌技术性词汇。④避免诱导性问题。3637主持联合需求计划会议联合需求计划(JRP):是用于加快系统需求调查的一种方法。重要系统相关者都要出席会议,从而促成和做出决定。有关领导、管理人员、用户、技术人员和项目小组成员一起参加。会议主持者要使参加者专注于各自的工作38课堂练习1.以下是好的系统改进目标吗?为什么是,或者为什么不是?①降低处理订单所需的时间。②新的系统必须使用Oracle数据库存储数据。③数据输入屏幕必须重新设计以使它们更友好。④联机订单处理的客户满意度必须提高10%。2.系统分析各阶段的目标是什么?3.信息收集的主要问题有哪些,技术有哪些?4.目标与约束的区别是什么?5.分析阶段的活动及相应的关键问题有哪些?391.降低处理订单所需的时间。不是,因为没有规定可度量的期限。2.新的系统必须使用Oracle数据库存储数据。不是,因为这是一个系统约束,而非系统目标。3.数据输入屏幕必须重新设计以使它们更友好。不是,因为这只是一个要求(而且是一个非常含糊不清的要求),不是目标。4.联机订单处理的客户满意度必须提高10%。是,因为这是一个准确的、可度量的业绩声明。解答