2021 合工大软件工程期末复习知识点汇总

——知识点范围整理自wkw闭卷复习要点群文件.txt
闭卷考概念的滚出中国
题型
判断题 10分
选择题 10分
填空题 10分
名词解释 4×5分
简答题 5×4分
综合题 30(课堂作业)

押个题 (坐等打脸) ( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

  1. 软件生命周期划分阶段和任务
  2. 对比分析面向对象方法与结构化方法
  3. 统一开发过程RUP阶段和里程碑
  4. scrum相关(计科没讲)
  5. 扇入扇出、作用域、模块独立性、信息隐蔽
  6. 加油站数据流图
  7. 密码验证状态转换图

考完复盘:知识点基本覆盖

一、软件工程学概述

1. 软件与软件工程的定义

软件是多种术语和对象的集合,并将这些术语和对象有效地配置在一起。一般包括程序、文档和数据。
软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

2. 软件危机

在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题不是在解决具体问题时遇到的,而是软件开发过程所面临的具有普适性的问题。

注:概括说,开发周期长、成本高、质量差、适应性差和难维护等四大难题

产生原因

  • 与软件本身特点有关
  • 软件开发与维护的方法不正确有关
  • 在软件开发的不同阶段进行修改需要付出的代价
    2021 合工大软件工程期末复习知识点汇总

    4. jackson详细设计

    特点:

    • 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具
    • 形象直观可读性好
    • 既能表示数据结构也能表示程序结构

    与数据流图和层次框图的区别:

    • 数据流图是根据数据确定软件结构的方法,主要应用于需求分析和概要设计阶段
    • Jackson图是根据数据结构设计程序处理过程的方法
    • 层次框图与Jackson图虽然类似,但其中图形元素的含义不同,层次图主要用于描述模块及其之间的关系.但Jackson图描述的是程序结构

    步骤:

    • 分析并确定输入数据和输出数据的逻辑结构,并使用Jackson图描绘这些数据结构
    • 找出输入数据结构和输出数据结构有对应关系的数据单元(即程序中可以同时处理的数据单元)
    • 依据规则导出Jackson图
    • 列出所有操作和条件,并把他们分配到程序结构图的适当位置
    • 用伪码表示程序

    5. 详细设计文档

    五、测试维护

    1. 测试原则

    (1) 所有测试都应该能追溯到用户需求;
    (2) 应该远在测试开始之前就制定出测试计划;
    (3) 把Pareto原理应用到软件测试中(测试存在群集现象);
    (4) 该从“小规模”测试开始,并逐步进行“大规模”的测试;
    (5) 穷举测试是不可能的;
    (6) 为了达到最佳测试效果,应该由独立的第三方从事测试工作;
    (7) 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;
    (8) 测试用例应由测试输入数据和对应的预期输出结果这两部分组成;
    (9) 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
    (10) 应当对每一个测试结果做全面检查;
    (11) 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便;

    2. 单元测试

    单元测试集中检测软件设计的最小单元——模块。
    单元测试和编码属于软件过程的同一个阶段。
    在源程序代码通过编译程序的语法检查后,可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。
    可以应用人工测试和计算机测试这样两种不同类型的测试方法,完成单元测试工作。
    单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行地进行。
    测试重点:
    模块接口;局部数据结构;重要的执行通路;出错处理通路;边界条件。

    3. 集成测试

    集成测试是测试和组装软件的系统化技术。

    方法

    由模块组装成程序时有两种方法。
    一种方法是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法
    另一种方法是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试,这种方法实际上同时完成单元测试和集成测试。

    非渐增式测试:

    把所有模块放在一起,作为一个整体来测试。测试时会遇到许多的错误,改正错误非常困难,因为在庞大的程序中想要诊断定位一个错误非常困难,而且改正一个错误之后,马上又会遇到新的错误,这个过程会继续下去,没有尽头。

    渐增式测试:

    与“一步到位”的非渐增式测试相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此,目前在进行集成测试时普遍采用渐增式测试方法。

    当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。

    自顶向下集成

    方法是从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。
    深度优先的结合方法先组装在软件结构的一条主控制通路上的所有模块。选择一条主控制通路取决于应用的特点,并且有很大任意性。
    宽度优先的结合方法是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。

    自底向上

    自底向上测试从“原子”模块(即在软件结构最低层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要存根程序。

    优缺点:

    自顶向下测试方法的主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。
    自顶向下测试方法的主要缺点是需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。

    自底向上测试方法的优缺点与上述自顶向下测试方法的优缺点刚好相反。

    4. 验收测试

    确认测试也称为验收测试,它的目标是验证软件的有效性。
    验证指的是保证软件正确地实现了某个特定要求的一系列活动;确认指的是为了保证软件确实满足了用户需求而进行的一系列活动。
    软件有效性的一个简单定义是:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。
    需求分析阶段产生的软件需求规格说明书,准确地描述了用户对软件的合理期望,因此是软件有效性的标准,也是进行确认测试的基础。

    确认测试必须有用户积极参与,或以用户为主进行。用户应该参与设计测试方案,使用用户界面输入测试数据并且分析评价测试的输出结果。
    确认测试通常使用黑盒测试法。

    5. 白盒测试(流图,测试用例)

    此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
    通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

    测试方法:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。
    其中运用最为广泛的是基本路径测试法。
    语句覆盖→条件覆盖(分支覆盖)→判定覆盖:能力依次增强

    满足条件覆盖的测试数据不一定满足判定覆盖

    (ppt 07-实现 page67)

    6. 软件调试

    调试(也称为纠错)作为成功测试的后果出现,即调试是在测试发现错误之后排除错误的过程。
    软件错误的外部表现和它的内在原因之间可能并没有明显的联系。调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。

    调试过程

    调试不是测试。
    调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一个症状,它表明在软件中存在着隐藏的问题。调试过程试图找出产生症状的原因,以便改正错误。

    调试途径

    蛮干法可能是寻找软件错误原因的最低效的方法。仅当所有其他方法都失败了的情况下,才应该使用这种方法。
    回溯是一种相当常用的调试方法,当调试小程序时这种方法是有效的。具体做法:从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。
    对分查找法的基本思路是,如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出。
    归纳法是从个别现象推断出一般性结论的思维方法。使用这种方法调试程序时,首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因。然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。
    演绎法从一般原理或前提出发,经过排除和精化的过程推导出结论。采用这种方法调试程序时,首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因。

    对分查找法、归纳法和演绎法都属于原因排除法。

    7. 软件维护

    基本概念

    所谓软件维护就是在软件交付使用后,为改正错误或满足新需要而修改软件的过程。
    可分为改正性维护、适应性维护、完善性维护、预防性维护。
    软件可靠性
    是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件可靠性随着给定的时间间隔的加大而减少。
    一般说来,对于任何其故障是可以修复的系统,都应该同时使用可靠性和可用性衡量它的优劣程度。
    软件可用性
    是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
    可靠性和可用性之间的主要差别是,可靠性意味着在0到t这段时间间隔内系统没有失效,而可用性只意味着在时刻t,系统是正常运行的。

    估算平均无故障时间的方法

    植入错误法
    在测试之前由专人在程序中随机地植入一些错误,测试之后,根据测试小组发现的错误中原有的和植入的两种错误的比例,来估计程序中原有错误的总数ET。
    分别测试法
    为了随机地给一部分错误加标记,分别测试法使用两个测试员(或测试小组),彼此独立地测试同一个程序的两个副本,把其中一个测试员发现的错误作为有标记的错误。

    六、面向对象

    1. 比较分析面向对象,面向过程(很可能考)

    计算机处理的实体对象
    面向对象方法 :这里的对象是指数据以及可以施加在这些数据之上的操作所构成的统一体 。类(数据+行为)
    结构化方法 :是各种预定义类型的变量、数组、记录和文件等数据描述 。模块(数据+部分行为)
    计算机处理对象的操作
    面向对象方法 :通过消息驱动对象主动的执行起自身的数据处理行为
    结构化方法 :通过对象(参数)传送,并调用外部的处理功能来处理对象
    处理观点的不同
    面向对象方法 :把程序看成是相互协作而又彼此独立的对象的集合。每个对象就是一个微型的程序,有自己的数据、操作、功能和目的
    结构化方法 :看作是工作在数据之上的一系列过程或函数的集合
    通讯机制
    面向对象方法 :消息的传递
    结构化方法 :模块调用和参数的传递
    【思维的特点】
    面向对象方法 :该方法使用现实世界的概念抽象地思考问题从而自然地解决问题。他强调模拟现实世界中的概念而不强调算法。在进行面向对象设计时,计算机处理问题方式被放弃,而重点针对需要处理的问题进行分析。
    结构化方法 :这种方法以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。这种思维方法与计算机处理问题的方法是相一致的。对于那些非常熟悉计算机处理过程的程序员来说具有不可替代的优势。
    【软件开发过程的特点】
    面向对象方法 :面向对象的方法重点强调反映现实需求的对象业务模型的建立,相对而言设计和编码部分的工作则较为次要。
    结构化方法 :重点在软件处理过程的设计和实现上。
    【适用范围的比较】
    面向对象方法 :适合于比较大型的应用。
    结构化方法 :对于要求涉及底层处理的应用或需要较高处理效率直接对硬件系统进行操作的系统比较适用。另外对一些小的需要复杂处理流程(强调算法设计)的软件系统也比较适用。
    一般特点比较
    面向对象方法 :稳定、可重用、易维护;但执行效率比较低
    结构化方法 :执行效率高;但难维护
    两种方法的交互性
    面向对象方法 :面向对象方法是在传统软件工程方法上发展起来的一种新方法,许多传统的软件工程方法在面向对象的分析上也同样起作用(模块设计的原则等)
    结构化方法 :在面向对象的设计中还存在一些不可消除的作用,当前提出的面向方面的设计就是这种作用的体现。

    2. 类和类之间的关系类型

    类与类之间通常有关联、泛化(继承)、依赖和细化4种关系
    (1)关联
    表示两个类的对象之间存在某种语义上的联系。

    聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。使用的“包含”、“组成”、“分为……部分”等字句,意味着存在聚集关系。

    (2)泛化
    UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。
    (3)依赖
    依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。
    (4)细化
    当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。

    假设两个模型元素A和B描述同一个事物,它们的区别是抽象层次不同,如果B是在A的基础上的更详细的描述,则称B细化了A,或称A细化成了B。

    3. 面向对象设计的五个层次,三个模型(需求分析三个模型)

    五个层次
    主题层、类与对象层、结构层、属性层和服务层
    三个模型

    • 对象模型(静态结构)
    • 动态模型(交互结构)
    • 功能模型(数据变换)

    三者解决的问题不同,重要程度也不同。其中对象模型是最基本、最重要、最核心的。
    面向对象建模得到的模型包含系统的3个要素,即静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。解决的问题不同,这3个子模型的重要程度也不同。

    4. 用例图

    5. 软件重用

    概念
    重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。
    广义地说,软件重用可分为以下3个层次:

    • 知识重用
    • 方法和标准的重用
    • 软件成分的重用

    上述前两个重用层次属于知识工程研究的范畴,本节仅讨论软件成分重用问题。

    软件成分的重用级别

    代码重用:源代码剪贴、源代码包含、继承
    设计结果重用:重用某个软件系统的设计模型(即求解域模型)
    分析结果重用:更高级别的重用,即重用某个系统的分析模型

    典型的可重用软件成分

    主要有以下10种:项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用户文档和技术文档、用户界面、数据、测试用例

    类构件

    面向对象技术中的“类”,是比较理想的可重用软构件,不妨称之为类构件。
    应具备的特点:① 模块独立性强 ② 具有高度可塑性 ③ 接口清晰、简明、可靠 ④ 需求模型和规格说明
    类构件的重用方式:① 实例重用 ② 继承重用 ③ 多态重用
    软件重用的效益:① 质量 ② 生产率 ③ 成本

    6. 软件质量

    七、课堂作业(签到题)

    1. 数据流图:加油站电子帐表系统

    1层描述

    2021 合工大软件工程期末复习知识点汇总

    2. 模块内聚的种类

    2021 合工大软件工程期末复习知识点汇总

    4. 对应流程图的判定表,跟3一起画 2021 合工大软件工程期末复习知识点汇总

    6. Jackson图的实例:统计文件中的空格数

    2021 合工大软件工程期末复习知识点汇总
    2021 合工大软件工程期末复习知识点汇总
    2021 合工大软件工程期末复习知识点汇总
    2021 合工大软件工程期末复习知识点汇总

    来源:Bmeng233

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月11日
下一篇 2022年4月11日

相关推荐