一、软件架构概述
从需求分析到软件设计之间的过渡过程,称为软件建构
软件架构解决了需求到设计之间的问题
架构体系:描述构建和连接件的蓝图
二、软件架构设计与声明周期
1、需求分析阶段:需求分析是解决什么问题,面对的是问题空间。架构设计是怎么解决问题,面对的是解空间。
从需求到架构设计关注的问题:
① 如何根据需求模型构建SA模型
②如何保证模型转换的可追踪性
2、设计阶段:这一阶段SA主要研究的是 SA模型的描述、SA模型的设计与分析方法、SA设计经验的总结与复用
SA模型描述的研究分为:SA的基本概念(构件和连接子(连接件:构件和构件之间如何连接的))、体系结构描述语言ADL(ADL:架构设计的描述语言)、SA模型的多视图表示(图形化展示)
3、实现阶段:实现SA设计向实现的转换(把高层次设计落地)
主要表现在以下几个方面
①研究基于SA的开发过程支持(基于软件架构的开发),如项目组织结构、配置管理等
②从SA向实现过渡的途径(如何实现),如程序设计语言元素引入SA阶段、模型映射、构建组装、复用中间件等
③研究基于SA的测试技术
4、构件组装阶段:可复用构件的组装、消除构件之间的失配问题。
SA设计模型起到系统蓝图的作用,根据蓝图更好的去实现
概要设计:提供了系统的模块结构图
5、部署阶段:
SA对部署的作用:架构图来指导软硬件模型部署、基于SA模型可以选择合理的部署方案
6、后开发阶段:部署安装之后的阶段,这一阶段SA主要围绕维护、演化、复用等方面进行研究
研究方向:
①动态软件体系结构:架构在运行的时候会发生改变,需要研究架构能否支持这些改变
运行时变化:内部执行、外部请求,比如超链接的跳转、跨域请求
②体系结构恢复与重建:从已有系统中获取架构体系
三、构件
对象(类)---模块(bean、dao、controller)----构件(jar包)-----服务(服务)
1、构件概念
构件是一个独立可交付的单元,外界通过接口访问其提供的服务(封装了很多功能的函数,对外提供接口,外界调用他的接口)
是由一组原子构件组成
2、原子构件
是一个模块和一组资源,是部署、版本控制和替换的基本单元,通常成组的部署,也可单独部署
3、模块
是不带单独资源的原子构件,是一组类和可能得非面向对象的结构体(过程或函数)
4、构件特性
独立部署单元、第三方组装单元、没有(外部的)可见状态
一个构件可包含多个类元素,但一个类元素只能属于一个构件
5、对象的特性
一个实例单元、可具有状态、封装了自己的状态和行为
6、对象状态
临时状态:是指从对象通过 new 语句创建到被持久化之前的状态,此时对象不在 Session 的缓存中。(已创建未被调用)
持久化状态:是指对象被持久化到 Session 对象被销毁之前的状态,此时对象在Session的缓存中。(调用中)
游离状态:是指从持久化对象的 Session 对象被销毁到该对象消失之前的状态,此时对象不在 Session 的缓存中。(调用后,释放掉)
7、构件接口
接口标准化:对接口中的消息格式、模式和协议标准化,关注输入输出的消息
8、面向构件的变成(COP)
需要基本支持:
①多态性(可替代性)
②模块封装性(高层次信息隐藏)
③后期的绑定与装载(独立部署)
④安全性(类型和模块安全性)
9、构件标准
①EJB(Enterprise Java Bean)企业级应用程序:分别是会话Bean(Session Bean)、实体Bean(Entity Bean)、消息驱动Bean(Message-driven Bean)
会话Bean:用于会话的Bean
无状态会话:发邮件,发送方和接收方建立会话连接,发邮件后不知邮件是否被接收
有状态会话:发邮件,发送方和接收方建立会话连接,通过消息来监控邮件是否被接收
实体Bean:具体的和功能相关持久的存储的类
消息驱动Bean:异步通信
②COM:是微软公司的
③CORBA:分布式对象请求代理服务
三个层次:
对象请求代理:不同对象之间通过ORB进行通讯和互操作
公共对象服务:在ORB上定义了很多公共服务,比如并发服务、名字服务、事务服务、安全服务等
公共设施:规定了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则