软件结构(Software Structure)是指一种层次表况,由软件组成成分构造软件的过程、方法和表示。软件结构主要包括程序结构和文档结构。程序结构有两层含义,一是指程序的数据结构和控制结构;另一是指由比程序低一级的程序单位(模块)组成程序的过程、方法和表示。在后者含义下,具有代表性的是块结构和嵌套结构两种。块结构比较自然,各个部分之间通过一些公用
变量取得联系,嵌套结构是在嵌套分程序的基础上引进局部性和动态性,以减少程序的初始信息量,嵌套结构不如块结构直观,调试不方便。
简介
所谓模块,是指具有相对独立性的,由数据说明,执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。在高级语言中,模块具体表现为函数,子程序,过程等,一个模块具有输入/输出(接口)、功能、内部数据和程序代码四个特征。输入/输出用于实现模块与其他模块间的数据传送,即向模块传入所需的原始数据及从模块传出得到得到结果数据。功能指模块所完成的工作。模块的输入/输出和功能构成了模块的外部特征。内部数据是指仅能在模块内部使用的局部量。
有些程序是单模块结构,有些是多模块结构。这些模块在程序的逻辑上是不可分离的,可以用不同的
程序设计语言编写,可以由相应的
编译程序分别编译,可以和其它的程序单位组合并装入
计算机内运行。由于编写大程序的需要,且模块可以多次使用,实行模块化是一个很好的手段。 由一组模块组成的大型程序可有三种结构,即
顺序结构、并发结构和分布结构。
顺序结构的程序是最古老的,所采用的
程序设计语言是顺序
程序设计语言,如ALGOL、FORTRAN、C等。并发结构的程序由若干个可以同时执行的模块组成。这些模块可以在多台
处理机上
并行执行,也可以在同一台处理机上交叉执行,所采用的程序设计语言是
并发程序设计语言,如并发PASCAL、Modula-2等。分布结构的程序由若干个可独立运行的模块组成,这些模块可以分布于一个
分布式系统中,在几台
计算机上同时运行,所采用的
程序设计语言是
分布式程序设计语言。对于大型程序,也可以是这三种结构的混合。
结构原则
软件结构设计的启发式规则
(1)模块功能的完善化
执行规定功能部分;出错处理部分;需返回给调用者数据时,返回是否正确结束标志。
(2)消除重复功能
(3)将模块的影响限制在模块的控制范围内
(4)深度、宽度、扇出和扇入适中
(5)模块大小适中
模块过大:可理解程度下降。模块过小:开销大于有效操作系统接口复杂。
(6)降低模块接口的复杂性
接口传递信息应简单且和模块功能一致。
(7)模块功能可预测
模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。
(8)避免模块的病态连接
防止指向模块中间的分支或引用(针对内容耦合)。
(9)根据设计约束和可移植性要对软件打包
打包指用来为特定环境组装软件的技术。
目录结构清楚
什么样的目录放什么样的内容,这样便于管理,使WEB程序的目录结构,清楚明了,一看便知道某个文件夹下存储了哪些功能模块与内容。若随便存放,时间一长久自己都将不从了解某目录是用来做什么的。如:经常要使用的
可执行文件最要存放在(项目根目录)根目录,这样做主要是便于了解其作用,同时也为在程序中少输入些地址字符。程序所用到的图片统一存放在根目录下images目录中,若项目较大,分枝较多,可再在其目录下建立也分枝程序相关的目录名,存储相关的图片内容。程序的配置文件与常用共公函数类库存放在include目录中,存放在此目录下的函数类库
文件扩展名得命名为:.php切不命名为.inc .ini之类为扩展名的文件,主要是防此此类文件可供用户下载,或查阅其
源码内容,这样对其调用方便明确。模板文件应存储在根目录下templates目录中,扩展名为.html,如果项目较大,分类较多,模板文件可分类存放在下极目录中。临时文件存储在根目录tmp目录中,此目录通常设置为任何人都可读可写。使用
相对地址主要是方便程序移植。
命名适当
命名最好是以程序用来作什么用来命名。若一个单词就要描述则用小写单词来命名,若要用多个单词方能代表,也以小写单词之间加下划线连接。要注意命名不可过长,这样就不方便了,虽然能表达的更明确,但打字难打啊。程序中函数命名也可与此相同。
常变内容、界面使模板较好
常变内容、界面使用模板较好,如果是按照传统的制作将HTML页面内容放在程序中处理输入时,较麻烦非得要更改程序不可,这可能会带来较大的不便。
共公信息统一存储
共公信息统一存储,这主要为了方便团队开发时都能进行调用用的最常的函数,不用每个开发人员都复制一份或自己写一份存储在
程序文件中,这样做浪费空间同时效率效果也不好。
Include文件不可嵌入较多
Include文件不可嵌入较多,这是因为每次程序include某个文件时,是要打开读取这个文件的,这是要时间的哦,再就是说处理路径时可能会遇到较难发现的BUG问题。
目录下不可存储太多内容文件
如果文件较多较大时最好是分目录分盘符来处理。
数据结构要设计合理
数据结构要设计合理、精简明了。
数据校验应在服务器端
数据校验应在服务器端,但这样做也有他不好之处,那就是当数据量大时,服务器会负载运行,审核
数据完整性是可开销时间与
系统资源的。在
客户端就不会占用服务器太多的资源,因为占用的是用户的资源。
连接数据库近晚,断开连接近早
尽晚连接,尽早断开连接,能使占用
系统资源最少,为下一次连接提供条件。
尽量少使用SESSION与COOKIE
尽量少使用SESSION与COOKIE,因为使用SESSION是要占用
系统资源的,SESSION是存储在服务器端的,每次读取SESSION中的数据是要较大开销的。COOKIE虽然不占用服务器资源,但COOKIE不太安全。