设计程序或写程序,您是习惯自顶向下还是自底向上?
一个朋友曾对我说,很感谢父亲小时候对他的作文训练。训练的方法是这样的:扩写和缩写。把一句话扩写成一段话、一篇文章。把一篇文章缩写成一段话、一句话。这就是所谓的演绎和归纳,也是自顶向下和自底向上的方法。
Alistair Cockburn在《编写有效用例》时也表达了这样的观点:所有的系统都可以归纳为一个最大粒度的用例,即“使用XX系统”。然后我们再把它逐步细化,得到“天空级用例”、“海平面级用例”、“水下级用例”。
这是自顶向下的分析方法。但也有不同观点。
Martin Fowler在《设计已死?》中传达出这样的观点:告诉我一个一个的用户故事,最后我会给你一本故事集。这本故事集就是它存在的意义所在,你不必事先告诉我这本故事集“一言以蔽之”应该怎么说。我可以通过不断的消除重复和重构,得到高级的抽象概念。
但是Grady Booch在《面向对象分析与设计》中告诉我们,人们对客观世界的认识往往是从中间的抽象概念开始的。例如小孩在认识动物时,开始是认识狗,然后会向下认识拉布拉多、吉娃娃,向上认识哺乳动物、动物。
我们在写文章时也是如此。先会有一段素材,让你在脑子里闪过一个念头,涌出一股写作的冲动。然后你开始仔细思考,提练更深刻的主题,寻找更多的素材,向抽象和具象不断探索。
我在设计系统时也是如此。
没有评论:
发表评论