软件工程期末总结
1. 要会画PAD图、N-S图和程序流程图。
PAD图
N-S图
程序流程图:
2 要会画数据流图。知晓数据字典。
数据流图:
数据字典:
数据字典的作用是软件分析和设计的工程中给人提供关于数据的描述信息;
数据字典由4个元素定义组成的:
- 数据流
- 数据流分量
- 数据存储
- 处理
{}是重复 ,()是可选
数据字典最重要的作用是作为分析阶段的工具;
3 要会画用例图。
4 要会画判定树、判定表和结构化语言(伪代码)
判定树:
判定表:
结构化语言(伪代码):
START
INPUT(A,B,C)
IF A>5
THEN X=1
ELSE
Y=2
END IF
IF B>10
THEN Y=20
ELSE
Y=2
END IF
IF C>15
THEN Z=30
ELSE
Z=3
END IF
PRINT(X,Y,Z)
STOP
5 要会逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖) 的用例设计。
语句覆盖:
每条语句都执行一次;(两条正确判定语句)(俩次都正确)
A=2. B =0 ,X =4 执行路径:1452673
判定覆盖:
每个判定的分支至少执行一次;(一次正确,一次不正确)
A=3,B=0,X=1 执行路径:14523
A=2,B=1,X=2 执行路径:12673
条件覆盖:
每条语句都要执行;(全部为正确,全部为不正确)
A=2,B=0,X=4 执行路径:1452673
A=1,B=1,X=1 执行路径:123
判定条件覆盖:
A=2,B=0,X=4 执行路径:1452673
A=1,B=1,X=1 执行路径:123
判定覆盖不一定是条件覆盖,条件覆盖不一定是判定覆盖;
条件组合覆盖:
8种可能的组合:
(1)A>1,B=0
(2)A>1,B!=0
(3)A<=1,B=0
(4)A<=1,B!=0
(5)A=2,X>1
(6)A=2,X<=1
(7)A!=2,X>1
(8)A!=2,X<=1
(1)(5)组合:A=2,B=0,X=4 执行路径:1452673
(2)(6)组合:A=2,B=1,X=1 执行路径:12673
(3)(7)组合:A=1,B=0,X=2 执行路径:12673
(4)(8)组合:A=1,B=1,X=1 执行路径:123
满足条件组合覆盖标准的测试数据,也一定满足判定条件覆盖,条件覆盖和判定覆盖;
满足条件组合覆盖的不一定执行全部测试路径;
6 当前前端设计开发非常紧缺。怎样做好人机工程和人机界面?
在设计人机交互界面时,总会遇到4个问题:
- 系统响应时间
- 用户帮助设施
- 出错信息处理
- 命令交互
7 软件开发模型在开发中占有重要地位。常用开发模型的特点、优点、缺点。
瀑布模型:
特点:
- 阶段间具有顺序性和依赖性
- 推迟实现的观点
- 质量保证的观点
优点:
- 可强迫开发人员采用规范的方法;
- 严格地规定了每个阶段必须要提交的文档;
- 要求每个阶段交出的所有产品都必须要经过质量保证小组的仔细确认;
缺点:
- 可能导致最终开发出来的产品不能符合用户的真正需求;
增量模型:
优点:
- 能在较短的时间内向用户提交可部分工作的产品;
- 逐步增加产品功能可以给用户有充足的时间进行产品的功能适应;
缺点:
- 难以维护,需要开发式体系结构可能h会设计差效率低;
螺旋模型:
可以看作每个阶段增加风险分析工程的快速开发模型;
优点:
- 有利于已有软件的重用;
- 减少过多的软件测试或测试不足所带来的风险;
缺点:
- 需要开发人员具有丰富的风险评估经验和这方面的知识;
RUP软件开发周期是一个二维的生命周期模型;
纵轴代表核心工作流,横轴代表时间
敏捷开发:
4个声明:
- 个体和交互胜过过程和工具
- 可以工作的工具胜过面面俱到的文档
- 客户合作胜过合同谈判
- 响应变化胜过遵循计划
8 面向对象从三个角度看待系统。
静态模型 类图 类之间的四个关系
动态模型 状态图 状态图
功能模型 用例图 用例图
对象模型;
对象模型表示“静态”的,结构化系统的“数据”性质,它是对模拟客观世界实体的对象以及对象彼此之间的关系的映射;
类图描述类与类之间的静态关系;
类之间的4个关系:
关联,映射,依赖和细化
动态模型:
动态模型表示瞬时性的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;
状态图描述对象的状态,触发和状态转换的事件以及对象的行为;
动态模型是基于事件共享而相互关联的一组状态图的集合;
功能模型:
功能模型是由一组数据流图组成的;
用例图是进行需求分析和建立功能模型的强有力工具;
在UML中,把用例图建立起来的系统模型称为用例模型;
用例图包含元有系统,行为者,用例以及用例之间的关系;
对象模型是最基本最重要的;
9 为了加快开发,节省成本,软件复用是个值得学习与探讨的课题。 面向对象的环境下如何复用。
软件重用分为3个层次:
- 知识重用
- 方法和标准重用
- 软件成分重用
面对对象计师中的”类“,就是比较理想的可重用软构件,称为类构件;
类构件的3个重用方式:
- 实例重用
- 继承重用
- 多态重用
提高可重用性:
- 提高方法的内聚
- 减少方法的规模
- 保持方法的一致性
- 把策略于实现分开
- 全面覆盖
- 尽量不使用全局信息
- 利用继承基别
10 学习软件工程,牢固树立需求分析的重要性、需求获取的手段、需求分析的种类等。
需求分析阶段是软件定义阶段的最后一个阶段,它的基本任务是准确地回答”系统必须要做什么的“问题;
获取需求的方法:
- 访谈
- 面向数据自顶向下
- 简易的应用规格说明技术
- 快速建立软件模型
4个方面验证软件需求的正确性
- 一致性
- 完整性
- 现实性
- 有效性
11 学习软件工程,牢固树立维护的重要性。维护的类型,可维护性的重要意义。
软件维护就是软件交互使用后,为了改正错误或满足新的需求而修改软件的过程;
改正性维护;
适应性维护;
完善性维护;(一半以上的时间)
预防性维护;
决定软件可维护性的因素有:
- 可理解性
- 可测试性
- 可移植性
- 可修改性
- 可重用性
文档是决定软件可维护性的决定因素;
12 学习软件工程,牢固树立正确的测试理念。
测试的目的是在软件投入生产运行之前,尽可能的发现软件中的错误;
软件测试的准则:
- 所有测试都应该追溯到用户需求
- 应该远在测试开始之前就开始制定出测试计划
- 把Pareto原理应用到软件测试中
- 应该从”小规模"测试开始,并逐步进行“大规模”测试
- 穷举测试是不可能的
- 为了达到最佳测试效果,应该由独立的第三方从事测试工作
测试的步骤:
- 模块测试(单元测试) (主要用白盒测试)
- 子系统测试
- 系统测试 (子系统测试于系统测试称为集成测试)
- 验收测试 (确认测试)
- 平台运行
集成测试:
- 自顶向下集成
- 自底向上集成
- 回归测试
确认测试
Alpha测试是在受控的环境中进行的;
Beta测试时在不受控的环境中进行的;
白盒测试技术:
逻辑覆盖:
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 条件组合覆盖
控制结构测试
黑盒测试技术:
等价划分
边界值分析
错误推测
调试:
调试是在测试发现错误之后,排除错误的过程;
软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率;
软件的可用性是在程序给定的时间点,按照规格说明书的观规定,成功运行的概率;
MTTF 估算平均无故障时间
13 什么是软件危机?
软件危机典型的表现:
- 对软件开发成本和进度的估计常常不准确
- 用户对”已完成“的软件系统不满意的现象经常发生
- 软件产品的质量往往靠不住
- 软件常常是不可维护的
- 软件没有适当的文档
- 软件成本在计算机系统总成本所占比例逐年上升
- 软件开发的生产率提高的速度,比不上计算机应用普及以深入的趋势
软件危机的原因:
一方面于软件本身的特点有关;
另一方面也和软件开发和维护的方法不正确有关;
14 什么是软件工程?
软件工程是:
- 把系统的,规范的,可度量的途径应用于软件开发,运行,维护过程,也就是把工程应用于软件;
- 研究1中提到的途径;
15 文档对维护的重要性。
文档是影响软件可维护性的决定因素。
由于长期使用的大型软件系统在使用过程中必然经受多次修改,所以文档比程序代码要重要;
==========================================================================
代码行技术 是比较简单的定量的估算软件规模的方法。
工作量估算常用的模型有 :
- 静态单变量模型
- 面向FP的估算模型
- 动态多变量模型
COCOMO2模型,Putnam模型是用来 工作量估算
软件工程方法学包含3个元素:
- 方法
- 工具
- 工程