假期阅读笔记一
架构之美——论架构(一)
听到“架构”一词时,是不是很多人都和我有一样感受:“架构是什么东西?”。这个疑问充分暴露了我们的知识面很匮乏,说明我们还需要自学很多知识或技术。那节课结束之后,我上网搜了很多资料,了解到:架构,又叫做软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构,现在已有多种架构描述语言,如Wright(由卡内基梅隆大学开发),Acme(由卡内基梅隆大学开发),C2(由UCI开发),Darwin(由伦敦帝国学院开发)。ADL的基本构成包括组件、连接器和配置。这是百度给出的答案,很抽象,所以在假期我开启了阅读之旅。
通过阅读《构架之美》的开篇文章构架概论,我了解了几个重要概念,比如什么是网络架构?网络架构就是构成一个网络的通信设备、协议和传输链表路,以及他们的组织方式。再比如什么是软件构架?如果认为“架构”是一个简单的实体,能够用一份文档或一张图纸来描述,那就错了。架构师必须做出许多设计决定。要想有用,这些决定必须用文档记录下来,这样就能够进行复审、讨论、修改和批准,然后作为后续决定和构建时的约束。对于软件系统,这些设计决定包括行为上的和结构上的。我相信没有认真精读过《构架之美》的人是不会系统的了解这些概念,也就不会真正理解这个专业名词的含义了。
在最后一节课的时候,老师给我们留了一个自学MVC、SSH架构的作业,最重要的是老师说了一句:每年都会有很多新的系统架构出现。那么究竟什么是好的构架呢?《构架之美》认为好的系统架构展示了架构完整性,也就是说,它来自于一组设计规则,这组规则有助于减少复杂性,并可以用于指导详细设计和系统验证。设计规则可能包括特定的抽象,这些抽象总是以同样的方式使用,诸如虚拟设备等,这些规则可能表现为一种模式,如管道和过滤器。在最理想的情况下,存在一些用于验证的规则,如“在设备失效时,所有某一类的虚拟设备都可以在任何其他同类的虚拟设备代替”,或“所有竞争统一资源的进程必须具有相同的调度优先级”。而我认为好的构建应该是有很好的可靠性、安全性、可扩展性、可定制化、可扩展性、可维护性、客户体验、市场时机。
软件架构常常表现为分层的层次结构,这种层次结构将几种不同的的结构放在一张图中。根据关注的角度不同,可以将架构分成三种:逻辑架构、物理架构、系统架构。其实对架构比较了解的人都知道,不论从哪一个角度上看,都可以看到架构的两要素:元件划分和设计决定。一个软件系统中的元件首先是逻辑元件,这些逻辑元件如何放到硬件上,以及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等做出贡献,是非常重要的信息。另外,进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出,就很难更改的。
最后,将我今天读到的一句我最喜欢并且最精辟的话分享给大家:架构是一个过程,而非一个结果。