设计引领未来——兼谈对于XP简单设计的认识

敏捷方法是目前非常流行的软件过程方法。敏捷方法中提到对于需求变化的适应和对于人在设计开发中的重要作用都是对于传统软件开发过程的改进,对于提高软件开发效率和生产率有很好的效果,这里不再赘述,有兴趣可以上网搜寻一下相关主题文章。

XP(Extreme Programming,极限编程)是其中最著名的一种方法。XP12最佳实践也是很多软件组织使用XP的宝典,很多实践都是非常有效的,甚至超越了XP而具有普遍意义。但是XP对于设计的认识却一直众说纷纭,Martin Fowler先生有一篇著名的《设计已死》的论文,专门论述他对于设计的认识,他坚信设计肯定有存在的空间,有兴趣的朋友可以看一下。我在这里谈一点我对于设计在未来软件开发中的认识。

 

XP的简单设计思想

XP的简单设计思想就是为了避免过度设计带来的不必要的开销,从而达到提高效率的目的。XP承认简单设计可能不能完全满足未来的需求,那么它靠未来的重构来适应未来的变化。简单设计的假设是简单设计带来的优越性远大于复杂设计带来的开销。简单设计的风险要远小于复杂设计的开销。如果这个前提不存在,那么简单设计就不是合理的选择。

 

设计越来越复杂了

随着软件在商业领域和社会各领域应用得越来越广泛,软件变得越来越重要,软件变成工作,生活中不可缺少的部分,电脑不再是一个摆设和辅助品,在不同的领域,软件的作用和地位是不同的,必须应用不同的设计策略。对一些个人消费小软件,比如个人MP3播放器,软件出现问题大不了重新启动,没什么大不了的,用户并不在意,用户在意的是它是不是提供了足够的功能,够铉的外形界面,方便的使用方法等等;但是如果是应用在关键领域,比如航天器的飞行控制软件,一个小错误就会导致机毁人亡的大事故。因此,对于消费类个人软件,简单设计是可行的,但是对于很多的关键领域的软件应用,比如航天,医疗,汽车电子,电信,银行,设计变得比以前更加重要了,因为设计的需求已经不单纯是功能性设计需求,而且包括了高可靠性设计的需求。

 

对于急速变化的商业环境和市场,XP企图使用简单设计去追赶变化的需求,使用重构适应变化的需求,简单设计就够了吗?但是我们知道有一句话,优秀的企业是行业的领跑者。因此它所需要的软件的设计必须是超前的,而不是简单的模仿和满足目前的功能。另外,商业软件的设计除了功能性的需求之外,可能还有隐含的商业策略和竞争策略的考虑在里面。这些因素交织在一起,简单设计如何能解决的了?一旦设计失误,将导致的事故和商业损失对于任何公司和个人来说都是致命的。

设计变得更加重要了,设计要解决许多新的商业环境下的新问题。不只是具体的,功能性的商业需求,而是商业竞争或者竞争策略带来的隐含的设计需求。这些需求包括:

1,   跨平台的产品设计。为了占领更大的份额的市场,软件就必须能够运行在更多的平台上,比如windowsLinux,这样才能同时获得windows用户和linux用户的支持。

2,   多系列的产品设计。单一产品走天下的时代早已不复存在,必须为用户提供多系列的产品,满足不同层次用户不同的需求,才能占领市场。因此必须有能力提供一种产品平台,在这个平台上可以同时生产,开发多系列的产品,比如Nokia的多系列手机产品,这样才能同时满足各种客户的需要。

3,   满足灵活定制需求的产品设计。除了常规系列产品之外,还要能够方便灵活的提供用户定制需求的产品,这就要求必须能够提供允许用户插入自己应用的系统平台,这样用户可以自己定制自己的产品。把产品变成自己的独特的产品。

4,   如何适应未来的变化?软件的目的不仅是提供用户当前的需要,而且要预测未来的变化和需求,才能生产出占领未来市场的产品,这是简单设计可以胜任的吗?

所有的这些新的,隐含的设计需求,都不是简单设计能够解决的,也不是后期的重构可以解决的问题,必须在一开始就考虑好设计,才能在以后的商业竞争中取得竞争优势。

 

设计引领未来

通过设计,带领公司站在行业的制高点上,引领产品乃至产业未来的发展方向。通过超前的设计预测未来的需求,把握未来的发展。这是时代赋予设计的更高要求。很多公司,比如GoogleAppleNokia都是通过出色的设计支撑其产品在市场上独一无二的优势地位,而其他的一些公司,由于不重视设计,只能在后面疲于奔命,苦苦支撑。

 

虽然需求的变化导致系统越来越难以维护,设计越来越困难和复杂,但是我们不能因此而放弃设计的责任。简单设计不可能解决所有问题。极限简单设计(Extreme simple design)和以前的code and fix开发模式没有什么本质区别。

当然,设计的策略也必须加以改变。以往的设计强调设计要细化到可以写代码的程度,设计完成后就可以不在改变,其实这是不可能的,也没有必要。需求的急速变化需要设计更加关注与可能的变化而不是具体的细节设计。具体说就是设计要关注高层的架构设计,平台设计而不是低层的细节设计。设计的目的不是单纯地实现一些具体的特性和功能,而是寻找到一种可以尽可能适应未来变化的架构,寻找一种可以容纳变化的平台,以便在未来可以方便的增加新的特性和需求,可以扩展生产其他的产品,而不至于需要重新构建另外的系统。需求的变化更需要设计者思考如何适应未来的需求,如何预见未来的需求变化,从而尽早的把握需求,赢得先机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值