架构设计是从需求分析到软件实现的桥梁,也是软件质量的关键。编写架构设计规范是开发人员向架构师转型的必经过程。在一个架构师的整个成长过程中,必须经历架构设计规范的编写、架构设计规范的审核、根据业务需求分析设计系统架构三个过程。作为一名架构师,我想尝试根据这三个流程对不同能力的需求,写一连串的文章,包括《架构设计三部曲之如何写架构设计说明书》、《架构设计三部曲之如何评审架构设计说明书》和?,可以帮助我理清思绪,重新审视。-检查架构设计。其次,也可以把自己的经验分享给大家,听取大家的意见,共同进步。本文属于该系列的第一篇文章。那么如何编写架构设计规范呢?手册应包括哪些内容?我们知道,架构设计规范就是对系统架构的具体内容进行说明。根据我之前的文章《我的架构观-架构未来的发展》,我们了解到架构的本质就是呈现三大能力:系统如何为终端用户提供支撑能力,如何为外部系统提供交互能力,如何为终端用户提供处理能力企业数据。因此,从这个角度来看,架构设计规范的章节设置和章节内容安排应该能够清楚地说明系统架构是如何呈现这三种能力的。下面我们一一分析:系统如何为终端用户提供支撑能力:这一点是看系统本身的能力,即系统应该具备哪些功能,功能之间如何配合来支撑最终用户的使用。它划分了若干个功能模块或子系统,以及各个模块或子系统之间的内部接口关系。当然,还有一个问题需要考虑。在纵向维度上,随着架构设计理念的不断发展,逻辑架构模型已经从最初的表现-数据两层模型转变为表现-逻辑-数据(所谓的MVC)三层模型,即使是显示-调用接口-逻辑-数据接口-数据五层模型,不同的层级表明了系统内部设计的复杂程度,所以在实际情况中也需要加入这种分层设计逻辑架构设计。尤其对于powser/Server架构模式的MIS系统,这一层更为常见。此外,与机器相比,用户对系统提供的能力有个人偏好。他们不仅需要系统提供支持,还需要提供更加稳定、方便、灵活、快捷的服务。这就需要在架构设计规范中加入所谓的非功能性设计,即需要描述系统的性能、高可用性、可扩展性、可维护性、安全性、可移植性等。系统如何为外部系统提供交互能力:这是把系统作为一个完整的整体,说明它是如何调用外部系统的,外部系统为它提供了哪些开放的接口,它为外部系统提供了哪些外部接口和能力,同时,在这个相互调用的关系中,它在整个IT架构中所处的位置,这实际上是在讲系统的整体架构。另外,如果我们把操作系统和硬件服务器看成一类特殊的外部系统,还需要说明系统是如何利用硬件服务器提供基于操作系统的计算、存储、网络等能力的,以及系统分裂成不同的系统。部署在服务器上的部分,其实就是指部署架构。如何为企业数据提供处理能力:信息系统的原始驱动力是人们需要利用计算机强大的计算能力来辅助处理大量数据,从而形成可理解的信息,最终形成可掌握的知识.因此,数据处理是系统的根本目的,非常重要。在架构设计规范中,需要单独描述系统处理数据的能力,也就是我们所说的系统数据架构。这还是可以从外部和内部的角度来看。对外,需要说明本系统处理的数据在整个企业数据流中的位置,以及与相关上下游数据的关系。上游外部系统捕获了哪些数据?需要为数据的下游系统提供哪些数据;对内需要说明系统根据业务需求设计了哪些关键数据表,它们之间有什么样的主外键关系,是否需要从外部导入数据对系统进行数据初始化等。.当然还有对数据管理的描述,包括如何做数据冗余设计、备份机制、数据安全管理机制等等。好了,分析完这三个能力,我们差不多就找到架构应该包含的内容了设计规范,包括整体架构、逻辑架构、数据架构、部署架构、内外接口、非功能设计等。作为架构设计的理论研究,这些就足够了。但在现实中,我们编写架构设计规范毕竟是为了指导我们后续的系统开发,是需要执行的。那么,在实现过程中会涉及到哪些技术呢?有哪些关键技术?使用了哪些成熟或开源的技术组件?有哪些以前的技术成果得到了重复利用?等等,还包括对技术风险的考虑和防范措施。这些都是技术架构的内容。综上所述,我们可以得到一个完整的架构设计规范的结构和内容。通用章节应该是这样的:文档概述:包括项目背景、项目目标、文档版本信息、目标读者、参考文档、术语等通用文档都会有章节;总体架构:主要从整个IT层描述系统的位置,以及与周边相关系统的调用关系;逻辑架构:系统内部功能模块的划分及各模块的功能介绍、相互关系的表达;接口设计:包括系统之间的接口设计和内部功能模块之间的接口设计;数据架构:本系统与上下游系统的数据流关系、本系统的关键数据表设计、数据管理策略等;技术架构:实现这个架构需要哪些技术能力、复用能力和风险;部署架构:如何部署系统,对网络拓扑有什么要求,对硬件服务器有什么要求,有多少平台,服务器参数是否需要优化;非功能性设计:性能、高可用性、可扩展性、可维护性、安全性、可移植性等。其他解释:如特殊约束、风险考虑、进度要求、政策限制、环境影响等;以上就是我认为一个比较完整的架构设计规范应该包括的内容。
