最近开发了蓝诺网店系统,发现里面很多代码相似,但有没有办法简单的分离出来,写共通方法,怎么样让程序代码更简洁。但一直没有头绪,也许水平问题。
所以最近每天都在看这方面的书,如果哪位朋友有好的请推荐下。
模块化的主要目的:
就是提高代码的可用性,可重用性,可读性等
下面有我几个待分清的概念,以及我收集整理的一些资料。
软件架构,组件,模块化设计,体系结构设计,分层
一、软件架构(Architecture)
一般而言,架构有两个要素:
1.它是一个软件系统从整体到部分的最高层次的划分。
一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。
详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。
2.建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。
架构的目标:
·可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。
·安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。
·可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。
·可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。
·可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展
·可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费
·客户体验(Customer Experience)。软件系统必须易于使用。
·市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。
架构的种类:
根据我们关注的角度不同,可以将架构分成三种:
·逻辑架构、软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。
比如
图2、一个逻辑架构的例子 |
从上面这张图中可以看出,此系统被划分成三个逻辑层次,即表象层次,商业层次和数据持久层次。每一个层次都含有多个逻辑元件。比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等。
·物理架构、软件元件是怎样放到硬件上的。
比如下面这张物理架构图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等。
图3、一个物理架构的例子 |
1. 模块:模块是一个具有独立功能的程序,可以单独设计、调试与管理。
2. 模块的种类:
( 1 )功能模块
( 2 )控制模块
3. 模块化:按适当的原则把一个情况复杂、规模较大的程序系统划分为一个个较小的、功能相关而又相对独立的模块。
4. 模块化设计的策略(原则):
( 1 )用 “ 自顶向下 ” 的方法进行系统设计: 整体 -> 局部。
( 2 )按功能划分法把模块组成树状结构,层次清楚。
( 3 )模块的大小要适中, <100 行。
( 4 )各模块间的接口要简单。尽可能使每个模块只有一个入口,一个出口。
5. 模块化设计的优点:
( 1 )复杂系统化大为小,化繁为简
( 2 )便于维护
( 3 )提高系统设计效率 ( 多人并行开发 )