Project management 启动和完成小型软件项目的正确方法?

Project management 启动和完成小型软件项目的正确方法?,project-management,project-planning,Project Management,Project Planning,有很多关于如何规划软件项目的文章(包括用户故事等),但它们通常假设您有一个庞大的预算、自由的时间框架和/或一个真正的开发团队。虽然它们听起来很棒,但它们似乎从来没有考虑过单独开发人员在很短的期限内工作 也有很多关于基于测试的方法论的讨论,您在实现每个方法之前为每个方法编写一个测试用例,但是我觉得如果您的软件是以GUI为中心的(例如,(服务器端)web编程或Flash/ActionScript),则很难应用这些方法论 尽管每当我完成代码的一部分时,我都会大量使用重构来改进代码,最后一刻的黑客攻击和

有很多关于如何规划软件项目的文章(包括用户故事等),但它们通常假设您有一个庞大的预算、自由的时间框架和/或一个真正的开发团队。虽然它们听起来很棒,但它们似乎从来没有考虑过单独开发人员在很短的期限内工作

也有很多关于基于测试的方法论的讨论,您在实现每个方法之前为每个方法编写一个测试用例,但是我觉得如果您的软件是以GUI为中心的(例如,(服务器端)web编程或Flash/ActionScript),则很难应用这些方法论

尽管每当我完成代码的一部分时,我都会大量使用重构来改进代码,最后一刻的黑客攻击和添加往往会让这件事令人难以置信地沮丧,我经常觉得应该有一种方法,至少可以利用一些规划理论,这显然是为了首先帮助大型开发团队和软件库的开发人员

作为单独开发人员编写小型ish应用程序的正确方法是什么?如何防止最后一刻的更改使代码变得更糟?

没有“正确的方法”,但不幸的是,有很多更好的方法。我认为小型项目和大型项目之间没有真正的区别——同样的事情需要发生,只是这些事情的深度会发生变化

在你的情况下——工作到很短的最后期限,防止最后一刻出现问题——同样的老一套行之有效的方法也会奏效:

  • 有效地使用源代码管理,在单独的分支中开发最后一分钟的更改,以便在需要时可以轻松地删除它们
  • 测试,测试,测试。如果您的测试涵盖了您试图正确实现的目的,那么最后一分钟的变化可以测量

我怀疑您需要认真研究一些不同类型的测试和工具-有很多方法可以帮助您管理这些问题。

是否有关于如何为以GUI为中心的软件编写测试用例的指南?我经常发现,我的许多代码都不能很容易地从GUI、网络或异步事件中分离出来。大多数关于测试驱动开发的文献似乎都忽略了web应用程序或GUI代码,而将重点放在了显而易见的方面。我同意源代码管理可以提供很多帮助(我知道我应该对此进行更多研究),但我也希望改进规划。我经常发现自己一开始是以“意识流”的方式编码,然后重构和清理中间的代码,而不是为整个应用程序绘制蓝图并填充细节。当你的时间很短,你的整个开发团队都由你和一只橡皮鸭组成时,花上几天在用户故事、用例和UML图上似乎有点过火了。这取决于你使用的工具:我真的很难使用整个TDD/BDD方法,直到我开始使用一些Rails的东西,并专注于使用Cucumber。花了一段时间,但一旦你到达第一个“啊哈”的时刻,它开始流动。我发现www.tekpub.com上的视频真的很有用,还有一些免费的,还有railscasts系列,rails聚焦可以让你睁开眼睛我听到你用“意识流”的方法,我认为没有必要过度记录这些东西,但是提前思考总是很有用的:)我给其他人的一个策略是,他们开始担心UML、用例等,就是用英语写一段描述你的意图,然后再写下来。让我惊讶的是,当人们无法表达一两句简单的句子时,他们却常常沉迷于“最佳实践”的东西——这可能就是所需要的,可以将其视为一篇博客文章的提纲,让它有不同的含义。@Alan对于非web GUI,你应该看看谦逊的对话模式(www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf)。