[架构之路-102]:《软件架构设计:程序员向架构师转型必备》-12-粗粒度“软件架构的功能模块”划分,架构师必备基础技能

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2023-02-24     576

关键词:

第12章 粗粒度“功能模块”划分

备注:

(1)功能划分的基本原则:

  • 高内聚、低耦合

  • 每个子系统、子模块可以独立设计

(2)划分方法

  • 功能化

  • 水平切分

  • 垂直切分

  • 分层

  • 接口

12.1 功能树

12.1.1 什么是功能树

  • 同一层次的功能之间具有互补性、互斥性,不能相互包含或重叠。

  • 功能树是一种逐步功能分解的展现。

12.1.2 功能分解(需求)≠结构分解(架构)

备注:

功能树:是用于描述需求的,是由需求工程师完成。

功能模块结构图:是用于描述软件 架构的,是由架构师完成的。

12.2 借助功能树(需求),划分粗粒度“功能模块”(架构)

12.2.1 核心原理:从“功能组”到“功能模块”

从需求层面的“功能组”到软件架构的“功能模块”,之间是有一个鸿沟,这个鸿沟就是业务领域的问题域到计算机领域的设计域。

把多个相似的、相关联的功能,组合成一个功能组,对功能组进行抽象、凝聚、汇总,就得到“功能模块”。

需求层面的“功能组”可以通过功能树表达,也可以通过用例图表达如下图所示

在上图中,相类似的功能需求组,整合成一个架构上的功能模块,实现软件架构的高内聚、低耦合。

具体实施步骤如下:

12.2.2 第1步:获得功能树

12.2.3 第2步:评审功能树

功能需求的本质:为完成客户或用户的某一个目标,很显然,在上图中,金额计算和按键处理,都不属于功能需求,都不属于用户的某个目标,它属于实现步骤,是一个某个功能实现众多步骤的一部分。

12.2.4 第3步:粗粒度“功能模块”划分

至此,获得的功能需求,现在可以基于功能需求,进架构设计:划分“软件功能模块”。

12.3 实际应用(9)——对比MailProxy案例的4种模块划分设计

12.3.1 设计

12.3.2 设计的优点、缺点

12.4 实际应用(10)——做总体,要提交啥样的“子系统划分方案”

备注:

架构必须时代码结构的体现,是业务需要和软件代码之间的桥梁。

一方面,它要体现业务功能需求,另一方面,他要体现软件的框架,软件会基于该框架进一步的细化代码实现。

感悟:架构师是用户与程序员的桥梁

架构(架构师):必须站在程序员的角度,它描述的是软件系统的架构需要,只有站在程序的角度,程序员才能知道如何基于架构实现软件系统。

需求(需求分析师):必须站在用户的角度,它描述的用户对目标系统的业务需求,只有站在客户的角度,客户才能知道未来实现的软件系统是满足自己业务需求的。

架构师:一脚站在用户的角度,思考用户的需求;另一脚站在程序的角度,思考实现用户业务需要软件的架构。架构师利用自己的大脑中的知识、经验把用户的需求,转换成软件的架构,程序员根据软件的架构,用编程语言和代码实现软件系统。

[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径

第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情

[架构之路-100]:《软件架构设计:程序员向架构师转型必备》-10-细化架构设计

...司:有财务、研发、有销售、有生产等部门一样。10.2程序员向架构师转型的关键突破——学会系统思考目标软件就是一个系统所谓系统思考,就是整体的视角参看整个系统,从不同的视角、不同的用户、不同的层面... 查看详情

[架构之路-103]:《软件架构设计:程序员向架构师转型必备》-13-软件架构如何分层(四层架构)

第13章如何分层13.1分层架构13.1.1常见模式:展现层、业务层、数据层13.1.2案例一则13.1.3常见模式:UI层、SI层、PD层、DM层13.1.4案例一则13.2分层架构实践技巧13.2.1设计思想:分层架构的“封装外部交互”思想备注:... 查看详情

[架构之路-96]:《软件架构设计:程序员向架构师转型必备》-6-需求与用户用例usercase/senario建模

第6章需求与用户用例UserCase建模备注:严格意义上讲,用户用例属于需求分析领域,不属于架构设计。用户用例是架构设计最重要的输入参考之一。UserCase和UserSenario是非常重要的描述需求的重要手段6.1常用的4种用例... 查看详情

[架构之路-93]:《软件架构设计:程序员向架构师转型必备》-3-软件架构设计中的视图view

前言:同一个软件系统,从不同的视角View,得到不同的视觉和感受。所有的视角得到的视觉感受综合而成了整个系统的架构。有些视角是用眼睛看,有些视角是耳朵听,有些视角用探测器探。不同的人,... 查看详情

[架构之路-95]:《软件架构设计:程序员向架构师转型必备》-5-需求分析之需求列表(功能需求质量需求约束条件)

前言:在业务需求分析领域,主要完成三个输出:需求列表:功能需求、质量需求、约束条件=》第5章用例图=》第6章概念架构=》第7章上述工作,通常是由需求分析工程师或系统工程师SE完成,也... 查看详情

[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程

第4章软件架构设计的通用过程本文给出了进行架构设计的通用过程,每个步骤过程的详细方法,在后续的章节中单独探讨。4.1架构设计的实践脉络/步骤4.1.1架构设计的三大原则:看需求、把方向、细设计(1)... 查看详情

[架构之路-94]:《软件架构设计:程序员向架构师转型必备》-4-软件架构设计的通用过程

第4章软件架构设计的通用过程本文给出了进行架构设计的通用过程,每个步骤过程的详细方法,在后续的章节中单独探讨。4.1架构设计的实践脉络/步骤4.1.1架构设计的三大原则:看需求、把方向、细设计(1)... 查看详情

[架构之路-101]:《软件架构设计:程序员向架构师转型必备》-11-原型设计与架构评估与提前验证

11.架构评估与提前验证所谓架构验证,就是在架构还没有实施之前,通过原型的方法,提前评估和验证设计的架构是否合理、是否可行。软件原型模型又叫软件快速原型模型,它指的是在执行实际软件的开发之前&... 查看详情

[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念

...;很难统一。本文是按照作者个人的理解,来展现一个程序员如何向架构师演进的路径。第2章解析软件架构概念程序员要转向架构的第一道门槛就是:什么是架构?在众多定义中,如何立足自身的实际情况和起点&#... 查看详情

[架构之路-105]:《软件架构设计:程序员向架构师转型必备》-15-模块划分的综合技术与4步骤法

15.模块划分的综合技术与4步骤法本章把前面切分模块的各种方法都综合了起来,模块划分的综合技术与4步骤法。15.1像专家一样思考15.1.1自顶向下vs.自底向上,垂直切分vs.水平切分15.1.2横切竖割,并不矛盾15.2模块划... 查看详情

[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念

...;很难统一。本文是按照作者个人的理解,来展现一个程序员如何向架构师演进的路径。第2章解析软件架构概念程序员要转向架构的第一道门槛就是:什么是架构?在众多定义中,如何立足自身的实际情况和起点&#... 查看详情

[架构之路-90]:《软件架构设计:程序员向架构师转型必备》-0-总结

...路径。今天分享的这份资料主要包含:软件开发普通程序员向系统架构师转型的一些思路、方法和工程实践。也包括转型过程中意识形态的转变、技术体系的掌握、系统工程学的拓展及各项软技能的提升等内容。本书深入剖... 查看详情

[架构之路-98]:《软件架构设计:程序员向架构师转型必备》-8-确定关键性需求与决定系统架构的因素

第8章确定关键性需求是什么决定了软件系统的架构?!没有大的争议的是:需求决定了软件系统的架构!那么什么样的需求对软件系统的架构影响最大?8.1众说纷纭——什么决定了架构8.1.1用例驱动论:功... 查看详情

[架构之路-99]:《软件架构设计:程序员向架构师转型必备》-9-确定关键性需求与决定系统架构的因素

第9章确定关键性需求与决定系统架构的因素9.1概念架构是什么9.1.1概念架构是直指目标的设计思想、重大选择9.1.2案例1:汽车电子AUTOSAR——跨平台复用NA9.1.3案例2:腾讯QQvideo架构——高性能NA9.1.4案例3:微软MFC架构—... 查看详情

[架构之路-91]:《软件架构设计:程序员向架构师转型必备》-1-从程序员到架构师,学习本书的路径

第1章从程序员到架构师本书不是从系统培训的角度,也不是按照软件的开发流程来组织内容的和展现软件架构师在不同阶段中的职责和作用,而是立足于程序员,展现程序员走向架构师的路径。1.1软件业人才结构1.1.1... 查看详情

[架构之路-88]:《程序员必读之软件架构》-3-软件需求与架构设计的关系

前言这部分是关于设计软件的整个流程,特别是开始编码前真正需要思考的事情。第21章 架构的驱动力:业务领域的需求不管你采用哪种流程(传统和计划驱动,或者轻量和可适配的),都有一套常见的... 查看详情

[架构之路-106]:《软件架构设计:程序员向架构师转型必备》-16-常见的十余种软件分层架构

1.软件架构体系1.1.系统与子系统系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不... 查看详情