极端编程的特点及讨论
问题:
有没有感觉实施xp的前提条件很多,如果这些条件不能满足就不能充分事实xp.例如8小时工作,工作环境等。
8小时工作可以说即是前提又是结果,如果不能8小时工作,让开发队伍有充分休息,大家怎么能结成pair,高效的开发?而如果开发效率低下,大家有怎么可能只8小时工作。--notyy
XP可以说是各种思想的大集合,实际上XP的核心特点就是原型法的软件开发方法。其它的各种特点可能不一定是XP独有的,只是针对目前软件工程中存在的问题,分别提出了很多思路独特的方法。这些方法并不是一个紧密的整体,相互直接有可能分离、独立。因此,了解了XP的方法,可以只应用它的几个特点,不一定全部照搬。比如成对编程、8小时工作制、轮岗等,都可以单独实施。--tomz
这个观点不认同,XP核心特点并不是原型法的开发方法。原型法的关键是在通过原型获取需求后,要毫不犹豫的抛弃原型,重新开发,因此原型可以是很粗糙的,代码质量可以是很拙劣的。而且因为原型是用来获取整体需求,所以要求原型要完整,覆盖到整个项目的各功能点。 而xp是迭代开发,并没有一个包含所有功能的“原型”版本,而且对每一个“小版本”都有很高的质量要求,比如总共有10个功能点,原型法要求做一个覆盖所有10个功能点的粗糙版本,而XP要求先做一个有2个功能点的版本,然后再每个开发周期往上面加两个功能点,并且这包含两个功能点的版本是要“确实完成”的,是要经过充分的测试,重构、提炼的,让人放心的小版本。这一点与原型法有很大差别。 ----notyy
啊,我是门外汉,确实没有搞清“迭代”和“原型”的区别。用词有误。那就是说:“XP的核心特点是迭代”。--tomz
我感觉部分岗位的集体主义的软件开发也是XP的很有用的方法。但不知道在中国是否符合国情。--tomz
本文是根据IBM一个开发团队的XP故事总结的,在www.linuxaid.com.cn网站上看到的。但现在在IBM和linuxaid网站上都找不到这个文章了。--tomz
精彩文章,可否转载?--notyy
转载没问题,这只是我的一个读书心得,没有发表过。不过你要转载到哪里?这里不是你的网站吗?已经贴上来了啊?--tomz
--------------------------------------------------------------------------------
question:
“在进行软件架构设计之前就进行编码,可以使问题更早暴露,可以使最后的软件设计更体现编码的特点,更符合实际,更容易实现,也保证了设计的合理,保证了软件设计的大量决定的正确性。 ”
notyy兄,能详细讲一下吗? 先编码后设计,有点不理解他的优点。。你先讲一下好吗? 踏冰
世界上并没有先编码后设计的开发方法。xp的开发方法是边设计边编码。
所谓先编码后设计里的设计是指软件架构的设计,指先设计(和编码)局部的功能,在进行了几个周期的开发,有了足够多的需求和经验后再提炼出体系架构,是一种自下而上的设计方式。
好处是避免了先设计软件架构后编码的方式中容易出现的设计脱离实际,无法编码实现等问题。
缺点是早期设计变化剧烈,不断的refactoring,可能几个开发周期后,经过大量修改后设计会和第一个开发周期时所做的设计相差巨大。 但另一方面,这也正好说明,在编码前先设计软件架构,是非常困难的,很容易在后期发现难以克服的问题。--notyy
--------------------------------------------------------------------------------
2002-8-30 23:51:13 tomz
极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接,前两者容易和最终编程产品脱节,容易做很多无用工,而对编程者来说,代码是最好的表达工具,所有的结构设计思想都马上可以用代码来表达,因此,不需要先对别人描述架构,只要编出来,别人自然懂了。
使用架构来表达毕竟了用编程直接表达在结构上会有脱节的地方。
另外,极端编程不明确区分设计者和编程者,编程者就是设计者,自然,程序代码就成了比较方便的架构表达工具。将两步并作一步,自然节省设计时间。
当然,并不是事先没有沟通,而是极端编程认为口头交流是最有效的,因此,就用不到架构描述工具。