几种常见的软件体系结构及特点分析(简述5种常见的软件体系结构风格)

20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,然而随着软件系统规模越来越大,对总体的系统结构设计和规格说明变得异常重要。随着软件危机程度的加剧,软件体系结构(software)这一概念应运而生。软件体系结构着眼于软件系统的全局组织形式,在较高层次上把握系统各部分之间的内在联系,将软件开发的焦点从成百上千的代码上转移到粒度较大的体系结构元素及其交互的设计上。与传统软件技术相比,软件体系结构理论的提出不仅有利于解决软件系统日益增加的规模和复杂度的问题,有利于构件的重用,也有利于软件生产率的提高。面向方面软件开发(AOSD)认为系统是由核心关注点(cornconcern)和横切关注点(cross-cuttingconcern)有机地交织在一起而形成的。核心关注点是软件要实现的主要功能和目标,横切关注点是那些与核心关注点之间有横切作用的关注点,如系统日志、事务处理和权限验证等。AOSD通过分离系统的横切关注点和核心关注点,使得系统的设计和维护变得容易很多。

Extremara大学的Navasa等人〔1〕在2002年提出了将面向方面软件开发技术引入到软件体系结构的设计中,称之为面向方面软件体系结构(aspectorientedsoftware,AO-SA),这样能够结合两者的优点,但是并没有给出构建面向方面软件体系结构的详细方法。

尽管目前对于面向方面软件体系结构这个概念尚未形成统一的认识,但是一般认为面向方面软件体系结构在传统软件体系结构基础上增加了方面构件(aspectcomponent)这一新的构成单元,通过方面构件来封装系统的横切关注点。目前国内外对于面向方面软件体系模型的研究还相对较少,对它的构成单元模型的研究更少,通常只关注方面构件这一构成单元。方面构件最早是由Lieberherr等人〔2〕提出的,它是在自适应可插拔构件(adaptiveplugandplaycomponent,APPC)基础之上通过引入面向方面编程(AOP)思想扩展一个可更改的接口而形成的,但它关于请求接口和服务接口的定义很模糊,未能给出一个清晰的方面构件模型。Pawlak等人〔3〕提出了一个面向方面的框架,该框架主要包含了一个方面构件模型———Java方面构件(Javaaspectcomponent,JAC),但该方面构件模型仅包含了切点(pointcut),并把AOP中装备(advice)集成到了切点的表达式中,它主要从实现的角度进行了阐述,并没有给出详细的方面构件模型。本文没有只关注面向方面软件体系结构中方面构件这一构成单元模型,还详细分析了它的另外两个构成单元,即构件和连接件,因为面向方面软件体系结构各部分之间是相互关联的。

1面向方面软件体系结构相关概念

面向方面软件体系结构涉及诸多概念,以下将分别介绍。软件体系结构在软件工程领域有着广泛的影响,但当前仍未形成一个统一的、标准的定义。目前国内外普遍认可的看法是软件体系结构包含构件、连接件和约束〔4〕。其中约束描述了体系结构配置和拓扑的要求,确定了体系结构的构件与连接件的连接关系。这样就可以把软件体系结构写成

软件体系结构(software)=构件(components)

连接件(connectors)约束(constraints)

构件是软件体系结构的基本元素之一。一般认为,构件是指具有一定功能、可明确辨识的软件单位,并且具备语义完整、语法正确、有可重用价值的特点,然而目前对于构件的具体结构及构成并没有一个统一的标准〔5〕,而且一些主要的构件技术也没有使用相同的构件类型。另外,当前被广泛接受的构件定义并不包含具体的软件构件模型(softwarecomponentmodel)。例如,Szyperski等人〔6〕给出了软件构件一个很有名的定义:软件构件是一个仅带特定契约接口和显式语境依赖的结构单位,它可以独立部署,易于第三方整合。但是关于软件构件模型有一个被普遍接受的观点是:软件构件是一个具有服务提供和服务请求功能的软件单元〔7〕。

连接件是软件体系结构另一个基本的构成元素,是用来建立构件间交互以及支配这些交互规则的构造模块。连接件最先是由Shaw〔8〕提出来的,她建议把连接件作为软件体系结构中第一类实体,用来表示普通构件之间的交互关系。目前对于连接件尚未形成统一的认识,尽管在软件体系结构中强调了连接件存在的必要性,但是关于连接件模型的研究还很少,连接件的实际应用还不成熟。

面向方面软件体系结构在传统软件体系结构的基础上增加了方面构件单元。通常认为,方面构件是封装了系统横切关注点的一类特殊的构件。目前关于方面构件模型的研究还处于起步阶段。

2面向方面软件体系结构模型

由于传统软件体系结构模型包含构件、连接件和约束,而面向方面软件体系结构是在传统软件体系结构的基础之上扩展了方面构件,所以面向方面软件体系模型结构包含构件、连接件、方面构件和约束。其中约束描述了面向方面体系结构配置和拓扑的要求,确定了体系结构的构件、连接件和方面构件之间的连接关系,而构件、连接件、方面构件是它的三个基本的构成单元。以下对这三个构成单元的模型进行详细的设计。



  • 杞欢鏈夊摢浜浣撶郴缁撴瀯
    绛旓細杞欢浣撶郴缁撴瀯涓昏鏈変互涓嬪嚑绉嶏細涓銆佸崟浣撳簲鐢ㄤ綋绯荤粨鏋 杩欐槸鏈绠鍗曠殑杞欢浣撶郴缁撴瀯褰㈠紡锛屾暣涓簲鐢ㄧ▼搴忛兘鏋勫缓鍦ㄤ竴涓崟鐙殑杩涚▼涓傛墍鏈夋ā鍧楅兘鐩存帴浜や簰锛屼笉闇瑕佸閮ㄧ郴缁熸敮鎸併傜敱浜庢暣涓簲鐢ㄥ湪涓涓湇鍔℃垨瀹炰緥涓繍琛岋紝鍥犳閮ㄧ讲鍜岀淮鎶ょ浉瀵圭畝鍗曘備絾闅忕潃搴旂敤澶嶆潅鎬х殑澧炲姞锛岃繖绉嶇粨鏋勭殑鍙墿灞曟у拰鎬ц兘鍙兘浼氬彈鍒伴檺鍒躲備簩銆佸垎...
  • 鍑犵甯歌鐨勮蒋浠朵綋绯荤粨鏋勫強鐗圭偣鍒嗘瀽(绠杩5绉嶅父瑙佺殑杞欢浣撶郴缁撴瀯椋庢牸)
    绛旓細闈㈠悜鏂归潰杞欢浣撶郴缁撴瀯鍦ㄤ紶缁熻蒋浠朵綋绯荤粨鏋勭殑鍩虹涓婂鍔犱簡鏂归潰鏋勪欢鍗曞厓銆傞氬父璁や负锛屾柟闈㈡瀯浠舵槸灏佽浜嗙郴缁熸í鍒囧叧娉ㄧ偣鐨勪竴绫荤壒娈婄殑鏋勪欢銆傜洰鍓嶅叧浜庢柟闈㈡瀯浠舵ā鍨嬬殑鐮旂┒杩樺浜庤捣姝ラ樁娈点2闈㈠悜鏂归潰杞欢浣撶郴缁撴瀯妯″瀷 鐢变簬浼犵粺杞欢浣撶郴缁撴瀯妯″瀷鍖呭惈鏋勪欢銆佽繛鎺ヤ欢鍜岀害鏉燂紝鑰岄潰鍚戞柟闈㈣蒋浠朵綋绯荤粨鏋勬槸鍦ㄤ紶缁熻蒋浠朵綋绯荤粨鏋勭殑鍩虹涔嬩笂鎵...
  • 杞欢浣撶郴缁撴瀯鏈夊摢浜
    绛旓細杞欢浣撶郴缁撴瀯鏈変互涓嬪嚑绉嶏細1. 瀹㈡埛绔-鏈嶅姟鍣ㄦ灦鏋勶紙Client-Server Architecture锛夎鏋舵瀯灏嗚蒋浠剁郴缁熷垎涓哄鎴风鍜屾湇鍔″櫒绔袱涓儴鍒銆傚鎴风鏄敤鎴蜂氦浜掔殑鐣岄潰锛岃礋璐f樉绀轰俊鎭拰鎺ユ敹鐢ㄦ埛杈撳叆銆傛湇鍔″櫒绔礋璐e鐞嗘暟鎹拰涓氬姟閫昏緫锛屼互鍙婁笌鏁版嵁搴撴垨鍏朵粬鏈嶅姟鐨勪氦浜掋傝繖绉嶆灦鏋勯傜敤浜庨渶瑕侀泦涓鐞嗘暟鎹拰涓氬姟閫昏緫鐨勫簲鐢ㄣ2. ...
  • 鍑犵甯歌鐨勮蒋浠舵灦鏋鏄粈涔?
    绛旓細璇ユā寮忎篃鍙 MVC 妯″紡锛屽垝鍒嗕氦浜掔▼搴忎负3涓閮ㄥ垎锛氭ā鍨嬧斺斿寘鍚牳蹇冨姛鑳藉拰鏁版嵁锛岃鍥锯斺旀樉绀轰俊鎭粰鐢ㄦ埛锛堝涓鍥惧彲琚畾涔夛級锛屾帶鍒跺櫒鈥斺斿鐞嗙敤鎴疯緭鍏ャ傚畠閫氳繃鍒嗗壊鐢ㄦ埛淇℃伅鐨勫唴閮ㄩ檲杩板拰鍛堢幇銆佹帴鍙楁柟寮忔潵瀹炵幇锛岃В鑰︾粍浠跺苟鍏佽楂樻晥鐨勪唬鐮佸鐢ㄣ傚簲鐢ㄥ満鏅 涓绘祦缂栫▼璇█鐨勪竾缁寸綉绋嬪簭鏋舵瀯缃戦〉妗嗘灦锛屾瘮濡 Django 鍜 Ra...
  • 杞欢鐨绯荤粺鏋舵瀯鍜寮鍙戝钩鍙伴兘鏈夊摢浜?鍏蜂綋閮芥湁鍝鍑犵鍛?
    绛旓細锛堜竴锛銆佸垎灞傛灦鏋 鍒嗗眰鏋舵瀯锛坙ayered architecture锛夋槸鏈甯歌鐨勮蒋浠舵灦鏋勶紝涔熸槸浜嬪疄涓婄殑鏍囧噯鏋舵瀯銆傚鏋滀綘涓嶇煡閬撹鐢ㄤ粈涔堟灦鏋勶紝閭e氨鐢ㄥ畠銆傝繖绉嶆灦鏋勫皢杞欢鍒嗘垚鑻ュ共涓按骞冲眰锛屾瘡涓灞傞兘鏈夋竻鏅扮殑瑙掕壊鍜屽垎宸ワ紝涓嶉渶瑕佺煡閬撳叾浠栧眰鐨勭粏鑺傘傚眰涓庡眰涔嬮棿閫氳繃鎺ュ彛閫氫俊銆傝櫧鐒舵病鏈夋槑纭害瀹氾紝杞欢涓瀹氳鍒嗘垚澶氬皯灞傦紝浣嗘槸鍥涘眰鐨...
  • 鍥捐В鍑犵甯歌鐨勮蒋浠舵灦鏋妯″紡
    绛旓細鏂规硶/姝ラ鍒嗗眰妯″紡 杩欑妯″紡涔熺О涓哄灞浣撶郴鏋舵瀯妯″紡銆傚畠鍙互鐢ㄦ潵鏋勯犲彲浠ュ垎瑙d负瀛愪换鍔$粍鐨勭▼搴忥紝姣忎釜瀛愪换鍔¢兘澶勪簬涓涓鐗瑰畾鐨勬娊璞$骇鍒傛瘡涓眰閮戒负涓嬩竴涓彁渚涙洿楂樺眰娆℃湇鍔°備竴鑸俊鎭郴缁熶腑鏈甯歌鐨鏄涓嬫墍鍒楃殑4灞傘傝〃绀哄眰(涔熺О涓篣I灞)搴旂敤灞(涔熺О涓烘湇鍔″眰)涓氬姟閫昏緫灞(涔熺О涓洪鍩熷眰)鏁版嵁璁块棶灞(涔熺О...
  • 璇风畝杩板簲鐢ㄧ▼搴浣撶郴缁撴瀯涓夌绫诲瀷鐨勭壒鐐
    绛旓細C/S缁撴瀯,鍗矯lient/Server(瀹㈡埛鏈/鏈嶅姟鍣)缁撴瀯 B/S缁撴瀯,鍗矪rowser/Server(娴忚鍣/鏈嶅姟鍣)缁撴瀯 浼樼偣鏄彧瑕佹湁娴忚鍣ㄨ兘澶熻仈缃戝氨鍙互浣跨敤鏈嶅姟绔▼搴忋傜幇鍦ㄥ緢澶杞欢寮鍙戦兘鏄噰鐢╞/s妯″紡鐨勩
  • 杞欢绯荤粺鐨勫垎灞缁撴瀯
    绛旓細渚嬪寮婧愮殑Hadoop鐢熸浣撶郴锛孒ive銆丼park銆丼torm銆丗link绛夈3銆佺涓夊眰锛涗笟鍔$郴缁鏋舵瀯(1)閫氱敤杞欢绯荤粺銆備緥濡傛渶甯哥敤鐨鍔炲叕杞欢銆佹祻瑙堝櫒銆佹挱鏀惧櫒绛夈(2)绂荤嚎涓氬姟绯荤粺銆備緥濡傚悇绉嶅熀浜庡ぇ鏁版嵁鐨凚I鍒嗘瀽銆佹暟鎹寲鎺樸佹姤琛ㄤ笌鍙鍖栫瓑銆(3)澶у瀷鍦ㄧ嚎涓氬姟绯荤粺銆備緥濡傛悳绱佹帹鑽愩佸嵆鏃堕氫俊銆佺數鍟嗐佹父鎴忋佸箍鍛娿佷紒涓欵RP鎴 CRM...
  • 绠杩癇/S鍜C/S浣撶郴缁撴瀯鐗圭偣
    绛旓細绠$悊鍜岀淮鎶ゆ椂瀹㈡埛绔拰鏈嶅姟鍣ㄧ閮介渶瑕佹洿鏀,缁存姢楹荤儲銆備緥濡, QQ 绛夊氨灞炰簬杩欑妯″紡銆侭/S (Browser/Server) 妯″紡: 娴忚鍣 / 鏈嶅姟鍣ㄦā寮 銆傚彧闇瑕佸湪鏈嶅姟鍣ㄧ瀹夎杞欢,瀹㈡埛绔彧闇瑕佷娇鐢ㄦ祻瑙堝櫒璁块棶鏈嶅姟鍣ㄥ嵆鍙,鍙互鏂逛究鍦板疄鐜颁俊鎭佽祫婧愮殑浜や簰鍜屽叡浜,绠$悊鍜岀淮鎶よ蒋浠舵瘮杈冩柟渚,鍙渶瑕佺鐞嗗拰缁存姢鏈嶅姟鍣ㄧ銆
  • 鍒椾妇鍑鍑犵鍏稿瀷鐨勮蒋浠朵綋绯荤粨鏋椋庢牸銆
    绛旓細銆愮瓟妗堛戯細(1)绠¢亾涓庤繃婊ゅ櫒椋庢牸(Pipe and Filter Style)(2)瀹㈡埛-鏈嶅姟鍣ㄩ鏍(Client-server Style)(3)闈㈠悜瀵硅薄椋庢牸(Object-oriented Style)(4)闅愬紡璋冪敤椋庢牸(Implicit Invocation Style)(5)浠撳簱椋庢牸(Repository Style)(6)杩涚▼鎺у埗椋庢牸(Process control Style)(7)瑙i噴鍣ㄦā鍨(Interpreter Model)(8)榛戞澘...
  • 扩展阅读:体系架构图 ... 十大常用软件架构 ... 质量管理三大体系 ... 五种常见的软件架构 ... 软件体系架构风格 ... 软件体系结构风格举例 ... 中国的权力体系架构图 ... 人员架构图模板ppt ... 软件技术架构图 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网