5

在一切都成为“企业”之前,曾经有一段时间,一切都是“结构化”的。大约 20 年前,结构化分析和结构化设计(SADT) 与 CASE 工具一起为许多 IT 专业人士带来了救赎。

虽然当时的炒作 - 就像任何其他炒作一样 - 来来去去,但我很惊讶地看到几乎没有 SADT 的痕迹。事实上,我相信应该得到这样的命运并没有那么糟糕。我特别喜欢的是,它强调了系统的功能方面,即您将清楚地了解系统产生的内容(您不能使用 SADT 指定只写系统),这种范式在函数式编程中也很普遍。

我的问题是:

  • SADT的现代等价物是什么?
  • 是否有 UML 绘图风格(上下文图除外)提供类似的抽象级别和可比较的细化可能性。
  • 你知道为什么世界放弃了 SADT 吗?
  • 您是否知道任何允许进行 SADT 的 CASE 工具,并且这些工具超越了单纯的绘图工具,例如允许带有一致性检查的层次图
4

2 回答 2

8

“再也看不到 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(模型驱动架构),它试图从模型中自动生成可执行代码:所以我们只需对系统进行建模,然后一切都会自动生成。但我们意识到这也不现实。目前这只是一些工具供应商的梦想。现在我们的重点更多地放在更实用和现实的领域特定语言上。

于 2013-05-01T14:09:44.907 回答
0

我与 SADT 一起使用 C++ 开发了一颗新的气象卫星。我发现它对算法功能方面的描述(如问题中所述)非常有价值。尝试搜索词:“GOES-R SADT”以查找:http ://www.goes-r.gov/downloads/GUC-7/poster-sessions/4-06_Ivan_Pathfinder.pdf和https://ams.confex.com /ams/91Annual/webprogram/Manuscript/Paper184496/SADT-UML-Extended-Abstract%28Submitted-20110223%29.pdf

于 2014-01-08T02:50:29.020 回答