论坛首页 综合技术论坛

关于设计的可扩展性。

浏览 84329 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-01-18  
zidoing 写道
如果任何扩展性的设计都不可取,那么应付后期需求变化的成本会不会很高呢?我想关键是我们能否找到一个充分的证据支持,而对业务的熟悉应该算是一个吧。

我说的是xp,并且是极端的xp。我个人认为xp对应付后期需求变化的对策是重构,甚至极端情况下有可能大规模重构,取决于重构手段够不够凌厉。并且xp中程序员和业务方是彻底分离的。对业务的熟悉度应该是其他方法要求的。
个人见解,并且xp不代表所有的东西。
0 请登录后投票
   发表时间:2005-01-18  
ddd 写道
gigix 写道

xper本质上讨厌拍脑袋的“可扩展性”。“可能要想到……”,凭什么想到?是你自己想出来的,还是用户需求提到的,或者是做类似项目总结的经验?发生这个可能性的概率有多少?没有充分的证据支持,你就不应该提供“可扩展性”,客户给你钱不是叫你去玩设计的。

按我个人对xp的理解,任何可扩展性的设计都不可取。
我个人对xp的理解就是从局部到整体,没有什么整体上的设计,也不谈任何可扩展性。

那么就是你的个人理解出了偏差。
0 请登录后投票
   发表时间:2005-01-18  
weihello 写道

   那我们还谈XP做什么?扔了.......

   空谈可扩展性是没有任何意义的,他来自客户需求/经验/Refactoring。

需求:
  客户说:通常我们做销售都要打一定的折扣,一般来说老客户打8折,新客户打9.5折。这些都不体现在账户上.......呃,对了,个别客户是直接返现金。
  调研人员: 有没有其它的打折方式
  客户说: 呃.........暂时没有了,不过我也不确定,等我想到后告诉你

  这就是需求,你要灵活的打折策略,就需要所谓的可扩展性。

经验:
  上述调研人员就敏觉的嗅探到了打折策略的不确定性,他知道在这儿多下些功夫了。

Refactoring:
  打折策略代码如果最初仅仅支持固定几种,而且难以扩展,而打折策略在变化,代码在腐化过程中,有人会Refactoring之,并且让他越来越适应打折策略的变化。


   在你这个例子中,我认为如果采用XP的话,应当反对扩展和预先考虑。
  另外,要注意XP中业务需求和技术实现两者互相独立的事实,业务需求方不应当把不明确或可能的要求传递给技术实现方,由技术实现方去考虑扩展,这个是不负责任的做法。
0 请登录后投票
   发表时间:2005-01-18  
扩展性(好大的话题)
这三个字怎么解释,怎么才算扩展性?系统的扩展性?还是指业务逻辑可以方便的改变?

咱们具体谈谈:
有一个CMS,原来的操作是管理员添加新闻,然后新闻发布在在网站上

后需求变化:
发的新闻需要负责人这个权限的人审批以后才可发出

后需求再变化:
某些人发的新闻无需审批,有的需要审批才可发出

。。。。。(后又产生了许多需求变化)

我觉得人们很难预知需求,我们能作的仅仅是让代码尽可能的脱藕,尽可能的单独调试,尽可能的达到组件式的拼装,尽可能的在出现需求变化以后可以尽快的适应需求完成需求。

而对于替用户多想一些没有提到的功能,那么就要深入领域,深入行业,才能超前想出一些功能。

个人想法,大家继续:)
0 请登录后投票
   发表时间:2005-01-18  
XP理论上不要做过头的事情。但要看度,一种权衡

如果是要你设计一套复杂的规则系统,那是不现实的。

但也要分场景的,在条件和变量范围可以确定的情况下,一个简单的扩展显然受益无穷。

这是有经验和无经验的两种截然不同的反应。
0 请登录后投票
   发表时间:2005-01-18  
weihello 写道

我个人对xp的理解。
它在赌:需求的变化使任何可扩展设计都无能为力,那么便不用可扩展设计。
它还在赌:扩展性的设计能扩展出来的功能,重构时候一样扩展出来,并且不花费太多的功夫。
0 请登录后投票
   发表时间:2005-01-18  
清风 写道
扩展性(好大的话题)
这三个字怎么解释,怎么才算扩展性?系统的扩展性?还是指业务逻辑可以方便的改变?


我觉得所谓的设计扩展性(技术层面)是这样的:
    当业务方明确一个要求的时候,技术实现方可以用相对较快的速度将其实现并发布。
0 请登录后投票
   发表时间:2005-01-18  
ddd 写道

我个人对xp的理解。
它在赌:需求的变化使任何可扩展设计都无能为力,那么便不用可扩展设计。
它还在赌:扩展性的设计能扩展出来的功能,重构时候一样扩展出来,并且不花费太多的功夫。


我的理解和你略有差异:
    我认为xp主要是针对技术实现而言的,对于业务需求而言谈的较少。

因此稍稍修改如下:
需求不明确时,(技术实现者预先考虑的)可扩展设计投下的成本和期望效益比
<
需求明确时,(技术实现者)重构的成本和期望效益比
0 请登录后投票
   发表时间:2005-01-18  
ddd 写道
weihello 写道

我个人对xp的理解。
它在赌:需求的变化使任何可扩展设计都无能为力,那么便不用可扩展设计。
它还在赌:扩展性的设计能扩展出来的功能,重构时候一样扩展出来,并且不花费太多的功夫。


   XP不是随便找几个会写代码会重构就可以成立团队的,它是有纪律和有组织的,团队本身内部提供了互相咨询,他们之间有经验的差别,有认识事物的能力差别。

  很多东西是潜在的,虽然一些经验尚浅的人不具备。比如,代码上如接口编程,再比如业务上一些细节,新手显然没有注意,但是无需客户交流,有经验的成员还是会告知并更正。

  所谓的不可知的扩展,无论什么开发方法学都是无法避免的。你的这种做法显然两眼一摸黑的XP类型的。
0 请登录后投票
   发表时间:2005-01-18  
clamp 写道
ddd 写道

我个人对xp的理解。
它在赌:需求的变化使任何可扩展设计都无能为力,那么便不用可扩展设计。
它还在赌:扩展性的设计能扩展出来的功能,重构时候一样扩展出来,并且不花费太多的功夫。


我的理解和你略有差异:
    我认为xp主要是针对技术实现而言的,对于业务需求而言谈的较少。

因此稍稍修改如下:
需求不明确时,(技术实现者预先考虑的)可扩展设计投下的成本和期望效益比
<
需求明确时,(技术实现者)重构的成本和期望效益比


     呵呵,一般来说,我们的程序员对业务谈得比技术上多,除了技术新手。
在迭代周期内,我们花在业务讨论上的时间是技术上的数十倍。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics