软件设计:从专业到卓越
张刚
资深技术专家
374 人已学习
立即订阅
软件设计:从专业到卓越
15
15
1.0x
00:00/00:00
登录|注册

第 5 章 设计分解和责任分配

软件设计的本质是设计分解和责任分配,也就是通常所说的模块化。我们已经在 2.4 节介绍了模块化设计最重要的原则:高内聚和低耦合。但是,仅仅知道原则是不够的。高质量的软件设计,源于可实际落地的、逻辑清晰的设计方法。
本章聚焦如何通过有效和高效的思考,设计出高内聚和低耦合的软件。具体而言,它包含三个层次的内容。
设计的基本概念。元素、责任和协作是最基本的设计语言,分形是最基本的设计策略,UML 有助于清晰地表达设计。
设计的基本原则。好的设计有规律可循。人们已经总结了一系列使软件设计达到高内聚和低耦合的有效策略。例如,软件设计的单一职责原则、开放 - 封闭原则都是在实践中行之有效的提升设计质量的策略。
设计模式和范本。在软件设计中遇到的问题大多数会反复出现,没有必要每一次都从零开始思考。基于已有的经验(架构模式、设计模式),可以有效提高思考的层次和效率。

5.1 通过分而治之管理复杂性

在软件开发中,现实世界的复杂性和人类有限的认知能力是一组基本矛盾。为了能管理和控制复杂性,我们需要把“大”的事物划分为“小”的事物,这就是分而治之。
分而治之是控制复杂性的有效手段。

5.1.1 组织的复杂性类比

假如你空降到一家规模 500 人的企业担任总经理,此时面对一个新组织,你要怎么做,才能快速了解这个组织的各项情况呢?或许最快捷的办法,就是找来企业的组织结构图,并且请相关的同事结合业务流程讲如下三个问题。
包含哪些部门?
这些部门的职责分别是什么?
部门之间在某个业务上如何协作?
这是在组织管理中,面对复杂问题时,基于分而治之的一种思考模式。在软件设计和一切复杂的场景中,“元素”“责任”和“协作”都是非常有效的思考策略和组织策略。这里以 ISO/IEC/IEEE 42010《系统和软件工程 - 架构描述》[24]中关于架构的定义为例。
架构是系统在其环境中的基本概念或属性,体现为元素、关系以及设计和演进的原则。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了软件设计中的设计分解和责任分配的重要性,以及如何通过分而治之的管理复杂性。文章首先介绍了设计的基本概念,包括元素、责任和协作,以及设计的基本原则和设计模式和范本的应用。接着,详细讨论了分而治之的思考模式在软件设计中的应用,以及软件设计的自相似性和分形结构。最后,介绍了使用 UML 表达软件设计的分解结果的方法。通过分析组织的复杂性类比和软件设计的自相似性,读者可以更好地理解软件设计中的分解和责任分配的重要性,以及如何通过分而治之的管理复杂性。文章内容深入浅出,逻辑清晰,对软件设计的重要概念和方法进行了全面而深入的介绍,适合软件开发人员和相关领域的技术人员阅读。文章还讨论了质量属性模型和架构风格与模式的应用,强调了正确使用语言特性的重要性,为读者提供了丰富的设计经验和指导。文章通过具体的案例和代码示例,阐述了用委托的方式实现复用和面向对象的职责视角,以及关注点分离的原则和判断标准,为读者提供了实用的软件设计思路和方法。文章还介绍了开放 - 封闭原则和设计模式的价值,以及如何用设计模式指导软件设计,强调了关注点分离和抽象的重要性。总之,本文为读者提供了全面而深入的软件设计理念和方法,有助于读者更好地理解和应用于实际工作中。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件设计:从专业到卓越》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部