知识卡片
运行架构视图与开发架构视图的必要性
内容
[[逻辑架构与物理架构的定义与设计任务]]这一对视图并不足以覆盖大型复杂系统的所有关注面——架构师必须具备”忘却”具体技术细节的能力,但同时又不能因为忘却而遗漏关键的设计维度,这就要求引入更多视图分别对应不同类别的质量需求。为了满足性能、持续可用性等运行期质量需求,架构师必须深入研究软件系统运行期间的实际情况,权衡轻重缓急,制定并行、分时、排队、缓存、批处理等具体设计决策——这属于运行架构视图的职责。为了满足可扩展性、可重用性等开发期质量需求,架构师则要深入研究软件开发期间的代码文件组织方式、变化隔离手段、框架使用情况,制定相应设计决策——这属于开发架构视图的职责。这两类视图对应的正是[[运行期质量属性与开发期质量属性的区分]]这一区分在架构设计手段上的落地:运行架构视图专门服务于”客户和用户在运行时能感知到的质量”,开发架构视图专门服务于”开发人员在写代码、扩展功能时能感知到的质量”。综合逻辑、开发、物理、运行、数据这五个视图,就构成了本书推荐的5视图方法。这条原则的现实依据是:越复杂的系统越需要从多个方面进行架构设计,才能把问题研究和表达清楚——如果选择视图的工作没做好、或者以牺牲其他视图为代价只关注某一个视图,就会冒着掩盖问题、延误发现那些”最终会导致失败的问题”的风险,视图选择本身就是一种风险管理手段,而不只是文档组织方式。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第4章《架构设计过程》"【原则3】设计好架构的各个方面"节(源文件:_epub-src/OEBPS/text00007.html)
- 结论依据:原文说明"为了满足性能、持续可用性等方面的需求,架构师必须深入研究软件系统运行期间的情况……而要满足可扩展性、可重用性等方面的需求,则要求架构师深入研究软件系统开发期间的代码文件组织……本书推荐5视图方法",并引用Booch"如果选择视图的工作没有做好……就会冒掩盖问题以及延误解决问题的风险",直接支撑本卡片结论。
- 原始内容:而要满足可扩展性、可重用性等方面的需求,则要求架构师深入研究软件系统开发期间的代码文件组织、变化隔离和框架使用等情况,制定相应的设计决策。(开发架构视图)……本书推荐5视图方法:逻辑视图、开发视图、物理视图、运行视图、数据视图。