# 软考 **Repository Path**: tu-zhenjin/soft-exam ## Basic Information - **Project Name**: 软考 - **Description**: 软考倒计时12天冲刺,中级软件设计师。记录自己所学的,主要是记忆,不是背诵,纯记忆。快速过软考,好了,没有别的了!!! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-05-15 - **Last Updated**: 2025-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软考中级 ## 软件测试 --- 结构化设计主要包括: ①`体系结构设计`:定义软件的主要==结构元素==及其关系。 ②`数据设计`:基于==实体联系图==确定软件涉及的文件系统的结构及==数据库==的表结构。 ③`接口设计`:描述==用户界面==,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。 ④`过程设计`:确定软件各个组成部分内的==算法及内部数据结构==,并选定某种过程的表达形式来描述各种算法。 --- 对基本加工的说明有三种描述方式:`结构化语言`、`判断表(决策表)`、`判断树(决策树)`。 基本加工逻辑描述的基本原则为: 1.对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。 2.基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。 3.加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。 4.加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。 --- 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。内聚是指模块内部各元素之间联系的紧密程度,内聚度越高,则模块的独立性越好。内聚性一般有以下几种: ①`巧合内聚`,指一个模块内的各处理元素之间没有任何联系。 ②`逻辑内聚`,指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 ③`时间内聚`,把需要同时执行的动作组合在一起形成的模块。 ④`通信内聚`,指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。 ⑤`顺序内聚`,指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。 ⑥`功能内聚`是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。 --- 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。其条目有数据流、数据项、数据存储、基本加工等。 --- 模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。存在多种模块之间的耦合类型,从低到高依次为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。 `公共耦合`是指一组模块都访问同一公共数据环境; `控制耦合`是指一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一个模块的功能; `标记耦合`是一组模块通过参数表传递记录信息; `数据耦合`是一个模块访问另一个模块时,彼此之间通过数据参数(不是控制参数,公共数据结构或外部变量),来交换输入输出信息。 --- 在软件开发完成交付用户使用后,就进入软件运行/维护阶段。软件维护活动根据其内容可以分为4种类型: ①`正确性维护`。为了识别和纠正软件错误,改正软件性能上的缺陷,排除实施的误使用,应进行的诊断和改正错误的过程。 ②`适应性维护`。由于信息技术飞速发展,软件运行的外部环境或数据环境可能发生变化,为了使软件适应这种变化而修改软件的过程。 ③`完善性维护`。在软件使用过程中,用户往往会对软件提出新的功能与性能要求, 为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性而进行的维护活动。 ④`预防性维护`。为了提高软件的可维护性和可靠性等,为以后进一步改进软件打下良好基础而进行的维护工作。 --- 软件测试的基本目标是为了发现软件中的错误,但软件测试分为几个不同的阶段,每个阶段的侧重点是有所不同的。 单元测试主要是发现程序代码中的问题,针对详细设计和软件实现阶段的工作进行的; 集成测试验证系统模块是否能够根据系统和程序设计规格说明的描述进行工作,即模块以及模块之间的接口的测试: 而系统测试则是验证系统是否确实执行需求规格说明中描述的功能和非功能要求,因此测试目标在需求分析阶段就已经定义。 --- 辅助软件维护过程中的活动的软件称为“软件维护工具”,它辅助维护人员对软件代码及其文档进行各种维护活动。软件维护工具主要有:1. 版本控制工具;2. 文档分析工具;3. 开发信息库工具;. 4. 逆向工程工具;5. 再工程工具;6. 配置管理支持工具。 --- 系统的可维护性的评价指标包括:可理解性、可测试性、可修改性。 可理解性:指别人能理解系统的结构、界面、功能和内部过程的难易程度。模块化、详细设计文档、结构化设计和良好的高级程序设计语言等,都有助于提高可理解性。 可测试性:诊断和测试的容易程度取决于易理解的程度。 可修改性:诊断和测试的容易程度与系统设计所制定的设计原则有直接关系。模块的耦合、内聚、作用范围与控制范围的关系等,都对可修改性有影响。 --- 人机交互==“黄金三原则”==包括:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。 --- 软件测试按阶段划分为单元测试、集成测试和系统测试。在单元测试基础上,将所有模块按照设计要求组装为系统,此时进行的测试称为集成测试。 集成测试有多种策略: `自底向上`:从系统层次中最底层的构件开始测试,逐步向上。需要设计驱动模块来辅助测试。 `自顶向下`:与自底向上相反,从最顶层的构件开始,逐步向下。需要设计桩模块来辅助测试。 `三明治`:结合自底向上和自顶向下两种测试策略。 `一次性`:对所有构件一次性测试,然后集成。 ---