程序模块化的思考

最近开发了蓝诺网店系统,发现里面很多代码相似,但有没有办法简单的分离出来,写共通方法,怎么样让程序代码更简洁。但一直没有头绪,也许水平问题。

所以最近每天都在看这方面的书,如果哪位朋友有好的请推荐下。

模块化的主要目的:

           就是提高代码的可用性,可重用性,可读性等

下面有我几个待分清的概念,以及我收集整理的一些资料。

         软件架构,组件,模块化设计,体系结构设计,分层

体系结构和软件架构是同一个概念,只是翻译不同。可以描述一个程序是如何工作的?各模块是如何协调工作的,是一个系统的蓝图。

一、软件架构(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、一个物理架构的例子

  

二、组件( Component )概念
组件( Component)是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定 对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。
组件的定义有多种,但最常见有几种。组件是可互换的软件部分,它既是工业化系统的产物,也是工业第系统的动力。在.NET平台的组件层中,组件是以Assemblies的形式创建的。
.NET平台创建了组件,并将组件作为其基本的元素。从本质上看,.NET平台组件是一个用任何.NET语言以插件形式开发的可互换的软件部件,它可以与其他应用程序实现互操作。使用COM+服务的.NET组件被称作服务化组件,以示与.NET中标准的可管理组件的区别。
三、模块化设计
基本概念
1. 模块:模块是一个具有独立功能的程序,可以单独设计、调试与管理。
2.
模块的种类:
1 )功能模块
2 )控制模块
3.
模块化:按适当的原则把一个情况复杂、规模较大的程序系统划分为一个个较小的、功能相关而又相对独立的模块。
4.
模块化设计的策略(原则):
1 )用 自顶向下 的方法进行系统设计: 整体 -> 局部。
2 )按功能划分法把模块组成树状结构,层次清楚。
3 )模块的大小要适中, <100 行。
4 )各模块间的接口要简单。尽可能使每个模块只有一个入口,一个出口。
5.
模块化设计的优点:
1 )复杂系统化大为小,化繁为简
2 )便于维护
3 )提高系统设计效率 ( 多人并行开发 )
注:
模块化在不同的程序设计方法中是不同的,在结构化的程序设计中,模块化就是一个功能分解,逐步求精的过程。而在面向对象的程序设计中,主要是关于如何控制对象的粒度的问题。我说的模块化是软件工程中的模块化的意思,不知道你是不是这个意思。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值