敏捷设计理念

  1. Agility,指以微小增量的方式构建软件.
    1. 全局视图和软件一起演化.每次迭代中,都使设计尽可能适合于当前系统,而不会花时间去预测未来的需求,更不会试图构建一些基础结构去支撑未来才需要的特性.更关注的是当前的系统.
    2. 不进行预先设计,不需要成熟的初始设计.而保持设计尽可能的干净,简单.并使用单元测试和验收测试来保证.
    3. 需求处在不停变化的状态之中,如果设计由于需求变化而退化,那么就不是敏捷的.
    4. 在实现新需求时,应改进原有设计以让设计对新变化的同类变化具有弹性.而不是设法给设计打补丁.
    5. 敏捷设计是一个过程,而不是事件.
  2. Design,源代码就是设计,而UML图示只是设计的附属物而不是设计本身.
  3. 设计中的臭味常常是由于违反了原则而导致的.当臭味出现时,才应用原则来去除臭味.但不应该无条件的使用这些原则,这样会导致不必要的设计上的臭味(复杂性).
    1. rigidity僵化.       难以改动.改动会迫使许多对系统其它部分的其他改动.
    2. fragility脆弱.      改动会导致在概念上无关的部分出现问题.
    3. immobility牢固.  很难将一些对其它系统有用的部分从系统中分离出来.
    4. viscosity粘滞.     做正确的事情要难于做错误的事情.
    5. 不必要的复杂性.   不具有任何直接好处的基础结构.为了预测的变化而设计的.
    6. 不必要的重复.      本可以使用单一的抽象进行统一的重复的结构.(copy-paste).
    7. Opacity晦涩.       没有表现出意图.难以阅读理解.
  4. 不能因为设计的退化而责怪需求的变化.因为需求是项目中最不稳定的因素.所以,应让设计对于变化具有弹性,并且应用实践来防止设计腐化.

 [Agile Software Development(Principles,Patterns,and Pracitices)]

原文地址:https://www.cnblogs.com/robyn/p/3452791.html