系统的开发与运行易错知识点汇总

系统的开发与运行易错知识点汇总

  • ​ 外部实体一般为组织机构、人员、第三方系统,试题不是外部实体。

  • ​ 数据流图摆脱系统的物理内容,在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。

  • ​ 数据流图主要由实体、数据存储、处理过程和数据流四部分组成。在顶层数据流图中,将系统描述成一个处理过程,而其它的是与该处理过程相关的输入输出流,因此顶层数据流图描述了系统的输入与输出。

  • ​ 数据流图是结构化分析方法的重要模型,用于描述系统的功能、输入、输出和数据存储等。在绘制数据流图中,每条数据流的起点或者终点必须是加工,即至少有一端是加工。在分层数据流图中,必须要保持父图与子图平衡。每个加工必须既有输入数据流又有输出数据流。必须要保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。

  • ​ 对基本加工的说明有三种描述方式:结构化语言、判断表(决策表)、判断树(决策树)。基本加工逻辑描述的基本原则为:1.对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。2.基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。3.加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。4.加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。

  • ​ 结构化设计方法是一种面向数据流的设计方法,与结构化分析方法衔接。在需求分析阶段,结构化分析方法产生了数据流图,而在设计阶段,结构化设计方法将数据流映射为软件系统的模块结构。数据流图中从系统的输入数据流到系统的输出数据流的一连串变换形成了一条信息流。其中的信息流一般情况下包括变换流型和事物流型不同类型的数据流到程序模块的映射方法不同。一个软件系统往往不仅仅有一种数据流类型。

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

  • ​ 结构化设计主要包括: ①体系结构设计:定义软件的主要结构元素及其关系。 ②数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。 ③接口设计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。 ④过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。

  • ​ 结构化分析的输出是结构化设计的输入,设计活动依据分析结果进行。接口设计是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系,而这些关系的依据主要是分析阶段的数据流图。

  • ​ 数据流图中有四个要素:①外部实体,也称为数据源或数据汇点,表示要处理的数据的输入来源或处理结果要送往何处,不属于目标系统的一部分,通常为组织、部门、人、相关的软件系统或者硬件设备;②数据流表示数据沿箭头方向的流动;③加工是对数据对象的处理或变换;④数据存储在数据流中起到保存数据的作用,可以是数据库文件或者任何形式的数据组织。根据上述定义和题干说明,患者是外部实体。实体联系图也是一个常用的数据模型,用于描述数据对象及数据对象之间的关系。实体联系图有三个要素:①实体是目标系统所需要的复合信息的表示,也称为数据对象; ②属性定义数据对象的特征;③联系是不同数据对象之间的关系。在该系统中患者是一个数据对象,即实体,具有多种属性。

  • ​ 结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。

  • ​ 数据流图是结构化分析的工具,结构化方法就是采用自顶向下逐层分解的思想进行分析建模的。随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解。数据流图建模应遵循:自顶向下、从抽象到具体的原则。

  • ​ 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合是模块之间的相对独立性的度量,模块之间的连接越紧密, 联系越多,耦合性就越高,而其模块独立性就越弱。一般来说,模块之间的耦合有7种类型,根据耦合性从低到高为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合;如果一组模块通过数据结构本身传递,则称这种耦合为标记耦合;若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合;若一个模块直接访问另一个模块的内部数据、一个模块不通过正常入口转到另一个模块内部、两个模块有一部分程序代码重叠或者一个模块有多个入口,上述几个情形之一发生则说明两个模块之间就发生了内容耦合。

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

  • ​ 一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。如果再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点”或“下移受判断影响的模块,将它下移到判断所在模块的控制范围内”的方法加以改进。

  • ​ 通常,可以按照在软件系统中的功能将模块分为四种类型。①传入模块:取得数据或输入数据,经过某些处理,再将其传送给其他模块.②传出模块:输出数据,在输出 之前可能进行某些处理,数据可能被输出到系统的外部,或者会输出到其他模块进行进一步处理。③变换模块:从上级调用模块得到数据,进行特定的处理,转换成其他形式,在将加工结果返回给调用模块。④协调模块一般不对数据进行加工,主要是通过调用、协调和管理其他模块来完成特定的功能。

  • ​ 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。内聚是指模块内部各元素之间联系的紧密程度,内聚度越高,则模块的独立性越好。内聚性一般有以下几种: ①巧合内聚,指一个模块内的各处理元素之间没有任何联系。 ②逻辑内聚,指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 ③时间内聚,把需要同时执行的动作组合在一起形成的模块。 ④通信内聚,指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。 ⑤顺序内聚,指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。 ⑥功能内聚是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

  • ​ 数据流图中有四个要素:①外部实体,也称为数据源或数据汇点,表示要处理的数据的输入来源或处理结果要送往何处,不属于目标系统的一部分,通常为组织、部门、人、相关的软件系统或者硬件设备;②数据流表示数据沿箭头方向的流动;③加工是对数据对象的处理或变换;④数据存储在数据流中起到保存数据的作用,可以是数据库文件或者任何形式的数据组织。根据上述定义和题干说明,患者是外部实体。实体联系图也是一个常用的数据模型,用于描述数据对象及数据对象之间的关系。实体联系图有三个要素:①实体是目标系统所需要的复合信息的表示,也称为数据对象; ②属性定义数据对象的特征;③联系是不同数据对象之间的关系。在该系统中患者是一个数据对象,即实体,具有多种属性。

  • ​ 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。其条目有数据流、数据项、数据存储、基本加工等。

  • ​ 系统结构图(SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。SC包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号等4个部分。

  • ​ 数据流图是结构化分析的一个重要模型,描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能,用于功能建模。 数据流图中有四个要素:外部实体,也称为数据源或数据汇点,表示要处理的数据的输入来源或处理结果要送往何处,不属于目标系统的一部分,通常为组织、部门、人、相关的软件系统或者硬件设备;数据流表示数据沿箭头方向的流动;加工是对数据对象的处理或变换;数据存储在数据流中起到保存数据的作用,可以是数据库文件或者任何形式的数据组织。 根据上述说明,读者是外部实体,图书和借书证是数据流,借阅是加工。

  • ​ 回归测试是在软件发生变更之后进行的测试,以发现在变更时可能引起的其他错误。

  • ​ 结构化分析将数据和处理作为分析对象,数据的分析结果表示了现实世界中实体的属性及其之间的相互关系,而处理的结果则展现了系统对数据的加工和转换。面向数据流建模是目前仍然被广泛使用的方法之一,而DFD则是面向数据流建模中的重要工具,DFD将系统建模成输入一处理一输出的模型,即流入软件的数据对象,经由处理的转换,最后以结果数据对象的形式流出软件。在实际使用DFD进行数据流建模时,需要注意以下原则: ①加工处理和数据流的正确使用,如一个加工必须既有输入又有输出;数据流只能和加工相关,即从加工流向加工、数据源流向加工或加工流向数据源。 ②每个数据流和数据存储都要在数据字典中有定义,数据字典将包括各层数据流图中数据元素的定义。 ③数据流图中最底层的加工处理必须有加工处理说明。 ④父图和子图必须平衡,即父图中某加工的输入输出(数据流)和分解这个加工的子图的输入输出数据流必须完全一致,这种一致性不一定要求数据流的名称和个数一 一对应,但它们在数据字典中的定义必须一致,数据流或数据项既不能多也不能少。 ⑤加工处理说明和数据流图中加工处理涉及的元素保持一致。例如,在加丄处理说明中,输入数据流必须说明其如何使用,输出数据流说明如何产生或选取,数据存储说明如何选取、使用或修改。 ⑥一幅图中的图元个数控制在7+2以内。

  • ​ 系统设计为系统制定蓝图,软件设计模型关注新系统总体结构、代码设计、处理过程、数据结构和界面模型等。对项目范围的关注在软件设计之前。

  • ​ 在软件开发完成交付用户使用后,就进入软件运行/维护阶段。软件维护活动根据其内容可以分为4种类型: ①正确性维护。为了识别和纠正软件错误,改正软件性能上的缺陷,排除实施的误使用,应进行的诊断和改正错误的过程。 ②适应性维护。由于信息技术飞速发展,软件运行的外部环境或数据环境可能发生变化,为了使软件适应这种变化而修改软件的过程。 ③完善性维护。在软件使用过程中,用户往往会对软件提出新的功能与性能要求, 为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性而进行的维护活动。 ④预防性维护。为了提高软件的可维护性和可靠性等,为以后进一步改进软件打下良好基础而进行的维护工作。

  • ​ 软件测试的基本目标是为了发现软件中的错误,但软件测试分为几个不同的阶段,每个阶段的侧重点是有所不同的。单元测试主要是发现程序代码中的问题,针对详细设计和软件实现阶段的工作进行的;集成测试验证系统模块是否能够根据系统和程序设计规格说明的描述进行工作,即模块以及模块之间的接口的测试:而系统测试则是验证系统是否确实执行需求规格说明中描述的功能和非功能要求,因此测试目标在需求分析阶段就已经定义。

  • ​ 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。 存在多种模块内聚类型,从高到低依次为功能、通信、顺序、过程、时间、逻辑和偶然内聚。 一个模块内的几个操作是相关的,而且必须以特定的次序执行,则该模块的内聚类型为过程内聚。 模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行, 则该模块的内聚类型为时间内聚。 若一个模块的各个部分只是通过代码的逻辑结构相关联,则该模块的内聚类型为逻辑内聚。 把访问或操作在同一数据结构的操作放在一个模块中,则该模块的内聚类型为通信内聚。

  • ​ 子系统结构设计中,重点关注如何划分模块,子系统之间以及模块之间的数据和调用关系,模块结构质量等这些粗粒度的问题;而对每个模块内部进行设计时,才需要考虑采用的数据结构以及处理的算法。

  • ​ 仓库风格是一种软件体系结构,其中包含一个数据仓库和若干个其他构件。数据仓库位于该体系结构的中心,其他构件访问该数据仓库并对其中的数据进行增、删、改等操作。数据库系统、超文本系统和黑板系统都属于仓库风格。 该体系结构的优点包括: ①对可更改性和可维护性的支持; ②可复用的知识源; ③支持容错性和健壮性。 缺点包括: ①测试困难; ②不能保证有好的解决方案; ③难以建立好的控制策略; ④低效; ⑤昂贵的开发工作; ⑥缺少对并行机制的支持。

  • ​ 在软件设计中,人们总结了一些启发式原则,根据这些原则进行设计,可以设计出较高质量的软件系统。其中,模块的扇入扇出适中,模块大小适中以及完善模块功能都可以改进设计质量。而将相似功能的模块合并可能会降低模块内聚和提高模块之间的耦合,因此并不能改进设计质量。

  • ​ 辅助软件维护过程中的活动的软件称为“软件维护工具”,它辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有:1. 版本控制工具;2. 文档分析工具;3. 开发信息库工具;4. 逆向工程工具;5. 再工程工具;6. 配置管理支持工具。

  • ​ 模块化设计要求高内聚、低耦合。 在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则: 1.模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小使其实现代码在1~2页纸之内,或者其实现代码行数在50~200行之间,这种规模的模块易于实现和维护。

    2.模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。

    3.深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。 模块的扇入指模块直接上级模块的个数。模块的直属下级模块个数即为模块的扇出。

  • ​ 软件的可维护性是指维护人员理解、改正、改动和改进这个软件的难易程度,是软件开发阶段各个时期的关键目标。软件系统的可维护性评价指标包括可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。

  • ​ 软件维护的类型一般有四类:正确性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误;适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改;完善性维护是为扩充功能和改善性能而进行的修改;预防性维护是为了改进应用软件的可靠性和可维护性,为了适应未来变化的软硬件环境的变化,主动增加预防性的新的功能,以适应将来各类变化。 修改现有应用软件中的某个排序算法,提供其运行效率属于完善性维护。

  • ​ 软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改。修改时应充分利用源程序,修改后要填写程序修改登记表,并在程序变更通知书上写明新老程序的不同之处。

    软件维护的内容一般有以下几个方面:

    ①正确性维护,是指改正在系统开发阶段己发生而系统测试阶段尚未发现的错误。这方面的维护工作量要占整个维护工作量的17%〜21%。所发现的错误有的不太重要,不影响系统的正常运行,其维护工作可随时进行;而有的错误非常重要,甚至影响整个系统的止常运行,其维护工作必须制定计划,进行修改,并且要进行复查和控制。

    ②适应性维护,是指使应用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%〜25%。由于目前计算机硬件价格的不断下降,各类系统软件层出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求;企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。进行这方面的维护工作也要像系统开发一样,有计划、有步骤地进行。

    ③完善性维护,这是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。这些功能对完善系统功能是非常必要的。另外还包括对处理效率和编写程序的改进,这方面的维护占整个维护工作的50%〜60%,比重较大,也是关系到系统开发质量的重要方面。这方面的维护除了要有计划、有步骤地完成外,还要注意将相关的文档资料加入到前面相应的文档中去。

    ④预防性维护,为了改进应用软件的可靠性和可维护性,以及适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。比如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。这方面的维护工作量占整个维护工作量的4%左右。

  • ​ 在结构化分析中,用数据流图对软件功能建模,加工是数据流的一个重要要素,可以用多种方式描述,如流程图、NS盒图等,其中决策树和决策表适于用来表示加工中涉及多个逻辑条件的情况。

  • 管道过滤器体系结构风格具有以下优点: ①软件构件具有良好的隐蔽性和高内聚、低耦合的特点; ②允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成; ③支持软件复用; ④系统维护和增强系统性能简单; ⑤允许对一些如吞吐量、死锁等属性的分析; ⑥支持并行执行。

  • ​ 直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。 数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。 标记耦合 :一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址; 控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。 外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合: 1. 一个模块直接访问另一个模块的内部数据; 2. 一个模块不通过正常入口转到另一模块内部; 3. 两个模块有一部分程序代码重叠(只可能出现在汇编语言中); 4. 一个模块有多个入口。

  • 人机交互“黄金三原则”包括:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。

  • ​ 白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。在白盒测试中,语句覆盖是指选择足够的测试用例,使被测程序中每条语句至少执行一次。它对程序执行逻辑的覆盖很低,因此一般认为是很弱的逻辑覆盖。判定覆盖是指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”植和“假”值。条件覆盖是指设计足够的测试用例,使得每一个判定语句中每个逻辑条件的各种可能的值至少满足一次。路径覆盖是指覆盖被测程序中所有可能的路径。在这些覆盖技术中,从弱到强依次为语句覆盖、判定覆盖、条件覆盖和路径覆盖。

  • ​ 逆向工程产品设计可以认为是一个从产品到设计的过程。简单地说,逆向工程产品设计就是根据已经存在的产品,反向推出产品设计数据(包括各类设计图或数据模型)的过程。使用该过程进行开发时,一般会先采用逆向工程先从代码分析出设计,再从设计分析出需求,此时加入新的需求,然后走正向工程的路线,形成新的系统。从这个过程可以看出,逆向工程是在需求分析阶段进行的。

    1. 顶向下集成优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。2. 自底向上集成优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
  • ​ 软件测试按阶段划分为单元测试、集成测试和系统测试。在单元测试基础上,将所有模块按照设计要求组装为系统,此时进行的测试称为集成测试。 集成测试有多种策略: 自底向上:从系统层次中最底层的构件开始测试,逐步向上。需要设计驱动模块来辅助测试。 自顶向下:与自底向上相反,从最顶层的构件开始,逐步向下。需要设计桩模块来辅助测试。 三明治:结合自底向上和自顶向下两种测试策略。 一次性:对所有构件一次性测试,然后集成。 根据题干,该实例采用了三明治测试策略。 该测量的优势是结合了自底向上和自顶向下的优点,如较早地验证了主要的控制构件和底层模块,并行测试程度较高等。但缺点是需要写较多的驱动模块和桩模块。

  • ​ 模块的内聚是一个模块内部各个元素彼此结合的紧密程度的度量。 ①巧合内聚:指一个模块内的各处理元素之间没有任何联系。 ②逻辑内聚:指模块内执行考干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 ③时间内聚:把需要同时执行的动作组合在一起形成的模块。 ④过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。 由于模块D内的语句之间没有任何联系,因此该模块的内聚类型为巧合内聚。 该内聚类型具有最低的内聚性,是最不好的一种内聚类型。具有该类内聚类型的模块具有不易修改、不易理解和不易维护等特点,同时会影响到模块间的耦合关系。

  • ​ 耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块之间越独立则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。

  • ​ 一个高效的测试是指用少量的测试用例,发现被测软件尽可能多的错误。软件测试不能说明软件中不存在错误,不能用穷举法来进行测试。 经验表明,测试中存在集群规律,即未发现的错误数量与已发现的错误数量成正比,已发现的错误数量越多,则该模块未被发现的错误也就越多。 软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。 “白盒测试技术中,路径覆盖法往往能比语句覆盖法发现更多的错误”选项的描述是正确的,白盒测试中语句覆盖是覆盖度最弱的,所以路径覆盖往往能比语句覆盖发现更多的错误。

  • ​ 单元测试侧重于模块中的内部处理逻辑和数据结构,所有模块都通过了测试之后,把模块集成起来仍可能会出现穿越模块的数据丢失、模块之间的相互影响等问题,因此,需要模块按系统设计说明书的要求组合起来进行测试,即集成测试,以发现模块之间协作的问题。 一个功能模块Ml中的函数F1有一个参数需要接收指向整型的指针,但是在功能模块M2中调用F1时传递了一个整型值,这种模块之间传递参数的错误,在集成测试中最可能测试出来。

  • ​ 软件维护的类型一般有四类:正确性维护、适应性维护、完善性维护和预防性维护。 防错性的程序设计可以减少在系统运行时发生错误,因此可以有效地控制正确性维护成本。

  • ​ 单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。单元测试主要检查模块的以下5个特征:模块接口、局部数据结构、重要的执行路径、出错处理和边界条件。

    ①模块接口。模块的接口保证了测试模块的数据流可以正确地流入、流出。在测试中应检査以下要点: •测试模块的输入参数和形式参数在个数、属性、单位上是否一致。 •调用其他模块时所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致。 •调用标准函数时所用的参数在属性、数目和顺序上是否正确。 •全局变量在各模块中的定义和用法是否一致。 •输入是否仅改变了形式参数。 •开/关的语句是否正确。 •规定的I/O格式是否与输入输出语句一致。 •在使用文件之前是否已经打开文件或是用文件之后是否己经关闭文件。

    ②局部数据结构。在单元测试中,局部数据结构出错是比较常见的错误,在测试时应重点考虑以下因素: •变量的说明是否合适。 •是否使用了尚未赋值或尚未初始化的变量。 •变量的初始值或默认值是否正确。 •变量名是否有错(例如:拼写错误)。

    ③重要的执行路径。在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误。 •计算方面的错误:算术运算的优先次序不正确或理解错误;精度不够;运算对象的类型彼此不相容;算法错误;表达式的符号表示不正确等。 •比较和控制流的错误:本应相等的量由于精度造成不相等;不同类型进行比较; 逻辑运算符不正确或优先次序错误;循环终止不正确(如多循环一次或少循环一 次)、死循环;不恰当地修改循环变量;当遇到分支循环时,出口错误等。

    ④出错处理。好的设计应该能预测到出错的条件并且有对出错处理的路径。虽然计算机可以显示出错信息的内容,但仍需要程序员对出错进行处理,保证其逻辑的正确性,以便于用户维护。 ⑤边界条件。边界条件的测试是单元测试的最后工作,也是非常重要的工作。软件容易在边界出现错误。

  • ​ 模块间的耦合和模块的内聚是度量模块独立性的两个准则。内聚是模块功能强度的度量,即模块内部各个元素彼此结合的紧密程度。一个模块内部各个元素之间的紧密程度越高,则其内聚性越高,模块独立性越好。模块内聚类型主要有以下几类: 偶然内聚,巧合内聚:指一个模块内的各处理元素之间没有任何联系。 逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 时间内聚:把需要同时执行的动作组合在一起形成的模块。 过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。 顺序内聚:指一个模块中的各个处理元素都密切相关于同—个功能且必须顺序执行,前一个功能元素的输出就是下一功能元素的输入。 功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。 本题中,逻辑和过程对相同的数据结构操作,属于通信内聚。

  • ​ 所谓演绎推理,就是从一般性的前提出发,通过推导即“演绎”,得出具体陈述或个别结论的过程。归纳法以一系列经验事物或知识素材为依据,寻找出其服从的基本规律或共同规律,并假设同类事物中的其他事物也服从这些规律,从而将这些规律作为预测同类事物的其他事物的基本原理的一种认知方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值