当前位置: 首页 > >

软件技术基础10_软件工程2_图文

发布时间:

3.4 软件设计
3.4.1 软件设计概述
一、任务和目标
?

?

任务:将需求说明转换成计算机可实现 的系统,完成结构设计(数据结构和程 序结构),形成软件设计说明书。 目标:可靠性,可维护性,可理解性, 高效率

二、设计方法和步骤
修改 需求 总体 软件 说明书 设计 结构 修改 可接受 详细 模块 复审 设计 描述 复审

设计
说明书

三、设计文档
?

设计说明书内容

1、概述 2、参考文档 3、系统结构 4、数据结构及数据库(全局变量,结构) 5、接口设计 6、模块设计 7、测试的准备

3.4.2 软件设计准则
一、软件结构的准则
?

软件结构指程序的系统结构,它意味着一种控制 层次体系。软件结构提供了软件模块及模块之间 组成关系的表示

模块间层次结构
? ?

准则一:倒水缸性,顶部窄,中部宽,底部次宽 准则二:判定的影响范围?控制范围

二、模块化准则
?

模块是软件结构的基础,是一个可单独命名 的可编程的软件元素,由模块组合成的层次 形式就是一个可执行的软件。将一个软件模 块化的目的是降低软件的复杂性。
选择合适模块的大小和数目。

?

三、模块独立性准则

1.耦合性
? ?

?
? ? ?

非直接耦合 数据耦合 控制耦合 外部耦合 公共耦合 内容耦合

2.内聚性
? ?

?
? ?

?
?

偶然内聚 逻辑内聚 时间内聚 过程内聚 通讯内聚 顺序内聚 功能内聚

模块设计独立性准则:

力求增加模块的内聚, 尽量减少模块间的耦合
即 模块功能专一、 模块间无过多相互作用

3.4.3 总体设计方法
一、SD设计
?

?

基本思路 模块化,考虑建立一个结构良好的软件系统。 从反映用户要求的数据流图出发,逐步产生软 件结构的规则。任何系统都可用数据流程图来 表示,因此SD方法理论上可设计任何软件系统 的结构。 方法 把数据流映射成为软件结构,数据流有两种类 型:变换流和事务流,分别对应两种不同的软 件映射方法:变换型结构和事务型结构。

二、数据流图的类型
输入 信息 输入 内部 加工 数据 中心 内部 加工 结果 输出 输出 加工 结果

P1 事务流 事务 中心 P2 P3

事务路径

事务路径 事务路径

三、结构图
?

描述软件模块结构,并反映了模块间联 系

四、转换分析
数据流图 初始标准结构图
准则

完善最终结构图

(1)确立数据流图的类型 (2)确立流界 从“顶”至下 “中心加工” 方法:由输入/输出边界向内搜索 (3)一级分解上层 (4)下级分解中下层 (5)细化

3.4.4 详细设计方法
?

?

?

出发点: 易读,易理解,通用性好,效率高 任务: 确定模块算法和数据结构 要求: 结构程序设计 顺序,选择,循环三种基本结构

?

?

思想 自顶向下,逐步求精 结构化程序设计优缺点

3.5 软件编程
3.5.1 软件编程的任务
详细设计结果 源程序(文档)

3.5.2 程序设计语言
? ? ? ?

机器语言 汇编语言 高级语言 翻译程序

翻译程序

机器语言

选择语言准则
? ? ? ? ?

项目应用领域 算法和计算复杂性 软件的执行环境 数据结构的复杂性 软件开发人员水平

3.5.3 编程风格
?

易读性、易理解性、易维护性

1、变量、函数、文件命名 2、注释 3、代码书写

命名规范
1。 变量命名规则 类型+名字 ch 类型 char 例如:chText n 类型 int 例如:nCount f 类型 float 例如:fValue
?

2. 函数命名规则 第一个字母使用大写字母,用大小写字母 组合规范函数命名,必要时可用下划线间 隔 。如 void ShowChar (int , int , chtype); void ScrollUp_V (int , int); ? 3 函数说明
?

?

?
? ?

?
? ?

?
? ? ?

/************************************** 函数描述: HPass_Filter 完成图像的高通滤波处理 函数参数: short **pData :存放正则化后的小波系数 int nHeight : 数值为原始图像的高度值 int nWidth :数值为原始图像的宽度值 函数返回值 :无 ************************************/ Void HPass_Filter(short** pData,int nHeight,int nWidth)

3.6 软件测试
3.6.1 软件测试概述
一、测试例子 输入整数a、b、c代表三角形三边长,输出结 果为判断是等腰/等边/不等边三角形
正常情况: a=3,b=4,c=5 a=3,b=3,c=4 a=3,b=3,c=3

考虑异常或错误情况:
1、输入数据不合法 2、输入数据不构成三角形 测试用例(输入数据及预测的结果)
?

软件测试是为发现错误而执行程序的过 程

二、软件测试的目标与原则
G.Myers《软件测试技巧》中阐述目标:
1、发现错误(非证明正确) 2、好测试方案-发现错误 3、成功测试-发现错误

测试原则
1、测试用例 2、测试用例含非法数据 3、避免自己测试 4、测试计划 5、严格全面的测试 6、保存测试结果

3.6.2 测试方法
?人工测试 ? ?动态测试 ? 自动测试 ?

一、动态测试
定义域 测试用例 值域

f 映射

预期结果

常用测试方法
? 白盒测试法:按照程序内部的逻辑路径来测试

程序,检验程序中的每一条路径是否都能按预定 的要求工作。
? 黑盒测试法:功能测试。它是将程序看成一个

黑箱忽略其内部的细节,在程序的接口端进行测 试,是检验在一定的输入条件下能否得到正确的 结果。
无论黑盒测试还是白盒测试都要选择合理、全面 的测试用例,但穷尽测试却是不可能作到的。

1、白盒测试
语句覆盖、判定覆盖、条件覆盖、判定/条件 覆盖、条件组合覆盖

语句覆盖 例:路径(a,b,c) 输入 1,0.5,2 输出 1,0.5,3.5
?

?

判定覆盖(分支覆盖)
每个分支都至少通过一次 路(a,c,e)+(a,b,d) 条件覆盖 使每个判定条件可能取值(真,假)至少执行 一次

?

? ?

判定--条件覆盖 条件组合覆盖

二、黑盒测试
?

功能测试:根据需求说明中的程序功能 设计测试用例

1、等价分类法:
?

?

将所有可能输入情况划分若干输入域集合, 即等价类,每个类中选择一个测试用例 等价类划分原则:

(1)值的范围 (2)值的个数 (3)值约束 (4)值规则

?

使用等价类划分的步骤:

1、编号 2、设计测试用例,覆盖所有合理等价类 3、设计测试用例,覆盖所有不合理等价类

2、边缘值分析
?

主要原则:

1、输入条件规定了取值范围 2、输入条件规定了输入个数 3、考虑输出类边界 4、有序集取首尾

?

边界分析法与等价划分法区别:

3、因果图法:
输入----“因” 输出----“果” 建立因果图,用判定表

4、错误推测法;
输入数为0,空表,空栈,溢出 ? 排序程序: (1)输入表为空 (2)输入表只有一个元素 (3)所有元素值相同 (4)输入表已是排序的

3.6.3 软件测试的步骤和策略
?

四步:单元测试、组装测试、确认测试和系统 测试
设计信息 软件需求 系统其他元素 单元 测试 单元 测试

被测

模块

…...
单元 测试

组装 已集成 确认 已确认 系统 可交付 测试 软件 测试 软件 测试 软件

一、单元测试(模块测试) 模块的子程序实际功能 ?模块的功能接口描述 二、组装测试(集成测试) 三、确认测试(有效性测试)
有效性测试(黑盒测试)、软件配置复查、测试、 测试及验收测试

四、系统测试

3.7 软件维护
3.7.1 概念 一、软件维护的必要性 二、软件维护的种类
1、纠错性维护 2、适应性维护 3、完善性维护 4、预防性维护

三、软件的可维护性
? ?

关键目标 可理解性、可测试性、可靠性、可修改 性、可移植性、可使用性、效率

3.7.2 软件维护的步骤与方法
一、软件维护的工作流程 二、软件维护的过程及方法
1、理解、分析现有软件系统:结构图、跟踪 2、修改现有系统:计划、修改、控制副作用 3、重新验证

三、软件维护的管理

3.7.3 软件维护的副作用
1、三类
? ?

?

修改程序的副作用 修改数据的副作用 文档的副作用

2、预防副作用
? ? ?

?

按模块把修改分组 自顶向下顺序 每次修改一模块 修改完审查




友情链接: