软件结构设计主要分为:
1. 面向过程
2. 面向对象
3. 面向组件
4. 面向服务
面向过程:
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,但常常会导致所有的代码都包含在几个模块中,使程序难以阅读和维护。在做一些修改时常常牵一动百,使以后的开发和维护难以为继。
面向对象:
1. 把算法与数据结构看做是一个整体,称作对象,现实世界中任何类的对象都具有一定的属性和操作,也总能用数据结构与算法两者合一地来描述。任何事物都可以抽象成为对象。
2. 面向对象技术的基础是封装--接口与实现分离;
3. 面向对象的核心是多态--这是接口和实现分离的更高级升华,使得在运行时可以动态根据条件来选择隐藏在接口后面的实现;
4. 面向对象的表现形式是类和继承。
5. 面向对象的主要目标是使系统对象化,良好的对象化的结果,就是系统的各部分更加清晰化,耦合度大大降低。
面向组件:
1. 面向组件技术建立在对象技术之上,它是对象技术的进一步发展。组件不是一个新的概念,Java中的javaBean规范和EJB规范都是典型的组件。
2. 类这个概念仍然是组件技术中一个基础的概念,但是组件技术更核心的概念是接口。
3. 组件技术的主要目标是复用--粗粒度的复用,这不是类的复用,而是组件的复用,如一个dll、一个中间件,甚至一个框架。
4. 一个组件可以有一个类或多个类及其它元素(枚举、)组成,但是组件有个很明显的特征,就是它是一个独立的物理单元,经常以非源码的形式(如二进制,IL)存在。
5. 一个完整的组件中一般有一个主类,而其它的类和元素都是为了支持该主类的功能实现而存在的。为了支持这种物理独立性和粗粒度的复用,组件需要更高级的概念支撑,其中最基本的就是属性和事件,在对象的技术中曾一度困扰我们的类之间的相互依赖问题/消息传递问题,迄今为止我所知道最好的解决方案就是事件。要理解组件思想,首先要理解事件的思想和机制。
6. 组件的特点在于他定义了一种通用的处理方式。OOP有一个大的限制:对象之间的相互依赖关系。去掉这个限制的一个好的想法就是组件。组件和一般对象之间的关键区别是组件是可以替代的。
面向服务:
SOP是一种体系结构,目标是在软件代理交互中获得松散耦合。
SOA是一种企业架构,因此,它是从企业的需求开始的。但是,SOA和其它企业架构方法的不同之处在于SOA提供的业务敏捷性。业务敏捷性是指企业对变更快速和有效地进行响应、并且利用变更来得到竞争优势的能力。对架构设计师来说,创建一个业务敏捷的架构意味着创建这样一个IT架构,它可以满足当前还未知的业务需求。
SOA结构结合了MDA和AM的精华,把这些不同方法中的一些元素提取出来,放入到一个一致的架构实践中。服务特征是:松散耦合、位置透明、协议独立
一个服务是一个服务提供者为一个服务消费者获得其想要的最终结果的一个工作单元。