第4章 软件设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计:用Jackson图描述统计文件空格数的程序结构,如图4-22所示。
如,键盘输入的数据和鼠标交互的事件等,经过内部处理以后再以“外部”的 形式离开系统。根据数据信息的“流动”特点,可分为3种数据流类型,即变换 型数据流,事务型数据流和混合型数据流。
图4-9所示为变换型数据流模型表示信息的时间“历史”状况。
当数据流经过一个具有 “事务中心”特征的数据处理时,它可以根据事务
重构是一种重新组织的技术,可以简化构件或模块的设计或编码且无须改 变其功能或行为。这是一种改进程序内部结构,但不改变代码或设计的外部行 为。
软件结构图的主要元素如下。
(1)模块:模块用带有名字的方框表示,名称应体现模块的功能。 (2)控制关系:控制关系用单向箭头或直线表示模块间的调用关系。 (3)信息传递:用带注释的短箭头表示模块调用过程中传递的信息。 (4)循环调用和选择调用:在上部模块底部加一个菱形符号表示选择调用, 在上部模块的下方加一个弧形箭头,表示循环调用。
(5)软件结构图的形态特征如下。 (6)画结构图应注意的事项如下。
4.4.1 系统构成模型 1.以数据为中心的结构模型 大多数使用大量数据的系统都是围绕共享数据库(或者称为“容器”)组织
的,所以基于一个共享数据库的系统模型称为“以数据为中心的结构模型”。这
个模型适合于数据由一个子系统产生,而其他子系统共享使用的系统结构,这种 类型的系统有命令控制系统、管理信息系统、CAD系统和CASE工具集成系统等。 图4-4所示所示为基于一个共享数据的CASE工具集成系统的系统结构示例。
2.事件驱动系统 在集中式控制模型中,控制决断通常由一些系统状态变量值决定;相反,事 件驱动的控制模型是通过外部产生的事件驱动系统的。有多种不同的基于事件驱 动的系统,如电子表格和基于规则的产生式系统等。广播模型和中断驱动模型是 两种事件驱动的控制模型。
4.5.1 面向数据流的设计方法 1.数据流类型 根据基本系统模型,数据信息必须以“外部”信息形式进入软件系统。例
义和缩写词
·性能
·列出有关资料的作者、标题、编号、发表日期、 ·输出项目
出版单位或资料来源
·功能
·文档所引用的资料、软件开发的标准或规范
·输入项目
1.4 参考资料
3.2 算法:模块所选用的算法
项目经核准的计划任务书、合同或上级机关的批 3.3 程序逻辑:详细描述模块实现的算法,可采

用标准流程图;PDL语言;N-S图;判定表等描述
抽象具有不同的级别,在最高的抽象级上,使用问题所处环境的语言,以 概括性的术语描述解决方案;在较低的抽象级上,将提供更详细的解决方案说 明。例如,当考虑开始需求时,与用户使用业务描述语言和领域术语交谈,主 要目的是了解用户的动机。
分解技术是模块化概念的一个基本问题,目的是分解一个软件解决方案以 求获得最好的模块集合。信息隐蔽原则建议模块应该具有的特征是每个模块对 其他所有模块都隐蔽自己的设计决策。
表4-2给出了详细设计说明书模板。
1 引言
2 总体设计
1.1 编写目的:阐明编写详细设计说明书的目的, 2.1 需求概述
指明读者对象
2.2 软件结构:如给出软件系统的结构图
1.2 项目背景:应包括项目的来源和主管部门等 3 程序描述
1.3 定义:列出本文档中所用到的专门术语的定 3.1 逐个模块给出以下说明
2.2.2 全局数据 2.2.3 文件和数据交叉索引 3 体系结构设计 3.1 数据和控制流复审 3.2 得出的程序结构 4 接口设计 4.1 人机界面规约
4.2 人机界面设计规约 4.3 外部接口设计
4.3.1 外部数据接口 4.3.2 外部系统或设备接口 4.4 内部接口设计规约 5 (每个模块)过程设计 5.1 处理说明 5.2 接口描述 5.3 设计语言描述 5.4 使用的模块 5.5 内部设计结构 5.6 注释/约束/限制 6 需求交叉索引 7 测试部分 7.1测试方针 7.2 集成策略 7.3 特殊考虑 8 附录(包括特殊注解)
1.集中式控制 (1)调用—返回模型:这是一个自上而下的子过程模型。控制始于系统的 顶层,在子系统(程序)调用过程中,控制逐步传递到更低的层次中。该模型 适用于顺序执行的系统。
(2)管理者模型:这是一种适用于并发系统的模型,一个系统组件被指定 为系统管理者,控制其他系统过程的启动、终止和协调。一个过程就是一个能 和其他过程并发执行的子系统或模块。图4-8所示是一个实时系统的集中式控制 模型例子。
JSD方法的设计过程主要有以下5个步骤。 (1)分析并确定问题的输入和输出数据的逻辑结构,并用Jackson图描绘 这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。注意对 应关系是指有直接的因果关系,有相同的数据单元(重复出现的数据单元必须 有相同的重复次序和次数)。 (3)根据下述规则从数据结构的Jackson图导出程序结构的Jackson图。 (4)列出所有的操作和条件(包括分支条件和循环条件),并把它们分配 到程序结构图的适当位置。 (5)用某种形式的伪码给出程序结构图对应的过程性描述。
4 . 1 软件设计概述 4 . 2 模块化设计原理 4 . 3 软件结构 4 . 4 软件体系结构模型 4wenku.baidu.com. 5 结构化软件设计 4 . 6 面向对象的设计
4.1.1 软件设计过程 软件设计过程主要包括总体设计、详细设计和设计测试3项活动,这3项活 动在各具特色的软件设计方法中以不同的过程形式表现。 软件设计的第1类活动是总体设计,也称为“概要设计”、“软件结构设 计”或“高层设计”。
其中以事务流为中心,在分支通路上出现变换型的数据流。有些系统中以 变换流为中心,且在变换中以拥有多条通路的事务流形式存在,如图4-12所示。
2.数据流设计方法 (1)复查基本系统模型,并精化系统数据流图。 (2)分析数据流类型,确定数据流具有变换流特征,还是事务流特征。 (3)如果是变换流特征,确定输入流和输出流的边界(也分别称为“最高 输入/输出抽象点”),该流边界之间就是变换流,也称为“变换中心”。 (4)采用自顶向下,逐步求精的方式完成模块分解,确定相应的软件组成 结构,并对每一个模块给出一个简要说明,包括模块接口信息,模型内部信息, 过程陈述和约束等。 (5)根据模块独立性原理和运用设计度量标准,对导出的软件结构进行优 化。
信息隐蔽意味着通过一系列独立的模块可以得到有效地模块化,这些独立 的构件或模块之间仅交换那些必须交换的信息,且交互是最简单的。
1.内聚性
内聚性是从功能的角度对模块内部聚合能力的度量,模块的内聚性按照从 弱到强逐步增强的顺序可分成7类,如图4-1所示。高内聚是模块独立性追求的 目标。
2.耦合性 耦合性是对一个软件结构内不同模块之间互连程度的度量,其强弱取决于 模块间接口的复杂程度及通过接口的数据类型和数目。模块的耦合度按照从弱 到强逐步增强的顺序也可分成7类,如图4-2所示。
【案例4.1】 统计文件中单词数目的数据流设计 统计文件中单词数目系统的数据流图如图4-13所示。
根据输入流边界和输出流边界确定了输入、变换、输出数据流,软件可第1 次分解成如图4-14所示的3个模块的结构。
“读取和验证文件名”、“统计单词数目”和“格式化和显示单词数”模 块分别对应数据流图的输入、变换和输出3个部分。“读取和验证文件名”模块 把验证标志传给“统计单词数”模块。文件名若无效,则打印错误信息,退出
客户机必须知道可用的服务器的名字及其所提供的服务,并通过远程调用
获取服务器提供的服务;反之,服务器没有必要知道客户机的身份,以及到底 有多少客户机在运行。图4-6所示为多媒体服务系统。
4.抽象机模型 抽象机模型也称为“分层模型”,是建立子系统的接口模型。它把子系统 组织成一系列的层次,每一层提供一组服务,并定义为一个抽象机。例如,网 络协议OSI参考模型就是一个有影响的抽象机模型例子,如图4-7所示。
系统;若有效,则统计该文件的单词数目,然后传给“格式化和显示单词数”
模块。“读取和验证文件名”及“格式化和显示单词数”模块具有通信内聚性, 可分别把各自的功能进一步分解为下属模块功能。图4-15给出了第3次分解后的 软件结构图。
【案例4.2】 自动柜员机(ATM)事务流设计 “自动柜员机(ATM)业务”软件的数据流图如图4-16所示。
2.数据流体系结构模型
当输入数据经过一系列的计算和操作构件或模块的变换形成输出数据时, 可以应用数据流体系结构。管道和过滤器体系结构(如图4-5所示)通过一组由 管道连接的过滤器变换数据,并向下传递。
3.客户机/服务器结构模型 客户机/服务器结构模型的主要组成部分如下。 (1)一组给其他子系统提供服务的单机服务器。 (2)一组向服务器请求服务的客户机。 (3)一个连接客户机和服务器的网络(可选)。
ATM系统结构应分解为事务分析器与事务调度器两部分,分析器确定事务类 型,并将事务类型信息传给调度器,然后由调度器执行该项事务;事务操作部分
可以逐步求精,直到给出最基本的操作细节。事务基本操作细节模块往往是被上 层模块共享的,这部分结构模式往往被称为“瓮型”结构。图4-17给出了ATM软 件结构图。
软件设计说明文档是设计规约的模板,描述所有设计信息。表4-1给出了一 个软件设计文档标准示例。
1 范围 1.1系统目标 1.2 主要软件需求 1.3 软件设计约束、限制 2 数据设计 2.1 数据对象和形成的数据结构 2.2文件和数据库结构
2.2.1 外部文件结构 ① 逻辑结构
② 逻辑记录描述
③ 访问方法
【案例4.3】 公司的销售管理系统设计 一个公司的销售管理系统的数据流图如图4-18所示。
在每个功能中都经历了数据输入—数据变换,以及分析—数据输出这样的变 换型数据流程。将销售管理系统的数据流图变换成软件结构图,如图4-19所示。
1.Jackson图 Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问 题的数据结构,也可以描述软件的程序结构。图4-20给出了Jackson图顺序、选择 和重复4种逻辑结构的表示方法示例。
项目开发计划;需求规格说明书;概要设计说明 算法的图表

3.4 接口
测试计划(初稿)
·限制条件
用户操作手册
·存储分配
3.5测试要点:给出测试模块的主要测试要求
4.2.1 模块化 问题总的复杂性和总工作量会随着分解逐步减少。但是如果无限地分解下 去,总工作量反而会增加。这是因为一个软件系统的各个模块之间是相互关联 的,模块划分的数量越多,模块间的联系也就越多。模块本身的复杂性和工作 量虽然随着模块变小而减少,模块的接口工作量却随着模块数增加而增大。 软件模块化开发存在一个最小成本区,把模块数控制在一定的范围内可以 得到最小的总开发工作量,因此软件模块化必须保证科学、合理地进行模块分 解。
【案例4.4】 统计文件空格数并输出统计 问题描述:一个由若干个记录组成的正文文件,每个记录是一个字符串,要 求统计每个记录中空格字符的个数和整个文件中的空格总数。统计输出格式为每 复制一行字符串之后,另起一行输出该字符串的空格数,最后输出整个文件的空 格总数。 分析:用Jackson图描述正文文件和输出表格的数据结构,如图4-21所示。
类型,从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不 同事务的数据流,就是事务型数据流,简称为“事务流”。图4-10所示为具有事 务流特征的数据流图示例。
在一个大型系统的DFD中,变换流和事务流往往会同时出现。例如,在一 个事务型的DFD中,分支动作路径上的信息流也可能会体现出变换流的特征, 如图4-11所示。
逐步求精是一种自顶向下的设计策略,通过连续精化层次结构的软件细节 实现软件的开发。
层次结构的开发将通过逐步分解功能的过程抽象,直至形成程序设计语言 的语句。
逐步求精是人类采用抽象到具体的过程,把一个复杂问题趋于简单化控制 和管理的有效策略,这是一个细化的过程。
开发软件时应从在高抽象级上定义的功能陈述或数据描述开始,然后在这 些原始陈述上持续细化越来越多的细节。
相关文档
最新文档