繁体   English   中英

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

[英]How do I design a simple web application?

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

我最近一直在阅读几本软件工程书籍。 一本书说,在Web工程中,应使用敏捷过程,例如极限编程和Scrum。 向我介绍了用例,CRC卡和UML之类的工具-对于我所想到的简单项目,我认为所有这些工具都过于复杂且不切实际。

另一方面,我阅读的一篇网络文章只是简单地建议了UI的草图,站点地图和简单的工作流程图。 他们似乎很实用,但过于基础和非正式。

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

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

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

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

通过使用这些用例中的少数几个,您可以全面了解实现目标需要构建的内容。 如果看起来工作量太大,您可以查看哪些目标的重要性更高或更低,并削减或推迟那些价值较小的目标。 如果您想到该站点应该做的新事情,则可以使用以下现有用例:

  • 提供该功能的主页,因此请修改适当的用例以合并该功能,
  • 不要提供房屋,以表明您错过了用例或发现了一个新用例,因此您应按照上述说明进行详细说明,或者
  • 不要提供房屋,因此请注明没有必要,因此您不应该花时间在房屋上。

诀窍是选择适当的抽象和形式级别。 高水平地工作,非正式地写作,您可以快速淘汰它们。 当它们不再有用时(您已勾勒出大部分应用程序,现在正认真处理细节),请将它们放在一旁。 当您想到新事物时,看看它们是否合适。 泡沫,冲洗,重复。

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

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

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

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

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

从小处开始,模拟一些简单的屏幕,它们的数据库结构等。使用任何适合您的方法-如果那是UML图,那就好了。 完成一些事情,评估并从那里进行迭代。

这可能不完全是您想要的,但也会帮您一个忙,并选择诸如CodeIgniter之类的框架来简化编写服务器端代码的工作。 同样,请考虑使用诸如jQuery之类的客户端框架。 当您准备好坐下来编写代码时,这将使您更轻松。

裸机必备

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

  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和数据访问尽可能保持模块化和分区化,以便以后更改。

如果将所有内容混合到一个代码块中,则仅需更改程序的每个部分即可(例如)向数据库添加新列或向应用程序添加新按钮。 您已经有一些经验,所以您应该有一个避免陷阱的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM