您的位置:首页 > 运维架构 > 网站架构

架构学习体会

2010-03-05 22:11 253 查看
良好的软件架构能够服务于整个开发过程,有效地降低风险,减少维护成本,确保项目能够朝着健康的方向发展。因此优秀软件的开发必然不能离开优秀的优秀的架构。

软件架构设计的原因是我们的开发过程在一定规则下能够达到效率与质量最优化。架构设计是对整个系统的抽象,从不同的角度可以看到它不同的结构组成(比如说物理上,逻辑上),而每个结构又包含了元素,元素外部可见的属性以及各个元素之间的相互约束。一个系统通常是由不同的组件组成的,而这些组件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。如果把开发一个系统比作建造一所房子的话,那么组件中的元素就是一幢大楼中的砖瓦,而元素之间的联结器则描述这些砖瓦之间的泥浆,它在组件中用于元素之间的通信,系统如何使用这些组件和联结器完成某一项需求是系统的任务流,它决定了我们要建一所什么样的房子。

软件架构是一门十分复杂的科学,做一个好的架构设计既需要深厚的技术功底,又要非常的了解所开发系统的业务需求,没有任何开发经验和业务积累的人是很难成为一个合格的架构师的。就像打仗需要兵法理论,架构也有很多方法理论。这次培训,我们介绍了很多ADMENS中的理论。ADMENS将架构设计的内容分成了3个阶段和1个贯穿环节。他们是预备架构阶段(PA阶段)、概念架构阶段(CA阶段)和细化架构阶段(RA)以及对非功能目标的考虑。在PA阶段架构师分析需求,将需求结构化之后,理清结构间的约束影响,确定各个结构的关键功能和质量。CA阶段需要界定系统的组件和组件间的关系,在我理解这个阶段好似建筑中的框架结构设计阶段,该阶段,架构师会产生一个架构的整体思路以及一些难点的解决方案。RA阶段是对概念架构阶段的构想细化。在这个阶段,架构师应用多视图的方法对架构设计进行细分,包括逻辑架构、开发架构、运行架构、数据架构和物理架构。

在架构设计中,架构师会以逻辑架构为核心细化架构设计。我认为其中一个原因是逻辑架构是整个系统从对象到功能以及模块间的交互接口反应最直接的地方,他是我们实现业务需求的方法抽象。逻辑架构的好坏与开发过程有直接的关系。而其他几个架构都是对逻辑架构的一个支撑,即物理设备支持,数据库支持,开发框架支持,以及运行环境的支持。在逻辑架构中三层架构是利用的非常广的。三层架构是将整个业务应用划分为:表示层,业务逻辑层,数据层。各个层次之间通过有限的接口实现交互,增强了系统的扩展性和模块独立性,达到“高内聚,底耦合”的目的。表示层位于业务层之上,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。业务逻辑层在体系架构中的位置是最关键的,它处于数据层与表示层中间,起到了数据交换中承上启下的作用。在三层架构中,理想的状态时只存在上层对下层的依赖,业务逻辑层利用数据层的数据,通过自身的处理,发送到表示层中。优秀的业务层设计是使软件的业务功能和视图数据相隔离,达到替换业务功能无需对表示层与数据层做任何改变的目的。数据层是对系统数据的管理,例如对数据库和其他一些数据文档等的操作。

在我知道的架构中还有MVC架构,与三层架构相同的是他们都有一个表现层,但是他们在其他两层是不同的。在三层架构中没有定义控制层的概念,而MVC也没有把业务和数据层看成两个层,这是采用三层架构或MVC系统架构的区别。在MVC中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是由业务实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。在我现在所开发的项目更接近于一种MVC架构,因为对于后台数据的处理并未完全与业务对象脱离开来。在组件视图与整个框架之间添加了会话控制类,用于控制视图的展现,提供组件与主框架的会话,而这相当于控制层。

总之,架构设计是软件开发过程的重要组成部分,它不是单纯的技术,也不具有一种特定的形式,更不是与客户需求无关的,它是一门很复杂的科学理论,也是让人绞尽脑汁的开发实践。

开发部:tp
2010-3-5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: