“再也看不到 SADT 的踪迹”:关键字是“几乎”。我们的“内聚”和“耦合”等“现代”概念大多来自 SADT [Edward Yourdon-Larry L.Contantine]。现代软件文献甚至对旧的 SADT 文献也有有趣的参考。例如,Kent Beck 在他的实施模式书的参考书目部分中说:
Edward Yourdan 和 Larry Constantine,结构化设计,...,1979 年。
本书介绍了软件设计的物理定律等价物,并将讨论建立在开发经济学的基础上。[ Kent Beck,实施模式]
在那本书中,尤丹和康斯坦丁说:
结构化设计是一门以最佳方式设计系统组件和这些组件之间相互关系的艺术。
Meilir Page-Jones 说:
- 结构化设计使用工具,尤其是图形工具,使系统易于理解。[Meilir Page-Jones-结构化系统设计实用指南]
今天在软件开发中,我们的目标仍然是一样的...... :-)
为什么世界放弃了 SADT?
好吧,我们比时尚行业有更多的变化:-)。
我们今天建立的系统和限制条件与二十年前或更多年前不同。我认为当我们开始开发更多“面向数据”的系统时,功能复杂性不太受关注,SADT 实践(如结构图-数据流程图)“失去”了某些系统的效率。然后面向对象的风格就有了自己的方法和表示。
但是实体关系(ER)图和数据字典的概念仍然存在。
有关 Yourdon 的有趣观点,请查看他的博客:观看“敏捷”...
有趣的是,Yourdon 仍然对结构化设计材料进行了更新。检查:
现代结构化分析
什么取代了 SADT?
嗯......对于面向对象的系统......
假设我们有责任驱动设计[其中内聚和耦合仍然很重要],用于在我们的系统中找到最佳组件及其互连。UML 通常为我们提供了很好的可视化思维工具来查找这些组件和关系。
现在我们明白软件开发是实验性的活动。我们应该根据进化需求进行迭代和增量开发。
似乎没有什么神奇的“方法”可以像成功的“收据”一样被遵循。
一般建模:
图表-模型只是思考工具。
用UML或其他符号在纸上设计整个系统是不现实的。实际上我们的真实模型是可以执行和测试的“源代码”。
有一些尝试,例如 MDA(模型驱动架构),它试图从模型中自动生成可执行代码:所以我们只需对系统进行建模,然后一切都会自动生成。但我们意识到这也不现实。目前这只是一些工具供应商的梦想。现在我们的重点更多地放在更实用和现实的领域特定语言上。