我正准备在我的业余时间开始建立一个新的网络项目,以实现一个已经在我脑海中蹦蹦跳跳一段时间的想法.
我从来没有忘记我是否更好地首先建立模型然后消费应用程序或其他方式.
什么是最佳做法?你会先建造什么?为什么?
我想,一般来说应用程序通常应该驱动模型,但是像许多网站这样的应用程序在没有模型的情况下确实没有太大作用.
出于某种原因,我发现有时更容易根据模型进行思考,因为应用程序实际上只是对模型的操作.这是一种思考问题的糟糕方式吗?
每个选项有哪些优点/缺点?
当您自己构建整个应用程序时,我将从用户开始.用户想要什么?他们需要什么信息?这应该推动应用程序和模型的设计,而不是相反.当首先设计模型时,存在将用户直接暴露给它的诱惑,这很少有意义.
就个人而言,在我了解了要求(正式与否)后,我设计了数据模型来处理要求.然后从那里构建,包括业务层,持久性,单元测试,最后是GUI.
如果您的数据库第一次设计正确,一切都应该流动.
编辑 - 请注意,我并不是说您的业务层或GUI应该直接反映您的数据库模型.有时它会相似,有时却不会.但是您的数据库模型应该能够满足所有要求.
首先,您的数据库不是您的模型,它只是您用来持久化模型的机制.您的模型是一组业务对象,它封装了业务使用的状态和逻辑,并且可以由其他应用程序使用.
我发现大多数客户端不了解表,列,但了解流程和工作流程.因此,我与客户一起模拟用户界面和解决方案中需要解决的任务的页面流.由此,我创建了业务对象来保存UI所需的数据.
控制器处理页面逻辑和页面流.我模拟了一个数据存储库来处理一些示例数据.这允许客户端和我迭代UI并流动直到我们满意为止.通常,我们会发现更好的做事方式,以及他们认为重要的一些活动,不会增加任何价值.
现在是我处理数据库和数据访问逻辑的时候了.等到这一点,减少了重新编写数据库模式,存储过程和DAL代码的需要.
这通常会导致更少的代码,强大的应用程序和愉快的客户端.三冠王.
另外,单元测试一切.您将进行更改,并且一个好的单元测试集确保您在进行更改时不会破坏应用程序的其他部分.
你知道,我认为我必须不同意那些盲目地将GUI的设计置于底层数据模型之前的人.在真实的商业环境中,运营业务不仅仅与工作流程有关 - 工作流程是围绕数据分析和报告的重要业务组成部分.毕竟,您如何根据您无法获得或理解的数据做出决策?最重要的是,当你与客户坐下来时,90%的时间,他们不明白他们的应用程序需要做什么,需要如何布局和一半时间,他们甚至不明白什么它需要的功能.
如果整个数据模型只是屏幕数据的持久性,那么如何分析数据?你是如何报道的?如果你坐下来与一个数据库大师并告诉他们你想要一个基本上代表你的ViewState的数据模型构建的报告,他们会退出并告诉你自己做 - 至少,如果有人告诉我我必须建立一个报告基于这种类型的模型,我放弃并告诉他们让其他人去做.
位于数据模型之上的GUI是偶然的,允许员工以最简单,最有效的方式与数据交互.请记住,软件用户不是程序员,他们不像程序员或数据库架构师那样思考,他们不按照我们的工作方式工作; 他们也不想.他们希望能够根据日常工作流程以最合理的方式轻松输入数据.他们希望能够思考,今天能完成多少工作,这样当我回家时,我不需要和我一起工作,他们想去度假而不用担心新人是否能够保持顺其自然,或者他们是否能够理解软件.
企业所有者希望能够以最简单,最有效的方式获取数据,他们希望立即写入报告,并希望数据以逻辑,有效和代表性的方式表示他们为当前报告选择的任何模型.他们对工作流程几乎不关心,他们不需要知道这些数据流经多少个部门,它来自哪里,如何到达现在的位置.他们想知道这些数据是什么,它代表什么以及它对整个企业意味着什么.
对于企业所有者来说,数据远比软件重要.对于在十倍的时间内压力要做十倍以上的最终用户,软件需要为他们提供在最短的时间内尽可能多地将数据输入数据库的方法.
那么您如何决定首先设计哪个,GUI或数据模型?从长远来看,将节省多少钱?公司是否有500名用户在这个软件中输入数据,他们是否以最有效的方式进行操作?该公司是否有500名报告编写者,他们能否快速有效地获取数据?一段绳子有多长?
为数据分析人员设计数据模型 - 使其尽可能简洁,高效,以全面的格式获取数据.
为最终用户设计GUI并使其干净,简单和高效,因为这些用户可以尽可能快地,尽可能简单地将数据输入数据库,而无需成为火箭科学家.与编写软件和提取数据的用户相比,最终用户通常几乎没有计算机知识.
从一开始就要记住你是如何将两者连接在一起的,因为如果你不这样做,你最终会有两端而无法提供中间,你的项目将会崩溃......
浪费更多资金将数据放入系统并获取数据,而不是编写在两端之间进行连接的软件.由于数据分析师无法有效地获取不准确的数据并花费一周的时间编写一份实际上不应该生成的报告,因此开发人员团队的成本几乎不会低于用户输入不准确的数据和低质量报告的公司的成本.花了一两个多小时,写完之时无论如何都没有帮助.