您何时首先设计GUI,稍后设计后端代码,反之亦然?

时间:2008-10-09 09:51:42

标签: user-interface language-agnostic

当我正在处理一个项目时,有时候我会首先设计GUI,然后编写后端代码以使其工作,但有时我会做相反的事情并在系统工作后制作GUI 。您如何选择哪种方式进行编码,是否存在任何特定类型的项目或环境,无论哪种方式都倾向于您?

9 个答案:

答案 0 :(得分:11)

您需要创建一些可以让测试人员立即开始的东西。试着从那个角度思考。

如果他们正在进行手动UI测试,请为他们提供一个UI的shell,其中包含所有功能的存根。如果有一个要测试的接口,请确保它可以工作(即使它返回虚拟数据),这样他们就可以开始使用它等等。

大部分时间都是用户界面。您可以向用户展示并获得真正有用​​的即时反馈。

答案 1 :(得分:9)

他们真的是一对一的。如果UI将覆盖的功能至少没有后端的基本设计,则无法设计UI。并添加了一个新的后端功能,设计的一部分是弄清楚该功能如何向用户公开以及它如何适应现有工作流程。

顺便说一句,我真的不喜欢快速而又脏的用户界面“只是为了让测试人员能够访问该功能”。一旦你构建了UI,你将很少有时间在项目中从头开始重建它(假设它是一个按计划进行的项目:-))。如果您正在构建一个用户界面,请按照您希望它发送给客户时的方式构建完美的像素。

否则你会得到像this monstrosity这样的东西。 : - )

顺便说一句,如果您需要为可用性测试构建UI原型,请确保它是使用无法集成到生产代码中的内容构建的。例如,如果您正在编写C ++ / C#/ Java代码,请在Flash中构建原型。

答案 2 :(得分:3)

我认为这取决于项目的类型,是的,我知道这并不是真正的答案,因为他们都这样做。但通常你可以想象前端想要从后端看的样子。

我自己总是会注意前端,因为在一天结束时这是可见的部分。此外,它通常有助于了解可视化所期望的内容,即使是以块形式或通过帖子记录您想要了解的内容,您确实正在编码。

当然,它总是有帮助,如果它是一个客户端,他们提前给你视觉效果:)这样,只要你匹配视觉效果,你仍然可以去城市与非视觉相关的后端乐趣。

答案 3 :(得分:3)

既不是,也不是。我们通常将项目分解为任务。有些任务是构建请求的UI的一部分,有些是实现其背后必要功能的一部分。不同的人处理不同的任务,因此团队的一部分正在执行UI,另一部分正在实现其背后的功能。因此,我们在UI和功能上并行工作。

让任务进入正确的顺序非常重要。如果我们准备好功能,它就没用了,但使用它的用户界面还需要两周时间。将UI用于准备就绪也没用,但由于后端功能缺失,它将在两周后无法运行。

这就是我们尝试指定小里程碑的原因。在完成当前任务的所有任务之前,没有人开始研究另一个里程碑。里程碑始终将前端和后端功能组合在一起。因此,如果达到里程碑,每个实现的功能的前端必须准备好,并且每个实现的后端功能必须有一个前端来测试它。

但是,从某种意义上说,你可以说我们先做后端代码然后是UI,因为当说里程碑需要提供UI来测试功能时,并不意味着这是我们将发布的最终用户界面。通常接近结束时,当几乎所有后端功能都准备好并经过测试时,我们经常进行UI大修。这是因为用于测试的UI需要为里程碑做好准备,但它可能并不总是很好看,或者我们最终会发布的UI。 UI通常会减慢整个项目的速度(我们的应用程序通常是非常密集的UI,因为我们不喜欢生成带有枯燥标准UI的应用程序,我们希望看起来很漂亮的UI让你说“哇,看起来很棒!”)因此,我们经常需要实现一个中间UI,以便为里程碑和测试准备好UI。我们通常会在发布之前将UI作为最后一步进行修改。因为我们已经拥有了所有内容的UI,所以如果我们无法改进它的某些部分(因为时间限制),这没什么大不了的,毕竟有一个UI,它只是不漂亮,但它正在工作和测试。因此,我们将尽可能在给定的时间范围内尽可能地进行改造,因为我们知道如果我们必须在明天停止改造过程,我们就会拥有一个完全可用,可运输的应用程序。 UI修改只是抛光,IOW很高兴,但你也可以在没有它的情况下发布。

答案 4 :(得分:2)

我认为首先编写GUI并向最终用户展示快速原型有助于两者分享最终产品的相同愿景。 恕我直言,我认为服务器端代码不依赖于GUI代码。

答案 5 :(得分:2)

要确定这个问题有两个问题:a)哪一个最重要b)哪一个最难。

如果您正在编写订单处理应用程序,那么显然它的成功将更多地取决于用户界面而不是后端代码。所以你应该首先设计一下,从客户那里获得一定程度的批准,然后设计后端以适应它。

也应该说设计在设计完成之前没有完成,无论你做什么,可能需要重新设计你先做的任何一个。

答案 6 :(得分:1)

当项目是“数据密集型”(创建,读取,更新和删除元素,显示数据列表)时,我通常更喜欢从后端代码开始。

在开发快速原型时,首先是GUI。

答案 7 :(得分:0)

我的方式是:

  1. 非常具体地在纸上写下我想让应用做什么
  2. 根据我希望应用程序执行的操作,在纸上绘制应用程序的基本视图
  3. 想一想应用程序需要的基本元素
  4. 原型应用程序的基本视图,无论是在我正在使用的SDK还是原型应用程序(原型应用程序更好,因为这样您可以节省时间,以防您在流程中看到您所认为的不是帮助使用应用程序)
  5. 将原型转移到SDK并编写代码
  6. 研究UX"法律"并适用于设计...这可能需要相应地更改您的代码

答案 8 :(得分:0)

首先应该先收集用户或客户要求,然后再分析它们。之后,您可以遵循以下设计过程的一般模型:

enter image description here

因此,要进行专业设计,您应该遵循Ian Sommerville的软件工程书中声明的这三层。

总之,如果我们缩短答案,我们可以说最好的答案几乎同时在GUI和数据库设计上工作。在对它们进行了很多改变之后;最后,两种设计几乎会在同一时间生产。