《【软件技术基础】应用软件设计与开发技术.ppt》由会员分享,可在线阅读,更多相关《【软件技术基础】应用软件设计与开发技术.ppt(71页珍藏版)》请在金锄头文库上搜索。
1、第7章应用软件设计与开发技术 7 1软件工程概述7 2结构化分析方法7 3结构化设计方法7 4测试与调试基本技术 7 1软件工程概述 7 1 1软件工程的概念软件工程是指采用工程的概念 原理 技术和方法指导软件的开发与维护 软件工程学的主要研究对象包括软件开发与维护的技术 方法 工具和管理等方面 在软件研制开发过程中 若能严格遵循软件工程的方法论 便可提高软件开发的成功率 减少软件开发和维护中出现的问题 7 1 2软件生命周期某一软件从被提出并着手开始实现 直到软件完成其使命为止的全过程被划分为一些阶段 并称这一全过程为软件生命周期 通常 软件生命周期包括八个阶段 问题定义 可行性研究 需求分
2、析 系统设计 详细设计 编码 测试和运行维护 为使各时期的任务更明确 又可以分为以下三个时期 1 软件定义期 1 问题定义 2 可行性研究可行性研究的目的是进一步研究上一阶段所定义的问题是否可解 3 需求分析在这个阶段中 根据可行性研究阶段提交的文档 特别是从数据流图出发 对目标系统提出清晰 准确和具体的要求 即要明确系统必须做什么 2 软件开发期 1 系统设计这一阶段任务是划分出构成系统的各物理元素以及设计出软件的结构 2 详细设计详细设计的任务是对系统作出精确的描述 以便在编码阶段可直接将这一描述用程序设计语言编制成程序 3 编码编码是将系统设计与详细设计阶段中的结果翻译成用某种程序设计语
3、言书写的程序 4 测试测试的目的是要尽量发现程序中的错误 但绝不能证明程序的正确性 3 软件维护期 7 1 3应用软件开发的原则和方法1 应用软件开发的基本原则 1 自顶向下的系统结构开发原则 2 模块化结构开发原则 2 应用软件的开发方法 1 非自动形式的开发方法 系统流程图法 结构化分析方法 结构化设计方法 数据结构法 层次输入 处理 输出方法 2 半自动形式的开发方法 软件需求工程法 问题说明语言 分析器3 自动形式的系统开发方法 7 2结构化分析方法 7 2 1SA方法的特点1 分解和抽象2 文档的规范化3 面向用户4 系统的逻辑设计和物理设计分开进行 7 2 2数据流程图1 数据流程
4、图的概念图7 2所示的是一个描述研究生从入学到毕业的业务活动的数据流程图 2 数据流程图的组成符号一般来说 数据流程图由四种基本成分构成 数据流 数据处理 数据存储和外部实体 它们的符号如图7 3所示 3 画数据流程图的方法 1 自顶向下逐层分解方法 2 由外向里逐渐深化方法 7 2 3数据字典数据字典是结构化分析方法的另一个重要工具 数据字典主要是给数据流程图中的每一个数据流名 文件名以及处理名建立一个条目 在这些条目中给出各名字的定义 在数据字典中 通常有四种类型的条目 1 基本数据项条目2 数据流条目3 文件条目4 加工条目 即数据处理条目 7 2 4功能说明功能说明又称为 小说明 它是
5、对数据流程图中每个加工的详细描述 从而也是结构化分析的主要工具之一 1 结构化语言结构化语言是介于形式语言与自然语言之间的一种语言 在结构化语言中 使用顺序结构 选择结构和循环结构来描述加工处理中的各种功能操作 2 判定树判定树又称决策树 它是一种图形工具 在判定树中 树根在最左边 它是判定的起点 后面依次是各个分支 每一个分支中包括表示问题的条件和根据该条件所做的行动 例如 图7 4所示的是组织春游活动的一棵判定树 它根据天气情况以及交通工具来决定春游地点 3 判定表判定表是判定树的表格形式 例如 图7 4所示的判定树用判定表表示 如图7 5所示 4 三种表达方式的比较表7 1是这三种表达工
6、具的比较 7 3结构化设计方法 7 3 1SD方法的特点结构化设计 StructuredDesign SD 方法采取 分解 的手段来控制系统的复杂性 即把一个大型系统分解成若干个相对独立 功能单一的模块 7 3 2结构图1 结构图结构图 StructuredChart SC 的基本元素是模块 一般用矩形框表示 结构图将一个系统分解为若干个模块 每个模块可以看成一个 黑盒 在图中表示它的层次 构成和相互之间的关系 一般来说 结构图包括以下四种成分 1 模块模块用矩形框表示 矩形框中标明模块的名称 它反映该模块的功能 2 调用在结构图中 用带有箭头的连线表示模块之间的调用关系 3 模块间信息传递在
7、结构图中 用一些带有圆圈的小箭头来表示模块之间的通信 即模块调用时数据或控制信息的传递 箭头的方向表示传递的方向 4 辅助符号在结构图中 有时还要用到一些辅助符号 2 由数据流程图导出结构图SD方法实际上是面向数据流程图的 即它的工作对象实际上是在SA方法中形成的数据流程图 因此 可以由数据流程图来导出结构图 1 变换型 2 事务型 7 3 3模块独立性的评价评价模块独立性的主要标准有两个 一是模块之间的耦合 它表明两个模块之间互相独立的程度 二是模块内部之间的关系是否紧密 称为内聚 1 耦合耦合模块之间的耦合反映了模块的独立性 也反映了系统分解后的复杂程度 数据耦合 同构耦合 控制耦合 公用
8、耦合 内容耦合 2 内聚内聚是对一个模块内部元素之间功能上相互联系强度的测量 功能内聚 序列内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 偶然内聚 7 4测试与调试基本技术 7 4 1测试1 测试的基本概念软件测试的目标是在精心控制的环境下执行程序 以发现程序中的错误 给出程序可靠性的鉴定 测试具有以下三个重要特征 1 测试的挑剔性 2 完全测试的不可能性 3 测试的经济性 2 测试的过程程序的测试一般按三种方式进行 静态分析 动态测试和自动测试 1 程序的静态分析静态分析指不执行程序 而只人工对程序文本进行检查 通过阅读和讨论 分析和发现程序中的错误 2 程序的动态分析程序的动态分析是使用测
9、试用例在计算机上运行程序 使程序在运行过程中暴露错误 3 自动测试工具自动测试工具实际上是人们编制的用于测试的软件 并用它来代替人工测试 3 测试的层次 1 模块测试模块测试又称单元测试 模块测试的目标是发现局部模块的逻辑与功能上的错误和缺陷 它主要对以下几个方面进行测试 模块接口 局部数据结构 重要路径 错误处理的能力 I O错 2 整体测试整体测试的目标是尽量暴露模块测试时不能暴露的结构错误 如一个模块是否破坏了另一个模块的功能 数据通过接口时是否会丢失 能否产生主功能以及误差是否有积累等 整体测试可分为渐增式与非渐增式两种 非渐增式的整体测试是将经过单独测试的所有模块连接到一起进行测试
10、渐增式的整体测试往往是与模块测试同步进行的 即在对模块逐步装配的过程中同时进行 自顶向下 渐增式测试 自底向上 渐增式测试 3 高级测试 功能测试 系统测试 验收测试 安装测试 4 测试的方法对程序进行测试需要使用一些数据 每进行一次测试 就需要一组测试数据 这些测试数据通常称为测试用例 1 白箱法白箱测试是根据对程序内部逻辑结构的分析来选取测试用例 语句覆盖语句覆盖准则是企图用足够多的测试用例 使程序中的每个语句都执行一遍 以便尽可能多地发现程序中的错误 分支覆盖分支覆盖准则也称为判定覆盖准则 条件覆盖条件覆盖准则是通过执行足够多的测试用例 使每个判定中的每个条件都能取得两种不同的结果 真
11、与 假 组合条件覆盖组合条件覆盖准则要求通过足够多的测试用例 使每个判定中各条件的各种可能组合至少出现一次 2 黑箱法黑箱测试方法完全不考虑程序的内部结构和内部特征 而只是根据程序功能导出测试用例 等价分类法等价分类法是把所有可能的输入数据 有效的和无效的 划分成若干等价类 使每一类中的一个典型数据在测试中的作用与这一类中所有其他数据的作用相同 边值分析法边值分析着眼于使该等价类的边界情况成为测试的主要目标来选取测试用例 因果图法因果图法是设计测试用例的一种系统方法 有助于测试人员系统地选择高效的测试用例 错误推测法错误推测法也称猜错法 它无一定之规可循 在很大程度上是凭经验或直觉推测程序中可
12、能存在的各种错误 从而有针对性地编写测试用例 3 综合策略 7 4 2调试调试也称排错 一般的调试过程分为错误侦查 错误诊断和改正错误 1 调试技术常用的调试技术有以下五种 1 输出存储器内容 2 在程序中插入调试语句 3 利用调试用例 迫使程序逐个通过所有可能出现的执行路径 系统地排除 无错 的程序分支 逐步缩小检查的范围 4 经静态分析 动态测试或自动测试 都会得到大量与程序错误有关的信息 这些信息都可在调试时加以利用 5 借助调试工具 2 调试策略 1 试探法 2 回溯法 3 对分查找法 4 归纳法 5 演绎法 7 5软件开发新技术 7 5 1原型方法原型法将软件开发过程分为以下四个步骤 1 确定用户的基本要求 2 开发初始原型 3 实现并运行原型 4 修改并完善原型 7 5 2瀑布模型瀑布模型规定了整个软件生命周期内的各项软件工程活动 并且还规定了这些活动自上而下 相互衔接的顺序 如图7 13所示 7 5 3面向对象技术1 面向对象技术的基本概念 1 对象 2 类 3 方法 4 消息 5 继承 6 封装 对象具有以下一些基本特征 1 模块性 2 继承性和类比性 3 动态连接性 4 易维护性 2 面向对象技术的特点 1 可重用性 2 可维护性 3 表示方法的一致性