考研复试——软件工程笔记归纳+思维导图

考研复试的软件工程重点归纳
原文记录在我的幕布https://mubu.com/doc/3C3pXXIGg0上
里面查看观感更好
思维导图在最后,较为庞大。同样推荐到链接里面查看。点击查看思维导图即可
在这里插入图片描述
你可以转载或者保存,如果能注明出处或者点个赞那是最好的啦
感谢!

软件工程

  • 一、软件工程和软件过程
    • 软件危机

    • 软件工程

    • 软件生命周期

    • 软件生命周期过程模型

      • 瀑布模型

      • 快速原型模型

      • 增量模型

      • 螺旋模型

      • 喷泉模型

    • Rational统一过程(RUP)

      • 六个最佳实践

      • 十大要素

      • RUP生命周期

    • 敏捷过程与极限编程

      • 敏捷过程4个声明

      • 极限编程

        • 有效实践

        • 开发过程

        • 迭代过程

    • 能力成熟模型(CMM)

      • 结构

      • 成熟等级

        • 初试级

        • 可重复及

        • 已定义级

        • 已管理级

        • 优化级

      • 过程关键域

  • 二、传统方法学
    • 结构化分析SA

      • 与用户沟通

        • 访谈

        • 简易的应用规格说明技术

        • 快速建立软件原型

          • 特性

            • 快速、

            • 容易修改

          • 方法和工具

            • 第四代技术(4GT

            • 可重用的软件构件

            • 形式化规格说明和原型环境

      • 分析建模与规格说明

        • 分析建模(数据、功能、行为模型)

          • 数据字典(核心)

            • 定义、

              • 数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合
            • CASE

              • 结构化分析与设计工具

              • 数据字典作为CASE的一部分实现

          • 数据流图(DFD)——处理规格说明(功能模型)

            • 定义

              • 一种图形化技术,描绘信息流和数据从输入移动到输出过程所经受的变化
            • 符号

              • 正方形/立体形:源点或终点

              • 圆角矩形/圆形:变换数据的处理

              • 开口矩形:数据存储

              • 箭头:数据流

              • 条件符号

                • *且

                • +或

                • 圈加:仅

          • 实体关系图(ER图)——数据对象描述(数据模型)

            • 数据对象

              • 定义:数据对象是对软件必须理解的复合信息的表示。复合信息指一系列不同性质或属性的事物。

              • 数据对象只封装了数据而没有对作用于数据上操作的引用,这是数据对象与“类,对象”的差别

            • 属性

              • 定义:属性定义了数据对象的性质
            • 关系

              • 定义:数据对象之间想联系的方式称为关系,联系也有属性

              • 分类

                • 一对一

                • 一对多

                • 多对多

            • ER图符号

              • 矩形框:实体(数据对象)

              • 菱形框:关系

              • 椭圆/圆角矩形:属性

            • 优点

              • 接近人的思维方式,易理解。用户与分析员交流
          • 状态转换图——控制规格说明(行为模型)

            • 定义

              • 状态转换图通过描述系统的状态以及引起系统状态转换的事件来表示系统行为
            • 状态

              • 定义

                • 状态是任何可以备观察到的系统行为模式,规定了系统对事件的相应方式。
              • 分类

                • 初态、终态、中间状态

                • 1个初态,0至多个终态

            • 事件

              • 定义

                • 在某个时刻发生的事情,是对引起系统发生动作或发生状态改变的控制信息
            • 符号

              • 初态:实心圆点

              • 终态:同心圆

              • 中间状态:圆角矩形

                • 上:状态名称

                • 中:状态变量名字和值【可选】

                • 下:活动表【可选】

        • 软件需求规格说明(分析阶段的最终产品)

      • 结构化分析过程

        • 问题定义

          • 目的:弄清楚计算机解决的根本问题所在,确定新系统的作用域,以及项目所需的资源工期和经费

          • 任务:便携项目报告提交审查,为可行性研究作依据

        • 可行性研究

          • 抽象简化的系统分析和设计全过程

          • 目标:用最小代价确定问题是否能够解决

          • 步骤

            • 澄清系统规模和目标

            • 研究现有的系统

            • 导出高层逻辑模型

            • 进一步确定系统规模和目标

            • 导出供选择的解法(技术、操作、经济可行性)

            • 推荐最佳方案

            • 草拟开发计划

            • 写出文档提交审查

        • 需求分析

          • 目的:明确回答系统必须做什么

          • 要点

            • 前一阶段特别是数据流图是需求分析的出发点

            • 需求分析的好坏直接影响后续开发的质量

            • 开发与客户之间的沟通至关重要

            • 抽象现有需求还要挖掘隐藏需求

            • 需求分析是个迭代过程

          • 步骤

            • 沿数据流图回溯

            • 写出文档初稿

            • 定义逻辑系统

            • 细化数据流图

            • 书写正式文档

            • 技术审查管理复查

    • 结构化设计

      • 结构化分析到结构化设计

        • 数据设计——ER图,数据字典

        • 体系结构设计——数据流图

        • 接口设计——数据流图

        • 过程设计——状态转换图

      • 相关概念

        • 模块化

          • 模块:·由边界元素限定的相邻的程序元素的序列,有一个总体的标识符代表它

          • 模块化:把程序划分成为可独立命名且独立访问的模块,每个模块完成一个子功能,能把模块集成起来构成一个整体,完成指定功能

          • 评价模块系统能力

            • 模块可分解性

            • 模块可组装性

            • 模块可理解性

            • 模块连续性

            • 模块保护性

        • 抽象

          • 现实世界中一定事物、状态或者过程之间总是存在某些相似的方面,把这些相似的方面集中和概括起来暂时忽略差异这就是抽象
        • 逐步求精

          • 为了集中精力解决主要问题而尽量推迟对问题细节的考虑
        • 信息隐藏

          • 应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说是不能访问的
        • 模块独立

          • 模块独立是模块化、抽象、逐步求精、信息隐藏等概念的直接结果

          • 耦合

            • 耦合是对一个软件结构内不同模块直接互联程度的度量

            • 耦合的强度取决于接口的复杂程度,进入或访问一个模块的点以及通过接口的数据

            • 尽量数据耦合,少控制耦合公共环境耦合,不内容耦合

          • 内聚

            • 标志一个模块内各个元素彼此结合的紧密程度,是信息隐藏和局部化概念的自然扩展

            • 内聚更重要

            • 功能、顺序、通讯、过程、时间、逻辑、偶然

        • 模块化启发规则

          • 改进软件结构提高模块独立性

          • 模块规模应该适中

          • 深度宽度,扇入扇出应该适当

            • 深度:软件结构中控制的层数

            • 宽度:软件结构同层次上模块总数最大值

            • 扇出:一个模块直接控制(调用)的模块数目

            • 扇入:有多少个上级模块直接调用

          • 模块的作用域应该在控制域之内

            • 控制域:这个模块本身以及所有直接或者间接从属于它的模块集合

            • 修改办法:上移或者下移

          • 力争既降低模块接口的复杂度

          • 设计单入口单出口的模块

          • 模块功能应该可以预测

      • 表示软件结构的图形工具

        • 层次图

          • 矩形框代表一个模块

          • 框间连线表示调用关系(上调用下)

        • HIOP图(层次图加输入/处理/输出图)

        • 结构图

      • 面向数据流的设计方法

        • 变换流——变换分析

        • 事务流——事务分析

      • 面向数据结构的设计方法

        • jackson方法

          • jackson图

            • 顺序

            • 选择(可选)

            • 重复

          • jackson方法

            • 分析并确定输入数据和输出数据,用jackson图表示

            • 找出输入输出数据结构中有对应关系的数据单元

      • 人机界面设计(接口设计的一个组成)

        • 问题

          • 系统响应时间(长度和易变性)

            • 用户完成某个控制动作到软件给出预期响应的时间
          • 用户帮助设施(集成和附加)

          • 出错信息处理

          • 命令交互

        • 设计过程

          • 迭代过程

          • 用户界面工具箱,用户界面开发系统

        • 界面设计指南

          • 一般交互

            • 保持一致性

            • 提供有意义的反馈

            • 执行较大破坏动作前要求用户确认

            • 允许取消大多数操作

            • 减少两次操作之间的记忆量

            • 提高对话移动思考效率

            • 允许犯错

            • 按功能对动作分类

            • 提供帮助设施

          • 信息显示

            • 只显示与当前工作内容有关的信息

            • 不要用数据淹没用户

            • 使用一致性的标记

            • 保持可视化语境

            • 产生有意义的出错信息

            • 使用窗口分隔不同类型信息

          • 数据输入

            • 减少输入动作

            • 保持信息显示与输入信息的一致性

            • 允许自定义输入

            • 灵活交互

            • 不适合的命令不起作用

            • 让用户控制交流

            • 对输入动作提供帮助

            • 消除冗余操作

      • 过程设计

        • 数据,体系结构,接口设计后进行。详细设计阶段主要任务,基本决定了代码质量

        • 三种基本结构(顺序,循环,选择),减少goto

        • 工具(图形,表格和语言)

          • 程序流程图(程序框图)

            • 缺点

              • 不是逐步求精的好工具,过早考虑控制流程而不是程序全局结构

              • 箭头代表控制流,不顾结构设计

              • 不易表示数据结构

          • 盒图(N-S图)

            • 功能域明确

            • 不能任意转移控制

            • 易确定局部和全程数据的作用域

            • 易表示嵌套关系与模块的层次结构

          • PAD图(问题分析图)

            • 必然是结构化程序

            • 程序结构十分清晰

            • 向右延伸,竖线的总条数就是层次数

            • 易读易懂易记

            • 易转化为高级语言源程序

            • 既可以表示程序逻辑也可以表示数据结构

            • 支持自顶向下,逐步求精方法的使用

          • 判定表

            • 清晰表示复杂条件组合与相应动作的对应关系
          • 判定树

            • 更直观,不简洁
          • 过程设计语言(PDL/伪代码)

            • 关键字的固定语法

            • 自然语言的自然语法

            • 数据说明的手段

            • 模块定义和调用技术

    • 结构化实现

      • 编码

        • 选择程序设计语言

          • 用户的要求

          • 可使用的编译程序

          • 可得到的程序软件

          • 工程规模

          • 程序员知识

          • 软件可移植性

          • 软件应用领域

        • 编码风格

          • 程序内部的文档

          • 数据说明

          • 语句构造

          • 输入输出

          • 效率

      • 测试

        • 基础

          • 测试目标

            • 为了发现程序中的错误而执行程序

            • 好的测试方案是可能发现尚未发现的错误的方案

            • 成功的测试是发现了还未发现的错误

          • 测试准则

            • 所有测试追溯到用户需求

            • 应该在开始测试开始前就制定出测试计划

            • 80%的错误是有20%的模块产生的

            • 测试应该从小规模向大规模测试

            • 穷举测试是不可能的、

            • 为了达到最佳的测试效果,应该由独立的第三方来从事测试工作

        • 白盒测试

          • 定义

            • 知道产品的内部工作过程,测试产品能否按照规格说明书的规定正常运行
          • 逻辑覆盖

            • 语句覆盖:每个语句至少执行一次

            • 判定覆盖:每个判定的可能结果执行一次

            • 条件覆盖:每个条件都取到可能的结果

            • 判定/条件覆盖:每个条件与判断都取到可能的结果

            • 条件组合覆盖:每个判定表达式中条件的各种可能组合

          • 控制结构测试

            • 基本路径测试

              • 根据设计结构画出相应流图

              • 计算流图的环形复杂度

              • 确定线性独立的基本集合

              • 设计可强制执行基本集合中每条路径的测试用例

            • 条件测试

              • 着重测试程序中的每个条件
            • 数据流测试

              • 根据程序中变量定义和使用的位置,选择程序的测试路径
            • 循环测试

              • 简单循环

              • 嵌套循环

              • 串接循环

        • 黑盒测试

          • 定义:在程序接口进行的测试,不考虑内部结构,只检查程序功能是否能按照规格说明书正常使用

          • 等价划分

            • 划分有效等价类,无效等价类

            • 设计一个方案尽可能多的覆盖多的有效等价类

            • 设计新的方案只覆盖一个无效等价类(发现一类错误后就不再检查)

          • 边界值分析

            • 确定边界值,测试边界值,刚大于,小于边界值
          • 错误推测

            • 靠直觉和经验列举出程序中可能存在的错误和特殊情况

            • 一段程序中已经发现的错误数往往和尚未发现的错误数成正比

        • 测试策略

          • 单元测试

            • 代码审查

            • 测试软件

              • 开发驱动软件和存根软件
          • 集成测试(接口)

            • 自底向上(原子模块)

              • 低层模块组合成实现某个功能的簇

              • 写一个驱动程序,协调测试数据的输入输出

              • 对模块的子功能簇进行测试

              • 去掉驱动软件结构自下往上移动

            • 自顶向下(深度/宽度优先)

              • 对主控制模块进行测试

              • 根据选定的结合策略,每次用一个实际模块代替一个存根程序

              • 结合进一个模块同时进行测试

              • 回归测试

          • 回归测试

          • 确认测试

            • 以用户为主,主要使用黑盒测试

            • 软件配置复查

            • Alpha测试

              • 用户在开发者场合进行,由开发者对用户进行指导,记录错误。是可控的环境下进行的测试
            • Bate测试

              • 最终用户在一个或多个客户场合进行的,开发者不能控制环境中的真实测试
      • 调试(纠错)

        • 蛮干法

        • 回溯法

          • 从发现症状的地方开始,人工沿控制流往回追踪源程序代码,直至找出错误
        • 原因排查法

          • 对分查找

            • 若干个关键点位置的正确值,在附近注入正确值
          • 归纳法

            • 把错误有关的数据组织起来进行分析,做出假设人后进行分析排除
          • 演绎法

            • 设想出可能的出错原因,通过测试来排除。细化数据精确定位错误
      • 软件可靠性

        • 可靠性:程序在给定时间间隔内,按照规格说明书成功运行的概率

        • 可用性:程序在给定时间点,按照规格说明书成功运行的概率

  • 三、面向对象的方法学
软件工程黑书全书知识点详细汇总 考纲目录 第一章 基本概念 2 1、软件的概念和特点 2 2、软件危机的概念和产生的原因 3 3、软件工程的定义、三要素和发展过程 (重点,考过多次问答题) 4 第二章 过程模型 4 1、软件生命周期概念、软件过程概念、能力成熟度模型 CMM 概念 4 2、常见的软件过程模型:瀑布、增量、原型、螺旋、喷泉等,比较各自优缺点 5 1、瀑布模型(经典生命周期模型) 6 2、增量过程模型(增量模型+RAD模型) 6 3、演化过程模型(原型模型+螺旋模型) 7 4、喷泉模型(Water Fountain Model) 9 5、基于构件的模型(Component-baseed Development Model) 10 6、敏捷开发过程(Agile Development) 10 第三章 需求分析 11 1、需求分析的概念 12 2、需求分析的过程:需求确认与需求变更 12 3、需求确认的步骤:需求获取→需求提炼→需求描述→需求验证 13 4、需求分析三类建模:功能模型、数据模型、行为模型。面向过程 和面向对象的需分析过程中,三类模型各包含哪些内容?--------------- 15 5、 掌握数据流图和用例图作法。 31 第四章系统设计 32 1、系统设计分为概要设计和详细设计 32 2、设计相关的8个概念(抽象、体系结构、设计模式、模块化、信息隐藏、功能独立、细化、重构),着重考察体系结构、模块化、信息隐藏、功能独立。 33 3、系统设计从数据、体系结构、接口和组件四方面进行设计。面向过程和面向对象的系统设计,各自包含哪些设计内容? 37 4、掌握流程图和顺序图作法 43 第五章 质量保证 48 1、质量保证的概念 48 2、测试策略 V 模型概念,测试与开发的各阶段对应关系。 48 3、单元测试的内容、集成测试的分类、系统测试的分类、验收测试的分类。 48 4、回归测试的概念 48 5、测试技术常见术语的概念:软件缺陷、验证和确认、测试与质量保证、质量与可靠性、调 试与测试、测试用例 48 6、白盒测试、黑盒测试、静态分析各有哪些方法? 48 7、掌握逻辑覆盖与等价类划分测试方法。 48 第六章 软件维护 49 1、软件维护的基本概念 49 2、理解软件维护的四个基本类型:纠错性、适应性、完善性、预防性维护。哪种占比重最大? 哪种最小? 49 3、可维护性的决定因素 49 4、软件维护过程模型、软件再工程、逆向工程的概念 49 第七章 项目管理 49 1、项目管理四要素:人员、产品、项目、过程(概念) 49 2、软件度量有哪些方法:生产率估计(基于规模(KLOC)、基于功能点(FP))、工作量度 量(算法成本模型、COCOMO 模型)。掌握直接测量(基于规模)方法。 49 3、项目计划与风险管理的概念 49
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值