问题标签 [modeling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
547 浏览

tdd - 在 TDD 之前要创建哪些设计模型?

概括:

您在 TD 设计与开发中包含和/或交付了哪些模型和图表,为什么?

细节:

新的 4 开发人员项目,在一个商店中,我们正在逐步取得进展,使管理层在 TDD 采用/预期中从“买进”到“行动”毕业。我(一名开发人员)想要为新项目进行测试驱动设计。管理层愿意允许测试驱动的开发——创建了一些模型和图表之后(这些将补充 UI 模型,以便在重大开发开始之前向客户传达详细的设计)。

那么,鉴于这种情况,您认为哪些模型和图表是合理的?这个项目的可交付成果是一个既不简单也不复杂的 web 应用程序。我们有一个需求文档(有时含糊不清,但对于编写测试来说是一个好的开始)。

但是到目前为止,我所拥有的 TDD 经验(一个非常低缺陷的项目,我独自使用 TDD,以及一些设计成熟的同行测试创作在这里和那里)让我想要继续进行测试驱动设计

创建模型/图表的过程(看起来我们将提供一些类模型和一些高级用例和序列图)似乎给我们(开发人员)没有 TDD 不会的设计洞察力,他们'技术/复杂性足以让我担心任何非开发人员在呈现它们时都会有效地忽略它们(阅读:盲目接受它们)。

您在 TD -design 与 -development 中包含和排除模型和图表之间的界限在哪里?

0 投票
5 回答
156 浏览

database-design - 不错的数据建模软件

我想知道是否有人推荐一些好的数据建模软件?我使用了旧版本的 Sybase Powerdesigner,发现它有点笨拙——希望能得到一些更容易使用的东西......

0 投票
3 回答
6558 浏览

ruby-on-rails - 在 Rails 中关联两个模型(用户和配置文件)

我是 Rails 的新手。我正在构建一个具有用户模型和配置文件模型的应用程序。

我想关联这些模型,以便:
- 用户创建帐户后,他会自动发送到“创建配置文件”页面,并且他创建的配置文件仅连接到该特定用户。
- 只有拥有配置文件的用户才能对其进行编辑。

我使用 nifty_generators 生成了用户模型。当用户点击提交以创建帐户时,我将他重定向到“新配置文件”视图以创建配置文件。我通过在用户控制器中编辑重定向路径来做到这一点。用户控制器如下所示:

这是可行的,但问题是该应用程序似乎没有识别出该配置文件已连接到该特定用户。我能够创建配置文件,但配置文件和用户之间似乎没有关系。

我的个人资料模型列表:belongs_to :user
我的用户模型列表:有 _one :profile

我的 routes.rb 文件列出了以下内容:
map.resources :users, :has_one => :profile
map.resources :profiles

我在配置文件表中有一个 user_id 外键。我的架构如下所示:

为了尝试将配置文件连接到用户,我使用以下内容更新了profiles_controller.rb 文件,我基本上是从Rails 入门指南中推断出来的。我的想法是,在我的应用程序中,个人资料与用户的连接方式与 Rails 入门应用程序中的评论连接到帖子的方式相同。这是我的配置文件控制器的相关部分。如果有帮助,我可以提供全部内容:

结尾

在对配置文件控制器进行这些更新之后,现在当我在帐户创建屏幕上提交时,我被重定向到一个错误页面,上面写着:

ProfilesController 中的 ActiveRecord::RecordNotFound#new
找不到没有 ID 的用户

这一切似乎都是一个非常直接的 Rails 用例,但我不确定哪些部分是错误的。在此先感谢您的帮助!

0 投票
3 回答
765 浏览

design-patterns - 用例建模的实际好处

在我现在的雇主,我们通常采用写传统功能需求规范,然后执行完整的技术设计的老派方法。如果应用程序很大,那么我们将它分成更小的块并一次攻击一个块,但遵循相同的基本模式。

多年来,这项技术对我很有帮助。对于用例建模,您似乎需要收集几乎相同的信息,只是组织方式不同。

所以我的问题是:遵循用例驱动的软件开发方法有什么实际好处?

0 投票
1 回答
134 浏览

model-view-controller - MVC 和模型集合

我是一个模式新手,所以如果这个问题听起来太傻,请原谅这个问题。我正在为一个应用程序建模,该应用程序需要一个名为 CityData 的相同结构列表,并且一次只能显示其中一个结构。该视图将允许用户在各种 CityData 之间滚动。

现在我的问题是:我应该有一个模型,包含一个 CityData 列表和当前显示的索引,还是应该 CityData 是模型,并且它的列表应该包含在控制器中,而控制器又会处理来自视图的事件并更新当前显示的项目?

我会选择第一个,但是将当前显示的索引信息保留在模型中的想法对我来说听起来并不完全正确......

0 投票
11 回答
7799 浏览

programming-languages - 函数式编程范式是否有可视化建模语言或风格?

UML 是一个针对以 OO 语言编写的软件建模的标准,与 Java 密切相关。不过,它是否可能用于对打算以函数式编程范式编写的软件进行建模?考虑到嵌入的视觉元素,哪些图表会变得有用?

是否有针对函数式编程的建模语言,更具体地说是 Haskell?您会推荐哪些用于组合图表的工具?

由 OP 于 2009 年 9 月 2 日编辑:

我正在寻找的是对代码中发生的事情的最直观、最简单的表示。易于遵循的图表,不一定针对其他程序员的可视化模型。我很快就会在 Haskell 中开发一个游戏,但是因为这个项目是为了我的毕业总结工作,所以我需要介绍某种形式化的建议解决方案。我想知道是否有与 UML+Java 标准等效的,但对于 Haskell。我应该坚持使用故事板、书面描述、非形式化图表(一些类似于流程图的浅层图像)、非形式化用例描述吗?

jcolebrand 于 2012 年 6 月 21 日编辑:

请注意,提问者最初想要一个视觉隐喻,现在我们已经三年了,我们正在寻找更多/更好的工具。最初的答案都没有真正解决“视觉隐喻设计工具”的概念,所以......这就是新赏金所要提供的。

0 投票
3 回答
14903 浏览

r - 如何在R中将随机效应模型与主题随机拟合?

给定以下形式的数据

我想将分数建模为主题、条件和时间的函数。每个(人类)受试者的分数被测量了三次,由变量时间表示,所以我重复了测量。

如何在 R 中构建一个随机效应模型,其中主题效应随机拟合?

附录:有人问我是如何生成这些数据的。你猜对了,数据是假的,因为一天很长。分数是时间加上随机噪声,处于条件 1 中会为分数加分。作为典型的 Psych 设置,它具有指导意义。您有一项任务,人们的分数随着练习(时间)和提高分数的药物(条件==1)而变得更好。

为了讨论的目的,这里有一些更现实的数据。现在模拟参与者有一个随机的“技能”级别,该级别会添加到他们的分数中。此外,这些因素现在是字符串。

看见:

0 投票
1 回答
3353 浏览

php - PHP 最好的免费 CASE 工具是什么?

您最喜欢与 PHP 一起使用的免费CASE/UML/代码生成/图表工具是什么?

有各种支持PHP语言代码生成的商业产品,有没有免费的CASE工具?你会推荐什么?

0 投票
2 回答
714 浏览

ruby-on-rails - 在 Rails 中建模复杂的关系

更新

好的,我想通了。我不得不调用以下品种:

这是我的两个后续问题:

(1)这是否会因为我没有调用连接模型而在编辑/删除记录时引起问题?我看过一些 Ryan Bates 视频,他强调了这一点,但我在尝试在这里引用连接模型时遇到了麻烦。换句话说,是否应该通过调用上述代码user_products

如果我使用以下引用连接表的代码,我只能让它显示variety_id连接表中的 (因为连接表中没有品种的名称列)。我不确定如何让这段代码引用variety_id连接表中的 ,然后转到品种表以从“名称”列中获取品种的实际名称。

(2)这个复杂的东西是否正确放置在视图层中,或者有没有更好的方法将其移动到模型或控制器中?

谢谢。

下面的原始问题现已解决...

我有以下模型:
- 用户
- 产品
- 品种 - user_products

这是我正在尝试做的真实世界版本。假设用户是一家杂货店。产品是水果,如苹果。品种是苹果的类型,如富士和麦金托什。

我需要创建一个应用程序,其中:

  • 用户可以将多种类型的产品添加到他的页面。产品可以包含多个品种,但用户不需要包含任何品种。例如,Topps Grocery Store 可以将苹果添加到他们的页面。如果这就是他们想要展示的全部内容,那应该没问题。但是,他们也可以通过包括他们携带的苹果类型来添加更多细节,如富士、麦金托什等。品种不能只是一个详细的产品。换句话说,我不能让每个产品都像苹果-富士,苹果-麦金托什。它们需要是两个独立的模型。

  • 在用户页面(即“显示”视图)上,我需要能够同时显示产品和品种(如果有)。系统需要了解品种与该特定用户的特定产品相关联。

根据我收到的第一个答案,我修改了我的模型,如下面的答案所述。每个品种属于一个产品,即fuji只属于苹果产品,在产品表中是一个不同的id。而且,一个产品有很多品种,即苹果产品可能有5到10个不同的品种。

然而,它变得更加复杂,因为每个用户可能有一组不同的产品/品种组合。例如,Topps 杂货店(用户)可能有 fuji 和 mcintosh(品种)的苹果(产品)。但是,Publix 杂货店(用户)可能有红色美味的苹果(产品)和嘎拉(品种)。

在用户页面上,如果用户选择了任何品种,我希望能够调用用户携带的每个产品,然后显示与每个产品相关的品种。

当我在显示视图中尝试下面列出的代码时,我收到以下错误:undefined method `user_product' for #:

另一方面,当我尝试您给我的另一个选项(如下所列)时,页面加载并且 sql 查询在日志中似乎正确,但页面上没有显示任何品种,这很奇怪,因为我三重检查并且有数据库中应该匹配查询的记录。详情如下...

此代码运行以下 sql 查询:

User Load (0.7ms) SELECT * FROM "users" WHERE ("users"."id" = 2)

Variety Load (0.5ms) SELECT "varieties".* FROM "varieties" INNER JOIN "user_product" ON "varieties".id = "user_products".variety_id WHERE (("seasons".user_id = 2))

在布局/应用程序中渲染模板
渲染用户/显示

Product Load (0.7ms) SELECT "products".* FROM "products" INNER JOIN "user_product" ON "products".id = "user_products".product_id WHERE (("user_products".user_id = 2))

Variety Load (0.4ms) SELECT "varieties".* FROM "varieties" INNER JOIN "user_product" ON "varieties".id = "user_products".variety_id WHERE ("varieties"."product_id" = 1) AND (("user_products".user_id = 2)) LIMIT 1

Variety Load (0.2ms) SELECT "varieties".* FROM "varieties" INNER JOIN "user_products" ON "varieties".id = "user_products".variety_id WHERE ("varieties"."product_id" = 2) AND (("user_products".user_id = 2)) LIMIT 1

在上面的这种情况下,我正在查看的用户是user_id=2, he does have product_id=1 and product_id=2 in the database. And, in the user_products table, I do have a few records that list this user_id connected to each of these product_ids and associated with some variety_ids. 所以看起来我应该在我的显示视图上显示一些结果,但我什么也没得到。

最后,当我尝试以下操作时:

它在我的视图中为每条记录显示以下内容:#<User_product:0x4211bb0>

0 投票
2 回答
716 浏览

ruby-on-rails - 具有“有很多通过”关联的命名范围问题

我正在使用命名范围来处理一些过滤操作,并且日志显示一切正常,除了在应用程序找到正确的数据之后,它会忽略它找到的内容,只列出一个 find.all 而不是过滤的结果。这是详细信息。

我有 3 个模型:用户、市场和时间表。

用户has_many :schedules
用户has_many :markets, :through => :schedules

市场has_many :schedules
市场has_many :users, :through => :schedules

日程belongs_to :user 安排belongs_to :market

在每个市场的“展示”页面上,我会显示在该市场销售商品的用户。我还显示了这些用户在市场上的星期几。该数据包含在连接模型(即计划)中。

在市场页面上,我需要支持按用户在市场的星期几过滤用户。

在我的市场控制器中,我有这个:

在我的市场模型中,我有这个:

在我的用户模型中,我有这个:

在我的市场展示视图中,我有这个:

这是奇怪的部分。以下是我选择星期一过滤器时的日志输出。如果您查看输出的 Select Schedules 行,您可以看到查询正在查找数量有限的用户 ID。事实上,这些是我希望为过滤后的查询显示的正确用户 ID。我不明白的部分是,在应用程序完美完成查询后,它会加载所有用户,而不仅仅是过滤后的结果。我不确定我错过了什么。

它继续列出连接到这个特定市场的每个用户,基本上是在做一个 find.all。

更新

为了回应布拉德在下面的评论,我尝试将我的市场/显示视图中的代码更改为以下内容,但我得到了相同的结果。我同意问题出在某个地方,但我不知道如何解决它。