学习笔记:敏捷设计概述
敏捷团队: 在每次迭代中,团队改进系统设计,使设计尽可能的适合当前系统。团队并不会花过多的时间去预测未来的需求。也不会设计一些基础模块去支持未来可能才需要的特性。他们更愿意花更多的时间去关注当前系统,使设计尽可能的好。
在敏捷开发中,架构和设计是持续不断的。
软件设计中的七种臭味( smell ):
- 僵化性( rigidity)——设计难以改变。指的是对系统中某一处进行改动,就会导致依赖模块的改动,改动的越多,设计就越僵化。
- 脆弱性( fragility)——设计易于遭到破坏。指的是对系统中的某一些改动,可能会导致程序的许多地方出现问题。
- 顽固性( immobility)——设计难以重用。指的是在系统中有部分功能是给外部系统使用的,但是要和当前的系统进行剥离需要承担很大的风险和困难。
- 粘滞性( viscosity)——难以做正确的事情。软件的粘滞性和环境的粘滞性。当可以保持设计的方法比拼凑的方法更难应用的时候,就表明设计具有较高的粘滞性。对于粘滞性,自己在项目中没有体会到,没有理解。
- 不必要的复杂性——过分的设计。系统设计中包含当前没有用的组成部分或者功能,这样设计就具有不必要的复杂性。
- 不必要的重复——滥用复制,粘贴。系统中包含很多相似的代码,但是它们有所改动。当要改动这块类似代码中的某行代码时,需要改动其它几处,这样可能会造成更多的错误。
- 晦涩性( opacity)——混乱的表达。指的是设计难以理解。
臭味的存在是因为违反了一个或者多个设计原则所导致。以下这些常用的设计原则。
- 单一职责原则。The Single Responsibility Principle. SRP
- 开发—封闭原则。The Open-Close Principle. OCP
- Liskov替换原则。 The Liskov Substitution Principle. LSP
- 依赖倒置原则。 The Dependency-Inversion Principle. DIP
- 接口分离原则。 The Interface Segregation Principle. ISP
应用这些设计原则,只是为了消除软件设计中的各种臭味。不能够过分的使用设计原则。
对于软件来说,从根本上来说,源代码就是设计。
软件项目的设计是一个抽象的概念,她和程序的概念,结构以及每一个模块,类和方法的详情和结构有关。
设计臭味
随着项目时间的流逝,需求的变动,具有臭味的软件设计,将会变的越来越难维护,即使是进行简单修改,也会导致花费过多的时间去修改,并且可能引起其他的错误。
七种臭味:
顽固性,粘滞性,晦涩性,不必要的复杂性,不必要的重复,僵化性,脆弱性。
软件为什么会腐化
在非敏捷开发中,由于需求并没有按照最初的设计进行变化,从而导致设计退化,。
在敏捷团队中,团队几乎不会进行预先的设计,因此,不需要一个成熟的初始设计,他们更愿意保持设计尽可能的干净,简单,并使用许多的单元测试和验收测试来作为支援。这样保持了设计的灵活性和容改性。
敏捷开发团队,会遵循如下步骤:
- 遵循敏捷实践去发现问题。
- 应用设计原则去诊断问题。
3. 应用适当的设计模式去解决问题。
结论
什么是敏捷设计?敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则,模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能的简单,干净以及富有表达力。