西西河

主题:【原创】关于日本的一些杂感:规范 -- 铁手

共:💬186 🌺2024 🌵2
全看分页树展 · 主题 跟帖
家园 需求和设计是不能分开的

需求和设计是不能分开的,设计是要实现需求所要求的功能,需求也是在现在技术条件许可下的对期望值的折中。

所以,我们在开发中,设计和需求是混在一起进行的。设计文档有两种,Feature Design,这个可以说是功能设计,也就是类似与原来软件工程中的需求分析吧,另外一种就是Technical Design, 也就是类似原来软件工程中概要设计。不过不要把Feature Design想象成传统软件工程中动辄几百页得需求分析,通常一个一年的项目,这个Feature Design也就5-6页文档量而已,基本上就是非常粗略地大颗粒地描述要实现的功能而已。

至于费时的详细设计,通常由程序员完成的,在敏捷开发中是真正省略了,是依靠代码的可读性来实现。

另外,敏捷开发讲究的轻量快速迭代。

也就是需求和设计实际上在一起进行的,进行的同时几乎就开始写代码。有了一个模糊的需求,就有一个前进的方向,例如可以写一些框架代码,定义一些消息机制和自动机的状态等,写一些接口类,基类,制定设计模式等。细一些的需求出来,就可以写一些派生类和执行逻辑。就这样逐步细化。

敏捷开发中有迭代(Iteration)和里程碑(milestone)的概念,实际上开发的过程是和用户不断交流的过程,每个迭代基本上指实现一个或几个小Feature,甚至是Feature中的一个部分,但是保证每个迭代出来的产品是能够使用和能够测试的,这样就可以有基础和客户交流获得进一步详细的需求。

每个Milestone可以根据时间来划分,更多是按功能实现的需求的来划分,也就是每个milestone能够推出一个部分满足客户一些需求的产品。

敏捷开发有一个论点,我感觉不错,也就是:绝大多数客户实际上并不了解他们的需要,也不清楚他们想要什么产品。这一点,我相信在传统开发过程中,为不断的需求变更头痛的人一定是有体会的。

所以在开发中,敏捷开发是一个小量递增,小步快走的过程,需求是逐步细化,设计也是逐步深入的,代码这是伴随这个过程不断生长的。

在我们的开发过程中,很常见的情况是最初的feature design只实现了其中70%的功能,但是却另外添加了起初没想到的30%的功能。

所以不是没有需求分析,而是需求分析是一个交互的过程,是在整个过程中和design/test混合在一起。

通宝推:季侯,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河