知识卡片

架构映射到详细设计常见的四类问题

普通读书笔记卡

内容

架构可以看作概念层的设计,详细设计是基于架构、把粒度变得更细的进一步设计——架构设计的合理与否直接关系着详细设计和最终产品的好坏。实践中架构映射到详细设计常出现四类问题。一是缺失重要架构视图:误以为架构设计完全是用例驱动,片面强调用例描述的功能需求,对非功能需求关注不够,既没有深入设计软件的运行架构(如并发/性能相关的执行结构),也没有深入设计开发架构(如程序包组织结构、关键抽象与框架的关系)——后果是遗漏了对团队某些角色的指导。二是浅尝辄止、不够深入:架构方案过于笼统、停留在概念性架构层面,没有提供明确的技术蓝图,本该在架构阶段做出的全局性设计决策,被开发人员在大规模开发阶段从局部视角自行确定——后果是把重大技术风险遗留到了后续开发中,公共服务模块也未能被识别出来。三是名不副实的分层架构:有些架构自称采用分层,却只是用”层”做职责划分的名义标签,没有真正规划层次之间的交互接口和交互机制——这种情况下”层”已经退化成笼统意义上的职责模块,分层带来的隔离价值根本没有兑现。四是过度设计:为了一些根本不会发生的变化投入复杂的设计,造成资源浪费、增加开发工作量或难度。对应的解决方法分别是:针对遗漏视图,补齐被忽略的架构视图设计;针对浅尝辄止,把设计决策细化到与技术相关的层面;针对名不副实的分层,明确各层之间的交互接口和交互机制;针对过度设计,警惕”是否真的会发生这种变化”,拿不准时可以请教对整个项目有更全局视角的项目经理来判断——这条建议本质上是承认”过度设计”往往连设计者本人都难以自我识别,需要引入外部视角校验。

参考来源

- 位置:《软件架构理论与实践》第8章《软件架构设计和实现》"8.2.2 从软件架构映射到详细设计"节之"1.映射时存在的问题和解决方法"(源文件:_epub-src/OEBPS/text00065.html) - 结论依据:原文列出四类常见问题("①缺失重要架构视图……②浅尝辄止、不够深入……③名不副实的分层架构……④架构设计时常常会在某些方面过度设计")及对应解决方法,直接支撑本卡片结论。 - 原始内容:有些架构自称采用了分层架构,却仅用分层来进行职责划分,而没有规划层次之间的交互接口和交互机制。在缺失交互接口和交互机制的分层架构中,"层"已退化成笼统意义上的职责模块。