关于软件架构

架构的定义

架构(Architecture)一词源于建筑领域,其本身就是建筑的意思,也有体系结构的意思。维基百科英文版里对Architecture的解释是:规划、设计和建造建筑物的过程及产物。鉴于软件工程与建筑工程一样是一项系统的工程性工作,在引入计算机领域后,软件架构就成为描述软件规划设计技术的专有名词。特别地,软件架构师一词在英文里和建筑师也是同一个词(Architect)。

1972年图灵奖获得者、荷兰计算机科学家Edsger Wybe Dijkstra(就是大名鼎鼎的Dijkstra最短路径算法的发明者)早在二十世纪六十年代就已经涉及软件架构这个概念了。到了二十世纪九十年代,Rational Software Corporation和Microsoft、卡内基梅隆大学和加州大学埃尔文分校在这个领域做了很多研究和实践,提出了软件架构中的很多概念。

维基百科里对软件架构的定义:

软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构师定义和设计软件的模块化、模块之间的交互、用户界面风格、对外接口方法、创新的设计特性,以及高层事物的对象操作、逻辑和流程。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通信。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或对象。在面向对象领域中,组件之间的连接通常用接口来实现。

Kruchten认为:

架构是对软件系统组织、结构部分和系统包含接口的选择,满足功能和性能需求的一系列架构元素的集合。软件架构设计与软件高层次结构的实现能够抽象、分解、组合等。

Bass等人认为:

系统或计算系统的软件架构是包含软件部分、外部可见特性部分,以及它们之间关系的系统结构。

McGovern则认为:

软件架构或系统由组成系统的结构的相互作用和软件结构的重要设计决定组成。设计决定应成功实现所期望支持的质量。设计决定为系统开发、支持和维护提供概念上的基础。

比较公认的软件架构定义是在2000年的ANSI/IEEE 1471标准《软件增强系统的体系结构描述推荐实施规程(Recommended Practice for Architectural Description for Software-Intensive Systems Description)》、2011年的ISO/IEC/IEEE 42010标准《系统和软件工程——架构描述(Systems and software engineering — Architecture description)》中定义的。

(1)架构过程:在系统整个生命周期中构思、定义、表达、记录、交流,验证合适实现,维护和改进架构的过程,也就是设计过程。

(2)架构:一个系统体现在其环境中的元素、关系的基本概念或属性,以及其设计和进化原则。

(3)架构描述:表达一个架构的工作产出物(通常指的是各种架构图和设计文档)。

(4)架构视图:通过系统的某些关注点的视角,表达一个系统的工作产出物(例如部署视图、开发视图等)。

(5)系统:包含一个或多个进程,硬件、软件、工具与可以满足需求的人的集合。

(6)环境:决定开发、操作、策略和其他影响系统的设置和条件。

总结:软件架构是一个用于指导系统实现的草图。这个草图越详细,对系统实现的指导意义就越重要,且贯穿于软件的整个生命周期

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是软件架构 架构服务于效率、质量、体验、性能等 架构优化的短期成本和长期收益的权衡 架构要与当前业务发展和团队...
    李传格阅读 1,612评论 0 0
  • 我承认自己因为想这个话题,今晚失眠了。反正也睡不着,手机码字把思考的东西分享出来。 项目前期 软件工程也像建筑工程...
    苏星河阅读 4,353评论 0 0
  • 这是中国游泳队覃海洋亚运会200米蛙泳赛前的话,深以为然。比赛结果是位列两位日本选手之后获得季军,提高最好成绩1秒...
    铁腿阅读 1,150评论 0 0
  • 炮声响彻云霄天 恭迎灶爷返家园 善念善事须奉行 神灵护佑家才安
    读书不负我魏霞阅读 1,332评论 1 5
  • 今日是母亲节,而我起了个大早,去听幼儿教育的讲座,老师是北京来的,据介绍她研究幼儿教师6年之久,讲课内容丰富、紧促...
    井新艳阅读 695评论 0 1