自上而下或自下而上的设计?

时间:2010-04-29 12:48:14

标签: architecture

基本上有两种设计系统的方法。有哪些优点和缺点?我什么时候应该使用哪个?我应该结合这些方法吗?怎么样?

3 个答案:

答案 0 :(得分:23)

粗略地说,自上而下来自问题空间分解为子问题,而自下而上来自将解决方案空间的部分组织成更大的问题块。

为了能够有效地使用自上而下,您需要对问题有一个非常扎实的理解,即掌握可靠的要求。为了使自下而上有效,你需要解决一个众所周知的“标准”问题,但在你做对之前,确切的装配可能需要进行一些实验。

你应该在这个问题上阅读Parnas的精彩论文A rational design process and how to fake it。答案是:酌情使用两者。当你完成后,让它看起来像(在你的规范,设计文档和用户文档中),就像你自上而下完成了所有事情一样。

答案 1 :(得分:3)

我认为你的问题应该得到长期和明确的答案。 我建议阅读Martin Fowler的旧文章(cfr。“设计已经死了吗?”),它讲述了关于前期设计和敏捷技术的关系(http://martinfowler.com/articles/designDead.html

我的经验是始终采用模块的蓝图架构,系统组件之间的交互。有了这个蓝图(在某些项目中可能是高级别的),我开始设计/开发模块/组件。其中一些也可以自下而上开发。

答案 2 :(得分:2)

您还应该看看敏捷社区的“切蛋糕”原则。这一原则迫使您专注于为应用程序的每次迭代添加用户的业务价值。您尝试设计并实现应用程序的垂直切片并将其交付,然后专注于下一个切片等。

以下链接更详细地解释了原则http://blog.energizedwork.com/2005/05/slicing-cake.html