免费智能真题库 > 历年试卷 > 系统分析师 > 2019年上半年 系统分析师 下午试卷 论文
  第1题      
  知识点:   需求定义   需求分析   功能性   开发人员   可靠性   需求分析方法

 
论系统需求分析方法
系统需求分析开发人员经过调研和分析,准确理解用户和项目的功能、性能、可靠性等要求,将用户非形式的诉求表述转化为完整的需求定义,从而确定系统必须做什么的过程。系统需求分析具体可分为功能性需求、非功能性需求与设计约束等三个方面。
 
问题:1.1   请围绕“系统需求分析方法”论题,依次从以下三个方面进行论述。
1. 概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。
2. 详细论述系统需求分析的主要方法。
3. 结合你具体参与管理和开发的实际软件项目,说明是如何使用系统需求分析方法进行系统需求分析的,说明具体实施过程以及应用效果。
 
 
 

   知识点讲解    
   · 需求定义    · 需求分析    · 功能性    · 开发人员    · 可靠性    · 需求分析方法
 
       需求定义
        需求定义的过程也就是形成需求规格说明书的过程,通常有两种需求定义的方法,分别是严格定义方法和原型方法。
               严格定义方法
               严格定义(预先定义)是目前采用较多的一种需求定义方法。在采用严格定义的传统的结构化开发方法中,各个工作阶段排列成一个理想的线性开发序列,在每一工作阶段中,都用上一阶段所提供的完整、严格的文档作为指导文件,因此它本质上是一种顺序型的开发方法。
               在传统的结构化开发中,需求的严格定义建立在以下的基本假设上:
               (1)所有需求都能够被预先定义。假设意味着,在没有实际系统运行经验的情况下,全部的系统需求均可通过逻辑推断得到。这对某些规模较小、功能简单的系统是可能的,但对那些功能庞大、复杂且较大的系统显然是困难的。即使事先做了深入细致的调查和分析,当用户见到新系统的实际效果时,也往往会改变原先的看法,会提出修改或更进一步增加系统功能的要求,所以再好的预先定义技术也会经常反复。这是因为人们对新事物的认识与理解将随着直观、实践的过程进一步加深,这是与人类认识世界的客观规律相一致的。所以,能够预先定义出所有需求的假设在许多场合是不能成立的。
               (2)开发人员与用户之间能够准确而清晰地交流。假设认为,用户与开发人员之间,虽然每人都有自己的专业、观点、行话,但在系统开发过程中可以使用图形/文档等通信工具进行交流,进行清晰、有效的沟通,这种沟通是必不可少的。可是,在实际开发中,往往对一些共同的约定,每个人可能都会产生自己的理解和解释。即使采用结构化语言、判定树、判定表等工具,仍然存在精确的、技术上的不严密感。这将导致人们有意无意地带有个人的不同理解而自行其是,所以在多学科、多行业人员之间进行有效的通信交流是有一定困难的。
               (3)采用图形/文字可以充分体现最终系统。在使用严格定义需求的开发过程中,开发人员与用户之间交流、通信的主要工具是定义报告,包括叙述文字、图形、逻辑规则和数据字典等技术工具。它们都是静止的、被动的,不能实际演示,很难在用户头脑中形成一个具体的形象。因此,要用静止的图形/文字描述来体现一个动态的系统是比较困难的。
               除了所论述的情况外,上述基本假设还将导致严格定义的结构化开发方法存在以下缺陷:
               (1)文档量大。由于在结构化方法的每个阶段都必须写出规范、严密的各种文档,这些文档虽然有助于开发人员之间、用户与开发人员之间的通信交流,有助于开发过程的规范化,但由于编写文档花费大量人力和时间,导致系统开发周期增大。
               (2)开发过程可见性差,来自用户的反馈太迟。由于在需求定义、系统设计阶段都不能在用户终端显示新系统的实际效果,一直到系统实现阶段结束,用户才有机会通过对新系统的实际操作和体会来提出他们对新系统的看法和意见,但此时整个开发已近尾声,若想修改前几段的工作或修改需求定义,都将付出较大的代价,有时这种修改甚至会导致整个系统的失败。
               需求的严格定义的基本假设在许多情况下并不成立,传统的结构化方法面临着一些难以跨越的障碍。为此,需要探求一种变通的方法。
               原型方法
               原型方法以一种与严格定义法截然不同的观点看待需求定义问题。原型化的需求定义过程是一个开发人员与用户通力合作的反复过程。从一个能满足用户基本需求的原型系统开始,允许用户在开发过程中提出更好的要求,根据用户的要求不断地对系统进行完善,它实质上是一种迭代的循环型的开发方式。
               采用原型方法时需要注意的几个问题。
               (1)并非所有的需求都能在系统开发前被准确地说明。事实上,要想严密、准确地定义任何事情都是有一定难度的,更不用说是定义一个庞大系统的全部需求。用户虽然可以叙述他们所需最终系统的目标及大致功能,但是对某些细节问题却往往不可能十分清楚。一个系统的开发过程,无论对于开发人员还是用户来说,都是一个学习和实践的过程,为了帮助他们在这个过程中提出更完善的需求,最好的方法就是提供现实世界的实例——原型,对原型进行研究、实践,并进行评价。
               (2)项目参加者之间通常都存在交流上的困难,原型提供了克服该困难的一个手段。用户和开发人员通过屏幕、键盘进行对话和讨论、交流,从他们自身的理解出发来测试原型,一个具体的原型系统,由于直观性、动态性而使得项目参加者之间的交流上的困难得到了较好的克服。
               (3)需要实际的、可供用户参与的系统模型。虽然图形和文字描述是一种较好的通信交流工具,但是,其最大缺陷是缺乏直观的、感性的特征,因而不易理解对象的全部含义。交互式的系统原型能够提供生动的规格说明,用户见到的是一个“活”的、实际运行着的系统。实际使用在计算机上运行的系统,显然比理解纸面上的系统要深刻得多。
               (4)有合适的系统开发环境。随着计算机硬件、软件技术和软件工具的迅速发展,软件的设计与实现工作越来越方便,对系统进行局部性修改甚至重新开发的代价大大降低。所以,对大系统的原型化已经成为可能。
               (5)反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。
               对系统改进的建议来自经验的发展,应该鼓励用户改进他们的系统,只有做必要的改变后,才能使用户和系统间获得更加良好的匹配,所以,从某种意义上说,严格定义需求的方法实际上抑制了用户在需求定义以后再改进的要求,这对提高最终系统的质量是有害的。另一方面,原型方法的使用并不排除严格定义方法的运用,当通过原型并在演示中得到明确的需求定义后,应采用行之有效的结构化方法来完成最终系统的开发。
               软件需求说明书
               软件需求说明书(Software Requirements Specification, SRS)是需求开发阶段的成果,代表用户和开发人员对软件系统的共同理解,是软件项目后期开发和维护的基础。不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。SRS需要把用户对软件的功能需求和非功能需求进行详细记录和准确描述,它应该尽可能完整地描述系统预期的外部行为和用户可视化行为。除了设计和实现上的限制,软件需求说明不应该包括设计、构造、测试或工程管理的细节,也不应该包括对算法的详细过程描述。
               可以使用以下3种方法编写SRS。
               (1)用好的结构化和自然语言编写文本型文档。
               (2)建立图形化模型,这些模型可以描述转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系。
               (3)编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求。
               由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少数软件开发人员才熟悉,更不用说客户了。虽然结构化的自然语言具有许多缺点,但在大多数软件工程中,它仍是编写需求文档最现实的方法。包含了功能和非功能需求的基于文本的软件需求规格说明已经为大多数项目所接受。图形化分析模型通过提供另一种需求视图,增强了软件需求的规格说明。
 
       需求分析
        需求分析的方法种类繁多,不过如果按照分解的方式不同,可以很容易地划分出几种大类型:
        (1)结构化分析方法。本节后续内容将详细讨论SA的内容。
        (2)面向对象分析方法。将在10.3节中进行详细介绍。
        (3)面向问题域的分析(Problem Domain Oriented Analysis, PDOA)方法。PDOA更多地强调描述,而少强调建模。它的描述大致分为关注问题域和关注解系统的待求行为这两个方面。问题框架是PDOA的核心元素,是将问题域建模成为一系列相互关联的子域。也可以把问题框架看作是开发上下文图,但不同的是上下文图的建模对象是针对解系统,而问题框架则是针对问题域。也就是说,问题框架的目标就是大量地捕获更多有关问题域的信息。PDOA方法现在还在研究阶段,并未广泛应用。
               业务流程分析
               业务流程分析的目的是了解各个业务流程的过程,明确各个部门之间的业务关系和每个业务处理的意义,为业务流程的合理化改造提供建议,为系统的数据流程变化提供依据。
               业务流程分析的步骤如下:
               (1)通过调查掌握基本情况。
               (2)描述现有业务流程(绘制业务流程图)。
               (3)确认现有业务流程。
               (4)对业务流程进行分析。
               (5)发现问题,提出解决方案。
               (6)提出优化后的业务流程。
               在业务流程图中使用的基本符号如下图所示。
               数据流图
               DFD是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。DFD还可被认为是一个系统模型,在信息系统开发中,一般将它作为需求说明书的组成部分。
               
               业务流程图符号
               DFD从数据传递和加工的角度,利用图形符号通过逐层细分地描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能。具体来说,DFD的主要作用如下:
               (1)DFD是理解和表达用户需求的工具,是系统分析的手段。由于DFD简明易懂,理解它不需要任何计算机专业知识,因此通过它同客户交流很方便。
               (2)DFD概括地描述了系统的内部逻辑过程,是系统分析结果的表达工具,因而也是系统设计的重要参考资料,是系统设计的起点。
               (3)DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
               在DFD中,通常会出现4种基本符号,分别是数据流、加工、数据存储和外部实体(数据源及数据终点)。数据流是具有名字和流向的数据,在DFD中用标有名字的箭头表示。加工是对数据流的变换,一般用圆圈表示。数据存储是可访问的存储信息,一般用直线段表示。外部实体是位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示。下图是一个典型的DFD示例。
               
               办理取款手续的DFD
               为了表达数据处理过程中的数据加工情况,用一个DFD是不够的。稍微复杂的实际问题,在DFD中常常出现十几个甚至几十个加工。这样的DFD看起来很不清楚。层次结构的DFD能很好地解决这一问题。按照系统的层次结构进行逐步分解,并以分层的DFD反映这种结构关系,能清楚地表达整个系统。
               下图给出分层DFD的示例。数据处理S包括3个子系统1、2、3。顶层下面的第一层DFD为DFD/L1,第二层的DFD/L2.1、DFD/L2.2及DFD/L2.3分别是子系统1、2和3的细化。对任何一层数据流图来说,它的上层图称为父图,在它下一层的图则称为子图。
               
               分层数据流图
               概括地说,画DFD的基本步骤,就是“自顶向下,逐层分解”。检查和修改的原则如下:
               (1)DFD中的所有图形符号只限于前述4种基本图形元素。
               (2)顶层DFD必须包括前述4种基本元素,缺一不可。
               (3)顶层DFD中的数据流必须封闭在外部实体之间。
               (4)每个加工至少有一个输入数据流和一个输出数据流。
               (5)在DFD中,需按层给加工框编号。编号表明了该加工处在哪一层,以及上下层的父图与子图的对应关系。
               (6)规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡。
               (7)可以在DFD中加入物质流,帮助用户理解DFD。
               (8)图上每个元素都必须有名字。
               (9)DFD中不可夹带控制流。
               数据字典
               数据字典是关于数据的信息的集合,也就是对DFD中包含的所有元素的定义的集合。DFD和数据字典共同构成系统的逻辑模型。没有DFD,数据字典难以发挥作用;没有数据字典,DFD就不严格。只有把DFD和对DFD中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
               数据字典的设计包括:数据流设计、数据元素字典设计、数据处理字典设计、数据结构字典设计和数据存储设计。这些设计涵盖了数据的采集和范围的确定等信息。在数据字典的每一个词条中应包含以下信息:名称、别名或编号、分类、描述、何处使用。
               对加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树及判定表。
               (1)结构化语言:介于自然语言和形式语言之间的一种半形式语言,在自然语言基础之上加了一些限度,使用有限的词汇和有限的语句来描述加工逻辑。结构化语言是受结构化程序设计思想启发而扩展出来的。结构化程序设计只允许3种基本结构。结构化语言也只允许3种基本语句,即简单的祈使语句、判断语句和循环语句。与程序设计语言的差别在于结构化语言没有严格的语法规定,与自然语言的不同在于它只有极其有限的词汇和语句。结构化语言使用3类词汇:祈使句中的动词、数据字典中定义的名词及某些逻辑表达式中的保留字。
               (2)判定树:若一个动作的执行不只依赖一个条件,而与多个条件有关,那么这项策略的表达就比较复杂。如果用结构化语言的判断语句,就有多重嵌套,层次一多,可读性就会下降。用判定树来表示,可以更直观一些。
               (3)判定表:一些条件较多、在每个条件下取值也较多的判定问题,可以用判定表表示。判定表能清晰地表达复杂的条件组合与应做动作之间的对应关系,判定表的优点是能够简洁、无二义性地描述所有的处理规则。但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构,因此判定表不能成为一种通用的设计工具。
 
       功能性
        功能性是指当软件在指定条件下使用时,软件产品满足明确和隐含要求功能的能力。
               适合性
               适合性是指软件产品为指定的任务和用户目标提供一组合适的功能的能力。
               准确性
               准确性是指软件产品具有所需精确度的正确或相符的结果及效果的能力。
               互操作性
               互操作性是指软件产品与一个或更多的规定系统进行交互的能力。
               保密安全
               保密安全是指软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,但不拒绝授权人员或系统对它们的访问。
               功能性依从性
               功能性依从性是指软件产品依附于同功能性相关的标准、约定或法规以及类似规定的能力。
 
       开发人员
        ①多媒体软件:项目负责人、学科教学专家、教学设计专家、软件工程师、多媒体素材制作专家和多媒体课件制作专家。
        ②多媒体电子出版物:策划编导、文字编辑、美术编辑、音乐编辑和多媒体编辑。
 
       可靠性
        (1)完备性。完备性评价指标及测量,如下表所示。
        
        完备性评价指标及测量
        (2)连续性。连续性评价指标及测量,如下表所示。
        
        连续性评价指标及测量
        
        (3)稳定性。稳定性评价指标及测量,如下表所示。
        
        稳定性评价指标及测量
        (4)有效性。有效性评价指标及测量,如下表所示。
        
        有效性评价指标及测量
        (5)可追溯性。可追溯性评价指标及测量,如下表所示。
        
        可追溯性评价指标及测量
        
 
       需求分析方法
               任务分布图方法
               使用任务分布图方法应关注下面两点:
               ①有哪些交易任务。
               ②在一天的某些特定时刻系统都有哪些主要操作。
               举例如下图所示,可以得到:
               . 12:00,交易混合程度最高;
               . 10:00~12:00是登录高峰期;
               . 数据更新业务的并发用户数最大为90,等信息。
               
               任务分布图
               交易混合图方法
               使用交易混合图方法应关注下面三点:
               . 系统日常业务主要有哪些操作,高峰期主要有哪些操作。
               . 数据库操作有多少。
               . 如果任务失败,那么商业风险有多少。
               选择重点交易的指标为高吞吐量、高数据库I/O、高商业风险。举例如下表所示,“登录”、“生成订单”以及“发货”为负载压力测试重点。
               
               交易混合表
               用户概况图方法
               使用用户概况图方法应关注下面两点:
               . 哪些任务是每个用户都要执行的;
               . 针对每个用户,不同任务的比例如何。
               如下表所示为任务频率表,负载压力测试需要模拟不同用户角色压力。
               
               任务频率表
   题号导航      2019年上半年 系统分析师 下午试卷 论文   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
 
第1题    在手机中做本题