免费智能真题库 > 历年试卷 > 系统分析师 > 2009年上半年 系统分析师 上午试卷 综合知识
  第27题      
  知识点:   开发过程   需求开发概述   软件工程   需求工程
  关键词:   开发过程   软件工程   需求工程   开发   需求        章/节:   软件工程基础知识       

 
需求工程帮助软件工程师更好地理解要解决的问题。下列开发过程中的活动,不属于需求工程范畴的是(27)。
 
 
  A.  理解客户需要什么,分析要求,评估可行性
 
  B.  与客户协商合理的解决方案,无歧义地详细说明方案
 
  C.  向客户展现系统的初步设计方案,并得到客户的认可
 
  D.  管理需求以至将这些需求转化为可运行的系统
 
 
 

 
  第2题    2020年下半年  
   22%
数据流图是系统分析的重要工具,数据流图中包含的元素有( )。
  第29题    2011年上半年  
   45%
软件需求管理是软件项目开发过程中控制和维持需求约定的活动,包括(29)、 版本控制、需求跟踪、需求状态跟踪等活动。
  第40题    2009年上半年  
   67%
在数据库设计的需求分析阶段,业务流程一般采用(40)表示。
   知识点讲解    
   · 开发过程    · 需求开发概述    · 软件工程    · 需求工程
 
       开发过程
        嵌入式系统软件的开发过程可以分为项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固化、测试及运行等几个阶段。
        项目计划、可行性分析、需求分析、概要设计及详细设计等几个阶段,与通用软件的开发过程基本一致,都可按照软件工程的方法来进行,如采用原型化方法、结构化方法等。
        由于嵌入式软件的运行和开发环境不同,开发工作是交叉进行的,所以每一步都要考虑到这一点。
        程序建立阶段的工作是根据详细设计阶段中产生的文档来进行的,主要是源代码编写、编译链接等子过程,这些工作都在宿主机上进行,不需要用到目标机。产生应用程序的可执行文件后,就要用到交叉开发环境中进行调试,根据实际情况可以选用4.6.2节中的调试方法之一或其有效组合来进行。由于嵌入式系统对安全性和可靠性的要求比通用计算机系统要高,所以,在对嵌入式系统进行白盒测试时,要求有更高的代码覆盖率。
        最后,要将经调试后正确无误的可执行程序固化到目标机上。根据嵌入式系统硬件配置的不同,可以固化在EPROM和Flash等存储器中,也可固化在DOC(DiskOnChip)等电子盘中,通常还要借助一些专用编程器进行。
 
       需求开发概述
        需求开发所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统元素的接口细节,定义软件的其他有效性需求,细化软件要处理的数据域。用一句话概括就是:需求开发主要确定开发软件的功能、性能、数据和界面等要求。
        在不严格区分需求开发和需求管理的情况下,往往就把“需求分析”当作“需求开发”。也就是说,广义的“需求分析”就是指需求开发中的4个阶段的总体。
               需求开发的工作
               具体来说,需求开发的工作可以分成以下4个方面。
               (1)问题识别:用于发现和描述需求,并预先估计以后系统可能达到的目标。
               (2)分析与综合:对问题进行分析,然后在此基础上整合出解决方案。这个步骤经常是反复进行的,常用的方法有面向数据流的结构化分析方法,面向数据结构的Jackson方法,面向对象的分析方法,以及用于建立动态模型的状态迁移图和Petri网。
               (3)编制需求分析的文档:也就是对已经确定的需求进行文档化描述,该文档通常称为软件需求说明书(需求规格说明书)。
               (4)需求分析与评审:它是需求分析工作的最后一步,主要是对功能的正确性、完整性和清晰性,以及其他需求给予评价。
               需求开发的原则
               在软件需求开发的过程中,必须遵循以下原则:
               (1)必须能够表达和理解问题的信息域和功能域。
               (2)必须表示软件的行为(作为外部事件的结果)。
               (3)必须划分描述信息、功能和行为的模型,从而可以用层次的方式揭示细节。
               (4)分析过程应该从要素信息移向细节实现。
               (5)必须按照自顶向下、逐层分解的方式对问题进行分解和不断细化。
               (6)要给出系统的逻辑视图和物理视图。
               通过应用这些原则,系统分析师可以系统地处理某些问题,包括检查信息域以使得功能可以被更完整地理解,使用模型以使得可以用简捷的方式交流功能和行为的特征,应用划分以减少问题的复杂性等。在这些处理过程中,软件的要素和视图实现由处理需求带来的逻辑约束与由其他系统元素带来的物理约束是必需的。
               需求的分类
               软件需求就是系统必须完成的事,以及必须具备的品质。具体来说,软件需求包括功能需求、非功能需求和设计约束3个方面的内容。
               (1)功能需求:是指系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作。
               (2)非功能需求:是指产品必须具备的性能或品质,例如,可靠性、容错性等。
               (3)设计约束:也称为限制条件、补充规约,通常是对解决方案的一些约束说明,例如,某系统必须采用国有自主知识版权的数据库,必须运行在UNIX系统之下,等等。
               除了这三种需求之外,还有业务需求、用户需求和系统需求这三个处于不同层面下的概念,充分理解这些需求才能够更加清晰地理清需求的脉络。
               (1)业务需求:是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求。
               (2)用户需求:是指描述用户使用产品必须要完成什么任务以及怎么完成的需求,通常是在问题定义的基础上进行用户访谈和调查,对用户使用的场景进行整理,然后建立的从用户角度的需求。
               (3)系统需求:是从系统的角度来说明软件的需求,它包括了用特性说明的功能需求,质量属性及其他非功能需求,还有设计约束等。
               我们经常围绕着“功能需求”来展开工作,而功能需求大部分都是从“系统需求”的角度来分析与理解的,也就是用“开发人员”的视角来理解需求。但要想真正地得到完整的需求,仅戴上“开发人员”的眼镜是不够的,还需要“领域专家”的眼镜,从更高的角度来理解需求,这就是“业务需求”;同时还应该更好地深入用户,了解他们的使用场景,了解他们的所思所想,这就是“用户需求”。这是一个理解层次的问题,并不仅仅是简单的概念。
 
       软件工程
        1)软件工程的概念
        为了消除软件危机,通过认真研究解决软件危机的方法,人们认识到软件工程是使计算机软件走向科学的途径,逐渐形成了软件工程的概念,并开辟工程学的新兴领域,即软件工程学。
        2)软件工程的要素
        软件工程具有以下3个要素。
        (1)方法。完成软件工程项目的技术手段。
        (2)工具。支持软件的开发、管理、文档生成。
        (3)过程。将方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
        3)软件生命周期
        软件生命周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,包括计划阶段、分析阶段、设计阶段、实现阶段、测试阶段和运行维护阶段。
        4)软件开发模型
        比较经典的软件开发模型有瀑布模型、快速原型模型、演化模型、增量模型、螺旋模型、喷泉模型等。
        5)软件开发方法
        软件开发方法有以下几种。
        (1)结构化软件开发(SASD)方法:采用结构化技术来完成软件开发的各项任务。它把软件生命周期划分成若干个阶段,依次完成每个阶段的任务。它与瀑布模型有很好的结合度,是与其最相适应的软件开发方法。
        (2)面向数据结构的软件开发方法:从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,从而可得到完整的程序结构图。有Jackson方法和Warnier方法。
        (3)面向对象的软件开发方法:随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT(Object Modelling Technique)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
        (4)基于构件化的开发方法:用预先建立的构件和模板,像"搭积木"一样进行建造。
 
       需求工程
        需求工程就是包括创建和维护系统需求文档所必需的一切活动的过程,也就是指需求开发和需求管理两大工作。
        (1)需求开发。包括需求捕获、需求分析、编写规格说明书和需求验证4个阶段。在需求开发阶段需要确定产品所期望的用户类型、获取每种用户类型的需求、了解实际的用户任务和目标,以及这些任务所支持的业务需求。同时还包括分析源于用户的信息、对需求进行优先级分类、将所收集的需求编写成为软件规格说明书和需求分析模型,以及对需求进行评审等工作。
        (2)需求管理。通常包括定义需求基线、处理需求变更及需求跟踪等方面的工作。
        这两个方面是相辅相成的,需求开发是主线,是目标;需求管理是支持,是保障。换句话来说,需求开发是努力更清晰、更明确地掌握客户对系统的需求;而需求管理则是对需求的变化进行管理的过程。
        针对整个需求工程,通常有以下一些指导原则。
        (1)在开始建立分析模型前先理解问题。人们通常总存在急于求成的倾向,甚至在问题被很好地理解前就已开始建模,这经常会导致产生一个解决错误的问题。
        (2)开发原型,使得用户能够了解将如何发生人机交互。因为人们对软件质量的感觉经常基于对界面“友好性”的感觉,所以强力推荐使用原型方法(以及相应产生的迭代)。
        (3)记录每个需求的起源及原因,这是建立回溯到客户的可追踪性的第一步。
        (4)使用多个需求视图。建立数据、功能和行为模型,为软件工程师提供三种不同的视图,这将减少忽视某些东西的可能性,并增加识别不一致性的可能性。
        (5)给需求赋予优先级。过短的时限可能使每个软件需求得以实现的可能性减小,如果采用增量模型,则必须标识那些将在第一个增量中要交付的需求。
        (6)努力删除含糊性。因为大多数需求以自然语言描述,存在含糊性的可能,正式的技术复审是发现并删除含糊性的一种方法。
   题号导航      2009年上半年 系统分析师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第27题    在手机中做本题