目录

模块化、内聚、耦合

模块化是指解决一个复杂问题时自顶向下、系统细分降维、逐步求精的过程。

内聚是从功能角度度量模块内的联系,好的内聚模块专心做好一件事。

耦合是度量系统结构中各模块之间的联系,耦合高低取决于模块间接口的复杂程度。

工程的概念

工程是科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,是以最短的时间和最少的人力、物力做出高效、可靠且对人类有用的东西。将自然科学的理论应用到具体工农业生产部门中形成的各学科的总称。- 百科

工程需要模块化

软件工程是也是一门工程,在软件工程出现之前,已经有各种工程,如建筑工程,机械工程、电子工程等。

建筑工程已经成熟到农村建房子都不需要请大城市的专业团队,农村就有自己的建筑团队(虽然不高大上,但还是有板有眼);为什么这些非科班专业团队也能把房子建得挺好装修的也不错?

工厂里有各种机器设备,生活中也有各种电器,交通工具汽车、飞机,科研火箭、卫星、飞船等大多和机械/电子工程相关,而且非常普及;为什么现在生产一台车这么快还很安全?

因为模块化,逐步标准化,出现标准结构、标准构件等,只要在标准结构上稍微调整,结合标准构件,建房子可以像搭建木一样,生产线上的汽车靠组装集成,这些都是建立在模块化。

工程还需要高内聚低耦合

房子卫生间单独设计单独装修都不影响卧室大厅,卫生间设备坏了只要找五金店老板修就可以,马桶坏了就换一个,热水器不好用了换一个,想要个更好的镜子换一个(至于扩展和兼容性是前期设计问题)。更换的时候,不应该要求更换门、开关等。

飞机起飞前检查有异常,飞机检修员最重要的是能快速检查、定位问题位置、更换零件,这里是更换问题零件设备并不是维修零件设备,要换这个设备,意味着这个设备需要职责唯一(信息隐藏)、高内聚、低耦合,不会出现依赖更换。

后来有了电子工程、计算机工程、软件工程等新的工程,未来还会出现和现在类似的热点工程神经网络工程等

韦易笑的回答里两张图非常直观的让人明白高内聚、低耦合益处 低耦合,高内聚真的好吗? - 韦易笑的回答 - 知乎 https://www.zhihu.com/question/347264877/answer/834666851

软件工程

软件工程宏观上来讲是:过程+方法+工具。

过程是有步骤的,是工程实现的计划

方法是有指导原理的,是工程中每个步骤的解决方案

工具是在解决方案框架下,工程人员借助工具快速高效高质量地解决问题

高内聚低耦合到什么程度

模块化、抽象、信息隐藏、高内聚、低耦合是一个平衡,并不是高度内聚更好,也不是完全耦合最好。结合辩证的观点,一切从实际出发,不同工程产品聚合程度不一样,耦合程度不一样,得根据工程实际情况如功能性能敏感、安全风险、人为要求等找到一个平衡点。庄严的回答里说的很好:低耦合、高内聚是原则,不是目标。所以不要盲目(当然如果小白的时候,就像小学生一样背课文模仿解题也是不错的方式)

其他

另外不是很赞同公司部门管理和模块化等同,虽然很多相似,但人是暖和的,零件\代码是冰冷的。况且模块化并不仅仅是简单的一维拼装,没那么扁平,可以是很多小模块组合成大模块,很多大模块再组合成更大的模块,更多的体现在功能、性能可替代性,但人的思想最为复杂微妙,并不是现阶段冰冷的机器人。