当前位置: 首页 > news >正文

软考架构-构件技术

一、软件架构概述

从需求分析到软件设计之间的过渡过程,称为软件建构

软件架构解决了需求到设计之间的问题

架构体系:描述构建和连接件的蓝图

二、软件架构设计与声明周期

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上定义了很多公共服务,比如并发服务、名字服务、事务服务、安全服务等

公共设施:规定了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 高亮你的文字:CSS ::selection 伪元素的魔法
  • 关于springboot对接通义千问大模型的尝试(一)
  • 【Docker】Docker 的基本概念和优势简介
  • 数据库和缓存不一致的问题及解决方案
  • Redis篇三:在Ubuntu下安装Redis
  • Python生成JMeter测试脚本----HTTP信息头管理器和用户定义的变量
  • 使用gitee存储项目
  • Java中的序列化与反序列化深度剖析
  • 分局高清视频监控及监控中心项目-技术方案(下)
  • 【Kotlin设计模式】Kotlin实现适配器模式
  • 硬件面试经典 100 题(81~90)题
  • 【Linux】第十七章 多路转接(select+poll+epoll)
  • 汽车功能安全--AutoSAR中的功能安全机制
  • 报考中国科学院计算技术研究所博士
  • 面向三维分子相互作用学习的通用等变Transformer
  • Angular2开发踩坑系列-生产环境编译
  • ES6核心特性
  • exif信息对照
  • HTTP中的ETag在移动客户端的应用
  • iOS | NSProxy
  • Javascripit类型转换比较那点事儿,双等号(==)
  • js递归,无限分级树形折叠菜单
  • MySQL-事务管理(基础)
  • Promise面试题2实现异步串行执行
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React-生命周期杂记
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • swift基础之_对象 实例方法 对象方法。
  • Web Storage相关
  • 闭包,sync使用细节
  • 后端_MYSQL
  • 简单实现一个textarea自适应高度
  • 解析 Webpack中import、require、按需加载的执行过程
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何选择开源的机器学习框架?
  • 一个项目push到多个远程Git仓库
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ######## golang各章节终篇索引 ########
  • #define用法
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • ( 10 )MySQL中的外键
  • (04)odoo视图操作
  • (11)MSP430F5529 定时器B
  • (2)STL算法之元素计数
  • (day6) 319. 灯泡开关
  • (超详细)语音信号处理之特征提取
  • (二)学习JVM —— 垃圾回收机制
  • (黑马C++)L06 重载与继承
  • (一) 初入MySQL 【认识和部署】
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)程序员技术练级攻略
  • (自用)gtest单元测试