你的网站开发流程包括哪些步骤,每个阶段需要多长时间?

4
假设您在一个项目上工作了100天。您的过程中的每个阶段(需求分析、规范等)需要多少天?
我还对每个阶段中特定活动的比例感兴趣,例如编写测试、后端编码、前端编码、视觉设计、数据库设计等。
非常感谢!
编辑:
为了让事情更清楚,我不是在谈论网站设计 - 我对更“严肃”的Web开发感兴趣,例如定制业务Web应用程序。我知道,一切都取决于每个项目的具体情况,但我认为比例可能从一个项目到另一个项目大致相同。
编辑2:
正如Helen正确指出的那样,这个问题真的很难回答,因为项目可以如此不同,团队也可以如此不同。为了使其更具体,假设您有一个由四名开发人员组成的团队 - 其中两名从事后端工作,一名从事前端编程,一名从事设计和HTML / CSS编码(团队的一名成员担任项目经理),并且您应该开发StackOverflow.com 网站。
8个回答

8
我们正在运行敏捷的Scrum项目,因此通常会并行运行所有这些活动。所以虽然我无法回答您确切的问题,但我可以给您一些我们发现有效的比例的想法:
4-5个开发人员可以由一个客户端程序员(HTML / CSS),一个团队测试人员和一个交互设计师(与客户合作设计线框图)服务。像这样的团队通常需要50%的图形设计师来完成大多数应用程序,但在这方面你可能会有所不同。然后还有项目经理,以及其他各种不是核心开发团队成员的利益相关者。
在开发团队中,您通常有几个熟悉客户端开发的开发人员和类似数量的后端开发人员。这些人员配置也往往反映了资源使用情况。测试是开发的一个组成部分,也是团队测试人员的努力。
当然,您的本地条件可能会有所不同,但这些数字只是为了给您一些想法。

4
  • 步骤1:否认
  • 步骤2:愤怒
  • 步骤3:接受

每个团队成员完成每个步骤所需的时间都是不同的。


3

我同意那些说“这取决于项目”的人。

另一方面,我认为有一个可以遵循的一致性流程;只需调整工作量百分比以适应项目:

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

  1. 需求评估 - 确定系统的特性和功能。最简单(也是最糟糕)的做法是接受所要求的,并按照要求进行开发。
    例如,“构建stackoverflow.com”是一个相当广泛的请求,实际上是一个错误的请求。项目必须从“我需要一个程序员可以协作的在线位置”开始。 基于你想解决的问题,你可以深入了解所有细节——例如如何回答、提问、评分等等。 我认为这是最关键的步骤!输出=要求/规格;可以安全地花费20/100天。
  2. 线框设计 - 这是我喜欢使用基本的HTML页面、paint.NET甚至是手工剪贴板模拟最终网站功能的地方。我喜欢使用纸张,因为它容易更改:) 通过这个过程,你必须考虑到用户体验的方方面面,并允许你在需要时添加/删除功能并调整你的要求。在你投入大量时间编写代码之前,你的客户有一些可以更改的输入。 额外的奖励是你可以使用粘贴功能:) 10/100天
  3. 实现/测试 - 我将实现和测试组合在一起,因为我认为在没有测试的情况下开发整个网站是短视的。(同时,你仍然需要第四步)这是橡胶和路面相接触的部分。如果你在第1步和第2步中正确处理了客户,你将愉快地编写代码,而不会有任何最后一分钟的范围变更(或者至少非常少)。我尝试遵循实现的一般步骤:
    • 数据开发(数据库设计、查询设计、示例数据设置)
    • 网站框架(设置您的环境;生产、开发和QA)
    • 前端结构(CSS、标准类、标准HTML结构)
    • 开始编码! 55/100天
  4. 软件质量保证(SQA) - 希望你可以让一些不涉及的用户/最终用户在使用过程中测试应用程序。必须制定测试计划,以确保清楚地说明应该测试什么和期望的结果。我喜欢使用真实的人来测试前端;自动化工具对于代码/后端模块也可以。 这是让客户看到进展的好时机——他们此时应该有非常有限的能力进行更改。 10/100天
  5. 交付/后期支持 - 你已经构建了它,测试了它,现在准备部署。让客户玩。你不应该有太多要调整的东西;但我相信有一些调整。 5/100天

其中一些看起来是理想主义的;但当你拥有一个经过审查、创造精良的规范时,你会惊讶于你可以多快地发布应用程序。


1

给这个问题一个有意义的答案是不可能的。在不同的项目中,比例大致相同。对于一些项目来说,视觉设计几乎没有什么作用(只要它大体上有效),但数据库至关重要且复杂。对于其他项目,关键是提供流畅的用户体验,以及许多AJAX好处和其他眼花缭乱的效果,但底层数据组织和存储非常简单。

听起来你主要考虑的是单人项目,但对于更大的团队,团队的规模和设置也很重要,以及开发过程中需要注意的事项。


1

也许我们是一家不同寻常的开发商。我们整个存在(至少在工作时间内)都是需求收集。开发人员需要在其他部门工作。无论是在售后支持中接电话(并与CRM软件作斗争),在仓库中驾驶叉车(并与移动终端作斗争),还是在发货站打包箱子(并与混乱的送货单作斗争)。

当我们着手处理新项目时,“需求收集”通常是在白板上进行的一个下午,通常由最多使用新软件的部门的某个人参与。没有太多的前期设计,但有很多重构和重写。我们对此非常满意,并生成了大约100,000行代码,这些代码具有良好的架构和稳定性。

但现在似乎我们正在遇到复杂性障碍。这非常令人沮丧,因为采用比黑客和砍杀编码更“重”的流程会导致生产力的显著损失。


1

只为了明确-您基本上正在限定您的工作时间-这直接关系到有一个固定的预算(4个开发者x每天$x x 100天-假设是100天的持续时间而不是100天的工作量)。 如果是这种情况,那么平均来说,您将花费:

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

非常粗略的估计-需要考虑许多“领域”,包括资源技能/成熟度,使用的技术,资源位置(一个房间还是全国),要求水平等。 使用“技能特定”的资源会使规划更加困难,因为您可能需要资源执行多个角色-一个建议是获得3个可以帮助规格/设计/计划的综合性专家,以及一个技术巫师,以确保平台和数据库正确设置(一旦您拥有尽可能好的要求,这是成功的关键)


1

这确实是一个棘手的问题。要给出每个步骤所需时间比例的相对准确估计 - 如果我们采用传统的设计、实现、测试和部署方法 - 就需要了解项目成员的专业知识和规格说明。 如果你看过麦康奈尔的书《软件估算》(我强烈推荐),你会发现其中有一章关于历史数据以及如何将其用于未来项目。 我不认为你有先前项目的确切历史数据 - 好吧 - 我也没有 - 尽管我总是提醒自己记录它们 ;) 由于设计阶段最小的失败或不确定性是最关键的,花费大量时间来明确您想要做什么。确保每个人都理解并写下来。 长话短说 - 我会把50% - 75%的时间放在设计上(如果是75%,这将包括原型以消除所有不确定性),并将相等的时间分配给实现和测试。 如果您使用TDD,您将混合设计和测试,因此您将从设计阶段中取一部分并添加到测试阶段。


0
  1. 建立客户需求列表 1-2 天
        这取决于客户需要什么,以及他们准备得有多好。
  2. 设计师进行初步草图 2-3 天
        这里会有一些分支,因为第二步和第三步会同时进行。
  3. 程序员构建任何现有系统中不存在的功能 1 天 - 1 个月
        这取决于客户需要什么,比其他任何事情都更重要。
        这也只会产生功能性代码。
  4. 重复步骤 2 和 3,直到客户对我们所做的工作感到满意。
        可能是 1 次迭代,也可能是 100 次(如果我们无法在 10 次内让他们满意,我们会把他们送到别处)。
  5. 构建最终设计 1-5 天
        这是最终版本,没有错误,有效的 CSS/HTML/JS,所有内容都可以跨浏览器使用等等。
  6. 构建最终功能 2-3 天
        这段代码是“完美的”,它可以百分之百地工作,它很漂亮,没有已知的错误,开发人员很高兴将其发送出去。
        这和第五步同时进行。
  7. 部署 10 秒钟。

然后,两周、两个月和六个月之后,我们会进行回顾,以确保没有出现问题。

所以,如果你跳过了回顾,这通常需要8-20天,我不知道你如何在100天内完成。


如果我们只是为客户构建(或扩展)应用程序,我们将花费2-3个时间来确切地定义他们需要什么,然后再花费足够的时间来构建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接