软件架构学习
阅读数:174 评论数:0
跳转到新版页面分类
架构学
正文
一、基本知识
视图是对于某一视角或某一点上看到的系统所作的简化描述,描述中涵盖了系统的某一特定方面,而省略了与此方面无关的实体。这是因为架构要涵盖的内容和决策太多了,超过了人脑的处理能力,因此采用“分而治之”的办法从不同的视角分别设计。
只有多做设计,多研究别人的设计才能更快的了解架构设计。
架构风格描述某一特定应用领域中系统组织方式的惯用模式,分类方式并不唯一,这里介绍一种分类方式
(1)数据流风格,包括批处理和管道过滤器
每个构件都有一组输入和输出,数据输入构件,经过处理后,产生数据输出。
(2)调用-返回风络,包括主程序-子程序、数据抽象和面向对象、分层系统
在数据抽象和面向对象风格中,数据的表示方法和对它们的相应操作被封装在一个对象或抽象数据类型中,对象是通过函数和过程调用来进行交互的。
(3)独立构件风格,包括进程通信、事件驱动
构件不直接调用一个过程,而是广播或触发事件,导致另一个模块中的过程调用。
(4)虚拟机风络,包括解释器、基于规则的系统
(5)仓库风格,包括数据库、黑板、超文本系统
一类是中央共享数据源,保存当前系统的数据状态,另一类是多个独立处理单元对数据元素进行操作。
(6)分布式架构风格,包括c/s 、b/s系统
设计模式是人们在长期的开发实践中设计经验的总结。
按照目的和用途的不同,可以分为:
(1)创建型模式
主要用于创建对象,包括:工厂方法、抽象工厂、原型模式、单例模式、建造者模式
(2)结构型模式
主要用于处理类或对象的组合。包括:适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式
(3)行为型模式
主要用于描述类或对象的交互以及职责分配。包括:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法、访问者模式。
(1)开闭原则
对修改是关闭的,但对扩展是开放的。这就需要我们使用抽象类和接口。
(2)里氏代换原则
把父类替换成子类,程序的行为不会有变化。。可以理解为它规范了实现抽象化的具体步骤。
(3)依赖倒置原则
面向接口编程,要依赖抽象,而不要依赖具体。它是开闭原则的基础。
(4)接口隔离原则
使用单个接口不会比使用多个隔离的接口更好。其实就是松耦合的意思。
(5)迪米特法则
也叫最少知识原则,实体之间需要尽可能少的相互作用。这样可以使系统各个功能模块相对独立,便于维护。
(6)组合复用原则
多用组合,少用继承。
(7)单一职责原则
一个类应该只有一个引起变化的理由。
二、软件框架
软件系统中的机制,是指预先定义好的、能够完成预期目标的、基于抽象角色的协作方式。机制不仅包含协作关系,同时也包含了协作流程。
框架是可以通过某种回调机制进行扩张的软件系统或子系统的半成品。
在于:为了追求重用所带来的价值量最大化,将容易变化的部分封装成扩展点,并辅以回调机制将它们纳入框架的控制范围之内,从而在兼顾定制开销的同时使被重用的设计成果最多。
需要指出,“软件重用”中有一对矛盾:“重用机率”大小和“重用所带来的价值量”大小,就是说软件单元的粒度越大,则重用所带来的价值越大,但重用的机率越小,反之亦然。
三、模块划分
作为需求分析的成果,功能树是一种功能表达结构,它将“功能大类”、“功能组”和“功能项”的隶属与支持关系以“树”的形式呈现出来。
将“功能组”对应到大粒度“功能模块”,可以实现模块内的高内聚、模块间的松耦合。
分层架构的设计思想就是“封装”,封闭外部交互,这样这些层只需要专注于本身的问题领域,不需要了解其他层的实现细节。