系统开发和运行知识

1.软件工程

1.1 基本概述

1)基本概述

软件由程序、数据和文档组成

  • 程序:计算机中能执行的指令或代码,能实现一定的功能。
  • 数据:辅助程序运行的一些数据。
  • 文档:编制程序或者数据的说明书。

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括软件需求分析、软件设计、软件构建、软件测试和软件维护等领域,与计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计等学科相关。

软件工程三个要素

  • 方法:是指完成软件开发的各项任务的技术方法;
  • 工具:是指为运用方法而提供的软件工程支撑环境。
  • 过程:是指为获得高质量的软件所需要完成的一系列任务的框架。

软件工程的知识领域和理论基础:

  • 生存周期:软件需求、软件设计、软件构建、软件测试、软件维护。
  • 专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法。
  • 理论基础:计算基础、数学基础、工程基础。

2)软件生命周期

软件定义阶段:

  • 可行性分析与项目开发计划:要解决的问题是什么?对这些问题是否值得去解,是否有可行的解决方法?主要给出问题定义、可行性分析和项目开发计划。
  • 需求分析:确定软件系统必须做什么,确定软件系统的功能、性能、数据和界面等要求,进而确定系统的逻辑模型。主要输出需求分析文档,使用逻辑模型

软件开发阶段:

  • 总体概要设计:系统应该如何解决问题?主要是设计软件的结构,明确有哪些模块组成,模块的层次以及功能。
  • 详细设计:提出解决问题的办法。主要对每个模块完成的功能进行具体描述,设计出程序的详细规格说明。
  • 编码和单元测试:程序代码。主要把每个模块的控制结构转换成计算机可接受的程序代码,实际运行的系统。
  • 综合测试:通过各种类型的测试或调试使软件达到预定的要求。最基本的测试是集成测试和验收测试。

软件维护阶段:

  • 维护:软件交付正式投入运行后便进入软件维护阶段。

1.2 开发模型

1)原型模型

原型模型就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。

★ \bigstar 适用于需求不明确,动态变化的项目,如界面的开发。

2)演化模型(变换模型)

演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这 一过程,最终可得到令用户满意的软件产品。

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

★ \bigstar 主要解决需求不明确的项目

3)瀑布模型

瀑布模型是将各个活动规定为线性顺序连接的若干阶段的模型。

瀑布模型

瀑布模型的特点:

  • 从上一项开发活动接受其成果作为本次活动的输入。
  • 利用这一输入,实施本次活动应完成的工作内容。
  • 给出本次活动的工作成果,作为输出传给下一项开发活动。
  • 对本次活动的实施工作成果进行评审。若其工作成果得到确认,则继续进行下一项开发活动;否则返回前一项目,甚至更前项的活动。尽量减少多个阶段间的反复。
  • 优点是有利于项目管理,缺点是发行问题晚成本高。

★ \bigstar 适用于需求明确、解决方案明确的项目

4)螺旋模型

螺旋模型是一个演化软件过程模型,将原型实现的迭代特征与线性顺序(瀑布)模型中控制的和系统化的方面结合起来。

开发过程具有周期性重复的螺旋线状。4个象限分别标志每个周期所划分的四个阶段:

  • 制定计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。
  • 风险分析。分析所选的方案,识别风险,消除风险。
  • 实施工程。实施软件开发,验证阶段性产品。
  • 用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。

螺旋模型

★ \bigstar 适用于庞大、复杂并具有高风险的项目

5)增量模型

增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别地开发。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。

增量模型

★ \bigstar 需求大部分明确,系统较为复杂,有一定技术风险

6)V模型

V模型,整体看是V字型的结构,如下:
V模型

V模型的特点如下:

  • 单元测试的主要目的是针对编码过程中可能存在的各种错误。(单编)
  • 集成测试的主要目的是针对详细设计中可能存在的问题。(集详)
  • 系统测试主要针对概要设计,检查系统作为一个整体是否有效地运行。(系概)
  • 验收测试通常由业务专家或者用户进行,以确认产品能真正符合用户业务上的需求。(验需)

★ \bigstar V模型用于需求明确和需求变更不频繁的情形

7)其他模型

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。迭代意味着模型中的开发活动常常需要重复多次,在迭代过程中不断地完善软件系统。

1.3 开发方法

1)结构化开发方法

结构化开发方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。

  • 结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
  • 结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
  • 结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。

★ \bigstar 结构化方法总的指导思想是自顶向下、逐层分解,它的基本原则是功能的分解与抽象。适用于数据处理领域,不适用于解决大规模的、特别复杂的项目,且难以适应需求的变化

2)原型化开发方法

并非所有的需求都能够预先定义,而且反复修改是不可避免的,原型化方法可以迅速地开发出一个可以让用户看得见、摸得着的系统框架。

开发原型化系统首先确定用户需求,开发原始模型,然后征求用户对初始原型的改进意见,并根据意见修改原型。

★ \bigstar 适用于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法是比较好的。

3)面向对象开发方法

面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方法来分析和解决问题。客观世界是由许多具体的事物、事件、概念和规则组成的,这些均可被看成对象,面向对象方法正是以对象作最基本的元素,它也是分析问题、解决问题的核心。

面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。

UML:统一建模语言(Unified Modeling Language),是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,已成为面向对象建模的工业标准。

★ \bigstar 主要是分析、设计、实现三个阶段,适用于界限不明确的情况。

4)敏捷方法

敏捷方法也称适应型生命周期、或者变更驱动方法,是以人为核心、迭代、循序渐进的开发方法,适用于一开始没有或不能完整地确定出需求和范围的项目,或者需要应对快速变化的环境,或者需求和范围难以事先确定,或者能够有利于干系人的方式定义较小的增量改进。

1.4 软件项目管理

1)项目基本概念

项目是有一定的资源约束(时间资源、经费资源、人力资源)、一定的目标和一次性任务组成,即为达到特定目的,使用一定资源,在确定的期间内,为特定发起人提供独特的产品、服务或成果而进行的一系列相互关联的活动的集合。项目有完整的生命周期,有开始,有结束,具有一次性、临时性的特点。

项目是为创造独特的产品、服务或成果而进行的临时性工作。

里程碑是项目中的重要时点或事件;持续时间为零,其代表的是一个时间点。

项目涉及的管理有范围管理、时间管理、成本管理、质量管理、配置管理和风险管理

2)时间管理(进度管理)

时间管理:也称进度管理,就是采用科学的方法,确定进度目标,编制进度计划和资源供应计划,进行进度控制,在与质量、成本和目标协调的基础上,实现工期目标。

时间管理的大致进程如下:
image

Gantt图,又称甘特图,是一种简单的水平条形图,它以日历为基准描述项目任务。水平轴表示日历时间线 (如时、天、周、月和年等),每个条形表示一个任务,任务名称垂直地列在左边的列中,图中水平条的起点和终点对应水平轴上的时间,分别表示该任务的开始时间和结束时间,水平条的长度表示完成该任务所持续的时间。当日历中同一时段存在多个水平条时,表示任务之间的并发。

优点:甘特图能清晰地描述每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性。

缺点:不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。

PERT图,项目计划评审技术(Program Evaluation & Technique),是一个有向图,图中的箭头表示任务,它可以标上完成该任务所需的时间。一个事件有一个事件号和出现该事件的最早时刻和最迟时刻。最早时刻表示在此时刻之前从该事件出发的任务不可能开始;最迟时刻表示从该事件出发的任务必须在此时刻之前开始,否则整个工程就不能如期完成。每个任务还可以有一个松弛时间(slack time),表示在不影响整个工期的前提下,完成该任务有多少机动余地。

总时差(松弛时间):在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。

优点:

  • PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间。
  • 还给出了任务之间的关系,哪些任务完成后才能开始另外一些任务。
  • 以及如期完成整个工程的关键路径。
  • 松弛时间则反映了完成某些任务时可以推迟其开始时间或延长其所需完成的时间。

缺点:不能反映任务之间的并行关系。

关键路径法是制定进度计划时使用的一种进度网络分析技术。沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早开始与完成日期、最迟开始与完成日期,不考虑任何资源限制。

在关键路径上的任务是不能延误的,耗时最长的是关键路径

3)人员管理

主程序组。一名主程序员,一名后备程序员,一名资料员,若干名程序员。便于集中领导,步调统一,容易按规范办事,但不利于发挥积极性。人员数n-1。

无主程序员组。无主程序员组中的成员之间相互平等,有利于发挥每个人的积极性。但这种组中交流量大,往往职责不明确,出了问题谁也不负责,而且不利于与外界的联系。人员数n(n-1)/2。

层次式程序员组。一位组长,若干名高级程序员,若干名程序员。适用于具有层次结构特点的大型软件项目。

4)风险管理

风险是带有不确定性、损失和机会的事项。

风险分析有一系列活动如下:

  • 风险识别。试图系统化地确定对项目计划(估算、进度、资源分配)的威胁。方法有建立风险条目检查表。
    • 风险条目检查表,又称通用风险分析表,包括风险问题、发送的可能性、影响的严重性、风险预测值、风险优先级。
  • 风险预测。又称风险估算,从风险发生的可能性或概率评估一个风险。
  • 风险评估。定义风险参照水准。
  • 风险控制。方法有降低风险、避免风险、转嫁风险和接受风险。

常用的风险分析有定量分析和定性分析。

2.软件系统分析

2.1 基本概述

系统分析的目的是为项目团队提供对触发项目的问题和需求更全面的理解。系统分析阶段要求与系统用户一起工作以便清楚地定义购买或开发的新系统的业务需求和预期。

系统分析的主要任务是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。系统分析侧重于从业务全过程的角度进行分析,主要内容有业务和数据的流程是否通畅,是否合理;数据、业务过程和组织管理之间的关系;原系统管理模式改革和新系统管理方法的实现是否具有可行性等。

系统分析的主要阶段如下:

  • 范围定义阶段。范围有哪些。
  • 问题分析阶段。充分研究和理解问题域并全面分析其中存在的问题、机会和约束条件。
  • 需求分析阶段。用户需要什么?
  • 逻辑涉及阶段。绘制各种系统模型来记录需求。
  • 决策分析阶段。分析那些候选方案并推荐一个将被设计、构造和实现的目标系统。

2.2 需求分析

软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。

软件需求是指用户解决问题或达到目标所需要的条件或能力,是系统要满足合同、标准、规范或其他正式规定文档所需具有的条件或者能力,以及反映这些条件或能力的文档说明。

软件需求的分类:

  • 业务需求(整体全局)。反映企业或者客户对系统高层次的要求。
  • 用户需求(用户视角)。描述了用户能够使用系统来做什么。
  • 系统需求(计算机化)。从系统的角度来说明软件的需求。有功能需求、非功能需求和设计约束三方面的内容。

2.3 结构化分析

结构化分析(Structured Analysis, SA)方法是一种面向数据流的需求分析方法,适用于分析大型数据处理系统,是一种简单、实用的方法,现在已经得到广泛的使用。基本思想是自顶向下逐层分解,分解和抽象问题。

结构化分析主要输出功能模型(DFD,数据流图)、行为模型(STD)和数据模型(E-R)三种,数据字典用于描述说明这三种模型。

1)数据流图

数据流图(Data Flow Diagram,DFD),是一种最常用的结构化分析工具,从数据传递和加工的角度,用图形的方式刻画系统内数据的运行情况。
DFD成分

数据流图的基本成分:

  • 外部实体。是指存在于软件系统之外的人员或组织,是不能用计算机处理的这一部分。
  • 加工。也称数据处理,就是对数据进行某些操作或变换。
  • 数据存储。存储数据,可访问的存储信息。
  • 数据流。表示数据的流向,带有名字和流向的一些数据。

分层数据流图的画法:

  1. 画系统的输入和输出。系统加工部分,根据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,就可以画出系统的输入和输出图,这张图称为顶层图。
  2. 画系统的内部。把顶层图的加工系统分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图中的输入数据经过若干个加工处理后变换成顶层图的输出数据流,这张图称为0层图。
  3. 画加工的内部。把每个加工看作一个小系统,该加工的输入输出数据流看成小系统的输入输出数据流。
  4. 对第2步分解出来的DFD子图中的每个加工,重复第3步的分解,知道图中尚未分解的加工都足够简单为止。

设计注意事项:

  • 适当取名,避免空洞的名字。
  • 加工输入、输出不应同名。
  • 允许一个加工有多个数据流向另一个加工。
  • 允许一个加工有两个相同的输出数据流向两个不同的加工。
  • 一个存储首次出现时只与一个加工有关,则该存储作为加工的内部,而不必画出表现的是数据流而不是控制流。
  • 保持父图和子图的平衡。父图中某加工的输入输出数据流必须与他的子图的输入输出数据流在数量和名字上相同。
  • 保持数据守恒。一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
  • 每个加工必须既有输入数据流,又有输出数据流
  • 整套数据流图中,每个数据存储必须既有读,又有写的数据流;但某一张子图中可以只有读或者写。

2)数据字典

数据字典,加工处理逻辑描述,包括如下内容:

  • 数据元素(数据项):包括数据项名,数据项含义说明、别名、数据类型、长度、取值范围、取值含义、与其他数据项的逻辑关系。
  • 数据结构:数据结构它是用来描述数据元素之间的关系。
  • 数据流:它是由一个或一组数据元素所组成的。
  • 加工逻辑:数据流图中功能块的说明。结构化语言(有控制结构和运算)、判定表(逻辑条件少)和判定树(逻辑条件比较多)。
  • 数据存储:数据流图中数据块的存储特性说明。

3.软件系统设计

3.1 结构化设计

1)系统设计基本原理

概要设计的基本任务是将系统分解为若干个子系统,建立整个系统的体系结构,若干子系统有设计软件系统总体结构、数据结构及数据库设计、编写概要设计文档、评审。

详细设计的基本任务是确定应该怎样具体地实现所要求的系统,对目标系统做出精准描述。输出结果是一系列的系统设计文件。

基本原理是自顶而下、逐步求精;抽象化;信息隐蔽;模块独立(高内聚、低耦合)。

基本原则:

  • 保持模块的大小适中。
  • 深度和宽度适中。
  • 模块的扇入和扇出要合理。
  • 模块的作用域应该在模块之内。
  • 功能应该是可预测的。

2)模块独立

聚合是指模块内部各元素之间联系的紧密程度。内聚度越低,模块的独立性越差。聚合度由低到高如下:

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

耦合是指模块之间联系的紧密程度。耦合性越高,则模块的独立性越差。模块间耦合的高低取决于模块间接又的复杂性、调用的方式及传递的信息。耦合度由低到高如下:

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

3)信息流的类型

数据流类型包括变换流型和事务流型。

  • 变换流。信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。变换流型的 DFD 可以明显地分成输入、变换(主加工)和输出三大部分。
  • 事务流。信息沿着输入通路到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。

4)模块的类型

传出模块
传入模块
变换模块
协调模块

5)结构化设计常用工具

概要设计中有结构图(SC图)、层次图(H图)和HIPO图

详细设计中有程序流程图(程序框图)、盒图(N-S图)、问题定义图(PAD图)、程序描述语言(PDL,伪代码)

3.2 面向对象设计

面向对象分析方法(Object-Oriented Analysis,00A)的基本任务是运用00方法,对问题域进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和责任,以及它们之间的关联,最终产生一个符合用户需求,并能直接反映问题域和系统功能的00A模型及其详细说明。

  • 对象。基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为)。
  • 消息。对象之间进行通信的一种构造。
  • 类。一组对象共有的特性。类是在对象之上的抽象,对象是类的具体化,是类的实例(instance)。
  • 继承。父类和子类之间共享数据和方法的机制。
  • 多态。不同的对象收到同一消息可以产生完全不同的结果。
  • 封装。把对象的属性封装。
  • 动态绑定。一个把过程调用和响应调用所需要执行的代码加以结合的过程.

统一建模语言(Unified Modeling Language,UML)是面向对象软件的标准化建模语言,不是一种方法。UML由构造块、规则和公共机制三要素构成。

  • 构造块。有事物、关系和图3中构造块。事物是对模型中最具有代表性的成分的抽象(结构事物、行为事物、分组事物、注释事物);关系把事物结合在一起(依赖关系、关联关系、泛化关系、实现关系);图聚集了相关的事物(类图、对象图、包图、组合结构图、构件图、部署图、制品图、用例图、交互图(顺序图、通信图、定时图、交互概览图)、状态图、活动图)。
  • 规则。规则是支配构造块如何放置在一起的规定,包括给构造块命名;范围、可见性、完整性。
  • 公共机制。公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制。

UML中4中关系:依赖、关联、泛化和实现,图形表示如下:

关系表示

  • 依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
  • 关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚集是一种特殊类型的关联,它描述了整体和部分间的结构关系。
  • 泛化是一种特殊或一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。
  • 实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种地方要用到实现关系:一种是在接又和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。

4.软件系统测试

1)基本概念

系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。

系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。规范化的测试过程如下:

  • 制定测试计划。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。
  • 编制测试大纲。测试大纲是测试的依据,它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。
  • 根据测试大纲设计和生成测试用例,产生测试设计说明文档,其内容主要有被测项目、输入数据、测试过程和预期输出结果等。
  • 实施测试。一系列的测试周期组成的,在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。
  • 生产测试报告。主要对测试进行概要说明,列出测试的结论,指出缺陷和错误。另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。

测试的基本原则:

  • 应尽早并不断进行测试。
  • 程序员应避免测试自己设计的程序。
  • 既要选择有效、合理的数据,也要选择无效、不合理的数据。
  • 修改后应进行回归测试。
  • 尚未发现的错误数量与该程序已发现错误数成正比。

2)测试阶段

测试阶段分为单元测试、集成测试、确认测试和系统测试。

单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。如果选用机器测试,一般用白盒测试法。这类测试可以对多个模块同时进行。

集成测试就是把模块按系统设计说明书的要求组合起来进行测试。自顶向下集成、自底向上集成,即增量式集成。非增量式集成可以对模块进行并行测试,能充分利用人力,并加快工程进度

确认测试。分产品和项目的测试,确认测试的任务就是进一步检查软件的功能和性能是否与用户要求。内部确认测试、Alpha测试(开发环境上测试)、Beta测试(用户使用环境)、验收测试。只有通过Beta测试的项目才能交付给用户

系统测试。将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种集成测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。内容有恢复测试,安全性测试,压力测试,性能测试,可靠性、可用性和可维护性测试,安装测试。

3)测试类型

动态测试是指通过运行程序发现错误。

黑盒测试法。也称功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。进行黑盒测试主要为了发现以下错误:

  • 是否有错误的功能或遗漏的功能?
  • 界面是否有误?输入是否正确接收?输出是否正确?
  • 是否有数据结构或外部数据库访问错误?
  • 性能是否能够接受?
  • 是否有初始化或终止性错误?

常用的黑盒测试技术有等价类划分、边界值分析、错误推测和因果图

  • 等价类划分。每一类的代表性数据在测试中的作用等价于这一类中的其他值。这样就可以用少量代表性的测试用例取得较好的测试效果。
  • 边界值分析。输入的边界比中间更加容易发生错误,因此用边界值分析来补充等价类划分的测试用例设计技术。
  • 错误推测。基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。
  • 因果图法。从自然语言描述的程序规格说明中找出因(输入条件)和果 (输出或程序状态 的改变),通过因果图转换为判定表。

白盒测试法。也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要,原则如下:

  • 程序模块中的所有独立路径至少执行一次。
  • 在所有的逻辑判断中,取“真”和“假”的两种情况至少都能执行一次。
  • 每个循环都应在边界条件和一般条件下各执行一次。
  • 测试程序内部数据结构的有效性等。

常用的技术是逻辑覆盖、循环覆盖和基本路径测试

  • 逻辑覆盖。考察用测试数据运行被测程序时对程序逻辑的覆盖程度,主要有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、修正的条件判定覆盖、条件组合覆盖、路径覆盖。
  • 循环覆盖。执行足够的测试用例,使得循环中的每个条件都得到验证。
  • 基本路径测试。在程序控制流图的基础上,通过分析控制流图的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

灰盒测试法。既有黑盒测试也有白盒测试。

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

  • 桌前检查。开发或者测试人员自己检查自己的程序,再交给他人。
  • 代码审查。通过会议,代码委员会进行检查。
  • 代码走查。需要先提供测试样例,再通过会议,代码委员会进行检查。

5.软件系统运行和维护

软件维护是软件生命周期中的最后一个阶段,处于系统投入生产性运行以后的时期中,因此不属于系统开发过程。软件维护是在软件己经交付使用之后,为了改正错误或满足新的需求而修改软件的过程,即软件在交付使用后对软件所做的一切改动

系统的可维护性的评价指标:可理解性、可测试性、可修改性。

软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改。包括硬件维护、软件维护和数据维护。软件维护的内容有:

  • 正确性维护。
  • 适应性维护。
  • 完整性维护。
  • 预防性维护。
  • 15
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有请小发菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值