除了在大脑里的模型,为了交流,用于交流模型是需要一定载体的。
一般而言,架构设计是值得文档化的。问题在于架构设计说些什么?
之前我写过个文章,贴在这里,供讨论拍砖。
架构设计的文档是架构设计的成果物。其中所要展现的元素就是架构设计的成果。从这个角度,也许可以简化下架构设计。
按照Just enough的原则,对于架构设计的元素,最有必要的给5颗星,其次4,3,2,没有必要的、可有可无的给1颗星。
支持的操作系统,比如 win7, Redhat9 ☆☆☆☆☆
支持的数据库 比如Oracle, DB2, Mysql ☆☆☆☆☆
支持的浏览器(如果是有Brower访问的)☆☆☆☆☆
依赖的运行时环境 --比如Java, Silverlight ☆☆☆☆☆
依赖的中间件--- 比如Java容器,tomcat, websphere, Tuxedo ☆☆☆☆☆
依赖的核心构件或者Frame, 比如struts, hibernate, 自定义的构件 ☆☆☆☆☆
层次划分,比如 典型三层架构、多层架构 ☆☆☆☆
识别进程,画部署图 ☆☆☆☆☆
划分组件,画组件图 ☆☆☆☆☆
开发语言 比如c#, java, c++ ☆☆☆☆☆
开发所用的工具 比如IDE,报表设计器 ☆☆☆☆
重要组件间的接口 ☆☆☆☆
核心类的设计 ☆☆☆
数据库设计 ☆☆☆ 存储数据和检索有其特点。在表达方面有其自身的特点。如数据集的提取,运算等, 要注意性能,完整性等。数据库设计也可做渐进设计
核心流程的说明 ☆☆
部分核心类的类图 ☆
特别的性能要求带来的考虑 ☆☆☆☆
特别的可恢复性要求带来的考虑 ☆☆☆
特别的信息安全要求带来的考虑 ☆☆☆
说明:
至于操作系统,数据库, 运行时环境等等可能不是由架构师决定,但如果没有其他人决定,或者领导要求一个初步方案时,架构师必须拿出意见。
就算别人已经决定了操作系统、数据库、 运行时环境等等,那么这些是下一步工作的前提和约束,也值得在架构设计文档中记述。
性能和安全的要求不是架构师定的,但如何保证实现性能和安全的要求,这是架构师必须考虑的问题。如果没有特别的要求,可以不考虑。
电信公司的应用和20人小公司的应用就算功能完全一样,初始设计就已经不一样了。
如果有特别的要求,比如交易所要每秒交易8万笔,对于干系人来说,这是最关心的,最核心的。
从数据库管理人员的角度来说, 数据库的设计说明是必不可少的,企业开发要特别关注于数据库 --- 对数据库管理人员来说,没错。但对于架构师在初期恐怕还不是一定必需的,可以给3颗星。