哪些软件开发方法可以视为基础


10

我正在写一份涉及软件开发方法论的小型研究论文。我一直在研究所有可用的方法论,并且想知道在所有方法论中,是否有任何方法为其他方法论奠定了基础?

例如,查看以下方法:
敏捷,原型设计,洁净室,迭代,RAD,RUP,螺旋,瀑布,XP,精益,Scrum,V模型,TDD。

我们可以说:
原型,迭代,螺旋和瀑布是其他的“基础”吗?

还是没有“基础”之类的东西,每种方法都有自己独特的历史吗?

我当然想在我的研究论文中描述所有方法论,但是我根本没有时间这样做,这就是为什么我想知道哪些方法论可以看作代表。

Answers:


5

您列表中的名称并不全是方法论,它们在不同级别上扩展:

  • 迭代是一种特征,是几种方法和技术共有的特征。Scrum是一种迭代方法,TDD是一种迭代技术。
  • 我将敏捷视为方法学的超集,并停留在概念/哲学层面。在面向对象的编程中,您可以将其描述为抽象的-它是一组无法实例化的值和原理,必须被派生和实现。这就是Scrum和XP所做的。
  • 洁净室,RAD,RUP,螺旋,瀑布,XP,精益,Scrum,V模型是正确的方法,即软件开发过程(尽管Scrum声称是​​轻量级的“框架”,而不是繁重的过程)
  • 原型开发和TDD是技术,活动。TDD是XP实践。

区分哪个是困难的工作。您显然可以划出一条历史线,但是一种方法很少直接基于另一种方法。他们宁愿重叠,彼此借鉴,有时彼此回应...我看不到明确定义的分类,尽管您可能会概述几个大家族。

另一种看待它的方法是从一代的角度来看。在企业软件方面,我想说我们已经知道了两代方法。第一个是瀑布和V模型,其中大多数是其他工程学科应用于软件的预先存在的过程。第二代(您可以称其为“敏捷”,但它在创造“敏捷”一词之前就已经很久了)就开始了,它是对第一代流程繁重的反应,当时人们开始意识到软件是一种完全不同的动物,并且满足该要求的标准软件以及可以确保这些标准确实有效的步骤,仍然有待探索。

最后,您应该注意,尽管在软件中可能比在其他学科中更多,但方法论并不是您可以用来使事情正常运行的秘诀。软件开发具有与技术方面一样多的人为方面,并且团队或经理提出了精打细算的方法论和盲目的应用清单,可以预料会有一些惊喜。仅仅看诸如年复一年的混沌报告之类的软件项目成功率的研究,就可以知道软件方法论的历史与一系列失败的尝试有关,而不是牢固,科学地建立的,可重复的过程的规则。


我推荐这篇学术论文,比较与我提到的2代类似的2种软件过程类型:paulralph.name/wp-content/uploads/2011/01/…–
guillaume31

3

有三种:

  1. 无(又名牛仔编码)
  2. 瀑布
  3. 快速的应用开发(RAD或螺旋)

其余的是这些的变体和组合

请注意,来自瀑布的工件(初始,需求,功能规格,设计规格,测试规格,质量控制规格等)全部涵盖了对项目重要的内容,大多数(如果不是全部)都被其他方法所涵盖,但是非常不同的方式。例如,在TDD中,功能,用户案例和测试说明涵盖了瀑布的需求,功能规范和测试规范。在RUP中,甚至添加了更多的工件,这些工件破坏了瀑布规格(例如,利益相关者文档是Inception文档的一部分),但是以螺旋方式进行

完成后,请发布指向您结果的链接,听起来像是一篇有趣的论文!


@Bas:James Martin在1991年en.wikipedia.org/wiki/…
Steven A. Lowe

非常感谢您的回答!我将查看以后是否可以发布结果,因为这是我为公司所做的工作的一部分。所以,我会尝试,看看我是否可以把它独立于公司的分配:)
巴斯

0

也许您只想提及古董方法论(而不是“方法论”),例如:

  1. 批处理:提交一副纸牌并在第二天取回输出。缺点:两次提交之间的时间过多;要进行调试,请研究核心转储。

  2. cli方法-使用vi或emacs,然后进行编译;从命令行开始,就像直到今天在Linux shell中一样。缺点:难以调试(gdb?你是我的孩子吗?),晦涩难懂的40年历史的Shell命令。

只是一个想法。


1
这不是我真正想要的。我真的很想知道软件开发项目中使用的软件开发方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.