4

假设您在一个项目上工作了 100 天。您流程的每个阶段(需求分析、规范等)需要多少天?

我也对每个阶段特定活动的比例感兴趣,例如编写测试、后端编码、前端编码、视觉设计、数据库设计等。

非常感谢!

编辑:

为了清楚起见,我不是在谈论网站设计——我对更“严肃”的 Web 开发感兴趣,例如自定义业务 Web 应用程序。我知道,一切都取决于每个项目的具体情况,但是我想各个项目的比率可能大致相同。

编辑2:

正如海伦所说,这个问题真的很难回答,因为项目可以如此不同,团队也可以如此。更具体地说,假设您有一个由四名开发人员组成的团队 - 其中两名负责后端工作,一名负责前端编程,一名负责设计和 html/css 编码(团队中的一名成员充当项目经理),你应该开发 StackOverflow.com 网站。

4

8 回答 8

8

我们正在运行敏捷 Scrum 项目,因此我们通常并行运行所有这些活动。所以虽然我不能回答你的确切问题,但我可以给你一些关于我们发现有效的比率的想法:

一名客户端程序员(html/css)、一名团队测试人员和一名交互设计师(与客户一起设计线框)可以为 4-5 名开发人员提供服务。对于大多数应用程序,像这样的团队通常需要 50% 的图形设计师,但您的工作量可能会有所不同。然后是项目经理,还有其他各种不属于核心开发团队的利益相关者。

在开发团队中,您通常有几个开发人员在客户端开发方面非常敏锐,而在后端开发方面也有类似的数量。这些人员配备也往往反映资源使用情况;)测试是开发的一个组成部分,也是团队测试人员的努力。

当然,您当地的条件可能会有所不同,但这些数字只是为了给您一些想法。

于 2009-01-24T13:11:11.000 回答
4
  • 第 1 步:拒绝
  • 第二步:愤怒
  • 第三步:接受

每个步骤所花费的时间对于所有参与的团队成员都是不同的。

于 2009-01-27T20:50:58.300 回答
3

我同意每个人的观点,“这取决于项目”。

另一方面,我确实认为可以遵循一个一致的过程。只调整与项目匹配的工作百分比:

通常,我遵循以下基本原则:

  1. 发现- 确定系统的特性/功能。最简单(也是最糟糕)的事情就是接受所要求的并顺其自然。
    例如,“构建 stackoverflow.com”是一个非常广泛的请求 - 实际上是错误的请求。该项目必须从“我需要一个程序员可以协作的在线位置”开始。基于你想要解决的那一件事,你可以深入了解你想要的所有细节——比如如何回答、询问、评价问题等。我认为这是最关键的一步!输出=要求/规范;在这里可以安全度过 20/100 天
  2. 线框图- 这是我喜欢使用基本 HTML 页面、paint.NET 甚至是施工图纸和胶水来模拟最终网站功能的各个方面的地方。我喜欢使用纸张,因为它很容易进行更改 :) 完成此过程会迫使您考虑用户体验的几乎所有方面,并让您可以灵活地添加/删除功能并根据需要调整您的要求。在您投入大量时间编写代码之前,您的客户已经对更改进行了一些输入。额外的好处是您可以使用 paste :) 10/100 天
  3. 实施/测试- 我将实施和测试组合在一起,因为我认为开发整个网站而不进行测试是短视的。(同时,还需要第 4 步)。这是橡胶碰到路面的部分。如果您在第 1 步和第 2 步中正确处理了您的客户,那么您将愉快地编写代码,而不会在最后一刻更改范围(或至少很少更改)。我尝试遵循一套通用的实施步骤:
    • 数据开发(数据库设计、查询设计、样本数据设置)
    • 站点框架(设置您的环境;生产、开发和质量保证)
    • 前端结构(css、标准类、标准html结构)
    • 开始编码!55/100 天
  4. SQA - 希望您可以让一些非相关方/最终用户随时测试应用程序。需要制定测试计划,以确保清楚应该测试什么以及期望的结果。我喜欢用真人来测试前端;自动化工具适用于代码/后端模块 这是让客户看到事情进展的好时机 - 他们此时进行更改的能力应该非常有限。10/100 天
  5. 交付/后期制作蜜月- 您已经构建、测试并准备好部署。把代码拿出来,让客户玩。你不应该有太多的调整;但我相信会有一些调整。5/100 天

Some of this seems idealistic; but you'd be surprised how quickly you can ship your application when you've got a well-reviewed, well-created specification.

于 2009-01-29T18:15:01.293 回答
1

不可能对这个问题给出一个有意义的答案。各个项目的比率甚至不会大致相同。对于某些项目,视觉设计几乎不重要(只要它或多或少有效),但数据库至关重要且复杂。对于其他人来说,这一切都是为了通过许多 AJAX 好东西和其他吸引眼球的东西来提供流畅的用户体验,但底层数据的组织和存储非常简单。

听起来您主要考虑的是单人项目,但对于较大的团队来说,团队的规模和设置以及您的开发过程也很重要。

于 2009-01-24T12:53:44.453 回答
1

可能我们是一家不寻常的开发商店。我们的整个存在(至少在工作时间)都是需求收集。开发人员也必须在其他所有部门工作。无论是在售后支持中接听电话(与 CRM 软件作斗争),在仓库里驾驶叉车(与移动终端作斗争),还是在装运站包装板条箱(与混乱的交货单作斗争)。

当我们处理一个新项目时,“需求收集”通常是在白板上的一个下午,通常与使用新软件最多的部门的某个人在一起。很少有前期设计,还有很多重构和重写。我们对此非常满意,并生成了大约 100.000 行架构良好且稳定的代码。

但似乎我们现在遇到了复杂性障碍。这是非常令人沮丧的,因为转向比 hack 和 slay 编码更“重”的流程会导致生产力的巨大损失。

于 2009-01-27T20:47:30.477 回答
1

需要明确的是——你基本上是在对你的工作进行时间限制——这与拥有固定预算(4 个开发人员 x 每天 x 美元 x 100 天——假设它是 100 天的持续时间而不是 100 天的工作量)直接相关。如果是这种情况,那么,平均。你会花费:

  • 25% 的前期规划,包括范围、规格开发、技术方法、物流(计算机、服务器、工作空间)、资源收集。
  • 50 % 开发 - 测试用例 (TDD) 开发、模式设计和实施、前端编码、后端编码、部署
  • 15% 测试 - 基本中断/修复活动
  • 10% 开销/管理 - 项目管理、沟通和协调。

非常粗略的估计 - 许多“领域”需要考虑,包括资源技能/成熟度、正在使用的技术、资源的位置(一个房间或全国范围内)、要求水平等。使用“特定技能”资源将进行规划更困难,因为您可能需要资源来执行多角色 - 一个建议是让 3 位可以帮助规范/设计/计划的通才和一个技术向导,以确保正确设置平台和数据库(成功的关键一旦你有尽可能好的要求)

于 2009-01-28T13:31:07.597 回答
1

这真是一个棘手的问题。为了对您需要申请每个步骤的时间比例给出一个准确的估计——如果我们采用经典的设计、实施、测试和部署方法——需要了解项目成员的规范和专业知识。如果您阅读 McConnell 的“软件估计”一书(我强烈推荐),那么您在他们的书中有一章是关于历史数据以及如何将其用于未来项目的。我不认为你有以前项目的确切历史数据——嗯——我没有——尽管我总是提醒我记录它们;)因为设计阶段最小的失败或不确定性是最关键的花很多时间来指定你想做什么. 确保每个人都以相同的方式理解并写下来。长话短说——我将 50% - 75% 的时间用于设计(如果 75% 将包括一个原型以清除所有不确定性),并在实施和测试中投入相同的部分。如果您使用的是 TDD,您将混合设计和测试,这样您就需要一些设计阶段并将其添加到测试阶段。

于 2009-01-28T22:53:27.990 回答
0
  1. 建立客户需求清单 1-2 天
        这取决于客户、他们的需求以及他们的准备情况。
  2. 设计师在 2-3 天内完成初步草图设计
        这里会发生一些分支,因为 2 和 3 将同时发生。
  3. 程序员构建我们现有系统中尚未包含的任何功能 1 天 - 1 个月
        这取决于客户,以及他们比大多数其他东西更需要什么。
        这也只会产生功能代码。
  4. 重复步骤 2 和 3,直到客户对我们所拥有的总体感觉感到满意。
        可能是 1 次迭代可能是 100 次(如果到 10 次我们不能让他们高兴,我们会将他们发送到其他地方,这不太可能。
  5. 构建最终设计 1-5 天
        这是最终的,没有错误,有效的 CSS/HTML/JS,一切都是跨浏览器等
  6. 构建最终功能 2-3 天
        这个代码是“完美的”,它 100% 工作,它很漂亮,没有已知的错误,开发人员很乐意发送它
        这和第 5 步同时发生。
  7. 部署 10 秒。

然后 2 周、2 个月和 6 个月后,我们会进行审查以确保没有问题。

因此,如果您跳过审核,这通常需要 8-20 天,IDK 您将如何将其工作到 100 天。


如果我们只是为客户构建一个应用程序(或扩展一个应用程序),我们将花费 2-3 时间来准确定义他们需要什么,然后不管构建它需要多长时间。

于 2009-01-24T11:30:08.583 回答