www.martinfowler.com/articles/newMethodology.html#FromNothingToMonumentalToAgile
engineering methodologies(工程方法,又或则plan-drive methodologies,计划驱动方法),这些方法通
过对开发过程进行严格而详细的规定,以期使软件开发更可预知以及获得更高的开发效率,这种强调前期计
划灵感来源与其他工程领域的实践,从而得名工程方法。不过工程方法虽然存在了很长时间,但并没有引起
人们太多的注意,对其主要的评批是太过于个官僚化,太多德事情需要做,会延缓整个开发进程。
agile methodologies(敏捷方法)以对工程方法的反其道而行得以发展,主要是在无过程和过度过程中寻找
一种平衡,即从合理的过程中获得满意的回报。
敏捷方法与工程方法有一些明显的区别,其中之一反映在文档上,敏捷方法不是面向文档(document-
oriented)的,其倡导的是在给定的任务中使用更少的文档,敏捷方法更象是面向代码(code-oriented):
文档的核心应该是源代码
文档方面的特点并不是敏捷方法的关键所在,文档减少只是表象,其更深层次的特典是:
1.敏捷方法是强调“适应”而不是“预见”,工程方法试图在代码构建之前定制一个详细的计划,若项目庞
大,那么就需要在一个很长的时间跨度内作出详细计划。然后依照计划进行开发。这种方法的本质是拒绝变
化的。而敏捷方法强调的是“welcome change”,其目的就是设计出适应变化的过程,甚至通过改变自身来
适应变化。
2.敏捷方法是面向人(people-oriented)而非面向过程(process-oriented)的,工程方法的目标是定义一
个适合所有人使用的过程。 而敏捷方法则认为没有任何过程可以替代开发组的技能,所以过程的作用应该是
为开发组提供支持
将设计与建造分离开来?
《代码大全》的部分比喻在
Martin Fowler的文章中显得有些不合适了,软件工程不同于传统的工程项目,比如土木工程。工
程方法的思路类似与传统的工程项目,将设计与建造完全分开,因为在传统的工程项目了,设计与建造是两个截然不同的活
动,设计是难以预计的,需要昂贵的有创造性的人员,建造过程则比较机械,只需要按部就班的工作,这样在建造过
程中就能使用技能相对较低的人员。然后土木工程与软件工程存在许多不同,首先,土木工程中,设计相对与建造无论是在时
间上还是经费上都要少得多。但软件工程中编码所占的时间一般要少的多,McConnell 指出在大型项目中,编码和单元测试只
占15%,这几乎和桥梁工程中的比例倒过来了。即使把所有测试工作都算作是建造的一部分,设计仍要占到50%。
对比软件工程和传统工程,可以得出一些结论:
1.在软件开发中,具体建造费用低得可以认为是没有。
2.软件开发中所有工作都是设计,因此需要富有创造性的才智之士。
3.创造性的过程是不太容易计划的,因此,可预见性或许是个不可能达到的目标。
4.我们应该对用传统工程来隐喻软件构造保持足够的警觉,因为它们是不同类型的活动,需要不同的过程。
分享到:
相关推荐
Today's software engineer must be able to employ more than one kind of software process, ranging from agile methodologies to the waterfall process, from highly integrated tool suites to refactoring ...
Agile methodologies enable teams to adapt quickly to new trends, market demands, and customer feedback, ensuring that software products remain competitive and relevant in an increasingly dynamic ...
While this book emphasizes writing traditional “shall” statements, it also provides guidance on use case design and creating user stories in support of agile methodologies. The book surveys ...
and longer and new discussions of agile methodologies, including Scrum, Lean Software Development, and Kanban have taken their place. There are new chapters on parallel programming and parallel design...
Throughout the development process, agile methodologies were employed, allowing for iterative improvements based on feedback and user testing. Regular code reviews and testing ensured the quality and ...
例如:"I interned at [Company Name] where I contributed to the development of their mobile application, gaining hands-on experience in agile methodologies." 5. 研究兴趣:清晰地表达你的研究兴趣和未来...