从开始(计划)到完成(测试和生产),什么是良好,组织良好的Web开发工作流程?

时间:2012-12-21 19:15:32

标签: php model-view-controller workflow

我已经成为PHP / MySQL开发人员多年了,但不幸的是,到目前为止,它只与小型项目合作过。我现在开始一个非常复杂的新网站,我开始对工作流程感到困惑。我不确定首先要照顾哪些部分,因为它们都是相互交织在一起的。

我很想知道你们中的一些人如何管理新网站的工作流程。我是独立工作的,所以如果没有多个开发人员参与,它会更容易解释。此外,我将使用CodeIgniter框架,因此让工作流程涉及MVC模型会很棒,这实际上应该使工作流程更容易。

经过一番搜索后,我看到了这张有用的图表:workflow chart

但是,我不太清楚每个类别的内容。这是迄今为止我所理解的一般概述。当我错了或有更好的选择时,请随时纠正我。

规划

确保您有明确的项目目标:您提供什么,为谁?它对别人有什么帮助?等

网页

列出将在网站上的所有页面和子页面。

线框

浏览整个站点地图,并对每一页进行粗略草图。 (你有多详细?)你可以使用铅笔和纸,或像Axure或Mockingbird这样的程序。

工作流程图中的下一个主要类别是内容,但我不确定这涉及到什么。这是网站上的所有文字吗?数据库结构?还有别的吗?

艺术品

网站的实际设计/模板。不过,这真的是这个地方吗?我认为编码和功能更重要,并在此之后进行设计。

编码

这一步似乎无所不包,我认为它需要被打破。首先是数据库结构(或者是在线框之后的内容中完成的吗?)我是否为站点地图中的每个页面的所有函数制作了大纲?我是否只是创建了所有必要的控制器,并评论了我将要放置的功能以及在哪里?模型是否遵循控制器概述,反之亦然?我什么时候开始填写所有控制器和型号?

需要进行持续测试以确保您的代码正常运行。

内容人口

这会包含MVC框架中的视图文件吗?换句话说,控制器和模型提供的所有数据?

最终测试

确保所有浏览器都能正常运行。在这里和那里进行调整和更改。全力以赴解决众多“假设”案例。

生产

网站上线。

结论

以上是我所理解的有组织的开发复杂网站步骤的流程图,但我的理解可以大大改进。应该改变什么?我可以使用所有可能的建议。谢谢。

编辑:这里有人提到“敏捷开发” - 从我到目前为止所读到的,它实际上并没有结构。如我错了请纠正我。正如我对这个答案所评论的那样,是否真的有可能以这种方式为复杂的网站开发,例如亚马逊或Ebay?在我不知情的意见中,工作流程应该有一个明确的计划,否则项目就没有重点。

最终编辑:虽然此问题已经结束,但我想为稍后可能会发现这些问题的人添加一些信息。我发现以下工作流程很有用:http://www.webassist.com/free-downloads/tutorials-and-training/web-dev-workflow.php。一般工作流程的PDF:http://assets.webassist.com/how-tos/Short-Dev-Checklist.pdf。当然也可以使用敏捷开发,但对于那些不知道从哪里开始的人来说,这可能是一个很好的起点。我可以在这里添加其他工作流程和示例。

3 个答案:

答案 0 :(得分:3)

R& D世界正朝着敏捷开发的方向发展,在这种情况下,您不需要做太多的计划并从头到尾编写所有内容,而是进行小规模的迭代并进行小的更改,以便始终有一个明确的目标在你面前,你可以调整你的方向,因为你对需求的理解有所改善(真实的,基于用户的反馈,而不是基于你认为客户想要/使用的估计猜测工作)

我建议您研究敏捷开发和精益创业方法,它改变了我构建在线服务的方式,并且会提高您的效率和效率。

我可以告诉你,我开始编码后大约2天我的在线服务上线了。这并不意味着你从一开始就向真实用户开放它,但你可以从现实世界中获得即时反馈,而不是将它全部保存在你的开发机器上,直到你“准备好上线”。

答案 1 :(得分:0)

敏捷开发绝对是网站的好主意(通常,编码既相对容易又独立)。关于敏捷的要点是它允许更改,并且它还允许调整“执行功能B花费的时间比预期长,因此C和D将在另一次迭代中交付”。您可能已经意识到,规划较大的项目可能需要付出很多努力,而且几乎总是比您预期的要长。使用敏捷,您可以将每个位作为“垂直切片” - 这意味着所做的任何事情都应该为产品做出有用的贡献,一直到在首页[或者它所属的任何地方]添加一个灵动来添加代码来处理它以及用于存储/检索相关数据的数据库模型。

我很确定您仍然需要对包含大量页面和大量数据库表等的大型网站进行一些规划,但只要您在一般网站/数据库中有合理的基础设计,敏捷方法将让你设计“行走的骨架”(somethig在基本概念中起作用,但需要更多的骨骼上的肉作为工作产品)。然后,您将使用更多功能充实草图,每个功能本身都是“完整的”,并添加了客户需要的东西。这样,在每个工作项目完成后,您总能拥有可以交付给客户的东西。

我也相信亚马逊或Ebay有超过20-30张桌子。我使用一个名为www.planetcatfish.com的网站,它比亚马逊或Ebay更小更简单,它有25个表(除了论坛的phpbb表,它也用于站点特定的用户功能)。这是多年来编写的,主要使用php,一些javascript和一些mysql内部的mysql代码。

答案 2 :(得分:0)

TheZuck的回答是好的,非常有帮助所以我只是添加一些我自己的经验,这并不意味着你会经历同样的事情,如果你有一半的想法可能不会商业(这是我缺乏的。:S)。

内容一直是​​我的客户的问题,所以我想让他们尽早开始工作!如果您正在与撰稿人合作,我想这不是问题。但是如果没有及时向您提供内容,应该受到某种惩罚。

值得注意的是,一旦他们开始考虑内容,您的客户才会真正开始考虑他们的网站。期待听到他们在开始工作时想要做出一些改变。

如果您的客户是小型企业,那么他们往往不明白实际需要时间的是什么。尽管敏捷开发非常好,但我认为这对于小型企业来说很难实现,因为它们没有足够的资金可以使用,并且可能需要固定的成品价格。如果它被修复了,如果他们已经用尽了所有的时间或者他们付出的任何费用而没有给他们成品(工作可交付成果,与成品不同!),他们就会生气。

客户往往是IT文盲,有时甚至是极端的。指望你不得不花费一些或相当多的时间来向他们解释“明显的”事情。

不要过高估计自己和自己的能力,因为这可能意味着你的收费会低于实际合理的收费。一个高质量的网站应该花钱,但我会理解,如果你收费很少,你知道只是为了得到一些客户。

我意识到这不是你问题的真正答案,但我希望它会有所帮助。