知识卡片
开发架构的三个核心设计任务
内容
开发架构关注实际的程序单元——不仅包括要编写的源程序,也包括可以直接使用的第三方SDK和现成框架类库,还包括目标代码文件的个数与形态(exe文件、可烧写格式的文件、还是war包等)。开发架构的设计对开发期质量属性(可扩展性、可重用性、可移植性、易理解性、易测试性)有重大影响,如果程序员总是不能从架构中看到这层内容,就会认为架构是一种”高来高去”的空谈,自然不会有积极配合的态度。核心设计任务有三个。各种开发技术选型:一是选定开发语言(后端用C/C++/Java,前端用PHP/JSP/ASP,还有Unix平台的Shell脚本、Oracle平台的PL/SQL这类更特殊的语言选型);二是选择开发工具(gcc还是VC++、Eclipse还是JBuilder);三是选择程序库和框架(网络通信用什么库、串口支持用什么库、UI Framework和ORM Framework选哪种)。程序文件划分到具体工程(Project):这项任务是必需的,但很不幸很多架构师没有做——这里的”Project”不是项目经理管的”项目”,而是指IDE等开发环境支持的”Develop Studio Project”这类概念,缺少这一步的架构设计,正是程序员抱怨架构”高来高去”的常见原因之一。程序文件之间的编译依赖关系:随之而来,应该定义出每个工程源码组织的高层目录结构,并明确程序文件、Library文件、目标程序文件之间的编译依赖关系。开发架构和逻辑架构之间存在映射关系——逻辑架构中的逻辑层一般会映射到开发架构中的多个程序包,开发架构中的一个源码文件可以包含逻辑架构中的一到多个类,理解这层映射能帮助架构师检查逻辑设计是否真的能落地到具体的工程组织上。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第10章《细化架构设计》"10.3.2 开发架构=技术选型+文件划分+编译关系"节(源文件:_epub-src/OEBPS/text00013.html)
- 结论依据:原文说明开发架构核心设计任务是"各种开发技术选型、程序文件划分到具体工程(Project)、程序文件之间的编译依赖关系",并逐一展开三项任务的具体内容和常见问题("这项设计任务是必需的。但很不幸,很多架构师没有这么做。难怪程序员抱怨他'高来高去'"),直接支撑本卡片结论。
- 原始内容:开发架构设计包含的核心设计任务是:各种开发技术选型、程序文件划分到具体工程(Project)、程序文件之间的编译依赖关系……此处的"Project"不是指Project Manager管的"项目",而是指IDE等开发环境所支持的"Develop Studio Project"类似的概念。