软件工程--面向过程的软件设计方法

一、设计基础

    1.自顶向下,逐步细化:

     将软件的体系结构按自定向下的方式,对各个层次的过程细节和数据细节逐层细化。

     把一个大问题分解成若干个子过程,分解的时候从最底层开始,以此类推,直到不能分解或一个模块智能完成一个单一的功能为止。

     2.软件结构:

     软件结构包括两部分:一个是程序的模块结构,另一个是数据的结构

     把一个问题分解成子问题,然后把子问题解决了就能把总的问题解决啦,这样做,能大幅度提高效率,降低复杂性。

那么如何分解?分解成几个?这要根据开发经验和具体问题而言。

    3.程序结构:

     程序结构有两个树状结构和网状结构。

     树状结构层次清晰,概要设计要把树状结构设计出来。

     网状结构没有隶属关系,各个模块的接口相对较复杂。

    4.结构图:

     结构图反映了程序中模块之间的层次调用关系,结构也也叫S-C图。能清晰表达模块之间所划分的层次

     下面对一些基本概念做一些讲解,模块的命名应该以主要功能作为模块名。模块之间存在调用关系和信息传递,被调用模块一定要想调用模块返回查找成功的信息。有条件的调用关系(顺序调用、循环调用)如何表示。 

   5.程序的系统结构图:

    介绍两个概念 深度:表明问题的复杂性和规模大小。

                           宽度:是指任一层中模块数中宽度最多的是系统结构图的宽度。

    要综合考虑深度、宽度、扇入、扇出之间的关系,使程序的系统结构合理化,好的图应该是类似于坛子状,中间宽、两端窄

   6.模块化:

     能够把一个大而复杂的软件系统按照问题的功能域划分成易于理解的比较单纯的模块结构。划分模块的时候要注意抽象,软件系统进行模块设计时,可有不同的抽象层次。抽象层次并不是一步到位,而是逐步抽象的。

    抽象包括功能抽象数据抽象

   7.信息隐蔽:

    信息隐蔽是指在划分模块的时候,定义层次的时候,如果模块中数据发生变化时,尽量不影响其他模块的使用。模块的独立性是划分模块的重要原则。

    模块一般具有三个基本属性:功能、逻辑、状态。模块独立性衡量标准 高内聚,低耦合

原则:

      尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容耦合。尽量做到高内聚,低耦合。

二、系统结构化设计

     首先1.研究、分析和审查数据流图

     然后2.根据数据流图(上一阶段需求分析阶段产生)决定问题的类型

     数据处理问题的类型有两种:变换型事务性

     针对两种不同的类型分别进行分析处理,在系统结构图中的模块及模块之间的关系如图所示。

    1.变换型系统结构图:

     大多数情况下采用变换型结构图,变换型数据处理问题的工作过程大概分为三步。即

     1.取得数据

     2.变换数据

     3.给出数据

     变换分析方法由以下四步组成:重画数据流图、区分有效输入、有效输出和中心变换部分、进行一级分解,设计上层模块、进行二级分解,设计输入、输入和中心变换部分的中、下层模块。

     2.事务性系统结构图

      它接受一项事务,根据处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。

      事务分析与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到数据结构图。模块的作用范围应在控制范围之内,及可能减少高扇出结构,随着深度增大扇入。

三、数据设计

原则:

     1、用于软件的系统化方法也适用于数据

     2、确定所有的数据结构和在每种数据结构上施加的操作。

     3、应当建立一个数据词典并用它来定义数据和软件的设计

     4、低层数据设计的决策应推迟到设计过程的后期进行。

     5、数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道

     6、应当建立一个存放有效数据结构及相关操作的库。

     7、软件设计和程序设计语言应当支持抽象数据类型的定义和实现。

以上原则适用于软件工程的定义阶段和开发阶段。

四、文件和过程设计   

    1.对于数据设计

原则:

     1、用于软件的系统化方法也适用于数据;

     2、确定所有的数据结构和在每种数据结构上施加的操作;

     3、应当建立一个数据词典并用它来定义数据和软件的设计;

     4、底层数据设计的决策应推迟到设计过程的后期进行;

     5、数据结构的表示只限于哪些必须直接使用该数据结构内数据的模块才能知道;

     6、应当建立一个存放有效数据结构及相关操作的库;

     7、软件设计和程序设计语言应当支持抽象数据类型的定义和实现。

    2.文件设计

主要分为两个过程:

     1,逻辑设计(1,整理必须的数据元素;2,分析数据间的关系;3,确定文件的逻辑设计。)

     2,物理设计(1,理解文件的特性;2,确定文件的组织方式,例如顺序文件,直接存取文件;

     3,确定文件的存储介质;

     4,确定文件的记录格式;

     5,估算存取时间和存储容量等问题。)

    3.过程设计:

     要决定各个模块的实现算法,并精确的表达这些算法。详细设计工具分为三类:图形工具、表格工具、语言工具。

程序流程图:

     程序流程图也称为程序框图,程序框图使用五种基本控制结构。即顺序型、选择型、先判定循环、后判定循环、多情况选择型。

    程序流程图也称为程序框图,程序流程图使用三种基本结构。  

N-S图:

     也叫盒图。程序流程图过草地考虑到了控制流,使得程序的结构并不是很好,盒图看不到控制流五种基本控制结构由五种图形构件表示。

问题分析图(PAD)

     也设置了五种基本控制结构的图形,并允许递归使用。问题分析图设计的程序结构一定是结构化程序:描述清晰,可以表示程序逻辑结构的异同和便于记忆,很容易表示高级层次,可以描述数据结构,支持自顶向下、逐步求精的方法。因此建议大家用PAD图和程序流程图。

判定表:

     用于程序的静态逻辑,在判定表中的条件部分给出的所有两分支判断的列表,动作部分给出相应的处理,要求将程序流程图中的多分支结构改成两分支判断。

PDL(Program Design Language)

     用于描述功能模块的算法设计和加工细节的语言。是一种伪代码。可对其稍加改造,即可当做上机的代码。它可以提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之便得易于理解。但是不如图形工具那么直观。

猜你喜欢

转载自blog.csdn.net/weixin_39332529/article/details/82714492
今日推荐