2020年中级数据库系统工程师考试笔记10—系统开发和运行知识

9 系统开发与运行知识

本章的数据流图是下午必考题,进度管理的甘特图和pert图基本是每年选择必考,其他的知识点多看看多记记。

9.1 本章考点

在这里插入图片描述

9.2 软件工程基础知识

在这里插入图片描述

9.2.1 软件生存周期

  软件生存周期包括可行性分析与项目开发计划、需求分析、总体设计、详细设计、编码和单元测试、综合测试及维护阶段。

1.可行性分析与项目开发计划:确定软件的开发目标及可行性,可行性分析的任务不是具体解决问题,二是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。该阶段的参与人员应该有项目负责人、用户和系统分析师。

2.需求分析:确定地确定软件系统必须做什么,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。

3.概要设计:开发人员需要将确定的功能需求转换成相应的体系结构,主要参与人员有系统分析师和软件设计师。

4.详细设计:对每个模块完成的功能进行具体描述,不是编写程序,二是设计出程序的详细规格说明,该说明应该包含必要的细节,是程序要开药根据他们写出实际的程序代码,主要参与人员有软件设计师和程序员。

5. 编码和单元测试:把每个模块的控制结构转换成计算机可接受的程序代码,即写成某种特定程序设计语言表示的源程序清单,并仔细测试编写出的每一个模块。

6.综合测试:通过各种类型的测试使软件达到预定的要求,最基本的测试是集成测试和验收测试。

7.维护:维护阶段是软件生存期中时间最长的阶段,该阶段的关键任务是通过各种必要的维护活动使系统持久的满足用户的需要。

9.2.2 软件生存周期模型

  常见的软件生存周期模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。

1.瀑布模型:将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型,它包括需求分析、设计、编码、测试、运行和维护。
在这里插入图片描述

  • 是一种理想化模型,以文档为驱动、适合于软件需求很明确的软件项目的模型。
  • 优点:容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试;
  • 缺点:客户必须能够完整、正确和清晰地表达他们的需要,在开始的两个或三个阶段中,很难评估真正的进度状态;当接近项目结束时,出现了大量的集成和测试工作;直到项目结束之前,都不能演示系统的能力。

2.增量模型:采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。

  • 优点:具有瀑布模型的所有优点,第一个可交付版本所需要的成本和时间很少,开发由增量表示的小系统所承担的风险不大;由于很快发布了第一个版本,因此可以减少用户需求的变更,运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。
  • 不足:如果没有对用户的变更要求进行规划,那么产生的初始增量可能造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新开发管理发生的成本、进度和配置的复杂性,可能会超过组织的能力。

3.演化模型:针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。

  • 优点:任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。
  • 不足:如果不加控制的让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响。

4.螺旋模型:将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

  每个螺旋周期分为4个工作步骤:

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
在这里插入图片描述

  特点:以小的分段来构建大型系统,设计灵活,可以在项目的各个阶段进行变更,但是开发周期长,当开发完成后可能与当前技术水平有了较大差距。

  螺旋模型适合适用于庞大、复杂并具有高风险的系统。

5.喷泉模型:一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法,它客服了瀑布模型不支持软件重用和多想开发活动集成的局限性。

  • 优点:可以提高软件项目开发效率,节省开发时间。
  • 不足:由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理,此外这种模型要求严格管理文档,使得审核的难度加大。
    在这里插入图片描述

9.2.3 软件开发方法

  软件开发方法:

1.结构化方法:由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法,总的指导思想是自顶向下,逐层分解,基本原则是功能的分解与抽象。适合数据处理领域的问题,但不是和解决大规模的、特别复杂的项目且难以适应需求的变化。

2.原型化方法:需要确定用户需求,开发原始模型,然后征求用户对初始原型的改进意见,并根据意见修改原型。原型化开发比较适合于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法比较好的。

3.面向对象开发方法:基本出发点是尽可能按照人类认识世界的方法和思维方法来分析和解决问题,以对象作为最基本的元素,它是分析问题、解决问题的核心。面向对象开发方法包括对象分析、面向对象设计和面向对象实现。

4.敏捷方法:总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意,敏捷方法可以使用户能够在开发周期的后期增加或改变需求。敏捷过程典型方法:极限编程、水晶法、并列征求法、自适应软件开发。

9.2.4 软件项目管理

  软件项目管理:成本估算、风险分析(如果软件项目组对于风险主动的方法,则避免永远是最好的策略)、进度管理、人员管理。

  软件开发项目的进度安排有如下两种方式:

(1)系统最终交付日期已经确定,软件开发部门必须在规定期限内完成;
(2)系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定。

  进度安排的常用图形描述方法有甘特图(Gantt图)和项目计划评审技术(PERT图)。

1.Gantt图用水平条状图描述,它以日历为基准描述项目任务,可以清楚地表示任务的持续时间和任务之间的并行,但是不能清晰地描述各个任务之间的依赖关系。甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间,一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比;便于管理者弄清项目的剩余任务,评估工作进度。

2.PERT图是一种有向图,图中的箭头表示任务,它可以标上完成该任务所需的时间,图中的节点表示流入节点的任务的结束,并开始流出节点的任务,这里称节点为事件。PERT图是一种网络模型,描述一个项目任务之间的关系,可以明确表达任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的关键路径,但是不能清晰地描述各个任务之间的并行关系

  (1)只有当流入该结点的所有任务都结束时,结点所表示的事件才出现,流出结点的任务才可以开始;

  (2)事件本身不消耗时间和资源,它仅表示某个时间点;

  (3)每个事件有一个事件号和出现该事件的最早时刻和最迟时刻;

  (4)每个任务有一个松弛时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地,松弛时间为0的任务构成了完成整个工程的关键路径。

  (5)关键路径:由关键活动串联起来的路径,关键路径可能有多条,关键路线(Critical Path)是PERT网络中花费时间最长的事件和活动的序列。

  求关键路径的方法:

  • 计算开始节点到结束节点之间每条路径上的时间总和,时间最长的就是关键路径;
  • 找出各节点最早开始时间和最晚开始时间,最早开始时间和最晚开始时间相同的节点串联起来的路径就是关键路径。

  下图显示了一个简单项目的PERT图,从开始节点1到结束节点8之间总共有4条路径:12568(时间:14)、13568(时间:16)、1368(时间:9)、14768(时间:14),关键路径长度为16。
在这里插入图片描述
  例题:如下图中任务流:
在这里插入图片描述

  第一空答案:但是不能清晰地描述各个任务之间的并行关系。

  ABEGHIK的持续时间是36;ABEGHJK的持续时间是40;

  ACEGHIK的持续时间是33;ACEGHJK的持续时间为37。

  第一空答案:关键路径ABEGHJK,长度为40。

  求松弛时间方法:

  • 节点的最早开始时间:从起点到该节点所经历的最长时间;
  • 节点的最晚开始时间:项目总工期减去项目终点到该节点的最长时间;
  • 活动的最早开始时间:活动的最早开始时间就是该活动的起始节点的最早开始时间;
  • 活动的最晚开始时间:活动的流入节点的最晚开始时间减去该活动的持续时间;
  • 活动/节点的松弛时间=活动/节点的最晚开始时间-活动/节点的最早开始时间

9.3 系统分析基础知识

  系统分析主要包括范围定义、问题分析、需求分析、逻辑设计(结构化功能需求、建立功能需求的原型、验证功能需求以及定义验收测试用例)以及决策分析等阶段。

  需求分析确定待开发软件的功能、性能、数据和界面等要求,主要分为:功能需求、非功能需求(如可靠性、性能、响应时间、容错性和扩展性等)、设计约束(设计条件和补充规约)。

9.3.1 数据流图(DFD)

  数据流图(DFD)是一种便于用户理解、分析系统数据流程的图形工具,它拜托了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。

  DFD基本成分包括数据流、加工、数据存储和外部实体。
在这里插入图片描述

  • 数据流:由一组固定成分的数据组成,表示数据的流向,DFD中描述的是数据流,而不是控制流,除了流向数据存储或数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
  • 加工:描述了输入数据流到输出数据量之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工有一个名字和编号,编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。
  • 数据存储:用来表示存储的数据,每个数据存储都有一个名字。
  • 外部实体:指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生的数据的归属地。

  数据流图应注意的问题:

(1)适当地为数据流、加工、数据存储、外部实体命名,名字应该反映该成分的实际含义,避免空洞的名字。
(2)画数据流而不要画控制流。
(3)每条数据流的输入或者输出是加工。
(4)一个加工的输出数据流不应与输入数据流同名,即使他们的组成成分相同。
(5)允许一个加工有多条数据流流向另外一个加工,也允许一个加工有两个相同的输出数据流,流向另外两个不同的加工。
(6)保持父图和子图平衡。也就是说,父图中某加工的输入、输出必须与它的子图的输入、输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入或输出数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
(7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。
(8)保持数据守恒。也就是说,一个加工所有输出数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
(9)每个加工必须既有输入数据流也有输出数据流。
(10)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某一张子图中可能只有读没有写,或者只有写没有读。

9.3.2 数据字典和面向对象法方法

  数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明,其中对加工的描述成为“小说明”,也可以称为“加工逻辑说明”。

  数据字典有4类条目:数据流、数据项、数据存储和基本加工。数据项是组成数据流和数据存储的最小元素,源点、终点不在系统在内,故一般不在字典中说明。

  面向对象的基本概念:

  • 对象:一个对象把属性和行为封装为一个整体,一个对象通常可由对象名、属性和操作三部分组成。
  • 消息:对象之间进行通信的一种构造。
  • 类:定义一组大体上相似的对象,一个类包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象是类的具体化,是类的实例。
  • 继承:是父类和子类之间共享数据和方法的机制,父类描述了这些子类的公共的属性和操作,一个子类可以继承它的父类中的属性和操作。
  • 多态:在收到消息时,对象要予以响应,不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态。
  • 动态绑定:绑定是一个把过程调用和响应调用所需要的执行的代码加以结合的过程,在一般的程序设计语言中,绑定是在编译时进行的,叫做静态绑定;动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合是直到调用发生时才进行的。

9.4 系统设计基础知识

  系统设计的主要内容包括:新系统总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计和安全控制设计等;系统设计的基本任务大体上可以分为概要设计和详细设计两个步骤。

  模块独立性是指每个模块完成一个相对独立的特定子功能,并且与其他模块的联系简单,衡量模块独立性的标准:耦合性和内聚性。

耦合性和内聚性常考知识点,主要是概念、耦合与内聚的关系(模块独立性标准:高内聚低耦合)。

1.耦合性

  耦合性是指模块之间联系的紧密程度,耦合性越高,则模块的独立性越差模块间耦合的高低取决于模块间接口的复杂性、调用的方式及传递的信息,模块的耦合有以下几种类型(低→高):

(1)无直接耦合(最独立):指两个模块间没有直接的关系,它们分别属于不同模块控制与调用,它们之间不传递任何信息,因此,模块间耦合性最弱,模块独立性最高。
(2)数据耦合:指两个模块之间有调用关系,传递简单的数据值,相当于高级语言中的值传递。这种耦合程度较低,模块的独立性较高。
(3)标记耦合:指两个模块之间传递的数据结构,如高级语言中的数据组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。
(4)控制耦合:传递控制变量,当一个模块调用另一个模块时。被调用的模块通过该控制变量的值有选择地执行模块内某一功能。因此被调用模块内应具有多个功能、那个功能起作用,受调用模块控制。
(5)公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。
(6)内容耦合:程度最高的耦合,当一个模块直接另一模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块间的耦合为内容耦合,这种情况往往出现在汇编程序设计中。

2.内聚性

  内聚性也称为块内联系,是模块的功能强度、及一个模块内部各元素之间联系的紧密程度的度量若一个模块内各个元素的联系越紧密,则它的内聚性就越高,内聚性类型(高→低):

(1)功能内聚(最强):模块内所有的元素共同完成一个功能,缺一不可。
(2)顺序内聚:指一个模块各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出为下一功能元素的输入。
(3)通信内聚:指模块内所有处理元素都在同一数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
(4)时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
(5)逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
(6)偶然内聚:指一个模块内各处理元素之间没有任何联系。

  耦合性和内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽可能做到高内聚低耦合,提供模块的独立性。

9.5 系统实施基础知识

9.5.1系统模块结构设计

  模块是组成系统的基本单位,它的特点是可以组合、 分解和更换。

  一个模块应该具备以下4个要素:

(1)输入和输出(外部特性):模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者哪里取得输入,进行加工后再把输出返回给调用者。
(2)处理功能(外部特性):指模块把输入转换成输出所做的工作。
(3)内部数据(内部特性):指仅供该模块本身引用的数据。
(4)程序代码(内部特性):指用来实现模块功能的程序。

9.5.2 系统测试

  系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。(选择题常考知识点)

  测试的目的就是希望能够以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构尽心设计测试实例,并利用这些实例来运行程序,以便发现错误的过程。信息系统测试应包括软件测试、硬件测试和网络测试,硬件测试、网络测试可以根据具体的性能指标来进行,此处所说的测试更多的是软件测试。

  有效的软件测试实际上分为单元测试(模块测试)、集成测试、确认测试和系统测试。

  系统测试包括:

(1)恢复测试:监测系统的容错能力;
(2)安全性测试:检测系统的安全机制、保密措施是否完善;
(3)压力测试:也称强度测试,是对系统在异常情况下承受能力的测试,是检查系统极限状态运行时,性能下降幅度是否在允许范围内。
(4)性能测试:检测系统是否满足系统设计方案说明书对性能的要求。
(5)可靠性、可用性和可维护性测试:MTBF+MTTR
(6)安装测试:检测在安装过程中是否有误、是否容易操作等。

9.4.2.测试方法

白盒和黑盒测试的使用场景以及使用条件一定要掌握。

  软件测试方法分为静态测试和动态测试。

1.静态测试:指被测试程序不在机器上运行,二是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

(1)人工检测:靠人工审查程序或评审软件,包括代码检车、静态结构分析的手段对程序进行检测。
(2)计算机辅助静态分析:利用静态分析工具对被测试的程序进行特性分析,包括代码检查。静态结构分析和代码质量度量等。

2.动态测试:指通过运行程序发现错误,常用方法是黑盒测试法和白盒测试法。测试用例由测试输入数据和与之对应的预期输出结构组成,在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

(1)黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性,常用的技术有等价类划分、边值分析、错误猜测和因果图等。

  进行黑盒测试主要发现的错误有:

  • 是否有功能错误,是否有功能遗漏?
  • 界面是否有误?是否能够正确地接收输入数据并产生正确的输出结果?
  • 是否有数据结构错误或外部信息访问错误?
  • 性能是否能够接受?
  • 是否有程序初始化和终止方面的错误?

(2)白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要;白盒测试常用的技术有逻辑覆盖、覆盖循环和基本路径测试。

  白盒测试原则如下:

  • 对模块的所有的独立路径至少测试一次;
  • 对所有的逻辑判定的每一个分支(真与假)都至少测试一次;
  • 每个循环都应在边界条件和一般条件下各执行一次;
  • 测试内部数据结构的有效性等。

9.6 系统运行与维护基础知识(顺带看下)

  课本P470-P473翻翻看看,据历年真题来看不作为考查点。

说明:
1.疏忽、遗漏、错误之处,欢迎留言批评指正。
2.第9章总结完毕,后续会继续完善补充本章的历年真题,转载请注明出处,整理不易,谢谢!
PS:今天下午要念检讨,人生头一回,从今往后每日一问:学习强国了没,囧!

猜你喜欢

转载自blog.csdn.net/u010257584/article/details/109772790