主题:【原创】关于日本的一些杂感:规范 -- 铁手
需求和设计是不能分开的,设计是要实现需求所要求的功能,需求也是在现在技术条件许可下的对期望值的折中。
所以,我们在开发中,设计和需求是混在一起进行的。设计文档有两种,Feature Design,这个可以说是功能设计,也就是类似与原来软件工程中的需求分析吧,另外一种就是Technical Design, 也就是类似原来软件工程中概要设计。不过不要把Feature Design想象成传统软件工程中动辄几百页得需求分析,通常一个一年的项目,这个Feature Design也就5-6页文档量而已,基本上就是非常粗略地大颗粒地描述要实现的功能而已。
至于费时的详细设计,通常由程序员完成的,在敏捷开发中是真正省略了,是依靠代码的可读性来实现。
另外,敏捷开发讲究的轻量快速迭代。
也就是需求和设计实际上在一起进行的,进行的同时几乎就开始写代码。有了一个模糊的需求,就有一个前进的方向,例如可以写一些框架代码,定义一些消息机制和自动机的状态等,写一些接口类,基类,制定设计模式等。细一些的需求出来,就可以写一些派生类和执行逻辑。就这样逐步细化。
敏捷开发中有迭代(Iteration)和里程碑(milestone)的概念,实际上开发的过程是和用户不断交流的过程,每个迭代基本上指实现一个或几个小Feature,甚至是Feature中的一个部分,但是保证每个迭代出来的产品是能够使用和能够测试的,这样就可以有基础和客户交流获得进一步详细的需求。
每个Milestone可以根据时间来划分,更多是按功能实现的需求的来划分,也就是每个milestone能够推出一个部分满足客户一些需求的产品。
敏捷开发有一个论点,我感觉不错,也就是:绝大多数客户实际上并不了解他们的需要,也不清楚他们想要什么产品。这一点,我相信在传统开发过程中,为不断的需求变更头痛的人一定是有体会的。
所以在开发中,敏捷开发是一个小量递增,小步快走的过程,需求是逐步细化,设计也是逐步深入的,代码这是伴随这个过程不断生长的。
在我们的开发过程中,很常见的情况是最初的feature design只实现了其中70%的功能,但是却另外添加了起初没想到的30%的功能。
所以不是没有需求分析,而是需求分析是一个交互的过程,是在整个过程中和design/test混合在一起。
- 相关回复 上下关系8
🙂能说一下公司名号吗? 1 大户人家 字289 2011-04-06 18:49:45
🙂不会吧 10 东方射日 字624 2011-04-01 09:46:45
🙂有可能是做的东西不同吧 1 松河 字160 2011-04-01 19:20:41
🙂需求和设计是不能分开的
🙂日本的软件是生产出来的 47 住在乡下 字801 2011-03-31 19:58:32
🙂其实日本这种死板背后的一大原因是为了推卸责任方便 41 bluesknight 字590 2011-03-31 19:01:03
🙂然也 1 未来的未来 字78 2011-04-02 03:14:03
🙂现在大公司似乎都这样. 1 qingttt 字86 2011-04-02 10:49:01