Advertisement

吉林大学软件学院《软件工程》期末复习

阅读量:

这篇文章是我对课程知识进行归纳和总结的温习巩固笔记(依据老师强调的重点内容,参考了PPT材料)。21级开始吉林大学软件学院软件工程这门课改革后考试内容发生改变,在新的考试模式下不再采用传统的题库化方式进行考核。

我对构建了一个软件工程流程图进行了详细讲解,并阐述了其各个阶段及其应用价值。

<>

这次考试考了的内容大概有:

1、选择题基本和平时测验的题目一致,甚至是原题。

2、简答题

第一题:绘制工程网络图(需掌握绘制技巧),并计算关键路径的时间参数;第二题:探讨面向对象分析方法的优势及其在维护系统中的具体作用;后续内容包括:绘制状态图、执行基本路径测试、采用面向数据流的方法进行系统设计;映射过程(此概念在课堂练习中有所涉及),需明确其定义及应用范围;自底向下的模块化设计原则及集成方法的具体步骤;人机交互界面的设计要素及其重要性;期望达到的设计标准与实际效果评价标准等

分析题为:绘制用例图,并编写其规范和顺序图(分别包括基本事件流和备选事件流两种情况),同时绘制参与者类图。

第一章 概述

1、什么是软件?软件的特点?与硬件相比?

软件是包括程序数据 及其相关文档 的完整集合

特点 抽象性、没有明显的制造过程、与硬件相比没有机械磨损、老化问题。

软件危机:涉及软件系统构建与运营过程中面临的系列重大挑战问题。即为解决途径之一的是系统功能模块的设计与实现;另一个则是系统的稳定运行与故障排除。

应当推广采用实践总结出的开发软件成功的技术和方法,并致力于探索更为高效的技术与方法,在最短时间内尽量消除那些在计算机系统早期发展阶段形成的错误观念与做法。 同时需吸取人类长期从各种工程中积累的方法原理以及从中获得的经验与教训。

2、软件工程的三要素?

软件工程方法学包含三个要素:方法、工具和过程。

方法:采用相关技术手段来实现完成各种软[文]件开发的具体工作。
工具:这些软[文]件工具能够为软[文]件工程方法提供支持性的软[文]件环境。
过程:为了提高软[文]件质量所需的各个阶段的工作组成的整体框架体系;它通过规范各个阶段的工作流程来明确软[件工程的方法与工具之间的配合关系,并最终实现高效、有序地开展软[文]件开发工作的目标。

软件定义的初期分为三个主要的发展阶段:
1. 问题识别阶段:包含可行性评估环节以及功能需求分析部分
2. 整体方案规划部分:涵盖详细架构规划环节
3. 系统集成测试环节:包括编码实现部分完成之后伴随的单元测试展开
软件开发周期则进一步划分为:
1. 整体方案规划部分:涵盖详细架构规划环节
2. 系统集成测试环节:包括编码实现部分完成之后伴随的单元测试展开
3. 系统集成测试环节:包括编码实现部分完成之后伴随的单元测试展开
软件维护周期则包含以下四个主要方面:
1. corrective maintenance环节
2. adaptive maintenance环节
3. perfective maintenance环节
4. preventive maintenance环节

第二章 软件过程

⭐1、 几个经典的软件过程(优点和缺点、会选择)

瀑布模型 的特点表现在以下几个方面:首先是各阶段之间的顺序性和依存性(每个后续的阶段必须建立在前一阶段的完成基础之上),其次是严格要求用户在制定需求时必须基于实际操作和真实需求进行(不切实际的要求将不予采纳)。

优点:1、强制要求开发人员遵循既定的标准流程(如结构化技术)。2、明确地规定了每个阶段需提交的相关文件。3、确保最终交付的产品均需经过质量检验并获得确认。4、瀑布模型的成功主要得益于它是以文档驱动的方式运作的。

缺点

2、该V型(V-model)结构改进了传统的瀑布型(瀑布-model)方法,并特别关注测试活动与分析设计之间的密切关联。需求分析至程序设计经历了多个阶段:需求分析→系统设计→程序设计→编码→单元测试与集成测试→系统测试→验收测试→运行与维护。这些流程均遵循活动驱动型(activity-driven)模式的指导原则。

优点: 1、本质是把瀑布模型中一些隐含的迭代 过程明确出来,使开发活动和验证活动的相关性更加明显; 2、V模型使抽象等级的概念也更明显:所有从需求到实现部分的活动关注的是建立更多的系统详细表述,而所有从实现到交付运行的活动关注的是对系统的验证和确认。 缺点: 和瀑布模型一样,都是对软件开发过程过于简单、理想化的抽象,对需求变化的适应性差。

3、快速原型模型 通过迅速进行数据分析、迅速搭建模型框架、模拟运作过程以及评估系统性能(及时进行优化调整)来实现完整的开发流程。

特点

通过原型能够协调客户与开发团队对软件项目需求的认识**;这不仅有助于实现需求的明确化和规范化的初步确认**。
在实践应用中发现,在项目初期阶段合理运用原型能够促进各参与方对功能模块的认知达成一致。
在项目初期阶段合理运用原型能够促进各参与方对功能模块的认知达成一致。
在项目初期阶段合理运用原型能够促进各参与方对功能模块的认知达成一致。
在项目初期阶段合理运用原型能够促进各参与方对功能模块的认知达成一致。
在项目初期阶段合理运用原型能够促进各参与方对功能模块的认知达成一致。

4、增量模型

逐步构建模式将软件产品划分为多个阶段的增量组件以便进行开发集成与质量检验。 初始阶段负责构建基础功能以确保系统的基本运作。

该软件系统具备快速部署能力;其优势体现在以下几个方面:第一,在人员配备不足或无法在项目期限内完成完整版本软件的情况下具有显著应用价值;第二,在风险控制方面具有系统性规划的能力;第三,在每次增量发布时均提供高质量可操作版本;第四,在逐步上线新功能的过程中能有效减少学习成本并降低新产品的冲击效果。
然而,在架构设计方面存在以下挑战:第一,在现有条件下需要实现各个增量组件与现有系统的无缝集成;第二,在实际开发过程中存在矛盾性要求:一方面要求将整个系统视为一个整体进行开发;另一方面则要求将系统视为由独立构件组成的序列进行处理。

5、螺旋模型 包括从快速原型制作到综合测试与维护的六个关键环节,并伴随规划与部署、风险预估、系统开发以及客户服务反馈等必要步骤。

基本思想是采用原型及其他方法以最大限度地减少潜在风险的影响,并在每个阶段开始前加入用于快速构建的风险评估模型。

优点:
1、螺旋模型是对瀑布模型的一种进化,在客户阶段性产品评审环节中实施了相应的优化措施,并显著提升了软件产品质量。
2、在引入风险分析及其它相关测试活动后,在测试活动的确定性上取得了明显提升。
3、螺旋模型中维护环节与开发并行推进,在项目执行过程中始终将维护工作置于同等重视的位置。

缺点: 1、主要适用于内部开发,在合同签订前必须进行风险分析;若无法获得客户的充分理解,则可能需要采取特殊措施;2、该方法仅适用于大型软件项目的开发,在各阶段的风险评估将消耗大量资源和时间;3、该方法对开发团队的能力要求非常高,在这种情况下可能会导致传统瀑布式方法的出现。

6、喷泉模型

体现面向对象

“喷泉”体现了面向对象软件开发过程迭代无缝 的特性

RUP:迭代式开发

敏捷过程的一些关键词:以适应变化的方式而非预测未来的变化、以价值为导向、极限编程技术、充分考虑并利用用户提供的素材 微软的方法论:

第三章 可行性研究

目的和实质

可行性研究的主要目标是在较低成本下快速评估问题能否得到解答。其实质就是一个浓缩后的系统分析和设计过程。因此需要建立相应的逻辑模型。

该研究涵盖了从技术实现到经济实施再到操作流程和法律遵守等多个方面的可能性分析

该研究涵盖了从技术实现到经济实施再到操作流程和法律遵守等多个方面的可能性分析

最根本的任务:对以后的行动方针提出建议。

2、成本效益分析

其中i代表年利率,P表示本金数额,在这里指的是初始存款金额。n则代表投资期限(单位:年)。经过n年后所获得的终值F等于本金P乘以(1加年利率i)的n次幂。反过来思考,则在n年后若预期获得金额F,则其现值P即可以通过将终值折现来计算。

第四章需求分析

1、为什么需求分析?

  1. 在需求过程中会出现大量错误(涉及事实3和4)
  2. 许多错误未能在早期阶段识别出来(基于事实2)
  3. 这类错误能够在产生初期得到检测(依据事实5)
  4. 如果未能及时发现这些错误,则软件费用将显著增加(参考事实1)

⭐2、需求满足的特征

正一完现实验回

正确性 :要确保需求的表达中没有引入错误(faults)。

一致性: 确保没有互相冲突、矛盾的需求;确保没有不确定的需求。

完整性:如果需求涵盖了所有可能的状态及其变化过程中的输入,并且完整地描述了过程和约束条件,则这组需求就是完整的。

现实性 :确保客户要求系统做的事真的能做到。

实用性 :确保需求和要解决的问题有直接关系。

可检验性 :必须能写出测试来说明需求已被满足。

可回溯性

3、需求分析原则

⭐操作性原则

1、必须理解并描述问题的 信息域 ,根据这条准则应该建立数据模型

2、必须定义软件应完成的 功能 ,这条准则要求建立功能模型

3、必须描述作为外部事件结果的 软件行为 ,这条准则要求建立行为模型

4、必须对描述信息、功能和行为的模型进行分解 ,用层次 的方式展示细节

在构建分析模型之前,首先要深入理解问题的本质,并在此基础上制定相应的指导原则.开发一个能让用户清楚了解人机交互发生过程的原型,并记录每个需求来源及其原因,同时尽量消除描述中的模糊性和歧义.为了更好地管理这些需求,可以采用多种视图来展示和管理不同层面的需求,并根据项目的实际需要,为各个需求分配重要程度等级.

4、非功能性需求

性能、可靠性、安全/保密性、运行限制、物理限制、用户界面友好性

⭐5、自顶向下逐层画数据流图的步骤

首先构建高层次的数据流图(基本系统模型),其中仅包含一个代表目标软件系统整体处理功能的转换过程。

在系统架构中:将顶层视图中的流程分解为多个独立的操作,并通过数据流将其串联起来,实现输入数据依次经过一系列加工处理最终转换为输出数据的形式。这张图表称为一层数据流图,并被正式命名为系统功能级数据流图

在画处理内部结构时, 将每一个处理视为一个小系统, 并将它们的输入输出数据流视为对应的小系统的输入输出数据流. 因此可以通过绘制一层图形来实现每个处理对应的DFD子图.

将DFD子图按照第三步骤进行解析,并反复执行这一过程。直到所有未被充分解析的部分都变得足够简单为止。经过上述过程后,则构建完成了一套层次分明的数据流模型。

⭐6、数据字典的作用功能

1、数据词典与数据流图共同 构成系统的逻辑模型

2、数据字典是对数据流图中包含的所有元素的定义的集合

第五章 总体设计

⭐1、设计原理

(1)模块化设计:将程序分解为独立命名且可自由访问的模块;每个模块负责实现一个子功能;通过整合这些模块形成一个完整的系统;以满足用户需求为基础完成特定功能。该系统能够通过整合各个子系统的优化配置实现资源的最大化利用;每个子系统都能在不同场景下灵活配置;从而保证系统的高效运行和稳定性。

(2)抽象:通过提取事物的核心属性并暂且忽略其细节特征来聚焦于其本质特性。软件设计过程则是在不同层次上进行分析与解决问题的过程中完成的。

(3)逐步求精:逐步求精可被视为一种自顶向下的设计方法。遵循这种方法时, 系统的结构将被逐层优化处理流程,从而实现更加高效的运行机制。

(4)信息隐藏和局部化 :信息隐藏原理指出:设计成其中包含的信息(过程和数据)对不需要这些信息的其他模块来说是不可访问的;局部化指的是将那些关系密切的软件元素物理地放置得彼此靠近;目的是为了隐藏模块的具体实现细节。该方法遵循这一原则旨在确保系统的安全性与可靠性;通过这种方式能够更好地保护敏感的数据与功能;局部化的实施有助于提高系统的运行效率;因此该方案不仅实现了高效的资源利用还能有效保障关键业务不受外部干扰的影响

(5) 模块独立性: 每个模块负责特定功能, 并与其它模块关联较为简单. 其直接体现了模块化\ 抽象\ 信息隐藏以及局部化的核心理念.

为何模块必须保持独立性?因为良好的模块划分能力能显著提高软件开发效率;同时具备高度独立性的各个功能块有助于提高系统的可维护性。

2、内聚和耦合

⭐(1)耦合 是对一个软件结构内不同模块之间互连程度的度量。

非直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合

降低耦合的方法?

思考过程:

  1. 将"标志"改为"衡量"以体现技术术语的专业性
  2. 将"结合"改为"连接"并调整语序以使表述更加专业
  3. 将"是...度量"改为"反映了...指标"
  4. 将"用于量化表示..."改为"用于评估...程度"
  5. 增加了对结果关系词的描述以提升表达完整度
  6. 保留了原文的核心逻辑和意义
  7. 使用更专业的技术术语替代了较为随意的表述

偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚

3、启发式原则

1.改进软件结构提高模块独立性:

2.模块规模应该适中:

3.深度、宽度、扇出和扇入都应适当:

4.模块的作用域应该在控制域之内 :

5.力争降低模块接口的复杂程度:

6.设计单入口单出口的模块:

7.模块功能应该可以预测 ,避免对模块施加过多限制:

⭐4、面向数据流的设计方法 映射过程(步骤)

第1步 复查基本系统模型

第2步 复查并精化数据流图

第3步 确定数据流图具有变换特性还是事务特性

第4步 确定输入流和输出流的边界,从而孤立出变换中心

第5步 完成"一级分解(first-level factoring)"。该步骤旨在将复杂的系统结构进行层次化拆解与优化配置。具体而言,需完成以下任务:提取核心组件并构建相应的功能单元,包括但不限于Cm,Ca,Ct,Ce四个关键模块,其中Cm负责协调相关控制功能;Ca负责接收和管理所有输入数据;Ct负责管理内部形式数据的操作流程;Ce负责协调输出信息的过程

第6步 实现第二级分解任务

第7步 采用基于设计度量和启发式方法对第一次分割所得出的软件架构进行进一步优化

由事务流映射成的软件结构包括一个接收分支和一个发送分支;

对应接收分支:从事务中心的边界出发,在接受流通路上将处理行为转换为独立的功能模块;
发送分支架构包含一个调度单元体,在其职责范围内统筹管理下级所有运行单元;
在数据流向图中对每一个流程通路实施分类处理策略,并将其按照特性进行功能划分。

第六章 详细设计

结构化程序设计技术是详细设计的逻辑基础。

⭐、不同的过程设计工具的优缺点

程序流程图

优点:程序流程图中通过箭头表示数据流或控制转移,并且程序员无需遵循严格的结构程序设计原则。这种设计允许他们自由地改变流程路径。

缺点:1、程序流程图不具备逐步求精作为优化设计工具的能力**(原句中的"不是"改为"不具备"使表述更加严谨)**;它引导程序员在早期关注具体实现细节的同时忽视了整体架构规划(将"诱使"改为"引导"更加简洁明了;将"过早地考虑"改为"早期关注"更加自然流畅;将"而不去考虑程序的全局结构."改为"...的同时忽视了整体架构规划."使得表达更加准确完整)。

2、程序流程图不易表示数据结构

盒图

优点:

1、功能域(即某个特定控制结构的作用域)明确 ,可以从盒图上一眼就看出来。

2、很容易确定局部和全程数据的作用域

3、很容易表现嵌套关系 ,也可以表示模块的层次结构。

缺点:

1、不可能任意转移控制。

PAD(Problem Analysis Diagram)图

基于二维树形架构构建程序控制流图,并确立了五种基础控制结构的表现形式;同时支持递归引用。

PAD图的主要优点:

  1. 使用表示结构化控制结构的PAD符号所设计出来的程序必然形成结构化程序。
  2. Pad图能够非常清晰地描述程序结构。
  3. 通过Pad图可以很易于理解和记忆地表现程序逻辑。
  4. 通过软件工具可自动地将Pad图转换为高级语言源代码。
  5. Pad图既可以用来表示程序逻辑,也可用于描述数据结构。
  6. Pad图符号支持自顶向下逐步细化的方法。

判定表 1、当算法中包含层次递进的条件判断(特别强调的是,这里关注的是条件判断而非循环操作)时,采用判定表能够清晰地展示复杂的条件组合与其对应的处理流程之间的对应关系。 2、该方法主要用于描述程序中的程序流程逻辑 。 3、在判定表中设置所有由两个选择项组成的判断列表,并相应地安排相应的操作处理内容。 4、具体要求是将程序流程图中的所有复杂选择结构转换为二选一形式进行处理。

优点:被用来简明扼要且一义性地描述所有处理规则。缺点:判定表体现的是静态逻辑,在特定条件下对应的结果。它无法既清晰又直接地体现加工过程中的操作顺序,并且也无法有效表达循环结构的存在,因此作为设计工具时显得力不从心。

判别树 判别树作为判别表的一种形式,在分类问题中具有较高的实用价值。 其优点在于结构清晰且易于理解 其缺点在于简明性不及传统的判别表 简明性不及传统的判别表。 在绘制决策树的过程中,分支顺序可能会显著影响其简明程度

过程设计语言(PDL)

伪代码

PDL采用严格的外部语法关键字规范控制结构与数据组织;此外其内部语法通常既灵活又自由能够满足不同工程项目的具体需求

优点:

  1. 该系统设计便捷地允许注释直接插入到源程序中间位置。这样做的好处在于,在维护人员对程序代码进行修改时也会相应地更新PDL注释内容。
  2. 该系统支持使用常用的正文编辑工具或文字处理软件完成PDL脚本的编写与编辑工作。
  3. 系统已开发出自动处理模块,并可自动生成相应的程序代码。

PDL的一个不足是相比图形工具而言不够直观形象,在处理复杂的条件组合和动作对应关系方面表现相形见绌于判定表

⭐2、人机界面设计的黄金规则

赋予用户控制权 提供灵活的交互; 允许用户交互可以被中断和撤销;

减少用户的记忆负担 保持界面一致

为什么ui要设计的更好?

从本质上讲,人机界面构成了计算机系统或产品的核心关键要素;糟糕的人机界面将严重影响用户的使用效率和系统的计算能力;即使设计再好、实现再可靠的应用也可能因缺乏有效的用户 interface 而无法取得成功。

3、人机界面设计过程

用户、任务和环境分析及建模 界面设计 界面构造 界面确认

4、McCaBe

主要看一下缺点

衡量程序控制流复杂程度的方法是衡量程序结构设计的关键指标之一。随着内部分支数量和循环次数的增长,环形复杂度也会随之提升,从而成为衡量测试难度的重要指标,同时也能够预估软件系统的可靠性和稳定性。该属性使其具有可加性,即不同模块之间的总环形复杂度等于各模块独立计算的结果之和,例如,若模块A具有3级环形复杂度,而模块B则有4级,那么两者结合后总共有7级复杂的控制流路径需要考虑进去。这一特性有助于在设计阶段就对系统的维护和技术风险做出预判,用来限制模块的最大行数,这一做法有助于提高开发效率并降低潜在错误的可能性。通过大量调查发现,当一个模块的整体环域数目达到或超过10时,完成全面测试所需的时间会大幅增加甚至变得难以实现;因此,McCabe建议将10设为单个功能块的最大允许环域数目上限值,以此来确保系统的扩展性与维护性之间取得平衡点。

缺点:

  1. 对于不同控制流类型的区分不够精细;
  2. 将简单的IF条件和循环结构等同对待;
  3. 嵌套条件判断和单一CASE分段同样被视为复杂的;
  4. 忽略了模块间接口作为独立系统部分的重要性;
  5. 长而无分支的一顺序程序与其简短单一行指令程序在复杂度上被视作相同

在分析这个问题时, 我们还需要了解如何量化程序运行时间这一难度, 而单一比值指标存在局限性。例如, 该种方法仅关注控制结构的时间消耗, 而未考虑程序内部指令本身的执行时间。当程序包含数千条指令时, 它们的总执行时间可能会与一条长指令产生相同的效果, 使用这种方法来评估可能会导致错误结论。因为这种方法认为将控制结构分解到第三层足以全面描述系统的层次结构, 因此它缺乏足够的细节来准确反映系统的行为特性。对于这类问题, 在设计阶段即可确定合适的评估标准。

第七章 实现

1、测试的目的 :发现错误

一个好的测试用例在于能发现至今未发现的错误

一个成功的测试是发现了至今未发现的错误的测试

2、黑盒和白盒

在明确确定了产品应具备的各项功能后,在使用测试方法进行验证时,则可确保所有功能均正常运行。

黑盒测试: 将待测系统视为一个完全不可知的black box, 测试人员在实施测试时, 不关注程序内部的具体逻辑或细节, 而是仅基于需求规格说明书, 检查系统的功能是否满足功能说明的要求. 另一种常见的名称是基于需求的功能测试方法.

如果已经掌握了产品的内部运行机制,则可通过测试来核查产品内部动作是否符合规格说明书要求。

白盒测试: 将待测系统视为一个透明化处理的对象,在这种环境下允许相关技术人员基于程序内部结构和相关信息设计或选择合适的测试用例序列,并实现对整个系统全部逻辑路径的实际覆盖性验证工作。 白盒测试通常采用的方法包括结构化分析法、判定树法以及条件覆盖法等技术手段。 该方法的主要特点在于通过深入分析系统的内部机制来发现潜在缺陷,并通过全面覆盖所有功能流程来提升系统的可靠性与稳定性。

⭐3、软件测试步骤

模块测试(单元测试): 考察 模块接口、局部数据结构、关键操作流程、异常处理机制以及边界条件等细节 , 该过程要求将每个功能模块独立视为一个单元进行测试 , 这一方法往往能够及时揭示编码错误或详细设计中的缺陷 。 子系统测试(集成度增强型的功能验证): 在完成单元级的功能验证后 , 将经过质量控制检验的各功能模块组合成一个子系统 , 重点考察各子系统的接口行为及协调关系 。 系统级功能验证(集成度更高): 在完成集成级功能验证的基础上 , 组装成完整的计算机辅助设计(CAD)模型并投入运行 , 主要针对系统的各个组成部分之间的关联性展开深入分析 。 该阶段通常会发现设计上的潜在问题以及需求文档中可能存在的期望偏差 。 验收与确认阶段(最终的功能完整性评估): 该阶段的目标是全面验证计算机辅助设计系统的有效性 。 系统的有效性定义为:当计算机辅助设计的功能和性能与预期相符时 , 系统即具有有效性特征 。 将整个软件系统作为一个整体对象来进行功能验证 , 同时鼓励实际应用环境中的反馈意见 , 最终目标是确保系统的功能需求得到充分满足 。

单元测试的主要考察点在于:单元测试需要针对调用模块(上层功能)以及其相关的底层业务逻辑(下层所支持的功能)进行相应的验证和覆盖。

集成测试重点: 集成测试分为非渐增式和渐增式。

确认测试重点:功能

4、几种集成测试的策略和步骤
1、一次性集成

缺点:必须编写大量存根程序及相关驱动程序。在将所有组件一次性整合时,难以识别所有潜在问题的根源。导致难以明确区分不同类型的故障。

2、自顶向下集成

从主控制模块出发,在程序控制层次结构的基础上逐步整合各相关模块。(深度优先、宽度优先) 优势:采用自顶向下的整合策略能够在测试过程中较早地识别主要控制点或关键决策点。 自顶向下测试方案无需驱动程序运行。 若选择深度优先整合方法,则可在测试初期实现软件的核心功能并完成对其功能验证。 缺点:该方法必须编写相关记录程序以跟踪操作情况。 为了全面检验软件系统的高级功能表现,在较低层次上需进行补充处理工作。 这一过程可能会导致大量记录数据的产生和处理需求增加

3、自底向上集成

从'原子'模块(软件结构最低层的一个模块)开始组装和测试,并无需预先配置存根程序;该方法适用于多种应用场景的优势在于无需编写存根程序;其使用的测试驱动数量相对较少;底层组件通常负责大部分的数据计算以及输入输出操作;容易出现错误问题但可以在早期阶段识别这些潜在的问题;各个底层组件能够同时进行独立性测试;然而对顶层组件测试安排较晚**会导致主要错误延迟发现;整个系统的功能特性仅在完成所有组件集成后才会显现出来

⭐4、三明治集成

采用自顶向下与自底向上的混合策略进行集成测试工作,在选择结构图某一层作为基准层时需要注意其关键性问题。若更换不同的层次作为基准层,则会导致整个集成测试活动的情况发生显著变化。

优点: 集成测试可以在项目初期阶段实施 该方法结合了自顶向下与自底向上的优势特点,并且在项目初期阶段就对控制模块以及公共组件进行了初步验证;缺点: 潜在缺陷可能存在于各个独立组件中

回归型测试(regression testing)是一种针对已有的测试用例进行执行的方法,在软件开发过程中尤其常见。其目的是对因调试或其他操作而产生的潜在问题进行预防和排查。通过该方法可以有效避免引入新的功能异常或可能导致的问题。

5、白盒测试
⭐逻辑覆盖测试

逻辑覆盖是以程序内部的逻辑结构 为基础设计测试用例的技术

该方法可实现X的标准测试覆盖率要求;针对每一个前提判断(即每一个判断框),需对其成立状态和非成立状态均进行相应的测试;需要注意的是,在某些情况下尽管实现了所有前提组合测试仍无法保证所有判断都被测试;对于判别型/逻辑型结合型结构体而言,在保证各层逻辑均得到充分验证的同时还可能存在某些前提未被充分考虑;该方案必可达到Y所要求的最大程度的前提组合覆盖率水平;然而该方案并不一定能够使程序中所有的路径都被执行到;该方案的主要特点在于能够确保流程图中每一个节点都能被访问到(即实现与语句覆盖率相同的节点遍历);而边覆盖率则要求必须遍历流程图中所有的边;路径覆盖率则要求必须能够遍历每一条可能存在的路径(这可能会导致相当大的计算量)

⭐控制结构测试

基本路径测试

1、画流图 2、求环形复杂度 3、确定线性独立路径的基本集合

6、黑盒测试

黑盒测试法与白盒测试法不能相互替代,二者应当相辅相成. 在一个完整的软件开发过程中,白盒分析通常会在项目初期展开,而黑盒分析则主要应用于后期阶段以确保系统质量.

⭐等价划分

等价划分的方法将所有可能的输入数据(即程序的输入域)划分为若干个部分,并根据这些划分导出相应的测试用例。在理想的情况下,每个测试用例都能够独立地发现一种错误。

有效等价类:指根据程序规格说明所确定的一组合理且有意义的输入数据集合;无效等价类:指根据程序规格说明所确定的一组非法且没有实际意义的数据集合。

容易考:!!!!:

制定一个新的测试用例方案, 使得其最大限度地涵盖尽可能多的有效等价类; 依次重复这一过程直至所有有效的等价类均被彻底涵盖. 制定新的测试用例方案, 使得其仅限于一个尚未被涵盖的无效等价类; 依次重复这一过程直至所有无效等价类都被彻底涵盖.

边界值分析

边界

错误推测法

经验和直觉

7、白黑对比

1、基于不同视角分析同一目标的产品功能。
2、仅关注产品的功能模块及其交互关系而不关心其具体需求是否满足。
3、专注于需求规格书所描述的功能点但无法确保所有实现细节都被覆盖。
4、开发阶段投入的人力物力远高于传统方法。
5、每次失败都会引发一系列修改工作,并要求所有之前的_blackbox_ 测试重新执行,并根据结果调整该 Whitebox 测试的具体路径。

8、软件可靠性

软件可靠性

软件可用性

稳定可用性

MTTF:平均无故障时间 MTTR:平均修复时间

⭐经验表明,平均无故障时间与单位长度程序中剩余的错误数成反比,即

Et代表测试前程序的初始错误数量;It表示程序规模(即机器指令总数);Ec(t)为在时间区间[0,t)内纠正的错误数量

9、调试

它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。

蛮干法、回溯法、原因排除法。

第八章 软件维护

1、什么是软件维护 完善性维护、适应性维护、改正性维护,预测性维护

软件维护是指在软件已正式投入运行后实施的一系列旨在修正缺陷并适应新需求的行为过程

⭐2、决定软件可维护性的因素

可移植性 可重用性 可修改性 可测试性 可理解性

3、如何提高软件可维护性

1、需求分析复审 标注可能的改进和修改 软件可移植性 系统界面

设计复审: 评价软件的结构和过程 对将来可能修改的部分预作设计

代码复审 : 编码风格、内部说明文档

**设计和编码:

配置复审: 审查软件配置成分使用 可重用 的软件构件

第九章 软件项目管理

1、甘特图的优缺点

优点如下:Gantt图能够清晰呈现任务分解的情景及其各自开始与结束的时间点,并因此在进度规划与进度管控方面具有显著的优势。

⭐缺点 (1) 无法明确勾勒 各项作业之间的相互关联; (2) 关键环节难以分辨, 使得重点掌握的对象难以确定; (3) 潜力优势尚不明显, 容易导致潜在优势未能被充分利用。

工程网络图

2、人员组织机构以及适合的项目

基于民主的程序员社群 在组织架构中实现成员间的平等地位 采用协商会议形式进行技术方案的讨论与决定 技术决策由小组内部经过民主程序达成

主要优点 : 团队成员普遍表现出对程序错误发现工作的积极态度,在决策过程中实行民主协商机制,在项目管理中注重民主决策和集体智慧的运用,在日常工作中实行民主协商机制有助于提升团队协作效率和成果质量 。 团队内部具有较强的凝聚力和活跃的学术交流氛围 , 有利于提升团队整体素质和创新能力 , 从而有助于提升团队攻克技术难题的能力 。 主要问题: 开发团队成员普遍缺乏丰富的工作经验 ; 项目中存在大量事务性工作内容 , 如数据信息的录入与更新等 , 多渠道的信息沟通 耗时较长 , 将导致工作效率降低 。

(2)主程序员组 主程序员组的两个重要特性: 专业化和层次性。

主程序员很难找到:成功的管理员、高度熟练的程序员的结合体;

(3)现代程序员组—主程序员小组的变化形式

技术组长,行政组长

(4)大型项目的技术管理组织结构

项目领导人—小组领导—程序员

扩展:包含分散决策的组织方式

各种制度的适用情况:

集中管理模式下涉及的大规模但简短的任务中存在两类基础性问题:一类是具有简单性和重复性的基础性问题;另一类则是尽管结构清晰但由于过于标准化而导致的问题。此外还需应对大型工程或系统以及具有固定周期但时间跨度较短的任务。

分布式的 小型复杂项目 具有挑战性的创新问题 模块化不足的问题 小型项目 周期较长的任务

3、需要重点理解的概念

软件配置? SCI? 基线?基线的作用?

简言之:软件配置管理是软件系统发展过程中管理和控制变化的规范。

软件配置项(Software Configuration Item) :用于配置管理而被单独处理的工作产品或一段软件,并缩写为SCI。即其全部内容包括计算机程序、文档和数据。

基线(baseline):经过严格审核的规格说明文件或中间产物,它们可被视为进一步研发的基础,并且其变更均需遵循严格的变更控制流程。基线即为经过严格审核的软件配置参数。

项目数据库: 当一个SCI确定为基线时就会被记录于其中; 通过结合使用变更控制规程 保证了项目的基线得到了有效的保护

该软件体系旨在实现对系统各组件的有效配置管理与优化维护。具体而言,其主要包含五个核心功能维度:首先,通过精确识别当前系统版本,确保配置的一致性和稳定性;其次,通过严密的变更控制流程,防止因操作失误导致的系统不稳定;再次,通过持续的变化监控机制,及时发现并解决潜在的问题;此外,配备专业的配置审查机制,确保系统的安全性与兼容性;最后,通过定期生成详细的配置状态反馈报告,为管理层提供决策依据和参考信息

第十章 面向对象

需要掌握的内容:

分析阶段 (问题空间)

1.根据问题的描述,用用例的方法去识别系统的的主要的功能性需求

  1. 构建符合规范的标准化用例模型:识别参与方并绘制相应的UML图;同时优化相关规范文档内容并确保其涵盖基本流程以及备用流程。

3、进行用例分析,提取分析类、转述usecase(用顺序图来刻画)

4、分析整理各类图(特别是参与类的图),并以VOPC类图的形式绘制出来以明确展示各个类的职责以及它们之间的相互关联

将分析类映射成设计元素(求解空间) 即识别设计元素

从分析类映射的设计类、从分析机制映射的设计类

将用例模型(顺序图和参与类图)中的分析类用设计类替换

用例规约样例:

用例名称 系统配置
相关参与者 老人家属
简要描述 家属进行看护系统的系统配置,设置机器人与老人安全距离、机器人移动速度、用户账号密码等。
前置条件
后置条件 系统配置成功
基本事件流 1. 家属设置机器人与老人安全距离2. 家属设置机器人移动速度3. 家属设置用户账号密码
备选事件流 A-1 1. 配置完成2. 设置距离超出范围A-2 1. 设置完成2. 设置速度过快或过慢(超出范围)
补充说明 非功能需求:无 设计约束:无 数据需求:1.密码为6-12位 阿拉伯数字+英文字母的组合 未解决的问题:无

全部评论 (0)

还没有任何评论哟~