免费智能真题库 > 历年试卷 > 系统分析师 > 2018年上半年 系统分析师 下午试卷 论文
  第3题      
  知识点:   需求获取   来源   软件系统   软件需求   需求获取技术

 
软件系统需求获取技术及应用
需求获取(Requirement Discovery, RD)是一个确定和理解不同类用户的需要和约束的过程。需求获取是否科学、充分对所获取的结果影响很大,直接决定了系统开发的目标和质量。由于大部分用户无法完整的描述需求,也不可能看到系统的全貌,所以在需求获取中,系统分析师需要与用户进行有效沟通和合作才能成功。系统分析师根据要获取的信息内容和信息来源采用不同的需求获取技术,并且熟练地在实践中运用它,进而获得用于描述系统活动的特定软件需求,构建系统开发目标和质量要求。
 
问题:3.1   请围绕“软件系统需求获取技术及应用”论题,依次从以下三个方面进行论述。
1.简要叙述你参与的软件开发项目以及你所承担的主要工作。
2.详细说明目前主要有哪些需求获取技术,不同需求获取技术各自有哪些特点。
3.根据你所参与的项目,具体阐述如何根据需求内容采用不同的需求获取技术获取系统需求。
 
 
 

   知识点讲解    
   · 需求获取    · 来源    · 软件系统    · 软件需求    · 需求获取技术
 
       需求获取
        在需求获取的过程中,主要解决需求调查的问题。要想做好需求调查,必须清楚地了解3个问题。
        (1)What:应该搜集什么信息。
        (2)Where:从什么地方搜集这些信息。
        (3)How:用什么机制或者技术来搜集这些信息。
               要捕获的信息
               从宏观的角度来看,要获取的信息包括3大类:一是与问题域相关的信息(如业务资料、组织结构图、业务处理流程等),二是与要求解决的问题相关的信息,三是用户对系统的特别期望与施加的任何约束的信息。
               信息的来源
               除了要明确地知道我们需要什么方面的信息,还要知道它们可以从哪里获得。而通常情况下,这些信息会藏于客户、原有系统、原有系统用户、新系统的潜在用户、原有产品、竞争对手的产品、领域专家、技术法规与标准里。
               面对这么多种可能,在具体的实践中该从何下手呢?其实也很简单,首先从人的角度来说,应该首先对项目干系人进行分类,然后从每一类项目干系人中找到1或2名代表;而对于文档、产品而言,则更容易有选择地查阅。
               在制定需求获取计划的时候,可以列出一个表格,第1列是我们想了解的信息,第2列是信息可能的来源,这样就能够建立起一一对应的关系,使得需求获取工作更加有的放矢,也更加高效。
               需求捕获技术
               当我们知道需要去寻找什么信息,并且也找到了信息的来源地,接下来就需要选择合适的技术进行需求获取了。
               (1)用户访谈。用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种,结构化是指事先准备好一系列问题,有针对地进行;非结构化则是只列出一个粗略的想法,根据访谈的具体情况来发挥。最有效的访谈是结合这两种方法进行。用户访谈具有良好的灵活性,有较宽广的应用范围,但是也存在着许多困难,诸如客户经常较忙,难以安排到时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要分析人员有足够的领域知识;另外,在访谈时会遇到一些对于组织来说比较机密和敏感的话题。因此,这看似简单的技术,也需要分析人员拥有足够多的经验和较强的沟通能力。
               (2)用户调查。用户访谈时最大的难处在于很多关键的人员时间有限,不容易安排到过多的时间;而且客户面经常较广,不可能一一访谈。因此,我们就需要借助用户调查,通过精心设计要问的问题,然后下发到相关的人员手里,让他们填写答案。这样就可以有效的克服前面提到的两个问题。但是与用户访谈相比,用户调查最大的不足就是缺乏灵活性;而且双方未见面,分析人员无法从他们的表情等其他动作来获取一些更隐性的信息;还有就是客户有可能在心理上会不重视一张小小的表格,不会认真对待从而使得反馈的信息不全面。因此较好的做法是将这两种技术结合使用。具体来说,就是先设计问题,制作成为用户调查表,下发填写完后,进行仔细的分组、整理、分析,以获得基础信息,然后再针对这个结果进行小范围的用户访谈,作为补充。
               (3)现场观摩。对于许多较为复杂的流程和操作而言,是比较难以用言语表达清楚的,而且这样做也会显得很低效。因此,针对这一现象,分析团队可以就一些较复杂、较难理解的流程、操作采用现场观摩的方法来获取需求。具体来说,就是走到客户的工作现场,一边观察,一边听客户的讲解,甚至可以安排人员跟随客户工作一小段时间。这样就可以使得分析人员更加直观地理解需求。
               (4)阅读历史文档。这种方式也称为“文档考古”。对于一些数据流比较复杂的,工作表单较多的项目,有时是难以通过说,或者通过观察来了解需求细节的。这个时候就可以借助于阅读历史文档的方法,对历史存在的一些文档进行研究,从中获得所需的信息。这个方法的主要风险是历史的文档可能与新系统的流程、数据有一些不吻合的地方,并且还可能承载一些原有系统的缺陷。要想有效地避免和发现这些问题,就需要分析人员能够运用自己的聪明才智,将其与其他需求捕获技术结合对照。还有一个负面因素就是,这些历史的文档中记载的信息有可能涉及到客户的商业秘密,因此对数据信息的保密也是分析人员基本的职业道德。
               (5)联合讨论会。这是一种相对来说成本较高的需求获取方法,但也是十分有效的一种。它通过联合各个关键客户代表、分析人员、开发团队代表一起,通过有组织的会议来讨论需求。通常该会议的参与人数为6~18人,召开时间为1~5小时。在会议之前,应该将与讨论主题相关的材料提前分发给所有将要参加会议的人。在会议开始之后,首先应该花一些时间让所有的与会者互相认识,以使交流在更加轻松的气氛下进行。会议的最初,就是针对所列举的问题进行逐项专题讨论,然后对原有系统、类似系统的不足进行开放性交流,第三步则是大家在此基础上对新的解决方案进行一番设想,在过程中将这些想法、问题、不足记录下来,形成一个要点清单。第四步就是针对这个要点清单进行整理,明确优先级,并进行评审。这种联合讨论会将会起到群策群力的效果,对于一些问题最有歧义的时候、对需求最不清晰的领域都是十分有用的一种技术。而且最大的难度就是会议的组织,要做到言之有物,气氛开放,否则将难以达到预想的效果。
               需求捕获的策略
               在整个需求过程中,需求捕获、需求分析、需求定义、需求验证四个阶段不是瀑布式的发展,而且应该采用迭代式的演化过程。也就是说,在进行需求捕获时,不要期望着一次就将需求收集完,而是应该捕获到一些信息后,进行相应的需求分析,并针对分析中发现的疑问和不足,带着问题再进行有针对性的需求捕获工作。
 
       来源
        (1)由信息技术支持工程师提供。召集有经验的信息技术支持工程师,要求他们提供知识库的内容,知识库的建立并不是某个人智慧的积累,毕竟一个人的知识和经验有限,我们需要在企业中营造这样一种乐意共享自身知识的氛围,能够提供有效知识条目的工程师能够获得奖励。发布一系列奖惩和鼓励措施。
        (2)从过往的事件和问题的处理日志中提炼。事件与问题的处理过程需要详细记录,能为下一次处理相同事件提供指导和参考。知识库内容可以从这些处理日志中提炼后获得,事件处理步骤的详细记录对于知识库内容的建立有着重要的帮助。
 
       软件系统
        网络系统软件包括网络操作系统和网络协议等。网络操作系统是指能够控制和管理网络资源的软件,是由多个系统软件组成,在基本系统上有多种配置和选项可供选择,使得用户可根据不同的需要和设备构成最佳组合的互联网络操作系统。网络协议是保证网络中两台设备之间正确传送数据的约定。
 
       软件需求
        在进行需求获取之前,首先要明确需要获取什么,也就是需求包含哪些内容。软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通常,这些需求包括功能需求、性能需求、用户或人的因素、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密需求、可靠性需求、软件成本消耗与开发进度需求等,并预先估计以后系统可能达到的目标。此外,还需要注意其他非功能性的需求。具体内容如下。
        (1)功能需求。
        (2)性能需求。
        (3)用户或人的因素。
        (4)环境需求。
        (5)界面需求。
        (6)文档需求。
        (7)数据需求。
        (8)资源使用需求。
        (9)安全保密要求。
        (10)可靠性要求。
        (11)软件成本消耗与开发进度需求。
        (12)其他非功能性要求。
               需求分析的任务
               需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。具体来说有下面几点。
               (1)确定软件系统的综合要求,包括系统界面、功能、性能、安全性、保密性、可靠性、运行等方面的要求。
               (2)分析软件系统的数据要求,包括基本数据元素、数据元素之间的逻辑关系、数据量、峰值等。
               (3)导出系统的逻辑模型,在结构化方法中可用数据流图来描述;在面向对象分析方法中可以用类模型来描述。
               (4)修正项目开发计划。
               (5)如有必要,可开发一个原型系统以验证用户的需求。
               软件需求的分类
               下面介绍软件需求的分类。
               (1)功能需求。所开发的软件必须具备什么样的功能。
               (2)非功能需求。它是指产品必须具备的属性或品质,如可靠性、性能响应时间、容错性和可扩展性等。
               (3)设计约束。其也称为限制条件、补充规约,这通常是对解决方案的一些约束说明。
               软件需求分析方法
               需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成。它定义了表示系统逻辑视图和物理视图的方式。大多数的需求分析方法是由数据驱动的,数据域具有数据流、数据内容和数据结构3种属性。通常一种需求分析方法总要利用其中一种或几种属性。
 
       需求获取技术
        充分了解网络应用系统需求是做好需求分析的关键。需求分析人员在与用户交流和观察工作流程获取初步需求时,采取一定的技术和技巧可以快速、准确地获取初步需求。
               向用户提出问题的原则
               在访谈或会议前,分析人员应该按照一定原则精心准备一系列问题,通过用户对问题的回答获取有关信息,逐步理解用户对目标网络的要求,这些原则是:
               (1)问题应该是循序渐进的,即首先关心一般性、整体性问题,然后再讨论细节性问题。
               (2)所提出的问题不应限制用户的回答,尽量让用户在回答过程中自由发挥,这就要求在组织问题时尽量客观、公正。
               (3)逐步提出的问题在汇总后应能反映网络需求或其子需求的全貌,并覆盖用户对目标网络系统或其子系统在功能、性能等方面的要求。细节问题可以留待后期设计阶段解决。
               收集需求的方法
               网络规划设计师在收集需求时,必须向用户反馈求得确认,需要上下文无关的内容,需要良好的沟通技巧。一般可从全局、个人和团队的角度来考虑收集需求的方法。从全局的角度出发,可以这样收集需求:
               (1)检查现有的网络状况、网络软件使用情况。
               (2)调查其他公司在构建类似网络系统时所使用的方法、取得的效果。
               (3)实地参观相似网络系统。
               这种收集方法的好处在于,有利于需求分析人员熟悉新系统的情况,了解最起码的网络系统需求;而缺点是,由于注意力放在以前的工作上,可能会引起对未来的改进工作的忽略。
               获取用户需求的常用方法如下:
               (1)采访:采访至少要有需求分析人员和一个用户一起讨论网络系统的需求。需求采访的目的是收集信息,最好通过有趣的方式进行。
               (2)观察:观察是需求分析人员到特定地点,观察问题领域涉及的人、机器的活动。通过观察,需求分析人员可以得到问题领域的第一手资料。
               (3)问卷及调查:问卷是从大量人群收集信息的反馈表。一对一的交谈加上观察可能是收到需求最常用的方法,但这个方法耗时较长,不太方便。
               (4)建立原型以得到潜在用户的反馈。这里的原型是指在实验室内搭建一个相对较小、模拟的网络环境。
               产生歧义性的原因
               在记录需求的时候,要避免出现需求歧义性。需求歧义性的三个主要来源是遗漏的需求、含糊的措辞、新加的成分。需求分析人员有责任在最终需求分析规格说明文档中消除需求歧义性。
               分析人员不能被动地接受用户关于网络系统及项目背景的需求,而是要结合自己的网络设计经验,主动剔除不合理的、目光短浅的用户需求,从发展角度考虑问题,提出相应的方案。需求的获取是有章可循的,不能盲目进行。采用科学的需求获取技术可以快速、准确地获取需求,避免不必要的重复工作。
   题号导航      2018年上半年 系统分析师 下午试卷 论文   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
 
第3题    在手机中做本题