一、软件结构设计概述
数据设计主要是将实体关系转化为文件系统结构以及数据库表结构。至于体系结构设计主要是对软件模块之间的关系进行定义。而接口设计则是以数据流图对系统内部中的各种关系及交互机制进行定义。最后,过程设计则是对软件各组成部分的算法以及内部数据结构确定下来,并采取某种形式对算法进行描述。如果从工程管理这一角度出发的话,则软件设计则可以分为概要设计以及详细设计这两部分,其中概要设计主要包含软件需求到软件体系结构的转换、系统级接口的确定等。至于详细设计则是对每个模块的实现算法以及数据结构进行确定、采取合理的方法对算法以及数据结构细节进行表示。
二、结构化设计的具体实施方法
1、结构化设计流程
(1)对数据流图进行研究、分析及审查,这主要可以帮助我们从软件需求规格说明中掌握数据流加工过程。
(2)以数据流图为依据对数据处理的类型进行确定,需要注意的是,针对事务型及变换型,我们要对其进行分别分析及处理。
(3)通过数据流图对系统初始结构图进行推导。
(4)采取启发式原则对系统初始结构图进行改进,直到结构图满足我们的要求为止。
(5)利用数据字典以及分析模型ER图对数据进行设计,这又包括数据文件设计以及数据库设计。
(6)以状态转换图、加工规格说明为依据,进行过程设计。
2、体系结构设计方法
(1)基于数据流方法设计过程。这一设计方法也被称之为过程驱动设计方法,在使用这一方法的过程中,主要是和软件需求分析阶段的SA进行衔接,然后将数据流图所表示的信息转化为程序结构设计描述。
(2)典型数据流及典型系统结构。对于典型数据流类型来说在,主要包括事务型数据流以及变换型数据流,在数据流的类型存在区别的时候,其所获得的系统结构也会存在差异。一般来说,我们会把系统中的全部数据流认作变换流,数据沿输入通道进到系统中,经历数据变化,把数据外部形势转变为内部表示,再利用变化中心进行处理,最后沿输出通道离开系统,而这种数据就被称之为变换流。不过,在遇到明显带有事务特性数据流的时候,则最好采取事务型映射方法设计。具体来说,变换流系统结构图主要包括了输入、变换中心以及输出这三个部分。至于事务流,其数据则会沿输入通道到达事务中心,然后事务中心将以输入数据的类型为依据选择一个动作进行执行,在事务流中,事务中心是明显存在的,各种活动流将以事务中心作为起点按照辐射的形状流出。
(3)变换映射方法。所谓变换分析,主要是从数据流图中将系统结构图导出,其具体的步骤为:首先,对数据流图进行重画;其次,对有效输入、有效输出以及变换中心部分进行区分;第三,进行一级分解及二级分解。具体来说,在对数据流图进行重画的过程中,为建立好系统结构,要对数据流图进行平铺,其中物流输入在左边,物理输出在右边。至于确定有效输入、有效输出以及变换中心的过程中,则要注意程序的核心功能为变换中心,输入属于逻辑输入流,而输出属于逻辑输出流。而第一级分级中,顶层模块负责整个系统功能,它又可以分为输入控制模块、变换控制模块以及输出控制模块。第二级分解则可以分为输入控制模块的分解、输出模块的分级以及有效控制模块的分解。
(4)事务型映射方法。在事务分析的过程中,其流程也是由数据流图的分析开始,从顶到下,进行逐步的分解,最终建立起系统的结构图。其具体步骤可以总结为:首先,对事务中心以及每条活动流流特性进行确定;其次,将数据流图映射为高层系统结构;第三,进行进一步的分解,将事务处理模块中全面的下层操作模块确定下来。
(5)模块结构改进的方法。首先,模块功能的完善。对于一个完整的模块来说,其主要应包含以下几个部分:对规定功能的部分进行执行;在模块难以完成规定功能的时候,则要对出错标志进行回送,在需要的时候可以将数据返回给其调用者。其次,将重复内容消除,对软件结构进行改善。具体来说,针对一些结构完全相似的情况,可以使用完全合并的方法。至于局部相似,我们则要找到相同的部分,将其分离出去,然后进行一个独立下层模块的重新定义,当然,也可以使其和上级模块进行合并。第三,对模块作用范围进行控制。针对设计过程中作用范围并不在控制范围之中的情况,我们可以采取以下措施实现作业范围的转移:把判定所在模块合并至父模块之中,使判定处在比较高的层次之中;对受到判定影响的模块进行下移,使其转移至控制范围中;把判定上移到层次高的位置。第四,尽量降低高扇结构,在一个模块中,如果存在的扇出数比较大,则表示这一模块存在着比较复杂的情况,我们要对下属模块进行协调和控制,并尽量多增加一些中间层次的控制模块。第五,确保模块大小合适。一般来说,在衡量模块大小的时候,我们主要以模块中所含的语句数量作为依据,一般来说,语句的行数要控制在50到100的范围内,而且应保持在一页纸中,最大的时候也不得超过500行。
三、结语
本文关于结构化设计方法的研究虽然具有一定的实践指导作用,但是受制于篇幅的限制,也还存在很多不足之处,基于此,还希望各位程序设计人员能够加强这方面的学习和探索,为提升软件设计的水平而共同努力。
作者:刘薇 单位:同济大学软件学院