为了正确解释这一点,我们需要简短的历史课程。在软件工程的早期,经常使用的比喻是盖房子。建筑师和结构工程师与客户讨论计划并提出设计方案。然后,建造者按照该设计来建造实际房屋。编写代码被视为等同于建造实际房屋。因此,在构建之前就已经意识到需要先期设计。创建了各种图形设计工具,其中UML是其中之一。
最初使用UML的想法是,人们将使用UML完全设计一个系统,然后将其移交给编码人员以将该设计转换为代码。实际上,这根本行不通,并导致多年的程序员被视为“实施者”,而不是“设计师”,项目迟到,设计必须在完成后必须不断更改等。
原因很简单。编码是设计。与房屋类似,代码是建筑师的图纸。编译器是构建器,他们接受这些设计并从中构建程序。然后,这种认识导致了敏捷技术,TDD等的诞生:帮助提高该代码设计质量的工具。
就像架构师可能会生成初步草图来帮助她和她的团队可视化整个设计一样,开发人员可能会使用UML或其他工具来可视化所需的设计。正如这些草图不是盲目遵循的一样,UML也不应盲目遵循。代码设计应从敏捷迭代和使用TDD演变而来。同样,就像建筑师可以构建房屋模型来帮助她和她的团队可视化图纸一样,UML可以用于帮助可视化代码结构。
正如Bob叔叔所说的,您不能验证UML,只能验证代码。因此,该代码是主要的设计文档,而UML(如果使用)仅是辅助文档。