资源预览内容
第1页 / 共94页
第2页 / 共94页
第3页 / 共94页
第4页 / 共94页
第5页 / 共94页
第6页 / 共94页
第7页 / 共94页
第8页 / 共94页
第9页 / 共94页
第10页 / 共94页
亲,该文档总共94页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹第第4 4章章 结构化设计结构化设计 面向数据流的设计方法面向数据流的设计方法 4.1 4.1 软件设计概述软件设计概述4.2 4.2 软件设计的原理软件设计的原理 4.3 4.3 模块独立性模块独立性 4.4 4.4 表示软件结构的工具表示软件结构的工具4.5 4.5 软件结构设计中的启发规则软件结构设计中的启发规则软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.6 4.6 面向数据流的设计方法面向数据流的设计方法 例例3 3:汽车仪表:汽车仪表4.7 4.7 人机界面设计人机界面设计 4.8 4.8 过程设计(详细设计)过程设计(详细设计)4.9 4.9 面向数据结构的设计方法面向数据结构的设计方法第第4 4章章 结构化设计结构化设计 面向数据流的设计方法面向数据流的设计方法 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1 1软件设计分为概要设计和详细设计两个阶段软件设计分为概要设计和详细设计两个阶段 (1 1)概要设计:)概要设计: 将软件需求转化为将软件需求转化为软件结构软件结构(程序结构、接口)和(程序结构、接口)和 数据结构数据结构。 通过仔细分析软件需求规格说明,确定组成系统的通过仔细分析软件需求规格说明,确定组成系统的 模块及各模块之间的关系,设计出完成预定功能的模块及各模块之间的关系,设计出完成预定功能的 模块结构(模块结构(软件结构软件结构),并建立接口。),并建立接口。 (2 2)详细设计:)详细设计: 详细地设计每个模块,即确定完成每个模块功能所需详细地设计每个模块,即确定完成每个模块功能所需 要的要的算法算法和和数据结构数据结构。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 2 2软件设计与分析模型的关系软件设计与分析模型的关系 (图(图4.14.1)软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1 1)数据设计:)数据设计:将分析阶段的将分析阶段的数据模型(数据模型(E-RE-R图、数据字图、数据字 典)典)转变成实现软件所需要的转变成实现软件所需要的数据结构。数据结构。(2 2)体系结构设计:)体系结构设计:将分析阶段的将分析阶段的功能模型(功能模型(DFDDFD)转变转变 成成软件的模块框架。软件的模块框架。 结构化分析结果为结构化设计提供了最基本的输入信息结构化分析结果为结构化设计提供了最基本的输入信息 (3 3)接口设计:)接口设计:根据分析阶段的根据分析阶段的功能模型(功能模型(DFDDFD),描述,描述 软件内部、软件与协作系统之间、软件与用户之间的软件内部、软件与协作系统之间、软件与用户之间的 通信方式通信方式。(4 4)过程设计)过程设计(详细设计)(详细设计):根据根据数据流图数据流图中每个处理的中每个处理的 要求及分析阶段的要求及分析阶段的行为模型(状态转换图)行为模型(状态转换图)设计每个设计每个模模 块的实现过程块的实现过程软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.2.1 4.2.1 模块化模块化 4.2.2 4.2.2 抽象和逐步求精抽象和逐步求精 4.2.3 4.2.3 信息隐藏信息隐藏 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1 1)模块:)模块:由边界元素限定的程序单元。由边界元素限定的程序单元。 模块是构成程序的基本构件,是指用一个名字可以模块是构成程序的基本构件,是指用一个名字可以 调用的一段程序语句,可以将模块理解成类似调用的一段程序语句,可以将模块理解成类似“子子 程序程序( (函数函数) )”的概念。的概念。(2 2)模块化的含义:)模块化的含义:将程序划分成独立命名且可独立访问将程序划分成独立命名且可独立访问 的若干模块,每个模块完成一个子功能;将模块集成的若干模块,每个模块完成一个子功能;将模块集成 起来构成一个整体,完成指定的系统功能。起来构成一个整体,完成指定的系统功能。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3 3)模块化的依据:)模块化的依据: 把复杂的问题分解成许多容易解决的小问题时,原把复杂的问题分解成许多容易解决的小问题时,原 来的问题也就容易解决了。来的问题也就容易解决了。 设函数设函数 C(x) C(x) 表示问题表示问题x x的复杂程度,函数的复杂程度,函数 E(x) E(x) 表示解决问题表示解决问题x x需要需要 的工作量的工作量( (时间时间) )。 对于两个问题对于两个问题P1P1和和P2P2: 如果:如果: C(P1) C(P2) C(P1) C(P2) 则:则:E(P1) E(P2)E(P1) E(P2) 根据经验规律:根据经验规律: C(P1 + P2) C(P1) + C(P2)C(P1 + P2) C(P1) + C(P2) E(P1 + P2) E(P1) + E(P2) E(P1 + P2) E(P1) + E(P2)软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(4 4)合理划分模块,可使软件开发成本达到最小)合理划分模块,可使软件开发成本达到最小当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本 也减少了;但随着模块数目增加,设计模块间接口所需要的工作量也也减少了;但随着模块数目增加,设计模块间接口所需要的工作量也 将增加。将增加。 根据以上两个因素,得出每个软件都相应地有一个最适当的模块数目根据以上两个因素,得出每个软件都相应地有一个最适当的模块数目 M M,使得系统的开发成本最,使得系统的开发成本最小。小。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹模块化是对模块化是对软件的一次划分过程。该划分过程从需求分析软件的一次划分过程。该划分过程从需求分析软件的一次划分过程。该划分过程从需求分析软件的一次划分过程。该划分过程从需求分析 阶段确立的目标系统的功能模型出发,对整个软件问题进阶段确立的目标系统的功能模型出发,对整个软件问题进阶段确立的目标系统的功能模型出发,对整个软件问题进阶段确立的目标系统的功能模型出发,对整个软件问题进 行分割,使软件问题中的每个部分用一个或几个软件成份行分割,使软件问题中的每个部分用一个或几个软件成份行分割,使软件问题中的每个部分用一个或几个软件成份行分割,使软件问题中的每个部分用一个或几个软件成份 加以解决。加以解决。加以解决。加以解决。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1 1)抽象:)抽象:抽象是抽出事物的本质特性而暂时不考虑其抽象是抽出事物的本质特性而暂时不考虑其 细节细节的思维方式。的思维方式。 处理复杂系统的有效的方法:分层次构造和分析处理复杂系统的有效的方法:分层次构造和分析。 (对于一个复杂的动态系统,首先用一些高级的抽象概(对于一个复杂的动态系统,首先用一些高级的抽象概 念构造和理解,这些高级概念又可以用一些较低级的念构造和理解,这些高级概念又可以用一些较低级的 概念构造和理解,概念构造和理解,直至构造出最低层次的具体元直至构造出最低层次的具体元 素)素)软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 软件工程过程的每一步都是对软件解法的抽象层次的软件工程过程的每一步都是对软件解法的抽象层次的 一次精化:一次精化: 在可行性研究阶段,软件作为系统的一个完整部件;在可行性研究阶段,软件作为系统的一个完整部件; 在需求分析期间,软件解法是使用在问题环境内熟悉在需求分析期间,软件解法是使用在问题环境内熟悉 的方式描述的;的方式描述的; 当由总体设计向详细设计过渡时,抽象的程度也就随当由总体设计向详细设计过渡时,抽象的程度也就随 之减少了;之减少了; 最后,当源程序写出来以后,也就达到了抽象的最低层。最后,当源程序写出来以后,也就达到了抽象的最低层。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(2 2)逐步求精:)逐步求精: 从一个高层抽象的功能定义开始,逐步进行功能和信息从一个高层抽象的功能定义开始,逐步进行功能和信息 的细化,逐步实现越来越多的细节,直至用某种程序设的细化,逐步实现越来越多的细节,直至用某种程序设 计语言实现此功能。计语言实现此功能。 可以把逐步求精定义为:可以把逐步求精定义为: 为了能集中精力解决主要问题而尽量推迟对问题细节为了能集中精力解决主要问题而尽量推迟对问题细节 的考虑的考虑软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 人类的认知过程遵守人类的认知过程遵守MillerMiller法则法则: 一个人在任何时候都只能把一个人在任何时候都只能把注意力集中在注意力集中在(7(72)2)个个 知识块知识块上。上。逐步求精技术的作用:逐步求精技术的作用: 把精力集中在与当前开发阶段最相关的那些方面上,把精力集中在与当前开发阶段最相关的那些方面上, 而忽略那些对整体解决方案来说是必要的、然而目而忽略那些对整体解决方案来说是必要的、然而目 前还不需要考虑的细节,这些细节留到以后再考虑。前还不需要考虑的细节,这些细节留到以后再考虑。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3 3)抽象与逐步求精是互补的概念:)抽象与逐步求精是互补的概念: 抽象使得设计者能够集中精力于当前主要的过程和数抽象使得设计者能够集中精力于当前主要的过程和数 据,同时却忽略低层细节。据,同时却忽略低层细节。 求精则帮助设计者在设计过程中逐步揭示出低层细节。求精则帮助设计者在设计过程中逐步揭示出低层细节。 可以把抽象看作是一种通过忽略多余的细节同时强调可以把抽象看作是一种通过忽略多余的细节同时强调 有关的细节,而实现逐步求精的方法。有关的细节,而实现逐步求精的方法。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹l信息隐藏:信息隐藏: 一个模块内包含的信息对于不需要这些信息的模块来说,一个模块内包含的信息对于不需要这些信息的模块来说, 是不能访问的。是不能访问的。 “隐藏隐藏”意味着有效的模块化可以通过定义一组独立的模块来实现,意味着有效的模块化可以通过定义一组独立的模块来实现, 这些模块彼此之间只交换那些为了完成软件功能而必须交换的信息。这些模块彼此之间只交换那些为了完成软件功能而必须交换的信息。l“隐藏隐藏”定义并施加了对模块内部过程细节和模块使用的局部数据结构定义并施加了对模块内部过程细节和模块使用的局部数据结构 的访问限制。的访问限制。 l信息隐藏原理给出了应用模块化分解软件的原则。信息隐藏原理给出了应用模块化分解软件的原则。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 模块独立性含义:模块独立性含义:软件软件结构结构中的每个模块完成一个相对独中的每个模块完成一个相对独 立的特定子功能,而和其它模块的接口是简单的。立的特定子功能,而和其它模块的接口是简单的。 模块独立性的度量标准:模块独立性的度量标准: 模块之间的模块之间的耦合耦合尽可能弱;每个模块的尽可能弱;每个模块的内聚内聚尽可能强。尽可能强。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.3.1 4.3.1 耦合耦合4.3.2 4.3.2 内聚内聚软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1.1.耦合表示一个软件结构内不同模块之间的互连程度。耦合表示一个软件结构内不同模块之间的互连程度。2.2.耦合的强弱取决于模块间接口的复杂程度耦合的强弱取决于模块间接口的复杂程度( (调用方式、调用方式、 接口信息性质、通过接口的数据量接口信息性质、通过接口的数据量) )软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹3. 3. 模块之间的耦合强度由弱到强依次如下:模块之间的耦合强度由弱到强依次如下: (1 1)数据耦合:)数据耦合:模块间通过参数交换模块间通过参数交换数据数据。(2 2)控制耦合:)控制耦合:模块间通过参数交换模块间通过参数交换控制信息控制信息。 可通过模块分解消除控制耦合,用数据耦合取可通过模块分解消除控制耦合,用数据耦合取 代之。代之。 控制耦合实质是在单一接口上选择多功能模块控制耦合实质是在单一接口上选择多功能模块 中的某项功能。因此,对被控制模块的任何修中的某项功能。因此,对被控制模块的任何修 改,都会影响控制模块。改,都会影响控制模块。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3 3)特征耦合:)特征耦合: 主调模块将整个数据结构作为参数传递,而被调模块主调模块将整个数据结构作为参数传递,而被调模块 只需要其中的一部分数据元素。只需要其中的一部分数据元素。 在特征耦合中,被调用的模块处理了的数据多于它在特征耦合中,被调用的模块处理了的数据多于它 确实需要的数据,这将导致对数据的访问失去控制。确实需要的数据,这将导致对数据的访问失去控制。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(4 4)公共环境耦合:)公共环境耦合: 一组模块通过一个公共数据环境相互作用。一组模块通过一个公共数据环境相互作用。 公共环境可以是全程变量、共享的通信区、内存的公公共环境可以是全程变量、共享的通信区、内存的公 共覆盖区、任何存储介质上的文件和物理设备等共覆盖区、任何存储介质上的文件和物理设备等 分为松散的公共环境耦合和紧密的公共环境耦合两种分为松散的公共环境耦合和紧密的公共环境耦合两种软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(5 5)内容耦合:)内容耦合: 一个模块访问另一个模块的内部数据一个模块访问另一个模块的内部数据 一个模块不通过正常入口转到另一模块的内部。一个模块不通过正常入口转到另一模块的内部。 两个模块有一部分程序代码重叠。两个模块有一部分程序代码重叠。 一个模块有多个入口。一个模块有多个入口。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 耦合的强弱:耦合的强弱: 弱弱 强强 数据耦合数据耦合控制耦合控制耦合特征耦合特征耦合公共环境耦合公共环境耦合内容耦合内容耦合 耦合是影响软件复杂程度的一个重要因素。应该采取下述耦合是影响软件复杂程度的一个重要因素。应该采取下述 设计原则:设计原则: 尽量使用数据耦合,少用控制耦合和特征耦合,限制公共尽量使用数据耦合,少用控制耦合和特征耦合,限制公共 环境耦合的范围,完全不用内容耦合。环境耦合的范围,完全不用内容耦合。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1.1.内聚标志着内聚标志着一个模块内各个元素彼此结合的紧密程度一个模块内各个元素彼此结合的紧密程度。 它是信息隐蔽和局部化概念的自然扩展。它是信息隐蔽和局部化概念的自然扩展。 理想内聚的模块只做一件事情。理想内聚的模块只做一件事情。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹2.2.模块内各元素之间的模块内各元素之间的内聚强度由弱到强依次如下:内聚强度由弱到强依次如下: (1 1)偶然内聚:)偶然内聚:模块内各元素之间关系松散模块内各元素之间关系松散 模块模块没有明确功能没有明确功能或模块或模块包括彼此无关的一组功能包括彼此无关的一组功能软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(2 2)逻辑内聚:)逻辑内聚:一个模块内的各功能在逻辑上相同或相似一个模块内的各功能在逻辑上相同或相似 这种模块这种模块把几种相关的功能组合在一起,每次调用时,由传送给模把几种相关的功能组合在一起,每次调用时,由传送给模 块的判定参数来确定该模块应执行哪一种功能块的判定参数来确定该模块应执行哪一种功能。当调用逻辑内聚模。当调用逻辑内聚模 块时需要进行控制参数的传递,增加了模块间的耦合程度。而将未块时需要进行控制参数的传递,增加了模块间的耦合程度。而将未 用的部分也调入内存,降低了系统的效率。用的部分也调入内存,降低了系统的效率。 例例如:如:一个模块可生一个模块可生 成、打印多种报表;成、打印多种报表; 多种功能一个界面,多种功能一个界面, 靠传递控制参数分别靠传递控制参数分别 调用不同功能。调用不同功能。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3 3)时间内聚:)时间内聚:一个模块内各功能须在同一时段内完成一个模块内各功能须在同一时段内完成 模块内各个功能的执行与时间有关,通常要求所有模块内各个功能的执行与时间有关,通常要求所有 功能必须在同一时间段内执行。一般情形下,时间功能必须在同一时间段内执行。一般情形下,时间 内聚模块的各功能可以以任意的顺序执行,所以它内聚模块的各功能可以以任意的顺序执行,所以它 的内部逻辑简单、存在的开关的内部逻辑简单、存在的开关( (或判定或判定) )转移较少转移较少 例如:例如:初始化模块完成各种初始化工作初始化模块完成各种初始化工作。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(4 4)过程内聚:)过程内聚: 模块内各个部分彼此相关,必须按特定的次序执行。模块内各个部分彼此相关,必须按特定的次序执行。 通常过程内聚模块仅包括完整功能的一部分,所以通常过程内聚模块仅包括完整功能的一部分,所以 它的内聚程度仍然较低。它的内聚程度仍然较低。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(5 5)通信内聚:)通信内聚:模块内各功能使用同一个输入或产生同模块内各功能使用同一个输入或产生同 一个输出一个输出 通信内聚模块中包括了若干独立的功能。通信内聚模块中包括了若干独立的功能。 通信内聚模块的缺点是它容易产生重复的联结或重复的功能。因通信内聚模块的缺点是它容易产生重复的联结或重复的功能。因 为各成分执行的次序可以是任意的,有的模块调用它时,可能只为各成分执行的次序可以是任意的,有的模块调用它时,可能只 需执行其中的部分动作,另一部分则为多余联结。而且维护起来需执行其中的部分动作,另一部分则为多余联结。而且维护起来 也不方便。也不方便。 例如:例如:一个模块完成对同一文件的输入、修改、删除操作一个模块完成对同一文件的输入、修改、删除操作软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(6 6)顺序内聚:)顺序内聚: 模块内模块内各处理元素与同一个功能密切相关,且必须各处理元素与同一个功能密切相关,且必须 顺序执行,顺序执行,即前一个处理动作产生的输出数据是下即前一个处理动作产生的输出数据是下 一个处理动作的输入数据。一个处理动作的输入数据。(7 7)功能内聚:)功能内聚: 模块内各部分属于一个整体、为完成一项单一功能而协模块内各部分属于一个整体、为完成一项单一功能而协 同工作、不可分割。同工作、不可分割。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 内聚的强弱:内聚的强弱: 弱弱 强强 偶然内聚偶然内聚逻辑内聚逻辑内聚时间内聚时间内聚过程内聚过程内聚通信内聚通信内聚顺序内聚顺序内聚功能内聚功能内聚 模块的内聚在系统的模块化设计中是一个关键的因素。模块的内聚在系统的模块化设计中是一个关键的因素。 软件设计中,软件设计中,应力求做到高内聚应力求做到高内聚,提高模块独立性。,提高模块独立性。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1 1)层次图()层次图( Hierarchy图):图): 表示了模块和模块间的调用关系表示了模块和模块间的调用关系 (图(图4.4,4.4,图图4.54.5)软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(2 2)HIPOHIPO图图(HierarchyplusInput,Process,Output):): 用层次图表示模块和模块间调用关系;用层次图表示模块和模块间调用关系; 用用IPOIPO图表示各个模块的处理过程。图表示各个模块的处理过程。 IPOIPO:输入、处理、输出输入、处理、输出 (图(图4.6, 4.6, 图图4.74.7)软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3 3)结构图:)结构图: 结构图作用:结构图作用: 表示模块及模块间的调用关系;表示模块及模块间的调用关系; 表示模块间的信息传递表示模块间的信息传递 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹M循环调用循环调用A、B、C:判定为真时调用判定为真时调用A A、为、为 假时调用假时调用B B软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1)(1)改进软件结构提高模块独立性:改进软件结构提高模块独立性: 通过通过分解或合并模块分解或合并模块,降低耦合、提高内聚。,降低耦合、提高内聚。 (2)(2)每个模块的规模适中:每个模块的规模适中: 过大的模块往往是由于分解不充分、会降低独立性。过大的模块往往是由于分解不充分、会降低独立性。 过小的模块开销大于有效操作,而且模块数目过多将过小的模块开销大于有效操作,而且模块数目过多将 使系统接口复杂。使系统接口复杂。 (3)(3)深度、宽度、扇出和扇入要适当深度、宽度、扇出和扇入要适当 (图示图示)设计得很好的软件结构通常设计得很好的软件结构通常顶层模块扇出大、中层模块扇出顶层模块扇出大、中层模块扇出 较小,底层模块扇入大较小,底层模块扇入大( (底层一般是公共的实用模块底层一般是公共的实用模块) )软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(4)(4)模块的作用域应在控制域之内模块的作用域应在控制域之内 模块的作用域:模块的作用域: 受该模块内一个判定影响受该模块内一个判定影响 的所有模块集合的所有模块集合 模块的控制域:模块的控制域:模块本身及其所有从属模块。模块本身及其所有从属模块。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(5)(5)力争降低模块接口的复杂程度力争降低模块接口的复杂程度(6)(6)设计单入口单出口的模块设计单入口单出口的模块 (7)(7)模块功能应该可以预测模块功能应该可以预测 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 程序的模块结构表明了程序各个部件程序的模块结构表明了程序各个部件( (模块模块) )的组织情况,的组织情况, 是软件的过程表示。是软件的过程表示。 可能出现的软件结构:可能出现的软件结构:软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1.1.模块的扇出:模块的扇出:模块直接调用的子模块数目模块直接调用的子模块数目 扇出过大意味着模块过分复杂,需要扇出过大意味着模块过分复杂,需要 控制和协调过多的下级模块控制和协调过多的下级模块, ,应该适当应该适当 增加中间层次的控制模块。增加中间层次的控制模块。 CLQNPRTS2.2.模块的扇入:模块的扇入: 直接调用该模块的上层模块数目直接调用该模块的上层模块数目 扇入越大则共享该模块的上级模块数目扇入越大则共享该模块的上级模块数目 越多,这是有好处的。越多,这是有好处的。 3.3.结构图结构图的深度:的深度:模块结构图的层次数模块结构图的层次数4.4.结构图的宽度:结构图的宽度:模块结构图中同一层模块数目的最大值模块结构图中同一层模块数目的最大值软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 深度、宽度、扇出和扇入深度、宽度、扇出和扇入软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.6.1 4.6.1 设计步骤设计步骤 4.6.2 4.6.2 变换分析设计方法(步骤)变换分析设计方法(步骤) 4.6.3 4.6.3 事务分析设计方法(步骤)事务分析设计方法(步骤) 4.6.4 4.6.4 软件优化原则软件优化原则 将数据流图映射成软件结构将数据流图映射成软件结构软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(1)(1)根据数据流图决定根据数据流图决定问题类型问题类型(2)(2)根据问题类型,进行根据问题类型,进行变换分析变换分析或或事务分析事务分析, 导出系统结构图。导出系统结构图。(3)(3)改进系统结构图。改进系统结构图。 面向数据流的设计方法面向数据流的设计方法-设计步骤设计步骤软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 面面向向数数据据流流的的设设计计步步骤骤软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 变换型问题数据流图变换型问题数据流图的构成:的构成: 信息沿输入通路进入系统、同时由外部形式信息沿输入通路进入系统、同时由外部形式( (物理输入物理输入) ) 变换成内部形式变换成内部形式( (逻辑输入逻辑输入) );进入系统的信息通过变换;进入系统的信息通过变换 中心,经加工处理以后的结果中心,经加工处理以后的结果( (逻辑输出逻辑输出) )再沿输出通路再沿输出通路 变换成外部形式变换成外部形式( (物理输出物理输出) )离开软件系统。离开软件系统。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 事务型问题数据流图事务型问题数据流图的构成:的构成: 事务中心事务中心“T T”的任务:的任务: 接受事务(请求);接受事务(请求); 分析事务类型、确定其对应哪一条处理路径。分析事务类型、确定其对应哪一条处理路径。 数据流数据流“事务事务”沿输入沿输入 通路到达处理通路到达处理“T T”, 这个处理根据事务的类这个处理根据事务的类 型在若干个活动通路中型在若干个活动通路中 选出一个来执行。选出一个来执行。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计步骤变换分析设计步骤 (1) (1)分析具有变换特征的数据流图,确定输入流和分析具有变换特征的数据流图,确定输入流和 输出流的输出流的边界边界、孤立出、孤立出变换中心变换中心 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计步骤变换分析设计步骤 (2) (2) 完成完成一级分解一级分解,设计软件结构的顶层和第二层,设计软件结构的顶层和第二层 顶层模块顶层模块Cm Cm :代表系统代表系统 第二层模块:第二层模块: 输入信息处理模块输入信息处理模块Ca Ca :协调对所有输入数据的接收协调对所有输入数据的接收 变换中心控制模块变换中心控制模块Ct Ct :管理对内部形式的数据的所有管理对内部形式的数据的所有 操作操作 输出信息处理控制模块输出信息处理控制模块Ce Ce :协调输出信息的产生过程协调输出信息的产生过程 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计:变换分析设计: 确定输入确定输入流和输出流和输出流的流的边界边界,孤立出孤立出变变换中心换中心完成完成“一一级分解级分解”, ,设计软件设计软件结构的结构的顶顶层层和和第二第二层层软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计步骤变换分析设计步骤(3 3)完成)完成二级分解二级分解:把数据流图中的每个处理映射成软件:把数据流图中的每个处理映射成软件 结构中一个适当的模块结构中一个适当的模块在数据流图上,沿变换中心的输入边界开始向外移动,在数据流图上,沿变换中心的输入边界开始向外移动,将将 输入通路中的每个处理映射成输入通路中的每个处理映射成CaCa模块下的一个直接或间接模块下的一个直接或间接 低层模块。低层模块。 映射过程中,注意保持数据流的一致。映射过程中,注意保持数据流的一致。在数据流图上,沿变换中心的输出边界开始向外移动,在数据流图上,沿变换中心的输出边界开始向外移动,将将 输出通路中的每个处理映射成输出通路中的每个处理映射成CeCe模块下的一个直接或间接模块下的一个直接或间接 低层模块。低层模块。将变换中心内的每个处理映射成将变换中心内的每个处理映射成CtCt模块下的一个直接或间模块下的一个直接或间 接模块。接模块。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计:变换分析设计: 二级分解(局部):二级分解(局部):将输入通路中的每个处理映射成将输入通路中的每个处理映射成CaCa模块下的一模块下的一 个直接或间接低层模块个直接或间接低层模块软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹变换分析设计步骤变换分析设计步骤 (4) (4)精化软件结构:精化软件结构:分解或合并分解或合并(5)(5)简要描述每个模块(可以用简要描述每个模块(可以用IPOIPO图描述):图描述): 接口说明接口说明 内部逻辑描述内部逻辑描述 全局和局部数据结构的说明全局和局部数据结构的说明 设计约束和限制设计约束和限制软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹已编辑已编辑数据数据初始初始数据数据格式格式化化1编辑编辑检验检验计算计算计算值计算值1预格预格式化式化有效有效数据数据格式格式化化2格式格式化化3计算值计算值2例:变换分析例:变换分析数据流图数据流图软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹计计算算值值12中心变换中心变换输出处理输出处理取得有效数据取得有效数据数数据据有有效效有有效效数据数据计计算算值值12主模块主模块一级分解:一级分解:软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹计计算算值值12计计算算值值12中心变换中心变换输出处理输出处理取得有效数据取得有效数据数数据据有有效效有有效效数数据据计计算算值值12主模块主模块编辑编辑检验检验计算计算格式化格式化1格式化格式化2格式化格式化3计计算算值值1计计算算值值2预预格格式式化化已编辑数据已编辑数据有效数据有效数据有有效效数数据据二级分解:二级分解:软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹计计算算值值12数数据据有有效效有有效效数数据据计计算算值值 1计计算算值值2主模块主模块编辑编辑检验检验计算计算格式化格式化1格式化格式化2格式化格式化3预格式化预格式化已编辑数据已编辑数据精化后的软件结构精化后的软件结构软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹l事务分析事务分析 由事务流数据流图映射成的软件结构包括由事务流数据流图映射成的软件结构包括一个接收分支一个接收分支和和 一个发送分支一个发送分支。 映射出映射出接收分支结构接收分支结构的方法和变换分析映射出输入结构的的方法和变换分析映射出输入结构的 方法很相像,即从事务中心的边界开始,把沿着接收流通方法很相像,即从事务中心的边界开始,把沿着接收流通 路的处理映射成模块。路的处理映射成模块。 发送分支的结构包含一个调度模块,它控制下层的所有活发送分支的结构包含一个调度模块,它控制下层的所有活 动模块动模块;然后把数据流图中的每个活动流通路映射成与它;然后把数据流图中的每个活动流通路映射成与它 的流特征相对应的结构。的流特征相对应的结构。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹事务分析映射方法事务分析映射方法软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹例:事务分析例:事务分析TNLMAFDCEBGIA数据流图数据流图软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹一级分解一级分解主模块主模块T T( (调度调度) )I I( (输入输入) )AA软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹二级分解二级分解主模块主模块T(调度)(调度)AI(I(输入输入) )ALMNBCD软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹对于一个大型软件系统,常常把对于一个大型软件系统,常常把变换分析和事务分析应用变换分析和事务分析应用 到同一个数据流图的不同部分,由此得到的子结构形成到同一个数据流图的不同部分,由此得到的子结构形成 “构件构件”,可以利用它们构造完整的软件结构。,可以利用它们构造完整的软件结构。一般说来,如果数据流不具有显著的事务特点,最好使用一般说来,如果数据流不具有显著的事务特点,最好使用 变换分析;反之,如果具有明显的事务中心,则应该采用变换分析;反之,如果具有明显的事务中心,则应该采用 事务分析技术。事务分析技术。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 优化方法:优化方法: (1)(1)在不考虑时间因素的前提下开发并精化软件结构;在不考虑时间因素的前提下开发并精化软件结构; (2)(2)在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们 的处理过程的处理过程( (算法算法) ),以求提高效率;,以求提高效率; (3)(3)使用高级程序设计语言编写程序;使用高级程序设计语言编写程序; (4)(4)在软件中孤立出那些大量占用处理机资源的模块;在软件中孤立出那些大量占用处理机资源的模块; (5)(5)必要时重新设计或用依赖于机器的语言重写上述大量占用资源必要时重新设计或用依赖于机器的语言重写上述大量占用资源 的模块的代码,以求提高效率。的模块的代码,以求提高效率。 上述优化方法遵守了一句格言:上述优化方法遵守了一句格言: “先使它能工作,然后再使它快起来先使它能工作,然后再使它快起来。”软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1.1.详细设计的任务:详细设计的任务: (1 1)确定软件各个组成部分的)确定软件各个组成部分的内部算法内部算法以及以及 各部分的各部分的内部数据结构内部数据结构; ; (2 2)选定某种过程表达形式来)选定某种过程表达形式来描述各种算法描述各种算法。 (3 3)进行详细设计的)进行详细设计的评审评审软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹2.2.详细设计的目标详细设计的目标: : 确定应该怎样具体地实现所要求的系统。得出对目标系确定应该怎样具体地实现所要求的系统。得出对目标系 统的精确描述,从而在编码阶段可以把这个描述直接翻译成统的精确描述,从而在编码阶段可以把这个描述直接翻译成 用某种程序设计语言书写的程序。用某种程序设计语言书写的程序。 详细设计阶段的任务还不是具体地编写程序,而是要设计详细设计阶段的任务还不是具体地编写程序,而是要设计 出出程序的程序的“蓝图蓝图”,以后程序员将根据这个蓝图写出实际,以后程序员将根据这个蓝图写出实际 的程序代码。因此,详细设计的结果基本上决定了最终的的程序代码。因此,详细设计的结果基本上决定了最终的 程序代码的质量。程序代码的质量。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹3.3.结构化程序的经典定义:结构化程序的经典定义: 一个程序的代码块仅仅通过一个程序的代码块仅仅通过顺序、选择顺序、选择和和循环循环 三种控制结构进行连接;三种控制结构进行连接; 并且每个代码块只有并且每个代码块只有一个入口一个入口和和一个出口一个出口软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.4.过程设计描述工具:过程设计描述工具: (1)(1)图形工具图形工具: :程序流程图程序流程图、N NS S图图、PADPAD图图(2)(2)表格工具表格工具: :判定表判定表 、判定树判定树 (3)(3)语言工具语言工具过程设计语言(过程设计语言(PDLPDL) 课堂练习课堂练习软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹国内乘客国内乘客头等舱头等舱残疾乘客残疾乘客行李重量行李重量301 2 3 4 5 6 7 8 9 T T T T F F F F T F T F T F T F F F T T F F T TT F F F F F F F F 免费免费(W30)2(W30)3(W30)4(W30)6(W30)8(W30)12 用判定表表示计算行李费的算法用判定表表示计算行李费的算法软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂 的条件组合与应做的动作之间的对应关系。的条件组合与应做的动作之间的对应关系。 一张判定表由四部分组成:一张判定表由四部分组成: 左上部列出左上部列出所有条件所有条件,左下部是,左下部是所有可能做的动作所有可能做的动作,右上部是表示,右上部是表示 各种条件组合各种条件组合的一个矩阵,右下部是和的一个矩阵,右下部是和每种条件组合相对应的动作每种条件组合相对应的动作。 判定表右半部的每一列实质上是一条规则,右下部规定了与特定的判定表右半部的每一列实质上是一条规则,右下部规定了与特定的 规则相对应的动作。规则相对应的动作。 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹行李重量行李重量行李重量行李重量行李费行李费算法算法国内乘客国内乘客外国乘客外国乘客免费免费头等舱头等舱头等舱头等舱其它舱其它舱其它舱其它舱残疾乘客残疾乘客残疾乘客残疾乘客残疾乘客残疾乘客残疾乘客残疾乘客正常乘客正常乘客正常乘客正常乘客正常乘客正常乘客正常乘客正常乘客(W-30)x 2(W-30)x 3(W-30)x 4(W-30)x 6(W-30)x 4(W-30)x 6(W-30)x 8(W-30)x 12图图4.30用判定树表示计算行李费的算法用判定树表示计算行李费的算法软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 PDLPDL介于自然语言和程序设计语言之间介于自然语言和程序设计语言之间 PDLPDL的语法:的语法: (1) (1) 数据说明:数据说明: TypeType is is 限定说明限定说明 (2) (2) 程序块:程序块: BeginBegin 一组伪码语句一组伪码语句 End End 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(3) (3) 子程序:子程序: 子程序结构:子程序结构:ProcedureProcedure InterfaceInterface 程序块或一组伪码语句程序块或一组伪码语句EndEnd 子程序的调用:子程序的调用: PerformPerform UsingUsing 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(4) (4) 选择控制结构:选择控制结构: 选择:选择: if if then then elseelse endifendif 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 多路选择:多路选择: case of case of whenwhen 1 selectselect ; whenwhen 2 selectselect ; whenwhen n selectselect ; defaultdefault : : endcase endcase 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(5) (5) 循环控制结构:循环控制结构: repeat until repeat until endrependrep do whiledo while enddoenddo dodoforfor 循环变量取值范围循环变量取值范围 endfor endfor 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹(6) (6) 输入和输出:输入和输出: readread/ /write fromwrite from/ /to to 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 课堂练习:课堂练习:用用N-S图和程序流程图描述下列图和程序流程图描述下列PDLSTARTDOWHILEL1IFA0THENA2ELSEA1ENDIFS1IFB0THENB2DOWHILEL2B3ENDDOCELSEB1ENDIFS2ENDDODSTOP软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹4.9.1 4.9.1 面向数据结构的设计方法概述面向数据结构的设计方法概述4.9.2 Jackson 4.9.2 Jackson 图图 软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 面向数据结构的设计思想:面向数据结构的设计思想: 根据软件所处理的信息的特征(数据结构)来设计软件根据软件所处理的信息的特征(数据结构)来设计软件 面向数据结构的设计方法适用于详细设计阶段,面向数据结构的设计方法适用于详细设计阶段, 描述程序处理过程描述程序处理过程 著名的面向数据结构设计方法:著名的面向数据结构设计方法: Jackson Jackson 方法和方法和 Warnier Warnier 方法方法软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 1 1JacksonJackson图:图: (1 1)顺序结构:)顺序结构:数据由一个或多个数据元素组成,每个元素数据由一个或多个数据元素组成,每个元素 按确定次序出现一次按确定次序出现一次 图图4.314.31软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 (2 2)选择结构:)选择结构:数据包含两个或多个数据元素,每次使用这个数据数据包含两个或多个数据元素,每次使用这个数据 时,按一定条件从这些数据元素中选择一个时,按一定条件从这些数据元素中选择一个 图图4.324.32软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 (3 3)重复结构:)重复结构:根据使用条件,数据由一个数据元素出现零次或根据使用条件,数据由一个数据元素出现零次或 多次构成多次构成 图图4.334.33 改进的改进的JacksonJackson图图 图图4.344.34软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 2. Jackson2. Jackson图应用举例:图应用举例: 某仓库存放多种零件(如某仓库存放多种零件(如P1P1, P2P2, );每个零件的每次进货、);每个零件的每次进货、 发货都有一张卡片作出记录;每月根据这样一叠卡片打印一张月报发货都有一张卡片作出记录;每月根据这样一叠卡片打印一张月报 表。报表每行列出某种零件本月库存量的净变化。表。报表每行列出某种零件本月库存量的净变化。(a) (a) 输入数据结构;输入数据结构; (b) (b) 输出数据结构;输出数据结构; (c) (c) 输出月报表输出月报表c月报表月报表零件名零件名增加数量增加数量P1P2P31500100200( ( ) )月报表月报表表头表头表体表体行行 * *零件名零件名净变化净变化( (b) )a输入文件输入文件零件组零件组 * *卡片卡片 * *进货进货 发货发货 ( ( ) )软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 人机界面的设计质量,直接影响用户对软件产品的评价,人机界面的设计质量,直接影响用户对软件产品的评价, 从而影响软件产品的竞争力和寿命,因此,必须对人机从而影响软件产品的竞争力和寿命,因此,必须对人机 界面设计给以足够重视。界面设计给以足够重视。 人机界面设计中需要考虑的主要问题如下:人机界面设计中需要考虑的主要问题如下:(1 1)命令交互;)命令交互; (2 2)系统响应时间;)系统响应时间;(3 3)用户帮助设施;()用户帮助设施;(4 4)出错信息处理。)出错信息处理。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹1 1交互界面设计考虑的问题:交互界面设计考虑的问题: 保持保持一致性一致性。 提供有意义的提供有意义的反馈反馈。保证在用户和界面之间建立双向通信。保证在用户和界面之间建立双向通信。 在执行有较大破坏性的动作之前要求用户在执行有较大破坏性的动作之前要求用户确认确认。 允许取消绝大多数操作。提供允许取消绝大多数操作。提供UNDOUNDO操作。操作。 减少在两次操作之间必须减少在两次操作之间必须记忆记忆的信息量。的信息量。 尽量减少尽量减少击键次数击键次数,减少,减少鼠标移动鼠标移动的距离。的距离。 健壮性健壮性。系统应该保证不受致命错误的破坏。系统应该保证不受致命错误的破坏。 提供提供帮助帮助设施。设施。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹2 2查询界面设计考虑的问题:查询界面设计考虑的问题: 只显示与当前工作只显示与当前工作内容内容有关的信息。有关的信息。 显示的显示的含义含义应该非常明确。应该非常明确。 允许用户保持允许用户保持可视化的语境可视化的语境。 ( (如:对图形显示进行缩放,如:对图形显示进行缩放, 原始的图像应该一致原始的图像应该一致( (以缩小的形式显示在显示屏的一角以缩小的形式显示在显示屏的一角) ) 。 产生有意义的产生有意义的出错信息出错信息。 使用使用窗口分隔窗口分隔不同类型的信息。不同类型的信息。 高效率地使用显示屏。高效率地使用显示屏。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹3 3数据输入界面设计考虑的问题:数据输入界面设计考虑的问题: 尽量减少用户的输入动作。特别是减少击键次数。尽量减少用户的输入动作。特别是减少击键次数。 保持信息显示和数据输入之间的一致性。保持信息显示和数据输入之间的一致性。 使在当前动作语境中不适用的命令不起作用。使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。在不退出程序的情况下从错误状态中恢复正常。让用户控制交互流。在不退出程序的情况下从错误状态中恢复正常。 对所有输入动作都提供帮助。对所有输入动作都提供帮助。 消除冗余的输入。消除冗余的输入。 尽可能提供缺省值。尽可能提供缺省值。 程序能自动获得或计算出来的信息不要求用户输入。程序能自动获得或计算出来的信息不要求用户输入。软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹程序的程序的3 3种基本控制结构:种基本控制结构:(a) (a) 顺序顺序 (b) (b) 选择选择 (c) (c) 循环循环软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹其他常用的程序控制结构:其他常用的程序控制结构:(a) DO-UNTIL(a) DO-UNTIL结构结构 (b) DO-CASE(b) DO-CASE结构结构软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹盒图的基本符号盒图的基本符号(a)(a)顺序顺序 (b)IF(b)IF型分支型分支 (c)CASE(c)CASE型多分支型多分支 (d)(d)循环循环 (e)(e)调用子程序调用子程序A A软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹例:用公式:例:用公式: 求求。用用N-S图图描描述述的的程程序序算算法法用用程程序序流流程程图图描描述述的的程程序序算算法法软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹PADPAD图(问题分析图)用二维树形结构的图来表示图(问题分析图)用二维树形结构的图来表示 程序的控制流,将这种图翻译成程序代码比较容易。程序的控制流,将这种图翻译成程序代码比较容易。(a)顺序顺序(先执行先执行P1,后执行,后执行P2);(b)选择选择(IFCP1ELSEP2);(c)CASE型分支;型分支;(d)WHILE型循环型循环(WHILECDOP);(e)UNTIL型循环型循环(REPEATPUNTILC);(f)语句标号;语句标号;(g)定义定义软件工程概论教程软件工程概论教程软件工程概论教程软件工程概论教程 江苏工业学院信息科学与工程学院江苏工业学院信息科学与工程学院 卢卢 莹莹 PADPAD图的符号支持自顶向下、逐步求精方法的使用。开始时图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使设计者可以定义一个抽象的程序,随着设计工作的深入而使用用defdef符号逐步增加细节,直至完成详细设计。符号逐步增加细节,直至完成详细设计。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号