一、软件架构概述
需求分析到软件设计之间的过渡过程就是软件架构。
需求分析人员整理成文档,但是开发人员对业务并不熟悉,这时候中间就需要一个即懂软件又懂业务的人,架构师来把文档整理成系统里的各个开发模块,布置开发任务。
软件架构提供一个 结构、行为和属性的高级抽象,由 构建的描述、构建的相互作用(连接件)、指导构建集成的模式以及这些模式的约束组成。
软件架构指定了系统的组织结构 和 拓扑结构。需求和构建之间对应关系。
解决软件复用、质量和维护问题,是架构根本问题。
二、软件架构设计和生命周期
1、需求阶段分析
Software Architecture(SA)软件架构
需求分析和SA面临的是不同对象:一个 问题空间,一个是 解空间。需求是问题空间,SA是解空间。
主要关注两个问题,如何根据需求模型建立SA模型,如何保证架构模型转换后可追踪性。
2、设计阶段
是SA验证研究关注最早和最多的阶段。主要包括 SA模型的描述、SA模型的设计与分析方法,以及对SA设计经验的总结和复用 等。
主要三个层次 SA的基本概念(构建和连接子)、体系结构描述语言ADL、SA模型多视图表示。
3、实施阶段
最初SA只关注较高层次系统设计,为了实现有效转换,
A. 研究基于SA的开发过程支持,如项目组织结构、配置管理。
B. 寻求从SA实现过度的途径,如设计语言引入如何实现。
C. 研究基于SA的测试技术。
4、构建组装阶段
在SA设计模型指导下,起到整个系统蓝图的作用。研究主要包括两点:
A. 可复用构建的互联。
B. 在组装模型中,如何检测并消除体系结构失配问题。
5、部署阶段
SA软件部署作用
A. 提供 高层体系结构视图 来描述部署阶段软硬件模型。
B. 基于SA模型 分析部署方案质量。
6、后开发阶段
指软件 部署安装之后的阶段。主要维护、演化、复用等方面进行。包括两个方面。
a. 动态软件系统结构:会在运行时候发生改变,软件 内部执行 体系结构发生改变,软件外部请求 对软件进行重配置。
b. 体系结构恢复与重建:如果现有的系统没考虑SA,从系统中恢复和重建SA体系。
三、构件
构件是可独立交付的功能单元,支持复用。
构件通常 由一组可单独部署的原子构件组成。一个原子构件是一个模块和一组资源。原子构件是 部署、版本控制和替换的基本单位。
原子构件可以单独部署,但往往是组成部署。
一个模块是不带单独资源的原子构件。(对象、模块、构件、服务。都可以相互交互,粒度越来越大。)
一个单独的包被编译成多个单独的类文件---每个公共类都有一个。
模块是一组类和可能的非面向对象的结构体,比如过程或者函数。
构件特性:
1、独立部署单元。
2、作为第三方组装单元。
3、没有(外部)可见状态。
4、一个构件 可以包含多个类,但一个类只能属于一个构件。
对象的特征:
1、一个实例单元,具有唯一标志。
2、可能具有的状态,此状态外部可见。(比如对象new被创建 和销毁,是可见的)
3、封装自己的状态和行为。
构件接口
接口标准化是对 消息的格式、模式和协议的标准化。关注消息输入输出标注。
面向构件的编程(COP)
如何支持建立面向构件的解决方案。需要基本支持:
1、多态性(可替代)
2、模块封装性
3、后期的绑定和装载
4、安全性
(注意,面向对象是要写很多对象,比如java和c )
EJB(enterprise java bean)规范由sun制定。
1、会话Bean(Session bean):比如发送邮件。
2、实体Bean(entity bean):持久化存储。
3、消息驱动Bean(message-drive bean):分布式构件的bean。(异步)
EJB实现 应用关键的业务逻辑,创建基于构件的企业应用程序。
COM是微软公司的。
CORBA标准主要分为三个层次。
1、对象请求代理ORB:最底层服务,规定了分布式对象的定义(接口)和语言映射,实现对象通讯交互,是 分布对象系统中的“软总线”。
2、ORB之上公共服务,比如并发服务,名字服务,事务服务,安全服务等。
3、最上层的公共设施则定义了组件框架,直接为业务实现提供的框架。