如何设计简单的Web应用程序?

时间:2010-07-27 01:16:06

标签: php web-applications

我有PHP的基本知识,之前做了一些小的个人项目。由于我的程序很小并且通常包含不到五个类,我立即跳入编码 - 考虑到我的数据库表和用户界面设计。问题是我经常发现自己在项目中间迷失了自己的想法。因此,我认为某种形式的正式规划从一开始就是切实可行的。

我最近一直在阅读几本软件工程书籍。一本书说,在网络工程中,应该使用极端编程和scrum等敏捷过程。我被介绍用于诸如用例,CRC卡和UML之类的工具 - 我认为对于我想到的简单项目来说,这些工具太复杂且不切实际。

另一方面,我阅读的网页文章简单地提出了UI的简要草图,站点地图和简单的工作流程图。它们看似实用,但过于简陋和非正式。

构建简单Web应用程序的实用但正式的方法是什么?

4 个答案:

答案 0 :(得分:2)

不要如此迅速地丢弃用例或类似的概念,例如'用户故事'。这些工具带来的好处是让您考虑网站需要做什么。这可以指导所有进一步的技术工作,并帮助您专注于重要的事情而不是迷失在有趣但低价值的工作中。

考虑网站需要做的最重要的 n 事项,并列出每个事项:

  • 此特定情况下用户的最终目标
  • 涉及的人员和其他系统的种类(演员,在用例术语中)
  • 开始此活动之前需要采取的措施(前提条件
  • 主要角色成功实现目标所需的基本步骤
  • 如果其中一个步骤无法完成,应该怎么办
  • 如果案例成功完成,系统会是什么样子(后置条件
  • 如果在途中出现错误,系统应该是什么样子

通过少数这些用例,您可以全面了解为实现目标而需要构建的内容。如果它开始看起来像是太多的工作,你可以看看哪些目标具有更大或更小的重要性,并削减或推迟那些提供更少价值的目标。如果你想到网站应该做的新事情,现有的用例如下:

  • 为该功能提供了一个主页,因此请修改相应的用例以合并该功能
  • 不提供住所,表示您错过了一个用例或发现了一个新用例,因此您应该如上所述详细说明,或
  • 不提供房屋,因此表明没有必要,所以你不应该花时间。

诀窍是选择适当的抽象和形式。高水平的工作,非正式地写,你可以快速解决这些问题。当它们不再有用时(你已经将大部分应用程序勾勒出来并且现在正在努力处理细节),将它们放在一边。当你想到新事物时,看看它们是否合适。泡沫,冲洗,重复。

答案 1 :(得分:1)

首先要问自己一些简单的问题:

1)我想稍后重新使用和扩展此代码吗?           如果是这样,使用一些基本模式(如MVC(模型 - 视图 - 控制器))或使用许多可用的PHP框架之一可能是个好主意。已经建立的框架在设计中有更多的格式以及如何使用它。您也可以将它们作为设计自己的基础。

2)您正在进行的网站是否会经常增长或变化?如果网站不会发生太大的变化,你可能会做一些非常简单的事情,而不必过分担心好的设计原则。

3)您想学习并应用您提到的一些技巧吗?如果是这样,那么去城里尝试不同的技术,看看哪些吸引你。

这些问题将帮助您决定如何决定构建网站。

答案 2 :(得分:1)

从小开始,模拟几个简单的屏幕,他们的数据库结构等。使用适合你的任何方法 - 如果这是UML图表,那么很好。从那里获得完成,评估和迭代的东西。

这可能不是你想要的,但也帮自己一个忙,选择一个框架,如CodeIgniter,让你的生活更轻松地编写服务器端代码。同样,请考虑使用jQuery等客户端框架。当您准备好坐下来编写代码时,这将使您更容易。

答案 3 :(得分:1)

The Bare Essentials

我发现有一个(大致)四步流程可以使应用程序开发变得更加容易,并帮助我避免在此过程中迷路。我没有假装使用敏捷开发方法。这就是我工作的方式。

  1. 确定应用需要执行的操作。通过“需要”,我的意思是,绝对必须做,而不是别的。如果它是一个“很好的”功能,请将其写下来,稍后再回来。
  2. 找出需要跟踪的数据,以使一切正常。 Slugs,titles,datetimes等。设计数据库。 (我为此使用MySQL Workbench。)
  3. 使用您的功能候选名单,使用Balsamiq对用户界面进行原型设计。请记住,只添加您现在需要的功能。
    • 您可以考虑在此步骤中执行HTML / CSS模板。
  4. 现在您已拥有数据模型和UI,请将它们连接起来。业务逻辑应该关注两件事:
    1. 摘要远离数据模型,因此您可以轻松检索和存储步骤2中的信息。
    2. 让UI完全按照您在步骤3中设计的方式工作。不要花哨。
  5. 专注于小目标

    这个过程有两个关键。首先是要分离各种组件的设计。在设计UI等时,您不希望考虑实现细节。第二个关键是迭代。专注于您现在需要添加所需的内容并忽略其他所有内容。

    完成后,您可以进行迭代和调整,重复步骤1-4等。但是不要在任何步骤中陷入太长时间。如果事情没有完全符合您的要求,您可以随后再次进行迭代。 (我认为敏捷称迭代为“冲刺”,但我不是在理论上。)

    实际考虑因素

    如果你有一个轻量级框架(至少)可以帮助4.1(ORM,如Propel)和4.2(JQuery等)。您希望将UI和数据访问保持为模块化和分区,以便以后更改。

    如果将所有内容混合到一个代码块中,那么您必须更改程序的每个部分,以便(例如)向数据库添加新列或向应用程序添加新按钮。你有一些经验,所以你应该知道要避免的陷阱。