【问题标题】:How do I design a simple web application?如何设计一个简单的 Web 应用程序?
【发布时间】:2010-07-27 01:16:05
【问题描述】:

我对 PHP 有基本的了解,之前做过一些小型的个人项目。由于我的程序很小并且通常包含少于五个类,所以我立即开始编码——一边思考我的数据库表和用户界面设计。问题是我经常发现自己在我的项目中间迷失了自己的想法。因此,我认为从某种形式的正式规划开始是可行的。

我最近一直在阅读几本软件工程书籍。一本书说,在 Web 工程中,应该使用极限编程和 Scrum 等敏捷过程。向我介绍了用例、CRC 卡和 UML 等工具——我认为这些工具对于我心目中的简单项目来说都过于复杂和不切实际。

另一方面,我读过的一篇网络文章只是简单地建议了一个粗略的 UI 草图、一个站点地图和一个简单的工作流程图。它们看起来很实用,但过于简陋和非正式。

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

【问题讨论】:

  • 如果您提供项目的更多细节,我们可以给出更详细的类设计答案。
  • 感谢您的帮助。但现在我更感兴趣的是你们如何设计自己的网络应用程序。
  • 敏捷现在很流行,但它并不是开发的终极目标。不过,关于 Web 应用程序的一个有趣之处在于,您可以以零成本不断推出新版本的应用程序(与编译和分发的软件相比),因此 Web 开发适合迭代开发实践。
  • 只要跳进去弄脏你的手。就像那句老话,你必须打几个鸡蛋才能做一个煎蛋卷。我知道我刚刚接触了 PHP 和 MySQL 的皮毛,但在过去的几个月里,我只是通过尝试一些东西而学到了很多东西。我很想知道书中的内容,但它们为您提供了亲身体验所能做到的一切。

标签: php web-applications


【解决方案1】:

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

想想网站需要做的最重要的 n 件事情,并列出其中的每一项:

  • 在这种特殊情况下用户的最终目标
  • 涉及的人员和其他系统的种类(参与者,在用例术语中)
  • 开始此活动之前需要准备的内容(先决条件
  • 主要参与者成功实现目标所需执行的基本步骤
  • 如果其中一个步骤无法完成,会发生什么情况
  • 成功完成案例后系统的外观(后置条件
  • 如果出现错误,系统应该是什么样子

通过这些用例中的一小部分,您可以全面了解需要构建什么来实现目标。如果开始看起来工作量太大,您可以查看哪些目标或多或少重要,并削减或推迟那些提供较少价值的目标。如果你想到网站应该做的新事情,现有的用例:

  • 为该功能提供一个家,因此修改适当的用例以合并该功能,
  • 不要提供家,表明您错过了一个用例或发现了一个新用例,因此您应该如上所述详细说明它,或者
  • 不提供房屋,因此表明没有必要,因此您不应该花时间在上面。

诀窍是选择适当的抽象和形式级别。高水平地工作,非正式地写作,你可以很快地把这些搞定。当它们不再有用时(您已经勾勒出大部分应用程序,现在正埋头研究细节),将它们放在一边。当你想到新事物时,看看它们是否合适。起泡、冲洗、重复。

【讨论】:

    【解决方案2】:

    你必须先问自己几个简单的问题:

    1) 我想稍后重用和扩展此代码吗? 如果是这样,最好使用一些基本模式,例如 MVC(模型-视图-控制器)或使用许多可用的 PHP 框架之一。已经建立的框架在其设计和使用方式上更具格式。您也可以始终将它们用作设计自己的基础。

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

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

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

    【讨论】:

      【解决方案3】:

      从小处着手,模拟一些简单的屏幕、它们的数据库结构等。使用适合您的任何方法 - 如果那是 UML 图,那很好。从那里完成、评估和迭代。

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

      【讨论】:

      • 我确实使用 CodeIgniter 和 JQuery。我的问题是如何编写质量类,理想情况下应该基于某种形式的文档。
      • +1,但我不同意为该语言的新手使用 PHP 框架。在考虑框架如何解决问题时,了解做某事的难/错方法是一个主要优势。
      【解决方案4】:

      基本要素

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

      1. 决定应用程序需要做什么。 “需要”,我的意思是,绝对必须做,别无其他。如果这是一个“值得拥有”的功能,请将其写下来,稍后再使用。
      2. 弄清楚需要跟踪哪些数据才能使一切正常运行。蛞蝓、标题、日期时间等。设计数据库。 (我为此使用MySQL Workbench。)
      3. 使用您的功能候选清单,使用Balsamiq 制作用户界面原型。请记住只添加您现在需要的功能。
        • 您可以考虑在此步骤中制作 HTML/CSS 模板。
      4. 现在您已经有了数据模型和 UI,将它们连接起来。业务逻辑应该关注两件事:
        1. 从数据模型中抽象出来,以便您可以轻松地检索和存储第 2 步中的信息。
        2. 使 UI 完全按照您在第 3 步中的设计工作。不要花哨。

      专注于小目标

      这个过程有两个关键。首先是对各个组件的设计进行分离。你不想在设计 UI 等时考虑实现细节。第二个关键是迭代。 现在只关注你需要添加的内容,而忽略其他所有内容。

      完成后,您可以进行迭代和调整,重复步骤 1-4 等。但不要在任何步骤中停留太久。如果事情没有完全如你所愿,你总是可以稍后再次迭代。 (我认为敏捷将迭代称为“冲刺”,但我并没有理论。)

      实际考虑

      如果您有一个轻量级框架(至少)来协助 4.1(ORM,如 Propel)和 4.2(JQuery 等),这会有所帮助。您希望 UI 和数据访问尽可能模块化和分隔,以便以后轻松更改。

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

      【讨论】:

        猜你喜欢
        • 2010-12-10
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 2014-04-20
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多