软件设计师中级(软件工程上)

目录

一、成熟度

1.能力成熟度模型(CMM)

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

1)阶段式模型

2)连续式模型

二、软件过程(开发)模型

1.瀑布模型

2.增量模型

3.演化模型

3.1原型模型(Prototype Model)

3.2螺旋模型(Spiral Model)

4.喷泉模型

5.统一过程(UP)模型

6.敏捷方法

1)极限编程(XP)

2)水晶法(Crystal)

3)并列争求法(Scrum)

4)自适应软件开发(ASD)

5)敏捷统一过程(AUP)

三、需求分析

1.软件需求

四、系统设计

4.1 概要设计

4.2 详细设计

五、测试

5.1 系统测试

5.2 单元测试(模块测试)

5.3 集成测试

5.4 测试方法

1.静态测试

2.动态测试

5.5 McCabe 度量法


一、成熟度

1.能力成熟度模型(CMM)

a2551e8ba12f4286be00e6cc4b62f4fc.png59c70a3039e440cc96f5a98becd3794d.png

初始级乱、不明确
可重复级建立基本、重复
已定义级文档化标准化、标准开发维护、组织
已管理级管理、产品质量、理解控制
优化级不断改进

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

1)阶段式模型

aab0d68503b0488babfd34ef237ca90e.png

2)连续式模型

4d95279f85fa4bd88bd9fb874224ba07.png

未完成的未执行未得到
已执行的输入转输出
已管理的已管理
已定义级的已定义
定量管理的定量管理
优化的量化,优化改变过程域,满足持续改进

二、软件过程(开发)模型

1.瀑布模型

1)以项目的阶段评审和文档控制为手段对整个开发过程进行指导

2)适合软件需求很明确(或有相关经验)的软件项目

3)不适合需求经常变更或需求不明确的项目;

4)容易理解,管理成本低;

5)强调开发的早期计划

dc583c47cdd34a61af4894b56a3ee09a.png

V模型是瀑布模型的一个变体(关键词:质量保证活动、测试)

7f8d615db05c4f6c89792301e35d9f6e.png

2.增量模型

1)融合了瀑布模型的基本成分和原型实现的迭代特征,是瀑布模型的一个变体,具备瀑布模型的所有优点;

2)客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能;

3)每一个增量均发布一个可操作的产品,所以产品交付快;

4)第一个增量是核心产品,适合商业产品开发;

6413925b13bf4a968ba69fe581566a72.png

3.演化模型

演化模型适用于对软件缺乏准确认识的情况

7ab0005484bf43b09d4d4884ee28819d.png

3.1原型模型(Prototype Model)

1)适用于系统规模不大也不太复杂的情况;

2)适合需求不清晰、需求经常变化的情况;

3)能快速、低成本地构建原型(原型是静态的,不是产品);

4)能有效捕获系统需求

94b7011f31ec4a59b3c2e7a99fc11d8d.png

3.2螺旋模型(Spiral Model)

1)适用于复杂的具有高风险的大型软件,支持用户需求动态变化;

2)瀑布模型与演化模型的结合,并且加入了这两种模型都忽略了的风险分析;

3)开发过程分为几个螺旋周期,每个螺旋周期分四步(制定计划->风险分析->实施工程->用户评估)

4)过多的迭代会增加开发成本,延迟交付时间

5b6e97951d3a49ed89c0c087da22677d.png

4.喷泉模型

1)以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法;

2)开发过程具有迭代性(开发活动重复多次)和无间隙性(即开发活动之间不存在明显边界,允许各开发活动交叉、迭代进行);

3)可以提高项目开发效率,节省开发时间;

4)不利于管理,审核困难;

5)克服了瀑布模型不支持软件重用和多项开发活动集成的局限性;

c352d38cb5944ef89ca41fa24550653d.png

5.统一过程(UP)模型

四个技术阶段

a85eb1e8833d44e39dac62cf8f57e186.png

6.敏捷方法

目标:通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。

1)极限编程(XP)

fb3855b6eda644fe975933b72a353896.png

2)水晶法(Crystal)

水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论。

3)并列争求法(Scrum)

并列争求法使用迭代方法,其中,把每30天一次的迭代称为一次“冲刺”。

4)自适应软件开发(ASD)

b529c99756cd4a9ba32fa9c899ad7a21.png

5)敏捷统一过程(AUP)

采用“在大型上连续”以及“在小型上迭代”的原理来构建软件系统。采用经典UP阶段性活动(初始、精化、构建和转换)将软件增量尽可能地交付给最终用户。

每一个AUP迭代执行以下活动:

建模、实现、测试、部署、配置及项目管理、环境管理

三、需求分析

1.软件需求

1)功能需求:考虑系统要做什么,在何时做,在何时以及如何修改或升级

2)性能需求:考虑软件开发的技术性指标,例如,存储容量限制、执行速度、响应时间及吞吐量

3)数据需求:考虑输入输出数据的格式,发送数据的频率,数据的准确性,数据流量,数据需保持的时间

四、系统设计

4.1 概要设计

1)设计软件系统的总体结构

2)数据结构及数据库设计

3)编写概要设计文档

4)评审

4.2 详细设计

1)对每个模块进行详细的算法设计

2)对模块内的数据结构进行设计

3)对数据库进行物理设计

4)其他设计(代码设计,输入/输出格式设计,用户界面设计)

5)编写详细设计说明书

6)评审

五、测试

5.1 系统测试

1.意义:

79d0079bb50f49828b3fdb616c8d2294.png

2.目的:

bd62f161c5864a51bcaa6d435d299dee.png

3.原则:

1)应尽早并不断地进行测试

2)测试工作应该避免由原开发软件的人或小组承担

3)将实际输出与预期结果进行比较

4)不仅要设计有效合理的输入,还要包含不合理失效的输入

5)检验程序是否做了不该做的事

6)严格按照测试计划来进行

7)妥善保存测试计划

8)测试例子都是精心设计出来的

4.系统测试阶段的测试目标来自于需求分析阶段

5.2 单元测试(模块测试)

1)测试内容

主要检查模块的5个特征

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

2)测试过程

ca779a6b7c8f421dbecc295e3fa4bc0e.png

07af16d3ec7d458e9af2624849904886.png

5.3 集成测试

1)自顶向下集成测试(不需要编写驱动模块,需要编写桩模块)

3dd2e1b2edf042a5ab980198b71e8dd9.png

2)自底向上集成测试(需要编写驱动模块,不需要编写桩模块)

3)回归测试

在软件发生变更时要重新测试

4)冒烟测试

5.4 测试方法

1.静态测试

人工检测、计算机辅助静态测试

2.动态测试

(通过运行程序发现错误)

1)黑盒测试

等价类划分(分有效等价类和无效等价类)

边界值分析

错误推测

因果图

2) 白盒测试

1.逻辑覆盖(重点)

棱形框:判断条件

矩形框:语句

1)语句覆盖

每条语句至少执行一次,覆盖很低,很弱的逻辑覆盖

2)判定(分支)覆盖

对每一个判断条件取真取假都要取一次

3)条件覆盖

使得每个判定条件中每个逻辑条件得到各种可能的值至少满足一次

4)判断/条件覆盖

使得每个判定中每个条件的所有可能取值(真假)至少出现一次,并且每个判定本身的判定结果(真假)也至少出现一次,即综合2和3

5)条件组合覆盖

使得每个判定中条件的各种组合至少出现一次

满足条件组合覆盖一点满足判定覆盖、条件覆盖、判断/条件覆盖

6)路径覆盖

覆盖被测试程序中所有可能路径

2.循环覆盖

执行足够的测试用例,使得循环中的每个条件都得到验证

3.基本路径覆盖

在程序控制流图的基础上通过分析环路复杂性,导出基本可执行路径集合,从而设计测试用例。保证测试中每一条独立路径都执行过,即程序中每条可执行语句至少执行一次。

4.白盒测试原则

05c7cc4b4e8944c49701e423093d8405.png

5.5 McCabe 度量法

方法一:

3e0046d61ed64fcb9134c686a6c4e68c.png

方法二:闭合区域+1

(使用方法一时,如果有箭头指向起始节点,则最后m应该减1)

5.6 伪代码转流程图

3c62eae0a5b94db391a8dd5c358ceea7.png

ac6533e4f67b4d90b6f9e25a31192027.png

  • 27
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值