敏捷软件开发——一个例子:copy程序


上图和代码显示 应用程序中有3个模块,或者子程序。copy模块调用另外两个模块。copy从read keyboard中获取字符,并把字符传递给write printer模块。

。。。。需求在变化:

    希望copy可以从纸带读入机中读入信息:如果变量值为false,就像以前一样从键盘读取信息。槽糕的是,现在已有许多其他程序正在使用copy程序,你不能改变copy程序的接口。改变接口会导致长时间的重新编译和重新测试。

    打补丁:

    当然会想到使用一个全局变量的方法,结果如下:



想让copy从纸带读入信息设置ptFlag为true即可,然后再调用copy,它就会正确地从纸带读入信息,一旦copy调用返回,调用者必须要重新设置ptFlag。

。。。。

需要再次改变

客户希望copy程序可以输出到纸带穿空机上。

如果继续这样的打补丁,软件终会变的难以维护。

这次的设计的改动和上次的相似。只不过需要另外一个全局变量和?操作符。


—————————————————————————————————————————————————————————————————————————————

说上面的例子不是要吐槽客户的需要改变,实际中,客户的需要一定是会有变化的。

通过上面的例子可以看到在 变化面前程序的设计退化的速度是多么的快。copy程序的原始设计是简单的,是优雅的。但是仅仅经历了两次变更,它就已经表现出了僵化性、脆弱性和不必要的复杂性、不必要的重复急晦涩性的症状。

    记住,在大多数软件项目中最不稳定的就是需求。需要处在一个持续变动的状态之中。这是我们作为开发人员必须得接受的事实

一个好的解决方案:

在这个例子中,在我们遇到第一个需求变化时,我们要修改设计并使修改后的设计对于那一类的需求的变化具有弹性


    在要实现新需求时,团队抓住这次机会去改变设计,以便设计对于将来的同类变化具有弹性,而不是设法去给设计打补丁。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值