欢迎来到魔幻小生的博客

软件设计师:软件工程基础知识

能力模型

CMM(能力成熟度模型)

image

  • 初始级:没明确定义
  • 可重复级:建立基本的项目管理过程和实践
  • 已定义级:文档化、标准化
  • 已管理级:管理层制定了软件过程和产品质量的详细度量标准
  • 优化级:不断持续地改进

CMMI(能力成熟度模型集成)

image

基本不考

image
image

  • 已执行的:可标识的输入转换为可标识的输出
  • 已管理的:已管理过程的制度化
  • 已定义的:已定义过程的制度化
  • 定量管理的:可定量管理过程的制度化
  • 优化的:量化手段改变和优化过程域

软件过程模型

瀑布模型(需求明确)

  • 瀑布模型适合开发需求明确的,需求大致固定不会随意变更的系统
  • V模型的关键字在于质量保证活动和沟通,基本问题逐步细化

image

线性顺序进行软件开发和维护,以项目阶段评审和文档控制为收入进行开发指导

需求必须要明确,不能随意变更需求,否则只能到项目后期才能发现

image

V模型一般是干扰选项

增量模型(快速构建)

可以快速构造可运行的产品

image

image

初始增量的用户需求必须要清晰,否则会造成后续增量的不稳定

成本高、效率低、配置复杂

演化(迭代)模型

image

对软件需求缺乏准确认识,先开发一个版本,后续继续收集需求进行迭代

原型模型(需求模糊 规模小)

适合需求模糊不清且系统规模不大

image

螺旋模型(风险分析 规模大)

螺旋模型的特点是加入了风险分析,适合大规模高风险的,需求变化的系统

image

image

喷泉模型(面向对象)

image

开发活动各个阶段不存在明显边界,交叉、迭代地进行

统一过程(UP)模型 14年后没考过

image

image

敏捷开发 纯背

image

4大价值观、5个原则、12个最佳实践

image

  • 水晶法:不同项目都需要不同的策略、约定和方法论
  • 并列争求法:30天一次迭代,并按需求优先级别来实现产品

image

image

开发过程

需求分析

image

image

概要设计

image

设计软件系统总体结构:确定模块之间调用关系;确定模块之间的接口

详细设计

image

模块内详细算法设计

测试

系统测试

image

image

image

单元测试 13年后没考过

  • 模块接口
  • 局部数据结构
  • 重要的执行路径
  • 出错处理
  • 边界条件

image

image

image

image

image

集成测试 15年后没考过

  • 自顶向下集成测试:不需要驱动模块
  • 自底向上集成测试:不需要桩模块
  • 回归测试
  • 冒烟测试

image

image

image

image

image

测试方法

image

黑盒测试

  • 等价类划分
  • 边界值分析
  • 错误推测(了解)
  • 因果图(了解)

image

image

image

image

白盒测试 非常重要

image

逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

image

语句覆盖 每条语句至少执行一次

image

判定覆盖(分支覆盖) 每条语句的真/假值至少通过一次

image

都是Y,都是N

条件覆盖 每个逻辑条件真/假值都要出现一次

image

逻辑条件都是Y,都是N

判定/条件覆盖 逻辑条件和判定结果的真/假值都要出现一次

判定覆盖和条件覆盖的并集

image

条件组合覆盖 判定中条件的各种可能值的组合都要出现一次

image

YY NN YN NY

路径覆盖 覆盖所有可能的路径

image

image

image

image

image

McCabe度量法

image

计算程序复杂度:V(G)=m+n-2

m是箭头数、n是节点数

另一种算法:闭合环路数 + 1

image

image

考试会McCabe度量法+白盒测试一起考!!!

算需要多少条测试用例,最后计算程序复杂度

image

image

伪代码

  1. FOR循环

image

  1. WHILE循环

image

  1. DO-WHILE循环

image

考试会伪代码+McCabe度量法+白盒测试一起考!!!

给你伪代码,算需要多少条测试用例,最后计算程序复杂度

image

image

维护

系统维护概述

image

  • 可理解性
  • 可测试性
  • 可修改性

软件维护

文档是软件可维护性的决定因素

可维护性在软件开发的各个阶段都需考虑

软件维护通常比开发期长得多,投入也更多

image

只要答案选项中说文档不好,肯定是错误选项

系统维护主要包括硬件维护、软件维护和数据维护(只考软件维护)

image

  • 正确性维护:修bug
  • 适应性维护:适配其它软件/硬件/系统
  • 完善性维护:扩充功能、改善性能
  • 预防性维护:适应为了变化主动增加功能

image

image

可靠性、可用性、可维护性

image

直接背公式

  • 可靠性:MTTF/(1+MTTF) 无失效运作的概率
  • 可用性:MTBF/(1+MTBF) 正确运作的概率
  • 可维护性:1/(1+MTTR) 完成维护活动的概率

沟通路径

一个计算题,成员两两沟通

image

  • 有主程序员:n-1条路径
  • 无主程序员:n(n-1)/2

image

COCOMO/COCOMOII估算模型

不考公式只考概念

image

  • 基本COCOMO模型:静态单变量
  • 中级COCOMO模型:静态多变量
  • 详细COCOMO模型:系统、子系统、模块3个层次

image

  • COCOMOII模型:分为3个阶段性模型

应用组装模型:对象点
早期设计阶段模型:功能点
体系结构阶段模型:代码行

进度管理

进度安排的常用图形描述方法如下:

image

Gantt图

image

image

  • 不能清晰反应任务之间的关系
  • 不能确定项目中最关键的任务
  • 不能反映最有潜力的部分

PERT图

image

箭头表示任务,上面的数字为完成该任务所需时间

结点称为事件,箭头表示的任务结束后,才出现事件,流出结点的任务才可以开始

image

如果多个任务指向一个结点,所有任务均结束的时刻才为该结点的最早时刻

最迟时刻为下一个结点的最早时刻减任务所需时间

松弛时间=最迟时刻-最早时刻

整个工程的关键路径:松弛时间为0的路径(耗时最长的路径)

image

image

image

image

项目活动图 最重要基本必考

image

image

image

image

image

image

image

image

根据表格先画项目活动图,再做题

软件配置管理 纯背

image

软件风险

风险管理

image

不确定性和损失

风险识别

image

风险预测

image

风险发生的概率、风险发生的后果

风险评估

image

定义风险参照水准

风险控制

image

image

辅助建立处理风险的策略

  • 风险避免
  • 风险监控
  • RMMM计划

软件质量

ISO/IEC 9126软件质量模型 纯背 爱考

image

image

image

image

image

安全性属于功能性

易使用性不包含易分析性

Mc Call软件质量模型 了解

image

image

只考过这一次

软件评审 15年后没考过

image

image

image

设计质量评审不包括软件结构

image

image

程序质量评审:软件结构、接口

image

正式技术评审:揭露质量问题(发现软件中错误,showcase?)

软件容错技术 14年后没考过

image

软件工具

软件开发工具 没考过

image

需求分析工具、设计工具、编码与排错工具、测试工具

软件维护工具 会考

image

版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具

逆向工程工具考过好几次

image

posted @ 2024-05-08 00:40  魔幻小生  阅读(65)  评论(0编辑  收藏  举报