第一章
? 软件工程方法学(3个要素) :通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学,
也称范型。三要素:方法、工具和过程。 ? 软件生命周期模型
– 瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每
个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 – 缺点:传统的瀑布模型过于理想化,是由文档驱动的。
– 快速原型模型:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反
馈意见的方法,获取用户真正的需要。
– 增量模型:优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用
户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
– 螺旋模型:优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只
是螺旋模型中另一个周期。
1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-2 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-3 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):
1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,
从而降低了整个软件开发过程的困难程度。缺点:当软件规模
庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起
来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;
促进了软件重用。
1-4 软件生命周期划分成哪些阶段
? 软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。 1. 软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析 2. 开发时期:总体设计、详细设计、编码和单元测试、综合测试。 3. 维护时期:主要任务是使软件持久地满足用户的需要。 1-5 什么是软件过程?它与软件工程方法学有何关系?
? 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 ? 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-6 传统“瀑布模型”的主要缺陷是什么?试说明改进的方法。 传统的瀑布模型过于理想化了。增加“反馈环”
第二章
? 可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
? 可行性研究的任务:1.进一步分析和澄清问题;2.导出系统的逻辑模型;3.从逻辑模型出发,提出若干种系统
实现方案4.研究每种实现方案的可行性:
? 技术上的可行性 ——使用现有的技术能实现这个系统吗?
? 经济上的可行性 ——这个系统的经济效益能超过它的开发成本吗? (投资与效益) ? 操作可行性 ——系统的操作方式在这个用户组织内行得通吗? ? 社会、政策允许的可行性
5.为每个可行的解决方案制定一个粗略的实现进度 6.对以后的行动方针提出建议 方法:1.系统流程图
2.数据流图:(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 符号
数据处理 数据流 处理 数据存储
源点
3.数据字典:是关于数据的信息的集合,也就是对数据流图中饮食的所有元素的定义的集合。 数据流图与数据字典共同构成系统的逻辑模型。 4.成本/效益分析 5.数据流图
– 定货系统P32
– 习题2第2题P43(银行储蓄系统) – 习题2第3题P43(机票预订系统) – 习题2第4题P43(医院监护系统)
D1 患者安全范围 患者安全范围 生理 危机病生理 分析 接受处理信号 人信息 信号 信号 信号事务 1 1 2 生理信号 日期 时间 5 1 定时处理3 产生警告警告信息 信息 病人 护士 病情报告 6 7 日志 日志 产生病情要求 报告 时钟 定时生更新日志 理信号 护士 取样事务 数据 数据 D1 患者日志 6.数据定义1、顺序 + 2、选择〔 | 〕3、重复 下限{ }上限
– 定货系统P39
– 习题2第5题P44
2-1 应该从哪些方面研究目标系统的可行性?
? 技术上的可行性 ——使用现有的技术能实现这个系统吗?
? 经济上的可行性 ——这个系统的经济效益能超过它的开发成本吗? (投资与效益) ? 操作可行性 ——系统的操作方式在这个用户组织内行得通吗? ? 社会、政策允许的可行性
2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。请画出此系统的数据流图。
1.1 记录存款信息 1.2 打印存单 存款信息 银行存单 储户 存款单 储户 取款单 2.1 验证 密码 存款信息 D1 存款信息 存款信息 存款信息 计算 利息 2.2 利息值 打印利息清单 2.3 利息清单 ? 某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印出机票给旅客。
旅客 取票通知 账单/票款 2.1 交款 订票信息 机票 信息 2.2 打印机票 交款信息 机票 旅客 取票通知 账单 1.3 打印处理 D1 订票信息 旅客信息 航班信息 旅行社 1.1 1 旅客 旅客 信息 录入信信息 处理息 事务 1.2 安排 航班 机票 信息
2-3 北京某高校可用的电话号码由以下几类:校内电话号码由4位数字组成,第一位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话先拨0,若是本地电话再接着拨8位数字(固话第一位不是0)或11位数字(移动电话第一位为1);若是外地电话,则拨3位区码再拨8位电话号码(固话第一位不是0),或拨0再拨11位数字(移动电话第一位为1)。请用数据定义的方法,定义上述电话号码。
电话号码=[校内号码|校外号码] 校内号码=非0数字+3{数字}3 校外号码=0+[本地号码|外地号码] 本地号码=[固话号码|手机号码] 固话号码=非0数字+7{数字}7 手机号码=1+10{数字}10
外地号码= [外地固话号码|外地手机号码] 外地固话号码=3{数字}3+固话号码 外地手机号码=0+手机号码 非0数字=[1|2|3|4|5|6|7|8|9]
第三章
? 需求分析的准则:1、必须并描述的信息域,根据这条准则应该建立数据模型。2、必须定义软件应完成的功
能,这条准则要求建立功能模型。3、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。4、必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
? 需求分析的任务(P46)1、确定对系统的综合要求;2、分析系统的数据要求;3、导出系统的逻辑模型;4、修
正系统开发计划。 ? 方法
– 实体-联系图
? 教学管理系统P54
姓名 教工号 性别 职称 职务 姓名 学号 性别 系 年级 课程号
课名 学时 学分
? 习题3第3题P63 (银行储蓄系统)
姓名 住址 电话号码 身份证号码 名称 地址 电话号码 储户 N 存取款 M 储蓄所 数额 类型 到期日 利率 密码 ? 习题3第5题P63 (医院监护系统)
姓名 住址 电话号住院号 姓名 科室 工作证病人 N 监护 M 护士 时间 脉搏 体温 血压 心电图 – 数据流图 – 状态转换图
? 电话系统P57
? 习题3第6题P63 (复印机)
排除卡纸故障 卡纸 卡纸 do/警告 复印命令 闲置 完成复印命令 复印 do/复印 发现缺纸 缺纸 do/警告 装满纸 第五章
? 总体设计的任务
划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等
设计软件的结构。也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。 ? 总体设计过程两个阶段
1.系统设计阶段,确定系统的具体实现方案;2.结构设计阶段,确定软件结构。
? 总体设计过程9个步骤
1设想供选择的方案 2选取合理的方案 3推荐最佳方案 4功能分解 5设计软件结构 6 设计数据库 7制定测试计划 8书写文档 9审查和审核 ? 低耦合(5种类型)
1. 数据耦合:数据传递 2.控制耦合:控制信息传递 3.特征耦合:传过多的信息给被调用模块 4.公共环境耦合:因全局变量,共享通信区 5.内容耦合:诸如一个模块访问另一个模块内部 ? 高内聚(7种类型)
功能内聚 10分 顺序内聚 9分 通信内聚 7分 过程内聚 5分 时间内聚 3分 逻辑内聚 1分 偶然内聚 0分 ? 面向数据流的设计方法P95
– 变换流
? 数字仪表板系统P96 旋转信号
读入 确定 旋转 加速/ 信号 信号数/秒 减速 箭头指示
(SPS) △SPS 收集
并求 产生 平均 加速/减 △SPS 下箭头 速显示 水平线 转换成 rpm 转/分 上箭头 燃料流量 (rpm) 传感器信号
读入 并核实 燃料流量 rpm 计算 mph和 超速值 计算 里程 英里 产生 里程 显示 超速值
数字仪表板 控制 接收传感器 信号 数据转换 控制 驱动仪表板 转换成 rpm 计算 gph 计算 mph 计算 mpg 计算 里程 显示 mph 显示 mpg 显示 里程 发出警 报铃声 读旋转 信号 读燃料 流量 确定 加速/减速 加速/减速 显示 发光二极管显示 ? 患者监护系统(参见习题2第4题)
– 事务流
? 用户命令交互子系统(DFD)
用户 命令 系统参数数据 原配置 数据 读系统 数据格式化配
置 建立配 置文件 格式化 配置数据 数据 配置信息读用户 命令 命令类型 配置命令 命令 开/关 分析处理 命令 配置 数据 A/D信息 显示信息 和状态 显示信息
检验信息 与文件中 密码比较 检验信息 检验信 息过程
激活/非活动系统 密码命令 密码 读 密码 四位数字 重试信息 SC图 用户执行模块 命令处理 读用户命令 系统设置 控制器 现用/非现用 系统 密码处理 控制器 读系统 数据 建立配 置文件 读 密码 用文件 比较密码 密码输出 控制器 显示信息 与状态 产生 无效信息
机票预订系统(参见习题2第3题)
第六章
? 结构程序设计概念P108
– 如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,而且每个代码块
只有一个入口和一个出口,则称这个程序是结构化的
? 结构程序设计3种概念类型P109
1、 经典的结构程序设计
只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环着三种基本控制结构
2、 扩展的结构程序设计 还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构 3、 修正的结构程序设计 还允许使用EXIT(或BREAK)结构 方法
1、人机界面设计
2、过程设计的工具P114
3、面向数据结构的设计方法——Jackson方法 4、程序复杂程度的定量度量P127 – McCabe方法
根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。 可用三种方法之一来计算复杂性:
1. 流图中区域的数量对应于环形的复杂度 ;
2. 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的数量,N是流图中节点的数量 ; 3. 流图G的环形复杂度V(G)=P+1,其中, P是流图中判定节点的数量
– Halstead方法 ? 程序流程图P114
– 习题六第3题P131 开始画出下列伪程序的程序流程图和盒图 START
IF p THEN
FTWHILE q DO P F END DO ELSE
FGQTBLOCK
G FN
END BLOCK NEND IF STOP
F P T
结束
Q G N
F
? PAD(问题分析)图 ? 判定表P117
– 行李托运费计算P118 – 讲课课时津贴计算
1 2 3 4 5 教授 T F F F 副教授 F T F F 讲师 F F T F 助教 F F F T 讲座 T F F F F 50 × 30 × 25 × 20 × 15
×
? 判定树P118
– 行李托运费计算P119 – 讲课课时津贴计算 教授 30 副教授 25
一般授课 ? 讲师 20 ? 课时津贴 助教 15 ? ? 讲座 50 ? 过程设计语言(PDL
Jackson设计方法的步骤(5步)P122
– 实例P123
某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。
– 高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合
并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。
考生情况文件 考分文件
I I
考生记录* 考生记录*
准考证号 姓名 通讯地址 准考证号 考分
(a) 输入数据结构
操作:(1)停止; (2)打开两个输入文件; (3)建立输出文件。
(4)从输入文件中各读一条记录。 (5)生成一条新记录。
(6)将新记录写入输出文件。 (7)关闭全部文件。 条件:I(1)文件结束。 产生新文件 分析考生记录 2 3 4 7 1 I(1) 处理考生记录* 产生姓名 产生通讯地址 产生考分 产生准考证号 把操作和条件分配到程序结构图的适当位置
? 将程序流程图映射为流图P127
考生新文件 I 考生记录* 准考证号 姓名 通讯地址 考分 (b) 输出数据结构 5 6 4
1 1 2,3 6 4 7 8 4,5 2 3 6 7 9 8 5 9 10 10 11 11 ? 计算环形复杂度P127实例P128-129习题6第8题P132 1: LOOP: DO WHILE Z>0 2: A=B+1 IF A>10
3: THEN X=A 4: ELSE Y=Z 5: END IF IF Y<5
6: THEN PRINT X,Y 7: ELSE IF Y=2
THEN GOTO LOOP 8: ELSE C=3 END IF 9: END IF G=H+R END DO 10: IF F>0
11: THEN PRINT G 12: ELSE PRINT R 13: END IF
STOP V(G)=6 第七章
? 软件测试的概念P140
目的:(1)测试是为了发现程序中的错误而执行程序的过程; 1 2 3 5 4 6 8 9 7
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3)成功的测试是发现了至今为止尚未发现的错误的测试。 定义:为了发现程序中的错误而执行程序的过程。 测试绝不能证明程序是正确的
? 测试方法P141
– 黑盒测试
1把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程
2对程序接口进行测试,检查程序功能是否能按规格说明书的规定正常使用; 程序是否能适当地接受输入数据并产生正确的输出信息; 程序运行过程中能否保持外部信息的完整性
– 白盒测试
1把程序堪称装在一个透明的白盒子里,测试者完全知道程序的结构处理算法 2按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按 预定要求正确工作
? 测试步骤P141
– 单元测试:(模块测试)发现的往往是编码和详细设计的错误 – 集成测试:着重测试模块的接口
– 系统测试:发现的往往是软件设计中的错误,也可能发现需要说明中的错误 – 验收测试:(确认测试)往往发现需求说明书中的错误
白盒测试
? 逻辑覆盖
– 逻辑覆盖类型
逻辑覆盖是以程序的内部逻辑结构为基础的测试用例设计技术,属于白盒测试。它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度。
从覆盖源程序语句的详尽程度分析,大致有以下一些不同程度的覆盖标准:
1语句覆盖2判定覆盖 3条件覆盖 4判定/条件覆盖 5条件组合覆盖
– 实例P153
– 习题7第4题第(3)小题P174
? 控制结构测试
– 基本路径测试P156
1: START
INPUT (A,B,C,D) 2: IF (A>0)
3: AND (B>0)
4: THEN X=A+B 5: ELSE X=A-B 6: END IF 7: IF C>A
8: OR (D
12: PRINT (X,Y) STOP
路径1:1-2-3-4-6-7-9-11-12
路径2:1-2-5-6-7-9-11-12 路径3: 1-2-3-5-6-7-9-11-12 路径4:1-2-3-4-6-7-8-9-11-12
测试用例: 路径4:1-2-3-4-6-7-8-10-11-12 执行路径1(两个判定表达式之值全为真)
输入:A=1, B=1, C=2, D=2(任意) 预期输出:X=2, Y=0 执行路径2(两个判定表达式之值为假、真) 输入: A=0, B=1(任意), C=2, D=0(任意) 预期输出:X=-1, Y=2 执行路径3(两个判定表达式之值为假、真)
输入: A=1, B=0, C=2, D=0(任意) 预期输出:X=1, Y=2 执行路径4(两个判定表达式之值全为真)
输入: A=1, B=1, C=0, D=-1 预期输出:X=2, Y=1 执行路径5(两个判定表达式之值为真、假)
输入: A=1, B=1, C=0, D=2 预期输出:X=2, Y=2
黑盒测试法 实例:
输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形及等边三角形时,分别做计算…” 分析:输入:三个非零正整数
输出:一般三角形、等腰三角形、等边三角形 有效等价类号无效等价类 号码 型 码 覆盖有效等价类的测试用例: 12 a为非整数 13 一边为非整数 b为非整数 a b c 覆盖等价类号码 输 14 c为非整数 输 1 整数 3 4 5 (1)--(7) 15 a,b为非整数 16 两边为非整数 b,c为非整数 入 4 4 5 (1)--(7),(8) 17 a,c为非整数 18 4 5 5 (1)--(7),(9) 三边a,b,c均为非整数 入 19 三 只给a 5 4 5 (1)--(7),(10) 20 只给一边 只给b 21 只给c 4 4 4 (1)--(7),(11) 2 三个数 22 个 只给ab 条 23 只给两边 只给b,c 24 只给ac 第八章 维护 整 25 给出三个以上 件 ? 软件维护的定义P179:所谓软件维护就是在 26 a为0 27 一边为零 b为0 数 软件已经交付使用之后,为了改正错误或满 28 c为0 3 非零数 29 a,b为0 足新的需要而修改软件的过程。 30 二边为零 b,c为0 31 ? 软件维护过程P182 :维护过程本质上是修a,c为0 32 三边a,b,c均为0 改和压缩了的软件定义和开发过程,而且事 33 a<0 实上远在提出一项维护要求之前,与软件维 34 一边<0 b<0 35 c<0 护有关的工作已经开始了。 正数 36 a<0且b<0 4 37 ? 进行维护的原因:改正程序中的错误和缺陷;二边<0 a<0且c<0 38 b<0且c<0 39 改进设计以适应新的软、硬件环境;增加新的 三边均<0:a<0且b<0且c<0 应用范围;为了将来的维护工作。 5 40 a+b>c a+b<0 41 输 a+b=0 ? 维护分为以下几类:改正性维护;适应性维6 42 b+c>a 构成一般 b+cb a+c