a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 139|回复: 1

[系统分析师] 2012年软件水平考试系统分析师学习笔记(9)

[复制链接]
发表于 2012-8-2 08:48:37 | 显示全部楼层 |阅读模式
面向构件的软件设计7 q( K" Y5 |6 A4 ?
    9.1 术语、概念. W& F0 ~7 t: X& C" z9 z& q( D4 Y4 b. H
    1、构件+ k1 L; ]4 f% a" C. C# K
    构件的特征如下:
2 v. K* I0 m, t1 o/ Q% T$ H    独立部署单元。
# }" V9 O* e1 S# L) A$ f" J% z# [    作为第三方的组装单元。
- T& c7 P& D  D. ~1 K! a    没有(外部的)可见状态。8 I" F3 d7 W$ L; |. n8 ?
    独立可部署,意味着 必须能 跟他所在的环境 及 其他构件 完全分离。
# n3 U) M. d7 k$ c    原子性,构件不但必须具备足够好的内聚性,还必须将自己的依赖条件和所提供的服务说明清楚。+ t: d% |! u" c; T* ?5 @! x
    缓存具有这样的特征:当它被清空时,除了可能会降低性能以外,没有其它后果。  I1 E; d* ]: L5 k+ s
    构建本质上没有状态,同一操作系统进程中 装载多个构件的拷贝 是毫无意义的,至多会存在一个特定构件的拷贝。5 ~- l1 \7 s1 O( G
    许多系统中,构建被实现为 大粒度的单元,工资管理服务程序就是一个构件,工资数据只是实例(对象),将不易变的“模型”和易变的“实例”分离的做法避免了大量的维护问题。
4 N0 o! W3 ^, d1 J0 P+ r* e    2、对象
' P" J& H. s) w4 q7 K5 P. M    对象的特征如下:
0 J$ [6 O/ v( R4 o4 k3 h) [    一个实例单元,具有唯一的标志。4 p9 ~7 [" X- L+ }' Y3 q4 v! }
    可能具有状态,此状态外部可见。( y! Y8 V# f* F' j# m  C. s1 f
    封装了自己的状态和行为。
" ?/ h  t! Y' H* ^    显式存在的实例化方案称为类,也有隐式的实例化方案,既通过克隆一个已存在的对象来实现,即原型对象。
0 ~2 S- F/ J$ `+ A    新生的对象都必须被设置一个初始状态,创建与初始化 对象 的代码可以是一个静态过程——类的一部分,称为构造函数。
1 \8 K( I3 S' x- X' n6 q& b2 |    如果这个对象是专门用来创建与初始化对象的,称为 工厂。7 n+ S& h7 u3 Z7 v8 ~+ ]
    对象中 专门用来返回其他 新创建的对象的方法 称为 工厂方法。     3、构件与对象0 P6 ^8 n$ c: t( I
    构件通常包含了若干类 或 不可更改的 原型对象。还包括一系列对象。# @+ G+ J, c% O# \* \& Y- ~
    但构件并非一定要包含类元素,它甚至可以不包含类,可以拥有传统过程体,甚至全局变量。
1 s9 }3 W3 F: F1 \" {& X8 V/ T    构件创建的对象——更确切地说是对这些对象的 引用——可以与该构件分离开来,并对构件的客户可见。构件的客户通常是指其他构件。$ B0 p5 i0 H1 X+ H: B. R7 M6 x
    一个构件可以包含多个类元素,但是一个类元素只能属于一个构建。将一个类拆分进行部署通常没有什么意义。
( l; ?' X; ~3 f    4、模块
5 ~- D: W  y2 I2 Q. |8 Z% p: b. p    模块化方法成熟的标志是其对分离编译技术的支持,包括跨模块的正确的类型检查能力。4 y: R( M" g7 q3 w
    模块没有实例化的概念,在任何情况下,模块都可以包含多个类。类之间的继承关系并不受模块界限的限制。/ K# R- P* R& h; o
    模块本身就可以作为一个最简单的构件,这些库是功能性的,而不是面向对象的。, J" @. ^. k9 I
    资源可以参数化一个构件,重新配置该构件而无需更改构件代码,例如,本地化设置可以通过资源配置实现。9 [) z' Y* R. A! i9 S. S" y
    某些情况下,模块并不适合作为构件,构件没有外部可见的状态,但是模块却可以显式地用全局变量来使其状态可见。
% y: R: W9 b' l& H4 U    5、白盒抽象、黑盒抽象 与 重用 白盒抽象中,可以通过继承对构件的实现细节进行修改,白盒方式中实现细节对外界是完全可见的。: g8 z& ~6 w9 x7 b; n
    绝大多数系统中,(Application Programming Interface,API)相当于黑盒重用这些接口的实现。
) U8 Q: _- q* L+ ]+ h1 I8 i    白盒重用不可以轻易地被另外的软件替换,因为 依赖于 细节。* o5 u( X" M1 x% m
    软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装。9 i3 j0 |: @4 ^7 ?, g; \. s- b
    6、接口
2 I9 V, y" R/ R; G    接口是一个已命名的一组操作集合。7 _& Q+ @  U+ k. u) V7 |4 L- X% h
    一个构件可以有多个接口,每个接口提供一种服务。
0 b. P" e* @  w5 V2 |6 S. F: A    尽量不要重复引入功能相近的接口。
) R2 |, X' `7 f- C3 B* V    推行标准化,可能会由于笨拙官僚的“委员会设计”问题而不能达到最优;市场竞争,的 非技术本质 也可能导致结果不是最优。8 f* @/ S+ T% T
    接口标准化 是对消息的 格式、模式、协议 的标准化,XML 提供了一种统一的数据格式
回复

使用道具 举报

 楼主| 发表于 2012-8-2 08:48:38 | 显示全部楼层

2012年软件水平考试系统分析师学习笔记(9)

3、构件与对象; L& P  d+ f! N& Y1 z
    构件通常包含了若干类 或 不可更改的 原型对象。还包括一系列对象。* n8 u4 K# p9 j* v
    但构件并非一定要包含类元素,它甚至可以不包含类,可以拥有传统过程体,甚至全局变量。+ a' c% R  g; h$ T
    构件创建的对象——更确切地说是对这些对象的 引用——可以与该构件分离开来,并对构件的客户可见。构件的客户通常是指其他构件。: q  }% i& G; t, Q$ A7 D5 a1 ]
    一个构件可以包含多个类元素,但是一个类元素只能属于一个构建。将一个类拆分进行部署通常没有什么意义。+ d' l- q) P  W$ Z: _2 [' {  H# ]; \
    4、模块
* f4 }7 A2 t# F3 p  Z0 W    模块化方法成熟的标志是其对分离编译技术的支持,包括跨模块的正确的类型检查能力。" m( E$ T0 i1 Z2 [! @( I; Y
    模块没有实例化的概念,在任何情况下,模块都可以包含多个类。类之间的继承关系并不受模块界限的限制。0 C/ E( ]8 `; q6 f4 r; q* H
    模块本身就可以作为一个最简单的构件,这些库是功能性的,而不是面向对象的。
7 T: p4 E0 n* j# a    资源可以参数化一个构件,重新配置该构件而无需更改构件代码,例如,本地化设置可以通过资源配置实现。) G4 A* z, ]  `! z1 o' U$ g4 K
    某些情况下,模块并不适合作为构件,构件没有外部可见的状态,但是模块却可以显式地用全局变量来使其状态可见。  v# ]6 @9 k- z0 Y
    5、白盒抽象、黑盒抽象 与 重用 白盒抽象中,可以通过继承对构件的实现细节进行修改,白盒方式中实现细节对外界是完全可见的。, T# R" b4 Y/ @7 [( B
    绝大多数系统中,(Application Programming Interface,API)相当于黑盒重用这些接口的实现。
% g( f) y: z" ?    白盒重用不可以轻易地被另外的软件替换,因为 依赖于 细节。
* Q3 I- H) T: N1 y( p" N) l0 Q' @* F    软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装。4 W4 Z$ Y# p" [4 y9 h5 [
    6、接口" J9 O' e0 b' ]+ v
    接口是一个已命名的一组操作集合。: ?5 w9 t- R( H: H0 l
    一个构件可以有多个接口,每个接口提供一种服务。+ Z! w4 {$ t. J( O  m% h- S8 b
    尽量不要重复引入功能相近的接口。
: x" V% y% R) Z. R8 X3 R    推行标准化,可能会由于笨拙官僚的“委员会设计”问题而不能达到最优;市场竞争,的 非技术本质 也可能导致结果不是最优。) T4 ~) w+ v* m, e# O! y) [
    接口标准化 是对消息的 格式、模式、协议 的标准化,XML 提供了一种统一的数据格式。     6、构件与生成式编程% ~6 L4 n2 v1 c$ Q# U7 q
    必须要精确控制实际的构件边界,包括提供接口和需求接口,必须能精确控制同其他构件间的静态依赖。: J  Q' `: D: }0 f0 z# U
    9.3.2 语境相关组合构建框架/ L  K4 W* z2 D8 Q# @! Y
    COM+ 增加了可租赁线程“套间”的概念,一次只允许一个线程入住,但是多个线程能顺序地入住该“套间”。
& r( _" D# M& [    相同事务域中的对象 共享一个单独的逻辑线程和一个单独共享事务资源集合,一旦线程从事务域中返回,事务要么提交要么终止。
0 r9 F' t) P9 L, V, E    COM+中,如果两个构件共享一组兼容的语境属性集,则它们可以被看作是处于同一域中。7 I6 k7 a8 `5 @6 P
    9.3.3 构件开发5 N2 ~7 y% d4 M' O2 D
    异步问题
. B. X$ ]9 c: x, \7 ]% W    事件分发机制负责接收这些事件对象,并把它们发送给对其感兴趣的其他构件实例。
2 j2 `# V" B& `1 m2 q! Z% j& b    多线程
) v0 R: c: }4 F! `; |    多线程主要关注于对程序执行进行更好的分配,获取性能最大化的手段却根本不依赖于多线程,而是尽量在第一时间内以最快的速度处理用户的请求。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 01:33 , Processed in 0.226316 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表