TDD和敏捷实践能否承诺提供最佳解决方案?(甚至是一个“好的”解决方案?)
不完全是。但这不是他们的目的。
这些方法简单地提供了从一种状态到另一种状态的“安全通道”,并认识到变化是耗时,困难和冒险的。两种做法的重点是确保应用程序和代码既可行,又被证明可以更快,更定期地满足要求。
... [TDD]反对允许添加未经证明可满足要求的软件的软件开发 ...肯特•贝克(Kent Beck)因开发或“发现”了该技术而倍受赞誉,他在2003年表示,TDD鼓励简单设计并激发信心。(维基百科)
TDD致力于确保每个“大块”代码都满足要求。尤其是,它有助于确保代码满足预先存在的要求,而不是让要求受不良代码驱动。但是,它不保证实现以任何方式都是“最佳”的。
至于敏捷流程:
工作软件是进度的主要衡量标准。在每次迭代结束时,利益相关者和客户代表都会审查进度并重新评估优先级,以优化投资回报率(Wikipedia)
敏捷并不是在寻找最佳解决方案 ; 只是一个可行的解决方案-目的是优化ROI。它承诺工作的解决方案更快,而不是以后 ; 不是“最佳”的。
但是,那还可以,因为这个问题是错误的。
软件开发的最佳目标是模糊的,不断变化的目标。要求通常是不断变化的,并且到处都是秘密,这些秘密只会在充满老板老板的会议室里出现,这使您很尴尬。解决方案的体系结构和编码的“内在优势”是由您的同龄人和您的管理上级主管的分歧和主观意见来分级的-他们都不会对优质软件有任何了解。
在最起码,TDD和敏捷实践承认的困难和尝试优化的两件事情是客观的,可衡量的:。工作v未-工作和迟早v以后。
而且,即使我们将“工作”和“更快”作为客观指标,您为它们进行优化的能力也主要取决于团队的技能和经验。
您在努力产生最佳解决方案时可能会想到的事情包括:
等等..
这些问题是否真的产生了最佳解决方案,这将是另一个要问的大问题!