《软件技术基础10_软件工程2》由会员分享,可在线阅读,更多相关《软件技术基础10_软件工程2(44页珍藏版)》请在金锄头文库上搜索。
1、3.4 软件设计,3.4.1 软件设计概述 一、任务和目标 任务:将需求说明转换成计算机可实现的系统,完成结构设计(数据结构和程序结构),形成软件设计说明书。 目标:可靠性,可维护性,可理解性,高效率,二、设计方法和步骤,三、设计文档,设计说明书内容 1、概述 2、参考文档 3、系统结构 4、数据结构及数据库(全局变量,结构) 5、接口设计 6、模块设计 7、测试的准备,3.4.2 软件设计准则,一、软件结构的准则 软件结构指程序的系统结构,它意味着一种控制 层次体系。软件结构提供了软件模块及模块之间组成关系的表示模块间层次结构 准则一:倒水缸性,顶部窄,中部宽,底部次宽 准则二:判定的影响范
2、围控制范围,二、模块化准则,模块是软件结构的基础,是一个可单独命名的可编程的软件元素,由模块组合成的层次形式就是一个可执行的软件。将一个软件模块化的目的是降低软件的复杂性。选择合适模块的大小和数目。,三、模块独立性准则,1.耦合性 非直接耦合 数据耦合 控制耦合 外部耦合 公共耦合 内容耦合,2.内聚性 偶然内聚 逻辑内聚 时间内聚 过程内聚 通讯内聚 顺序内聚 功能内聚,模块设计独立性准则:即 模块功能专一、 模块间无过多相互作用,力求增加模块的内聚, 尽量减少模块间的耦合,3.4.3 总体设计方法,一、SD设计 基本思路模块化,考虑建立一个结构良好的软件系统。从反映用户要求的数据流图出发,
3、逐步产生软件结构的规则。任何系统都可用数据流程图来表示,因此SD方法理论上可设计任何软件系统的结构。 方法把数据流映射成为软件结构,数据流有两种类型:变换流和事务流,分别对应两种不同的软件映射方法:变换型结构和事务型结构。,二、数据流图的类型,三、结构图,描述软件模块结构,并反映了模块间联系,四、转换分析,(1)确立数据流图的类型 (2)确立流界从“顶”至下 “中心加工”方法:由输入/输出边界向内搜索 (3)一级分解上层 (4)下级分解中下层 (5)细化,3.4.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. 函数命名规则第一个字母使用大写字母,用大小写字母组合规
5、范函数命名,必要时可用下划线间隔 。如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 软件测试概述 一、测试
6、例子输入整数a、b、c代表三角形三边长,输出结果为判断是等腰/等边/不等边三角形 正常情况:a=3,b=4,c=5a=3,b=3,c=4a=3,b=3,c=3,考虑异常或错误情况: 1、输入数据不合法 2、输入数据不构成三角形 测试用例(输入数据及预测的结果) 软件测试是为发现错误而执行程序的过程,二、软件测试的目标与原则,G.Myers软件测试技巧中阐述目标: 1、发现错误(非证明正确) 2、好测试方案发现错误 3、成功测试发现错误,测试原则,1、测试用例 2、测试用例含非法数据 3、避免自己测试 4、测试计划 5、严格全面的测试 6、保存测试结果,3.6.2 测试方法,一、动态测试,常用测
7、试方法, 黑盒测试法:功能测试。它是将程序看成一个黑箱忽略其内部的细节,在程序的接口端进行测试,是检验在一定的输入条件下能否得到正确的结果。, 白盒测试法:按照程序内部的逻辑路径来测试程序,检验程序中的每一条路径是否都能按预定的要求工作。,无论黑盒测试还是白盒测试都要选择合理、全面的测试用例,但穷尽测试却是不可能作到的。,1、白盒测试语句覆盖、判定覆盖、条件覆盖、判定/条件 覆盖、条件组合覆盖 语句覆盖 例:路径(a,b,c)输入 1,0.5,2输出 1,0.5,3.5,判定覆盖(分支覆盖)每个分支都至少通过一次路(a,c,e)+(a,b,d) 条件覆盖使每个判定条件可能取值(真,假)至少执行
8、一次,判定-条件覆盖 条件组合覆盖,二、黑盒测试,功能测试:根据需求说明中的程序功能设计测试用例,1、等价分类法:,将所有可能输入情况划分若干输入域集合,即等价类,每个类中选择一个测试用例 等价类划分原则: (1)值的范围 (2)值的个数 (3)值约束 (4)值规则,使用等价类划分的步骤: 1、编号 2、设计测试用例,覆盖所有合理等价类 3、设计测试用例,覆盖所有不合理等价类,2、边缘值分析,主要原则: 1、输入条件规定了取值范围 2、输入条件规定了输入个数 3、考虑输出类边界 4、有序集取首尾,边界分析法与等价划分法区别:,3、因果图法:输入-“因” 输出-“果”建立因果图,用判定表,4、错
9、误推测法;输入数为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、预防副作用 按模块把修改分组 自顶向下顺序 每次修改一模块 修改完审查,