软件工程
┏┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆
┇ 根据B站视频以及教材做的笔记 ╹◡╹
┇ 视频:https://www.bilibili.com/video/av19665344
┇ 教材:软件设计师考试冲刺(习题与解答)
┗┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆
软件开发模型
瀑布模型(SDLC)
- 瀑布模型:结构化 方法中的模型,一般用于结构化的开发。
- 定义阶段:软件计划、需求分析。
- 开发阶段:软件设计、程序编码、软件测试。
- 维护阶段:运行维护。
- 适用场景:需求明确 或 二次开发。
增量模型与螺旋模型
- 螺旋模型 引入了风险分析,风险分析 是其最为显著的特征之一。
构建组装模型(CBSD)
- 构建组装模型(CBSD):软件开发中的各个模块都可以考虑做成标准的构件,把构件进行组装,得到最终需要的软件。极大地提高了软件开发的复用性,使得开发总时长极大地减小,使软件成本降低,同时增加软件可靠性。
其他经典模型
- 原型 和瀑布模型是一对相当互补的模型。瀑布模型败在对需求变化无法灵活应对,原型定位于 需求不明确 的情况下。
- 原型法 通过简易系统的方式,以比较低的成本获取比较全面、比较准确的用户需求。原型法往往只运用于开发中的需求分析阶段。
- 演化模型(变化模型):把最初的原型通过很多步的演化、调整,最终变成了软件产品。
- 螺旋模型:具有 原型、瀑布模型、演化模型 的特征。
- 增量模型:具有 原型 的思想和 瀑布模型 的思想。核心模块较早与用户接触,风险小。
- V模型:需求分析 阶段时会做 验收测试 和 系统测试 的测试计划,提早发现问题;概要设计 阶段时会做 集成测试 的测试计划,概要设计主要进行模块的划分,集成测试测试的是模块的衔接;详细设计 时会做 单元测试 的测试计划。V模型强调及早进行测试,强调测试贯穿开发的始终。
- 喷泉模型:面向对象模型。具有 迭代 和 无间隙 特点。
- RAD(快速开发模型):由瀑布模型(SDLC) 和 构件组装模型(CBSD) 组合形成。能够快速构建应用系统。
敏捷开发方法
信息系统开发方法
- 结构化方法一旦开发完成,它的流程是固化的、不灵活的。
需求开发
需求分类与需求获取
OAA(面向对象分析)
相关概念
UML
结构化设计
基本原则
内聚与耦合
- 内聚:一个模块内部各个部件连接的紧密程度。内聚越高越好。
- 功能内聚 > 顺序内聚 > 通信内聚 > 过程内聚 > 瞬时内聚(时间内聚)> 逻辑内聚 > 偶然内聚(巧合内聚)
- 耦合:模块与模块之间衡量的概念。耦合越低越好。
- 非直接耦合 < 数据耦合 < 标记耦合 < 控制耦合 < 外部耦合 < 公共耦合 < 内容耦合
系统结构 / 模块结构
软件测试
测试原则与类型
测试用例设计
测试阶段
- 单元测试:关注的是内部模块级,会测局部的功能、结构、数据接口。
- 集成测试:把各个模块联合起来,一起做测试工作,测的是模块之间的衔接、接口。
- 确认测试:确认测试涵盖了验收测试,往往是最后一步测试,普通项目只做到确认测试为止。确认是否满足需求。
- 系统测试:涉及软硬件和网络的集成项目往往会有系统测试,往往会放在集成测试之后做系统测试,最后再做确认测试。主要测试性能、压力、可靠性等。
McCabe复杂度
有向图G中,有m条有向边,n个结点,环路复杂度为 V(G)=m-n+2 。
系统运行与维护
- 易分析性:源代码分析理解起来比较容易。
- 易改变性:修改代码的容易程度。低耦合,易改变。
- 改正性维护:正确性维护。
- 适应性维护:适应操作系统环境、数据数据环境。
- 完善性维护:扩充功能、改善性能。
软件过程改进 - CMMI
- CMM:能力成熟度模型。成熟度指的是软件开发的成熟度。主要用来衡量软件开发承包商改善软件质量的能力。
- CMMI:能力成熟度模型集成。
- 第一阶段:混乱级。
- 第二阶段:已管理级。项目级。
- 第三阶段:已定义级。组织级。把隐形知识转成显性。文档化,标准化。
- 第四阶段:定量管理级。强调管理的量化。
- 第五阶段:优化级。持续优化。
项目管理
Gantt图最直观的特点是简洁明了,可以从图直观地看到计划是怎么样的、实际情况和进度如何。最大的缺点就是不能清晰的表达任务之间的逻辑关系,即哪个任务应该先做,哪个任务后做,两者之间的依赖关系。第一题答案选D。
PERT图中的关键路径简单来讲就是整个图中从开始结点到结束结点最长的路径,对应的是整个项目的最短工期。
求事件6的最晚开始时间的标准步骤为:先正推出所有事件的最早开始时间,再逆推出所有事件的最晚开始时间。
第二题答案选C。