第1章 软件工程学概述
11 软件危机
111 软件危机介绍
软件危机(软件萧条软件困扰):指计算机软件开发维护程中遇系列严重问题
软件危机包含述两方面问题:
开发软件满足软件日益增长需求
维护数量断膨胀已软件
软件危机典型表现:
(1)软件开发成进度估计常常准确
(2)户已完成软件系统满意现象常发生
(3)软件产品质量住
(4)软件常常维护
(5)软件通常没适文档资料
(6)软件成计算机系统总成中占例逐年升
(7)软件开发生产率提高速度远远计算机应迅速普深入趋势
112 产生软件危机原
(1)软件身特点关
(2)软件开发维护方法正确关
113 消软件危机途径
计算机软件正确认识
认识软件开发种组织良理严密类员协配合完成工程项目
应该推广实践中总结出开发软件成功技术方法继续研究探索
应该开发更软件工具
总解决软件危机技术措施(方法工具)必组织理措施
12
121 软件工程介绍
软件工程:指导计算机软件开发维护门工程学科采工程概念原理技术方法开发维护软件时间考验证明正确理技术前够技术方法结合起济开发出高质量软件效维护软件工程(期中考)
软件工程质特性:
软件工程关注型程序构造
软件工程中心课题控制复杂性
软件常变化
开发软件效率非常重
谐合作开发软件关键
软件必须效支持户
软件工程领域中具种文化背景具种文化背景创造产品
122 软件工程基原理
分阶段生命周期计划严格理
坚持进行阶段评审
实行严格产品控制
采现代程序设计技术
结果应清楚审查
开发组员应该少精
承认断改进软件工程实践必性
123 软件工程方法学
软件工程包括技术理两方面容
软件工程方法学3素:方法工具程
1 传统方法学(生命周期方法学结构化范型)——强调顶
2 面象方法学——强调动次反复迭代
面象方法学4点:象类继承消息
13 软件生命周期 (必考)
三时期八阶段:软件生命周期软件定义软件开发运行维护(称软件维护)三时期组成时期进步划分成干阶段
14 软件程
141 瀑布模型
142 快速原型模型
143 增量模型
144 螺旋模型
145 喷泉模型
第2章 行性研究
21 行性研究务
行性研究目:
解决问题确定问题否值解决
行性研究实质:
进行次压缩简化系统分析设计程较高层次较抽象方式进行系统分析设计程
行性研究容:
首先进步分析澄清问题定义导出系统逻辑模型
然系统逻辑模型出发探索干种供选择解法(系统实现方案)
种解法研究行性少应该三方面研究种解法行性
方面:
技术行性济行性操作行性
方面:
运行行性 法律行性
22 行性研究程
1 复查系统规模目标
2 研究目前正系统
3 导出新系统高层逻辑模型
4 进步定义问题
5 导出评价供选择解法
6 推荐行动方针
7 草拟开发计划
8 书写文档提交审查
23 系统流程图
系统流程图:概括描绘物理系统传统工具表达数系统部件间流动情况数进行加工处理控制程
24 数流图
241 符号
基符号:
数存储:数存储处静止状态数
数流:数流处运动中数
附加符号:
星号(*):表示关系
加号(+):表示关系
异(⊕):表示互斥关系
25 数字典
数流图数字典构成系统逻辑模型
251 数字典容
数字典组成:数流 数流分量(数元素) 数存储 处理
252 定义数方法
方法:数顶分解
数组成方式(三种基类型):序 选择 重复 附加类型:选
符号:
意思等价(定义)
+意思(连接两分量)
[ ]意思(方括弧列出干分量中选择)通常|号隔开供选择分量
{ }意思重复(重复花括弧分量)常常限限进步注释表示重复花括弧
( )意思选(圆括弧里分量)
253 数字典实现
计算机实现 工实现
26 成效益分析
261 成估计:1 代码行技术 2 务分解技术 3 动估计成技术
262 成效益分析方法
成效益分析涉4概念:
1 货币时间价值
2 投资回收期
3 纯收入
4 投资回收率:P F1( 1 + j ) + F2( 1 + j )2 + …+ Fn( 1 + j )n
第3章 需求分析
需求分析务:
需求分析软件定义时期阶段基务准确回答系统必须做什问题
确定系统必须完成工作目标系统提出完整准确清晰具体求
系统分析员应该写出软件需求规格说明书书面形式准确描述软件需求
31 需求分析务
确定系统综合求
分析系统数求
导出系统逻辑模型
修正系统开发计划
311 确定系统综合求
1 功需求
2 性需求
3 性性需求
4 出错处理需求
5 接口需求
6 约束
7 逆需求
8 提出求
312 分析系统数求
建立数模型——ER图
描绘数结构——层次方框图Warnier图
数结构规范化
32 户沟通获取需求方法
访谈:1 正式访谈 2 非正式访谈 3 调查表 4 情景分析技术
面数流顶求精
简易应规格说明技术
快速建立软件原型:(1) 第四代技术(4GL)(2) 重软件构件 (3) 形式化规格说明原型环境
33分析建模规格说明
331 分析建模
需求分析程应该建立3种模型:数模型 功模型 行模型
数字典分析模型核心
实体联系图建立数模型图形
数流图建立功模型基础
状态转换图行建模基础
34 实体联系图
数模型中包含3种相互关联信息:数象数象属性数象彼间相互连接关系
34 状态转换图
361 状态
状态图分类:
表示系统循环运行程通常关心循环样启动
表示系统单程生命期需标明初始状态终状态
362 事件
事件引起系统做动作()转换状态控制信息
363 符号
37 图形工具
371 层次方框图
372 Warnier图
373 IPO图
38 验证软件需求(重点)
381 方面验证软件需求正确性
致性 完整性 现实性 效性
第五章 总体设计
51 设计程
两阶段组成:
系统设计阶段确定系统具体实现方案:设想供选择方案 选取合理方案 推荐佳方案
结构设计阶段确定软件结构功分解 设计软件结构 设计数库 制定测试文档 书写文档 审查复查
52 设计原理
521 模块化
模块化作:
采模块化原理软件结构清晰仅容易设计容易阅读理解
模块化软件容易测试调试助提高软件性
模块化够提高软件修改性
模块化助软件开发工程组织理
522 抽象
523 逐步求精
524 信息隐藏局部化
525 模块独立
量数耦合
少控制耦合特征耦合
限制公环境耦合范围
完全容耦合
七种聚优劣评分结果:
高聚:功聚
序聚
中聚:通信聚
程聚
低聚:时间聚
逻辑聚
偶然聚
53 启发规
1 改进软件结构提高模块独立性
2 模块规模应该适中
3 深度宽度扇出扇入应适
4 模块作域应该控制域
5 力争降低模块接口复杂程度
6 设计单入口单出口模块
7 模块功应该预测
54 描绘软件结构图形工具
541 层次图HIPO图
1 层次图(H图)
层次图描绘软件层次结构适顶设计软件程中
2 HIPO图
542 结构图
55 面数流设计方法
结构化设计方法(简称SD方法)基数流设计方法
551 概念
面数流设计方法信息流映射成软件结构信息流类型决定映射方法
信息流两种类型:变换流 事务流
第6章 详细设计
61 结构程序设计
典结构程序设计:
允许序IFTHENELSE型分支DOWHILE型循环3种基控制结构
扩展结构程序设计:
果述3种基控制结构外允许DOCASE型分支结构DOUNTIL型循环结构
修正结构程序设计:
加允许LEAVE(BREAK)结构
62 机界面设计
621 设计问题
设计机界面程中会遇4问题:
系统响应时间:长度 易变性
户帮助设施:集成帮助设施附加帮助设施
出错信息处理
命令交互
623 机界面设计指南
般交互指南
信息显示指南
数输入指南
63程设计工具
631 程序流程图(程序框图)
程序流程图缺点:
程序流程图质逐步求精工具诱程序员早考虑程序控制流程考虑程序全局结构
程序流程图中箭头代表控制流程序员受约束完全顾结构程序设计精神意转移控制
程序流程图易表示数结构
632 盒图(NS图)
盒图具述特点:
功域明确
意转移控制
容易确定局部全程数作域
容易表现嵌套关系表示模块层次结构
633 PAD图
二维树形结构图表示程序控制流种图翻译成程序代码较容易
PAD图优点:
表示结构化控制结构PAD符号设计出程序必然结构化程序
PAD图描绘程序结构十分清晰
PAD图表现程序逻辑易读易懂易记
容易PAD图转换成高级语言源程序种转换软件工具动完成
表示程序逻辑描绘数结构
PAD图符号支持顶逐步求精方法
634 判定表
判定表够清晰表示复杂条件组合应做动作间应关系
条件
条件组合矩阵
动作
条件组合
应动作
判定表缺点:
判定表含义眼出初次接触种工具理解需简短学程
数元素值两时判定表简洁程度降
635 判定树
判定树优点:
形式简单眼出含义易掌握
判定树缺点:
简洁性判定表数元素值重复写遍越接树叶端重复次数越
画判定树时分枝次序终画出判定树简洁程度较影响
636 程设计语言(伪码)
伪代码基控制结构:
简单陈述句结构:避免复合语句
判定结构:IF_THEN_ELSECASE_OF结构
选择结构:WHILE_DOREPEAT_UNTIL结构
PDL优点:
作注释直接插源程序中间助保持文档程序致性提高文档质量
普通正文编辑程序文字处理系统方便完成PDL书写编辑工作
已动处理程序存动PDL生成程序代码
PDL缺点:
图形工具形象直观描述复杂条件组合动作间应关系时判定表清晰简单
64 面数结构设计方法
面数结构设计方法终目标出程序处理程描述
641Jackson
ABCD 3元素序组成 根条件ABCD中某 AB出现N次(N≥0)组成
642 改进Jackson图
643 Jackson方法
65 程序复杂程度定量度量
651 McCabe方法
1 流图(程序图)
2 计算环形复杂度方法
V(G)流图中区域数
V(G)EN+2
中E流图中边数N结点数
V(G)P+1
中P流图中判定结点数目
652 Halstead方法
令N1程序中运算符出现总次数N2操作数出现总次数程序长度N定义:
NN1+N2
程序中运算符(包括关键字)数n1操作数(变量常数)数n2预测程序长度公式:
H n1 log2n1 + n2 log2n2
预测程序中包含错误数公式:
E N log2 (n1+n2)3000
第7章 实现
编码测试统称实现
71编码
711 选择程序设计语言
实标准:
系统户求
编译程序
软件工具
工程规模
程序员知识
软件移植性求
软件应领域
712 编码风格
1 程序部文档恰标识符 适注解 程序视觉组织
2 数说明
3 语句构造
4 输入输出
5 效率程序运行时间 存储器效率 输入输出效率
72软件测试基础
721 软件测试目标
测试发现程序中错误执行程序程
测试方案极发现迄止尚未发现错误测试方案
成功测试发现止尚未发现错误测试
723 测试方法
黑盒测试(功测试):
程序作黑盒子
完全考虑程序部结构处理程
程序接口进行测试
白盒测试(结构测试):
程序成装透明盒子里
测试者完全知道程序结构处理算法
程序部逻辑测试程序检测程序中执行通路否预定求正确工作
724 测试步骤
1 模块测试(单元测试)
保证模块作单元正确运行
发现编码详细设计错误
2 子系统测试
单元测试模块放起形成子系统测试
着重测试模块接口
3 系统测试
测试子系统装配成完整系统测试
发现软件设计中错误发现需求说明中错误
子系统测试系统测试兼检测组装两重含义通常称集成测试
4 验收测试(确认测试)
软件系统作单实体进行测试
户积极参进行实际数(系统处理信息)进行测试
发现系统需求说明书中错误
5 行运行
725 测试阶段信息流
输入信息两类:
软件配置包括需求说明书设计说明书源程序清单等
测试配置包括测试计划测试方案
73 单元测试
单元测试集中检测模块
单元测试编码属软件程阶段
应工测试计算机测试样两种类型测试方法
单元测试白盒测试技术模块测试行进行
731 测试重点
模块接口
局部数结构
重执行通路
出错处理通路
边界条件
732 代码审查
审查组正式进行测试称代码审查
次审查会发现许错误减少系统验证总工作量
733 计算机测试
驱动程序程序接收测试数传送测试模块印出关结果
存根程序代测试模块调模块代模块接口做少量数操作印出入口检验操作结果控制调模块
74 集成测试
集成测试测试组装软件系统化技术目标发现接口关问题
模块组装成程序时两种方法:
743 集成测试策略较
混合策略:
改进顶测试方法
混合法
744 回测试
75 确认测试
确认测试称验收测试目标验证软件效性
753 AlphaBeta测试
Alpha测试受控环境中进行
Beta测试软件开发者控制环境中真实应
1 接口测试
2 路径测试
3 功测试
4 健壮性测试
5 性测试
6 户界面测试
7 信息安全测试
8 压力测试
9 性测试
10 安装反安装测试确认测试称验收测试目标验证软件效性
Alpha测试受控环境中进行
Beta测试软件开发者控制环境中真实应
4 接口测试
5 路径测试
6 功测试
4 健壮性测试
5 性测试
6 户界面测试
7 信息安全测试
8 压力测试
9 性测试
10 安装反安装测试
76 白盒测试技术
761 逻辑覆盖
语句覆盖
判定覆盖 :语句覆盖强程序逻辑覆盖程度高
条件覆盖 :判定覆盖定包含条件覆盖条件覆盖定包含判定覆盖
判定条件覆盖 :时判定条件覆盖条件覆盖更强
条件组合覆盖 :条件组合覆盖标准测试数定程序中条路径执行
6 点覆盖(语句覆盖标准相)
7 边覆盖(判定覆盖致)
8 路径覆盖
762 控制结构测试覆盖
1 基路径测试
基路径测试Tom McCabe提出种白盒测试技术
首先计算程序环形复杂度
该复杂度指南定义执行路径基集合
2条件测试
该基集合导出测试例保证程序中条语句少执行次条件执行时分取真假两种值
3 循环测试
循环测试种白盒测试技术专注测试循环结构效性
结构化程序中通常3种循环简单循环串接循环嵌套循环
77 黑盒测试技术
771 等价划分
772 边界值分析
773 错误推测
79 软降性
791 基概念
软件性:
程序定时间间隔规格说明书规定成功运行概率
软件性:
程序定时间点规格说明书规定成功运行概率
第8章 维护
软件工程目提高软件维护性减少软件维护需工作量降低软件系统总成
81 软件维护定义
软件维护:软件已交付改正错误满足新需修改软件程
分4项活动:
改正性维护
适应性维护
完善性维护
预防性维护
82软件维护特点
821 结构化维护非结构化维护差巨
822 维护代价高昂
823 维护问题
83软件维护程
1维护组织 2维护报告 3维护事件流 4保存维护记录 5评价维护活动
84 软件维护性
决定软件维护性素7:
理解性
测试性
修改性
性
移植性
性
效率
第9章 面象方法学引
91面象方法学概述
911面象方法学点
(1) 认客观世界种象组成事物象
(2) 象划分成种类象象类定义组数组方法
(3) 子类父类关系干象类组成层次结构系统
(4) 象彼间仅通传递消息相互联系
912 面象开发方法
面象象+类 +继承+通信
914 面象方法组成
面象分析
面象设计
面象程序设计
916 面象方法优点
1类惯思维方式致
2稳定性
3重性
4维护性
5较易开发型软件产品
92 面象概念
921 象
客观事物概念抽象表述客观存事物描述统称象象事物抽象概念 组数该数组基操作程封装起实体
象特点
(1) 数中心
(2) 象动
(3) 实现数封装
(4) 质具行性
(5) 模块独立性
922 类
组具相属性相操作象集合
923 实例
某特定类描述具体象
924 消息
象发出服务请求(互相联系协工作等)消息包含3部分:接收消息象消息名消息变元
925 方法
方法象执行操作类中定义服务
926 属性
属性类中定义数客观世界实体具性质抽象
927 封装
象封装象数数操作
928 继承(I)
继承子类动享基类中定义数方法机制
单重继承:子类仅父类继承属性方法
重继承:子类父类继承属性方法
929 态性
9210 重载
93 面象建模(II)
面象开发软件需建立3种形式模型
象模型描述系统数结构—数结构
动态模型描述系统控制结构—执行操作
功模型描述系统功—数值变化
94 象模型
941类图基符号(I)
1 定义类
2 定义属性
见性 属性名 :类型 缺省值 {性质串}
见性(visibility)表示该属性类外元素否见
分:
public(+) 公模型中类访问该属性
private() 私表示类访问
protected(#) 受保护表示该属性该类子类访问
果见性未申明表示见性确定
3 定义操作
见性 操作名(参数表):返回类型{性质串}
942 表示关系符号(I)
9421 关联(I)
关联表示两类象间存某种语义联系
(1) 普通关联
递关联:类身关联关系
(3) 限定关联
(4) 关联类
9422 聚集(I)
(1) 享聚集
果聚集关系中处部分方象时参处整体方象构成该聚集称享聚集
(2) 组合聚集
果部分类完全隶属整体类部分整体存整体存部分会消失该聚集称组合聚集
9423 泛化(I)
(1) 普通泛化
(2) 受限泛化
预定义约束4种: 重相交完全完全
9424 赖
9425 细化
95动态模型
96功模型
961例图
模型元素:系统行者例例间关系(扩展关系关系)
例实例脚
第10章 面象分析
101 面象分析基程
面象分析:抽取整理户需求建立问题域精确模型程
理解户分析员领域专家
表达需求规格说明书(象模型动态模型功模型)
验证二义性完善性
象模型基重核心
静态结构(象模型)
3子模型 交互次序(动态模型)
数变换(功模型)
复杂问题象模型5层次
面象分析程
寻找类象
识结构
识题
定义属性
建立动态模型
建立功模型
定义服务
102 需求陈述
需求陈述阐明做什样做
问题范围
功需求
性需求
应环境
假设条件
第11章 面象设计
111 面象设计准
1 模块化 2 抽象 3 信息隐藏
4 弱耦合
耦合指象间相互关联紧密程度
象间耦合分两类:
交互耦合
果象间耦合通消息连接实现种耦合交互耦合交互耦合应松散
继承耦合
交互耦合相反应该提高继承耦合程度
5 强聚
面象设计中存述3种聚:
服务聚:服务应该完成仅完成功
类聚:类应该途属性服务应该高聚
般特殊聚:设计出般特殊结构应该符合数概念
6 重
112 启发规
1 设计结果应该清晰易懂
2 般特殊结构深度应适
3 设计简单类
4 简单协议
5 简单服务
6 设计变动减
第13章 软件项目理
131估算软件规模
1311 代码行技术
估算方法:
名验软件工程师分做出估计
估计程序规模(a)规模(b)规模(m)
分算出3种规模均值式计算程序规模估计值:
单位:
LOCKLOC
代码行技术优点:
代码软件开发项目产品容易计算代码行数
量参考文献数
代码行技术缺点:
源程序仅软件配置成分源程序度量软件规模太合理
语言实现软件需代码行数相
适非程性语言
1312 功点技术
功点技术软件信息域特性软件复杂性评估结果估算软件规模
种方法功点(FP)单位度量软件规模
1 信息域特性
输入项数(Inp)输出项数(Out)查询数(Inq)文件数(Maf)外部接口数(Inf)
特征根复杂程度分配功点数信息域特征系数a1a2a3a4a5
2 估算功点步骤
(1) 计算未调整功点数UFP
UFPa1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
(2) 计算技术复杂性子TCF
技术素软件规模综合影响程度DI:
技术复杂性子TCF式计算:
TCF 065 + 001 × DI
DI值0~70间TCF值065~135间
(3) 计算功点数FP
FP UFP × TCF
功点技术优点:编程语言关代码行技术更合理
功点技术缺点:判断信息域特性复杂级技术素影响程度时观素较验赖性较强
132 工作量估算
1321 静态单变量模型
E A + B × (ev) C
ev估算变量(KLOCFP)
1322 动态变量模型
动态变量模型称软件方程式该模型工作量作软件规模开发时间两变量函数
E(LOC×B0333P)3×(1t)4
1323 COCOMO2模型(构造性成模型)
3层次估算模型:
应系统组成模型:模型估算构建原型工作量模型名字暗示构建原型时量已构件
早期设计模型:模型适体系结构设计阶段
体系结构模型:模型适完成体系结构设计软件开发阶段
COCOMO25分级素:项目先例性开发灵活性风险排度项目组凝聚力程成熟度
133 进度计划
1331 估算开发时间
Brooks规律:已延期项目增加力会更加延期
1332 Gantt图
Gantt图优点:
Gantt图形象描绘务分解情况子务(作业)开始结束时间
具直观简明容易掌握容易绘制优点
Gantt图3缺点:
显式描绘项作业彼间赖关系
进度计划关键部分明确难判定部分应攻控象
计划中潜力部分潜力明确造成潜力浪费
1333 工程网络
工程网络系统分析系统设计强力工具
1334 估算工程进度
计算早时刻EET述3条简单规:
考虑进入该事件作业
作业计算持续时间起始事件EET
选取述数中值作该事件早时刻EET
计算迟时刻LET述3条规:
考虑离开该事件作业
作业结束事件迟时刻中减该作业持续时间
选取述差数中值作该事件迟时刻LET
1335关键路径
关键事件:EETLET
1335 机动时间(LET)结束-(EET)开始-持续时间
右角-左角-持续时间
134 员组织
1341 民制程序员组
果组n成员通信信道n(n1)2条
1342 程序员组
程序员组两重特性:专业化 层次性
1343 现代程序员组
135质量保证
1351 软件质量
1352 软件质量保证措施
136 软件配置理
基非执行测试(复审评审)保证编码前阶段产生文档质量
基执行测试(软件测试)需程序编写出进行保证软件质量道防线
程序正确性证明数学方法严格验证程序否说明完全致
1 技术复审必性
2 走查参者驱动法文档驱动法
3 审查:综述 准备 审查 返工 踪
4 程序正确性证明
软件配置理软件整生命期理变化组活动
具体说组活动:①标识变化②控制变化③确保适实现变化④需知道类信息报告变化
软件配置理目标:变化更正确更容易适应必须变化时减少需花费工作量
1361 软件配置
1软件程输出信息(软件配置项):
计算机程序(源代码执行程序)
描述计算机程序文档(供技术员户)
数(程序包含程序外)
2 基线
基线通正式复审软件配置项
1362 软件配置理程
软件配置理5项务:
1 标识软件配置中象:基象聚集象
2 版控制
3 变化控制
4 配置审计
5 状态报告
137 力成熟度模型
1 初始级
软件程特征序时甚混乱
2 重复级
软件机构建立基项目理程(程模型)踪成进度功质量
3 已定义级
软件机构已定义完整软件程(程模型)软件程已文档化标准化
4 已理级
软件机构软件程(程模型程实例)软件产品建立定量质量目标项目重程活动度量
5 优化级
软件机构集中精力持续断改进软件程级软件机构防止出现缺陷目标机构力识软件程素薄弱环节足够手段改进
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档