软件工程复习提纲
第一章 概述
软件工程的定义
软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。
瀑布、快速原型、增量模型、螺旋模型、喷泉模型图
- 瀑布模型图:
- 特点:
- 阶段具有顺序性和依赖性:前一阶段的工作完成之后,才能开始后一阶段的工作;
前一阶段的输出文档就是后一阶段的输入文档。 - 推迟实现的观点:对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。
- 质量保证的观点:每个阶段都必须完成规定的文档,是“文档驱动”的模型。
- 阶段具有顺序性和依赖性:前一阶段的工作完成之后,才能开始后一阶段的工作;
- 优点:
- 可强迫开发人员采用规范的方法;
- 严格地规定了每个阶段必须提交的文档;
- 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
- 缺点:
- 只能通过文档了解产品,不经过实践的需求是不切实际的。
- 实际项目很少按照该模型给出的顺序进行;
- 用户常常难以清楚地给出所有需求;
- 用户必须有耐心,等到系统开发完成
- 特点:
- 快速原型模式:
- 特点:
- 不带反馈环,软件产品开发基本上是线性顺序进行的。
- 尽可能快的建造出原型系统,以加速软件开发过程,节约成本
- 特点:
- 增量模型
- 优点:
- 刚开始不用投入大量人力资源
- 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。
- 优点:
- 螺旋模型
- 基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
- 喷泉模型
练习3
第二章 可行性研究
软件生命周期的3个时期、8个阶段
练习:高考录取统分子系统的数据流图
高考录取统分子系统,功能如下:
- 计算标准分,根据考生原始分计算标准分,存入考生分数文件
- 计算录取线分,根据标准分和招生计划文件中的招生人数,计算录取线分,存入录取线文件。
练习:教材销售系统的数据流图
人工:先找系办公室开购书申请,凭申请找教材科开购书证明,向出纳员交付书款获得领书单,然后到书库找保管员领书。
计算机:包括销售和采购两大功能。
销售时,根据学生用书表和教材库存清单对购书单进行有效性审查,通过审查后得到有效购书单,并将缺书信息写入缺书表。交完款后开领书单,根据领书单更新教材库存清单。
采购时,将缺书表中的信息汇总生成采购单,新书进库时更新教材库存清单。
练习:储蓄系统的数据流图
为方便储户,银行预开发计算机储蓄系统。
储户填写的存款单或取款单由业务员输入系统
如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息。
如果是取款,系统计算利息并印出利息清单给储户。
练习:患者监护系统的数据流图
某医院预开发一个以计算机为中心的患者监护系统。
要求随时接收每个病人的jllll(脉搏、体温、血压、心电图等)
定时记录病人情况,以形成患者日志。
当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息。
护士在需要时可以要求系统打印某个指定病人的病情报告。
第三章 需求分析
画出拨打电话的状态机图
画出航班预定的状态机图
第九章 面向对象
画出学生成绩管理系统的类图
类:教师类、用户类、管理员类、分数类、网站类、报告单类
分数类:报告分数、更新分数、保存分数、下载分数存为文件
网站类:用户名,密码,登录,查看
报告单类:生成报告单
画出图书管理系统的整体用例图
第十章 面向对象分析
车主锁车顺序图
汽车租赁系统客户借车通信图
票务订单处理的活动图
生成订单
如果直接购买,就分配座位,通过信用卡收款,邮寄票据
如果订购,执行分配座位,储蓄卡收款,还能获得奖励,之后寄出票据
股票交易活动图
顾客要求服务,销售人员负责接收订单,并提交到股票室。
股票室处理订单,同时顾客付款,
销售人员送订单到顾客处。
求斐波那契数列的第n个数的活动图
汽车租赁气筒网上预定车辆的活动图
第五章 总体设计
耦合的种类
-
非直接耦合/完全独立
如果两个模块中的每一个都能独立的工作而不需要另一个模块的存在,那么它们完全独立。
-
数据耦合
如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。
-
控制耦合
如果两个模块彼此之间传递的信息中有控制信息,这种耦合称为控制耦合
-
特征耦合
当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。
-
公共环境耦合
当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。
-
内容耦合
最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合:
一个模块访问另一个模块的内部数据;
一个模块不通过正常入口转到另一个模块的内部;
两个模块有一部分程序代码重叠;
一个模块有多个入口
尽量使用数据耦合
少用控制耦合和特征耦合
限制公共环境耦合的范围
完全不用内容耦合
内聚的种类
-
偶然内聚
如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚
-
逻辑内聚
如果一个模块完成的任务在逻辑上属于相同或相似的一类,则称为逻辑内聚
-
时间内聚
如果一个模块包含的任务必须在同一时间段内执行,就叫时间内聚。
-
过程内聚
如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
-
通信内聚
如果模块中所有元素都使用同一个输入数据和产生同一个输出数据,则称为通信内聚。即在同一个数据结构上的操作。
-
顺序内聚
如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,则称为顺序内聚。
-
功能内聚
如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。
将数据流图映射软件结构的方法
练习:汽车数字仪表板
通过模数转换实现传感器和微处理机接口;
在发光二极管面板上显示数据;
指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;
指示加速或减速;
超速警告:如果车速超过55英里/小时,则发出超速警告铃声。
练习:字数统计程序
设计一个产品,它将一个文件名作为输入,并返回文件中的字数。
练习:自动柜员机
顾客插入磁卡,输入密码,然后执行动作,包括向支票、存折或信用卡账户存款,提款或查询余额等。
设计上分成两部分:分析器和调度器。分析器确定事务类型并将信息送到分配器,由调度器进行事务处理。
练习:公司的销售管理系统
第六章 详细设计
程序流程图 转化成 PAD 图
判定表、判定树
-
航空公司练习
假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。
当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元。
对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。 -
教师讲课练习
某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;
对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。
请分别用判定表和判定树表示津贴标准。
Jackson 方法 从数据结构图到程序结构图的画法
练习:考生文件
高考后将考生的基本情况文件(简称考生情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。
考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通信地址。
考分文件中的考生记录的内容包括:准考证号和各门考分。
合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通信地址和各门考分。
将程序流程图映射成流图,并计算环形复杂度的方法
第七章 测试
集成测试(自顶向下)的过程
从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。
集成测试(自底向上) 的过程
白盒测试的各种覆盖
见第七章ppt
由流图计算环形复杂度,并确定线性独立路径
黑盒测试和白盒测试
-
黑盒测试(功能测试):
把程序看作一个黑盒子;
完全不考虑程序的内部结构和处理过程;
是在程序接口进行的测试。 -
白盒测试(结构测试):
把程序看成装在一个透明的盒子里;
测试者完全知道程序的结构和处理算法;
按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
第十三章 软件项目管理
估算软件规模
-
代码行技术:
\[L=\;\frac{\overline a+4\overline m+\overline b}6 \]最小规模(a),最大规模(b),最可能规模(m),单位:LOC 或 KLOC
-
功能点技术:
输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据。
输出项数(Out):软件向用户输出的项数,它们向用户提供面向应用的信息,
查询数(Inq):查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应。
主文件数(Maf):逻辑主文件的数目。
外部接口数(Inf):机器可读的全部接口的数量,用这些接口把信息传送给另一个系统。