免费智能真题库 > 历年试卷 > 系统集成项目管理工程师 > 2009年下半年 系统集成项目管理工程师 上午试卷 综合知识
  第8题      
  知识点:   软件需求分析与定义   程序设计   调试   概要设计   详细设计   信息系统项目   需求分析
  关键词:   测试   程序设计   范围   概要设计   开发   详细设计   信息系统   需求分析   需求        章/节:   信息系统建设与开发       

 
典型的信息系统项目开发的过程为:需求分析概要设计详细设计程序设计调试与测试、系统安装与部署。(8)阶段拟定了系统的目标、范围和要求。
 
 
  A.  概要设计
 
  B.  需求分析
 
  C.  详细设计
 
  D.  程序设计
 
 
 

 
  第15题    2016年上半年  
   68%
确认软件需求是软件项目成功的重要保证,其中反映本组织对系统、产品高层次目标的要求属于(15)。
  第7题    2012年下半年  
   60%
下列针对某文档处理软件的说明中,不适宜作为需求描述的是(7)。
  第14题    2016年上半年  
   64%
常用的需求分析方法有:面向数据流的结构化分析方法(SA)、面向对象的分析方法(OOA)。(14)不是结构化分析方法的图形工具。
   知识点讲解    
   · 软件需求分析与定义    · 程序设计    · 调试    · 概要设计    · 详细设计    · 信息系统项目    · 需求分析
 
       软件需求分析与定义
               概念
               软件需求分析与定义过程用于了解客户需求和用户的业务,为客户、用户和开发者之间建立一个对于待开发的软件产品的共同理解,并把软件需求分析结果编写成《软件需求规格说明书》。
               软件需求是针对待解决问题的特性的描述。软件需求具有如下特征:
               .可验证性:所定义的需求必须可以被验证。
               .优先级:在资源有限时可以通过优先级对需求进行权衡。
               需求分析的目的
               .检测和解决需求之间的冲突。
               .发现软件的边界,以及软件与其环境的交互。
               .详细描述系统需求,以导出软件需求。
               需求分析的任务
               需求分析需要准确地定义未来系统的目标,确定为了满足用户需求待建系统必须做什么,并用需求规格说明书规范地表达用户的需求。需求分析有两个主要任务:
               .建立分析模型。
               .编写需求规格说明书。
 
       程序设计
               类和继承
               1)类
               一个类是一些属性和方法的封装体,类的定义用关键字class声明,用关键字public、protected、 private指定类的成员的存取控制属性:private(私有)成员只有类内部的方法才能访问,protected(保护)成员派生类和同一文件夹下的类可以访问,public(公有)成员可以从类的外部访问。默认是public。这体现了面向对象的以下指导思想:尽量将类内部的细节隐藏起来,对类的属性的操作应该通过类的方法来进行。
               另外,public还可以用来修饰类,public类能够被其他文件夹下的类访问,非public类只能被同一文件夹下的类访问。一个.java文件中可以包含多个类,会被编译成多个.class文件,但只能有一个public类,而且该类名要和文件名一样。
               2)继承
               Java中用关键字extends表示类间的继承关系。父类的公有属性和方法成为子类的属性和方法,子类如果有和父类的同名、同参数类型的方法,那么子类对象在调用该方法时,调用的是子类的方法,亦即方法的重置。如果想要调用父类的同名方法,需要用super关键字(属性同理)。
               子类的对象可以作为祖先类的对象使用,即所谓类的向上转换,反之则不行。具体表现在:可以用子类对象来对祖先类对象赋值,可以用子类对象作为实参去调用以父类对象为形参的函数。
               对象的引用本质
               Java中的对象实际上是对象的引用,本质上和C语言中的指针是一样的;但也和C语言指针不尽相同,例如,不能自增、自减,不能强制转换成其他类型。
               例如:
               
               构造方法
               构造方法就是类的对象生成时会被调用的方法。每个类至少有一个构造方法(Constructor),也称构造函数。构造方法的名字和类名相同,没有任何返回类型。每个类都有一个默认的构造方法,但当用户自定义了构造方法后,默认的构造函数就不再有效了。
               重载
               同一个类中的两个或两个以上方法,名字相同,而参数个数不同或参数类型不同,称为重载。注意:不能有各方法名字和参数都一样,而仅仅返回值类型不同。
               静态属性和静态方法
               静态属性和静态方法的声明用关键字static实现,一个类的静态属性只有一份,由所有该类的对象共享。不需要创建对象也能访问类的静态属性和方法,访问方式为"类名.静态属性或静态方法",静态方法与对象无关,因此不能在静态方法中访问非静态属性和调用非静态方法。
               this和super关键字
               这两个关键字颇为重要。this代表当前对象,super代表当前对象的父类的东西。
               this主要用途有以下两个。
               (1)一个构造函数调用另一个构造函数,对构造函数的调用必须是第一条语句。
               (2)将对象自身作为参数来调用一个函数。
               super的用途如下:在子类中调用父类的同名方法,或在子类的构造函数中调用父类的构造函数,此时亦必须是第一条语句。
               多态
               所谓多态,是指通过基类对象调用一个基类和派生类都有的方法时,在运行时才能确定到底调用的是基类的方法还是派生类的方法。多态的好处是增加了程序的可扩展性。多态是通过动态联编实现的,即编译时不确定,程序运行时才确定调用哪个函数。
               抽象类与接口
               1)抽象类
               抽象类通过关键字abstract实现,抽象类的目的是定义一个框架,规定某些类必须具有的一些共性。
               包含抽象方法的类一定是抽象类,所谓抽象方法是指没有函数体的方法。
               抽象类的直接派生类必须实现其抽象方法;抽象类只能用于继承,不能创建对象。
               2)接口(Interface)
               接口用关键字interface声明,只能用于继承。注意:此时关键字为implements(实现)。接口用于替代多继承的概念,能实现多继承的部分特点,又避免了多继承的混乱,还能起到规定程序框架的作用。注意:接口也可以用于多态。
               直接继承了接口的类,必须实现接口中的抽象方法;间接的则可以实现,也可以不实现。
               3)抽象类与接口的异同
               接口和抽象类都不能创建对象。
               抽象类不能参与多继承,抽象类可以有非静态的成员变量,可以有非抽象方法;接口可以参与多继承,所有属性都是静态常量,所有方法都是public抽象方法。
               异常处理
               1)异常概念
               异常,即出错,比如0作为除数、找不到类、打开文件错误、数组越界等。异常如果不进行处理,那么程序运行就会结束;如果进行处理,那么会在执行完异常处理代码后继续运行。
               Java中所有异常类均继承自类Exception。
               Java中的异常类层次结构如下:
               
               此外,还有EOFException、 FileNotFoundException、 MalformedURLException等。
               2)捕获异常
               异常处理的典型用法如下,将可能出现异常的代码放在try块中,其后由一个或多个catch捕获相应异常进行处理,注意只执行第一个匹配的catch块,忽略后面的。
               
               如果某个方法中所产生的异常该方法自己没有处理,那么可以在调用该方法的方法中进行处理,如果自己处理了,那么调用它的方法就无法得到该异常。
               3)抛出异常
               异常除了运行中系统产生的之外,也可以主动抛出异常,用关键字throw,如throw new Exception()。注意:throw只能抛出Throwable子类的异常。
               4)带throws关键字的方法
               带throws关键字的方法声明如下:
               
               强制调用该方法的方法必须处理可能发生的异常,或者将异常重新定向。假定方法A带throws关键字,而方法B中调用了方法A,则方法B中必须有处理方法A中可能产生的异常的语句,或者方法B也带throws关键字,指明调用方法B的方法必须处理异常。
               final关键字
               用final关键字定义的常量,在其初始化或第一次赋值后,其值不能被改变。常量必须先有值,然后才能使用。对于常量的第一次赋值只能在构造函数中进行。
               final对象的值不能被改变,指的是该对象不能再指向其他对象,而不是指不能改变当前对象内部的属性值。
               函数参数声明为final后,函数中不能改变其值。
               final方法是不能被重置的方法。
               final类不能被继承,其所有方法都是final的,但属性可以不是final的。
 
       调试
        调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正。调试主要由程序开发人员来进行,谁开发的程序就由谁来进行调试。常用的调试方法有试探法、回溯法、对分查找法、归纳法和演绎法。
 
       概要设计
        1)设计软件系统总体结构
        设计软件系统总体结构的基本任务是采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
        2)数据结构及数据库设计
        (1)数据结构的设计。在需求分析阶段,已经通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。
        (2)数据库的设计。数据库的设计是指数据存储文件的设计,主要指以下几个方面。
        ①概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用ER模型来表述数据模型。
        ②逻辑设计。ER模型是独立于数据库管理系统(DBMS)的,要结合具体的DBMS特征来建立数据库的逻辑结构。
        ③物理设计。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方法和索引的建立等。
        3)编写概要设计文档
        文档主要有概要设计说明书、数据库设计说明书、用户手册以及修订测试计划。
        4)评审
        对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方法的可行性,关键的处理及内外部接口定义的正确性、有效性以及各部分之间的一致性等都一一进行评审。
 
       详细设计
        总体设计只是为整个信息系统提供了一个设计思路和框架,框架内的血肉需要系统的设计人员在详细设计这个阶段充实。总体设计完成后,设计人员要向用户和有关部门提交一份详细的报告,说明设计方案的可行程度和更改情况,得到批准后转入系统详细设计。详细设计阶段主要是在总体设计的基础上,将设计方案进一步详细化、条理化和规范化,为各个具体任务选择适当的技术手段和处理方法。系统的详细设计一般包括如下。
        (1)代码设计。
        代码设计就是信息分类和编码的工作,是将系统中有某些共同属性或特征的信息归并在一起,并利用便于计算机和人识别和处理的符号来表示这些信息的设计工作。
        (2)数据库设计。
        数据库设计就是构建既能客观、准确地反映外部世界,又便于人类大脑认识的概念模型,并在此基础上对数据进行建模,转化为数据库管理系统所支持的数据模型;选择合适的存储结构和存储方法,最终完成数据库的设计工作。
        (3)输入/输出设计。
        输入/输出设计主要是对以记录为单位的各种输入输出报表格式的描述。另外,对人机对话格式的设计和输入输出装置的选择也在这一步完成。
        (4)用户界面设计。
        用户界面设计是指在用户与系统之间架起一座桥梁。主要内容包括:定义界面形式;定义基本的交互控制形式;定义图形和符号;定义通用的功能键和组合键的含义及其操作内容;定义帮助策略,等等。
        (5)处理过程设计。
        总体设计将系统分解为许多模块,并基本决定了每个模块的功能和界面。处理过程设计则定义每个模块的内部执行过程,包括数据的组织、控制流、每一步的具体加工要求和实施细节。通过处理过程设计,为编写程序制定一个周密的计划。一般来说,每一个功能模块都应设计一个处理流程。
 
       信息系统项目
               项目的基本概念
               什么是项目?简单地说,安排一场演出、开发一种新产品、建一幢大房子都可以被称为一个项目。所谓项目,简单地说,就是在既定的资源和要求的约束下,为实现某种目的而相互联系的一次性工作任务。这个定义包括三层意思:一定的资源约束、一定的目标、一次性任务。这里的资源包括时间资源、经费资源、人力资源等。
               对项目的概念有了一定了解的基础上,我们来看一下项目的基本特征。
                      明确的目标
                      项目是一种有着明确目标——一种期望的产品或希望得到的服务的一次性活动。这里的目标包括几个方面。
                      (1)时间目标如在规定的时段内或规定的时间点之前完成。
                      (2)成果目标如提供某种规定的产品、服务或其他成果。
                      (3)其他需满足的要求包括必须满足的要求和应尽量满足的要求。
                      目标允许有一个变动的幅度,也就是可以修改的。不过一旦项目目标发生实质性变化,它就不再是原来的项目了,而将产生一个新的项目。
                      独特的性质
                      每一个项目都是唯一的、独特的。或者项目的成果与其他项目不同;或者项目的成果与其他项目类似,然而其时间和地点,内部和外部的环境,自然和社会条件有别于其他项目,总之项目总是独一无二的,没有两个项目是完全相同的。项目没有可以完全照搬的先例,也不会有完全相同的复制。
                      有限的生命周期
                      项目有具体的时间计划,它有一个开始时间和目标必须实现的截止日期。虽然不同项目可以划分为不同的具体阶段,不过,大多数项目的生命周期都可以划分为启动、规划、实施、结尾4个阶段。
                      特定的委托人
                      它既是项目结果的需求者,也是项目实施的资金提供者。他可能是一个人,或一个组织;委托人可能是企业外部的,被称作外部客户,也可能是企业内部的,比如企业内的别的部门,被称作内部客户。不管是外部客户还是内部客户,都是项目的委托人或项目成果的使用者。
                      实施的一次性
                      一次性是项目与其他常规运作的最大区别。项目有确定的起点和终点,项目不能重复。
                      组织的临时性和开放性
                      项目开始时要组建项目团队,项目团队在项目进展过程中,其人数、成员、职责在不断变化。某些成员是借调来的,项目终结时团队要解散,人员要转移。参与项目的组织往往有多个,甚至几十个或更多。他们通过协议或合同以及其他的社会关系结合到一起,在项目的不同时段以不同的程度介入项目活动。可以说,项目组织没有严格的边界,是有弹性的、模糊的、开放的。这一点与一般企事业单位和政府机构很不一样。
                      项目的不确定性和风险性
                      项目以所需的时间估计、成本估计、各种资源的有效性为项目计划的假定条件,这种假定带来了一定程度的不确定性,这种不确定性为项目的实现带来一定的风险。项目是一次性任务,做坏了没有机会重来。项目必须保证成功,因此必须精心设计、精心制作和精心控制,以达到预期目标。
                      结果的不可逆转性
                      不论结果如何,项目结束了,结果也就确定了。
               信息系统项目的概念
               通过上一节对项目的介绍,我们知道信息系统的建设也是一类项目。因为信息系统的建设符合项目的定义。我们知道,项目的定义中包含三层意思:一定的资源约束、一定的目标、一次性任务。首先,信息系统的建设是一次性的任务,有明确的任务范围和质量要求,有时间和进度的要求,有经费和资源的限制。因此,信息系统的建设是一类项目的建设过程。
               信息系统项目除了具有项目的特征之外,还具有自己的特点。
                      信息系统项目的目标不精确、任务边界模糊,质量要求主要由项目团队定义
                      在信息系统开发初期,项目团队调研时,客户只能提出一些初步的功能要求,提不出确切的需求。信息系统项目的任务范围在很大程度上取决于项目组所做的系统规划和需求分析。另外,因为大部分客户方都不是从事信息技术的人员,对信息技术的各种性能指标并不熟悉,所以,信息系统项目所应达到的质量要求也更多地由项目组定义,客户则尽可能地进行审查。为了更好地定义或审查信息系统项目的任务范围和质量要求,客户方可以聘请第三方的信息系统监理或咨询机构来监督项目的实施情况。
                      在信息系统项目开发过程中,客户的需求不断被激发,不断地被进一步明确,或者客户需求随项目进展而变化,从而导致项目进度、费用等计划的不断更改
                      尽管已经做好了系统规划、可行性研究,签订了较明确的技术合同,然而随着项目的进展,客户的需求不断地被激发,被进一步明确,导致程序、界面以及相关文档需要经常被修改。而且在修改过程中又可能产生新的问题,这些问题很可能经过相当长的时间后才会被发现。这就要求项目经理在项目开发过程中不断监控和调整项目计划的执行情况,尤其注重项目的变更管理。
                      信息系统项目是智力密集、劳动密集型项目,受人力资源影响最大,项目成员的结构、责任心、能力和稳定性对信息系统项目的质量以及是否成功有决定性的影响
                      信息系统项目工作的技术性很强,需要大量高强度的脑力劳动。尽管近年来信息系统辅助开发工具的应用越来越多,但是项目各阶段还是渗透了大量的手工劳动。这些劳动十分细致、复杂和容易出错,因而信息系统项目既是智力密集型项目,又是劳动密集型项目。并且,由于信息系统开发的核心成果——应用软件是不可见的逻辑实体,如果人员发生流动,对于没有深入掌握软件知识或缺乏信息系统开发实践经验的人来说,很难在短时间里做到无缝地承接信息系统的后续开发工作。
                      另外,信息系统的开发是项目团队整体的工作,为了高质量的完成项目,要充分发掘项目成员的才能和创新精神,不仅要求他们具有一定的技术水平和工作经验,还要求他们具有良好的心理素质和责任心,尤其要具有团队合作精神。项目经理在项目开发过程中,也应该注重项目成员之间的沟通协调,要将人力放到与进度和成本一样高的地位来看待。
 
       需求分析
        需求分析的方法种类繁多,不过如果按照分解的方式不同,可以很容易地划分出几种大类型:
        (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)判定表:一些条件较多、在每个条件下取值也较多的判定问题,可以用判定表表示。判定表能清晰地表达复杂的条件组合与应做动作之间的对应关系,判定表的优点是能够简洁、无二义性地描述所有的处理规则。但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构,因此判定表不能成为一种通用的设计工具。
   题号导航      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 /
 
第8题    在手机中做本题