目录
CMM与CMMI
CMM:(能力成熟度模型)
- 初始级 英雄式核心人物
- 可重复级 建立项目
- 已定义级 标准软件工程
- 已管理级 产品质量
- 优化级 反馈改进
CMMI:(能力成熟度模型集成)
分为两种,阶段式模型和连续式模型
对于阶段式模型
- 初始的: 过程不可预测且缺乏控制
- 已管理的: 为项目服务
- 已定义的: 为组织服务
- 定量管理的: 度量和控制
- 优化的 过程改进
对于连续式模型
- 未完成的: 未执行、未得到
- 已执行的: 输入转输出
- 已管理的: 共形目标已管理的制度化
- 已定义级的: 共形目标已定义制度化
- 定量管理的: 共形目标定量管理制度化
- 优化的: 改变优化
瀑布模型
包括需求分析、设计、编码、测试、运行与维护。
由前至后、相互衔接
适用于软件需求很明确的软件项目
V模型:(一般是作为一个干扰选项出现)
增量模型
不断迭代更新,类似于现在的软件更新
可快速构造出可运行产品的好方法
演化模型
演化模型适用于对软件需求缺乏准确认识的情况
演化模型可分为原型模型和螺旋模型
原型模型适用于用户需求不清,需求经常变化的情况,不适合大规模
为了有效地捕获系统需求,应采用原型模型
螺旋模型
适用于大规模、高风险 ,开发成本不低
喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,适用于面向对象的开发方法
迭代性(开发活动重复多次)、无间隙(没有明显的边界)
支持软件重用和多项开发活动集成,可以提高开发效率,节约时间;
统一过程(UP)模型
每个迭代中有五个核心工作流
4个技术阶段:
- 初始阶段:生命周期目标 项目的初始活动
- 精化阶段:生命周期架构 需求分析和架构演进
- 构建阶段:初始运作功能 系统构建,实现模型
- 移交阶段:产品发布 软件提交工作,产生软件增量
RUP仅做了解即可
敏捷方法
水晶法(Crystal):不同项目不同策略约定和方法论
并列征求法(Scrum):30天冲刺
自适应软件开发(ASD):6个基本原则:使命指导、特征关键点、重做和做同样关键。。。
敏捷统一过程(AUP):
小型发布:尽早交付
测试先行:先写测试代码再编写程序
这个考的有点偏吧
软件需求
- 功能需求:系统做什么、何时做、如何做
- 性能需求:考虑技术性指标
- 用户或人的因素:考虑用户类型
- 环境需求:考虑环境,包括硬件和软件
- 界面需求
- 文档需求
- 数据需求:考虑数据准确性和精度、数据流量数据需保持的时间
- 资源使用需求
- 安全保密需求
- 可靠性需求
- 软件成本消耗与开发进度需求
性能需求是非功能需求
系统设计
概要设计
划分模块、确定模块的功能、确定模块之间的调用关系、接口
详细设计是指算法设计、某种图形、表格具体语言等详细步骤
模块之间的接口设计属于概要设计
系统测试
系统测试是为了 发现错误而执行程序的过程
成功的测试是发现了至今尚未发现的错误的测试
测试的目的是以最小的人力和时间发现潜在的各种错误和缺陷
信息系统测试包括软件测试、硬件测试和网络测试。
硬件测试、网络测试可以根据具体的性能指标进行
信息系统测试时应遵循的原则
- 尽早并不断地进行测试
- 测试工作不应由原开发软件的人或小组承担
- 在设计测试方案时,不仅要确定输入数据,还要确定预期输出
- 在设计测试方案时,还要包含一些不合理、失效的输入条件
- 在测试程序时,不仅要检验程序是否做了该做的事,还要检验是否做了不该做的事
- 严格按计划进行,避免随意性
- 妥善保存测试计划、测试用例,作为软件文档的组成部分
- 测试例子都是精心设计的,可以为重新测试或追加测试提供方便
- 系统测试阶段的测试目标来自于需求分析阶段
白盒测试技术中,路径覆盖法往往能比语句覆盖法发现更多的错误
有效的软件测试实际上分4步:单元测试、集成测试、确认测试和系统测试
单元测试(模块测试)
在模块编写完成且无编译错误时即可进行。
单元测试侧重于模块中的内部处理逻辑和数据结构。
一般用白盒测试法。
可以对多个模块同时进行。
单元测试主要检查模块的以下5个特征:
- 模块接口(测试模块的输入参数和形式参数在个数、属性、单位上是否一致;调用其他模块时,所给出的实际参数和所调用的模块形式参数在个数、属性、单位上是否一致;调用标准函数时,所调用的参数在属性、数目和顺序上是否正确;全局变量在各个模块中的定义和用法是否一致;输入是否改变了形式参数;开/关的语句是否正确;规定的I/O格式是否与输入输出语句一致;在使用文件之前是否已经打开了文件或使用后是否已经关闭文件)
- 局部数据结构(变量的说明是否合适;是否使用了尚未赋值或尚未初始化的变量;变量初始化或默认值是否正确;变量名是否出错)
- 重要的执行路径(计算方面的错误;比较和控制流的错误)
- 出错处理
- 边界条件
注意分清楚哪些是模块接口的,不要弄混了
集成测试
- 自顶向下集成测试(是一种构造软件体系结构的增量方法)(从抽象到具体)(不需要编写驱动模块)
- 自底向上集成测试(从具体到抽象)(不需要编写桩模块)
- 回归测试(重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用)
- 冒烟测试(常用的集成测试方法,是时间关键项目的决定性机制,让软件团队频繁地对项目进行评估)
回归测试会重新测试之前的
测试方法
软件测试分为静态测试和动态测试
静态测试是指被测试程序不在机器上运行,采用人工检测和计算机辅助静态分析的手段对程序进行检测
动态测试是指通过运行程序发现错误,在对软件产品进行动态测试时可以采用黑盒测试法和白盒测试法(黑少白多)
测试用例由测试输入数据和与之对应的预期输出结果组成。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件
黑盒测试
黑外白内
黑盒测试也称功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。
进行黑盒测试主要是为了发现以下几类错误:
- 是否有错误的功能或遗漏的功能
- 界面是否有误,输入输出是否正确
- 是否有数据结构或外部数据库访问错误
- 性能是否能够接受
- 是否有初始化或终止性错误
常见的黑盒测试技术有等价类划分、边界值分析、错误推测和因果图等
无法获得其源代码表示不知道内部结构,所以应该使用黑盒测试
C两个输入都不符合条件,所以不是一个合适的测试用例
McCabe度量法
计算有向图G的环路复杂公式:有向图中的环路个数=有向弧数-节点数+2
(方法二)闭合区域数+1
对于下面这个题,要注意指向i>0这个菱形框的箭头没有对应的节点,所以要么删除这个箭头,要么添加一个节点
白盒测试
白盒测试也称结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要
白盒测试常用的技术是逻辑覆盖(考察用测试数据运行被测程序时对程序逻辑的覆盖程度)、循环覆盖(执行足够的测试,使循环中每个条件都得到验证)和基本路径测试(程序中的每条可执行语句至少执行一次)
逻辑覆盖6种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖
白盒覆盖的原则:
- 程序模块中的所有独立路径至少执行一次
- 所有逻辑判断中,取“真”和取“假”的两种情况至少都能执行一次
- 每个循环都应在边界条件和一般条件下各执行一次
- 测试程序设计内部数据结构的有效性等
语句覆盖
语句覆盖是指每条语句至少执行一次,很弱的逻辑覆盖
判定覆盖
每个判定表达式至少获得一次“真”值或“假”值
条件覆盖
使得每一判定语句中每个逻辑条件的各种可能的值至少满足一次
判定/条件覆盖
判定中每个条件的所有可能取值至少出现一次,每个判定本身的判定结果也至少出现一次
条件组合覆盖
每个判定中条件的各种可能值都至少出现一次
路径覆盖
覆盖被测试程序中所有可能的路径
伪代码+白盒测试+McCabe度量法
for循环转流程图
while转流程图
do-while转流程图
系统可维护性评价指标
软件维护时生命周期中的最后一个阶段
系统可维护性的评价指标:可理解性、可测试性、可修改性
软件维护
文档是软件可维护性的决定性因素
软件系统的文档可以分为用户文档和系统文档两类
必须在开发阶段保证软件具有可维护的特点,在软件工程的每一个阶段都应考虑并提高软件的可维护性
软件文档
编写高质量文档可以提高软件开发的质量
文档也是软件产品的一部分,没有文档的软件就不能称之为软件
总的来说,软件文档只好不坏,选项中说软件文档不好的就是错的
软件维护内容
系统维护主要包括硬件维护、软件维护和数据维护
软件维护的内容:
- 正确性维护:改正错误
- 适应性维护:随着需求变化进行的修改
- 完善性维护:扩充功能和改善性能进行的修改
- 预防性维护:改进应用系统的可靠性和可维护性
软件可靠性、可用性、可维护性
可靠性、可用性和可维护性是软件的质量属性
可靠性是指在给定条件下无失效运作的概率 MTTF/(1+MTTF) MTTF指平均无故障时间
可用性是指正确运作的概率 MTBF/(1+MTBF) MTBF指平均失效间隔时间
可维护性是指完成维护获得的概率 1/(1+MTTR) MTTR指平均修复时间
沟通路径
公式就是n*(n-1)/2
软件项目估算
COCOMO估算模型是一种精确的、易于使用的成本估算模型
COCOMO模型按其详细程度分为基本COCOMO模型、中级COCOMO模型和详细COCOMO模型
基本COCOMO模型是一种静态单变量模型
中级COCOMO模型是一种静态多变量模型
详细COCOMO模型分为系统、子系统和模块3个层次
COCOMOII模型也是一种层次结构的估算模型,被分为3个阶段性模型
- 应用组装模型:在软件工程的前期阶段使用
- 早期设计阶段模型:在需求已经稳定且基本的软件体系结构已经建立时使用
- 体系结构阶段模型:在软件的构造过程中使用
在模型层次结构中有3中不同的规模估算选择:对象点、功能点、代码行
应用组装模型使用的是对象点,早期设计阶段模型使用的是功能点,功能点可以转化为代码行
Gantt图(甘特图)
进度安排的常用图形描述方法有Gantt图和项目计划评审技术(PERT)图
PERT图
感觉这个PERT图挺像数据结构里的那个DAG图
正推最早时间取最大,反推最晚时间取最小,松弛时间等于迟-早
项目活动图
和上面的PERT图的做法差不多
画项目活动图
前驱指向后驱,时间写在箭头线上