软件架构如何实现

温故而知新,将《软件架构设计》一书一遍遍的读,看到深处方觉得更像是一本修身养性的书。我觉得不是每个项目都适合采用所有技术去做架构设计,本身有很

        温故而知新,将《软件架构设计》一书一遍遍的读,看到深处方觉得更像是一本修身养性的书。我觉得不是每个项目都适合采用所有技术去做架构设计,本身有很多都是作用重复,可以灵活选择的。软件架构设计首要是建立领域模型,领域模型是与客户和用户之间沟通的桥梁;其次是概念架构设计,概念架构设计同项目经理达成一致,确保后续项目进行过程中的纲领性文件;最后是逻辑视图和物理视图设计,这两个视图能在架构师、项目经理、开发人员之间确保软件的功能、质量和约束。

领域模型

       领域模型,就是将行业内的专有语言以可视化的方式抽象成一个或一套模型,不仅关注重要的领域概念,更重要的是能刻画领域概念之间的关系,一般采用类图和状态图表示,有时候还需要领域词汇表。类图表示领域模型中的静态信息,例如银行系统中的银行卡、存折等,状态图表示领域模型中的动态信息,例如储蓄账户的状态转换变化关系。领域词汇表对一些难以理解的专业术语进行文字表述,就像词典一样。

概念架构设计

       Dana Bredemeyer认为概念架构界定系统的高层组件、以及它们之间的关系。概念架构意在对系统进行适当分解、而不陷入细节。借此,可以与管理人员、市场人员、用户等非技术人员交流架构。概念架构规定了每个组件的非正式规约、以及架构图、但不涉及接口细节。温昱老师指出概念架构的三个特征:直指目标、设计思想、重大选择。在我看来,“直指目标”这个目标就是用户对我们下达的指标,例如跨平台、高性能、提供API支持第三方等;“设计思想”是对目标的详细阐述,采用什么方式能实现跨平台、高性能等,例如划分不同层次,各个层次分离;“重大选择”就是对设计思想中的重点进行策略分析,例如采用垂直划分系统而不是水平划分。

逻辑视图

        逻辑视图规定了软件系统由哪些逻辑元素组成以及这些逻辑元素之间的关系。具体而言它是由逻辑层、功能子系统、模块组成。主要进行模块划分和接口定义,然后用用例图描述模块中的基本功能,包图和组件图描述模块划分和接口定义。

物理视图

        物理架构用部署图表现,每个部署服务器中可以用组件描述,一般采用部署图和组件图描述硬件分布和软件部署。