問題タブ [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.
tdd - TDDの前に作成する設計モデルは何ですか?
概要:
TDの設計と開発にどのようなモデルと図を含めたり、提供したりしましたか。また、その理由は何ですか。
詳細:
新しい4開発者プロジェクト。TDDの採用/期待において、経営陣が「バイイン」から「アクション」に段階的に移行することを徐々に進めているショップで。私は(開発者)新しいプロジェクトのテスト駆動設計を望んでいます。いくつかのモデルと図が作成された後、管理者はテスト駆動開発を喜んで許可します(これらは、重要な開発が始まる前に詳細な設計を顧客に伝えるためにUIモックアップを補完します)。
それで、その文脈を考えると、どのモデルと図が合理的であると思いますか?このプロジェクトの成果物は、些細なことでも過度に複雑でもないWebアプリです。要件ドキュメントがあります(あいまいな場合もありますが、テストを作成するための良いスタートです)。
しかし、これまでのTDDの経験(TDDを使用してソロで行った非常に欠陥の少ないプロジェクトの1つと、あちこちで設計を成熟させるピアテストのオーサリング)により、テスト駆動設計の次に進みたいと思っています。
モデル/図を作成するプロセス(いくつかのクラスモデルといくつかの高レベルのユースケースとシーケンス図を提供するように見えます)は、TDDが提供しない設計上の洞察を私たち(開発者)に提供しないようです。技術的/複雑であるため、開発者以外の人が提示されたときにそれらを効果的に無視する(読んでください:盲目的に受け入れる)のではないかと心配しています。
TDの設計と開発におけるモデルと図の包含と除外の境界線はどこにありますか?
database-design - 優れたデータモデリング ソフトウェア
誰かが良いデータモデリングソフトウェアの推奨事項を持っているかどうか疑問に思っていましたか? 以前のバージョンの Sybase Powerdesigner を使用しましたが、少し扱いにくいことがわかりました。もう少し使いやすいものを手に入れたいと思っていました...
ruby-on-rails - Rails で 2 つのモデルを関連付ける (ユーザーとプロファイル)
私はRailsが初めてです。ユーザー モデルとプロファイル モデルを持つアプリを構築しています。
これらのモデルを次のように関連付けたい:
- ユーザーがアカウントを作成すると、自動的に「プロファイルの作成」ページに送られ、作成したプロファイルはその特定のユーザーのみに関連付けられます。
- プロファイルを所有するユーザーのみが編集できます。
nifty_generators を使用してユーザー モデルを生成しました。ユーザーがアカウント作成のために送信をクリックすると、「新しいプロファイル」ビューにリダイレクトしてプロファイルを作成します。これを行うには、ユーザー コントローラーでリダイレクト パスを編集しました。ユーザーコントローラーは次のようになります。
これは機能していましたが、プロファイルがその特定のユーザーに関連付けられていることをアプリが認識していないように見えることが問題でした。プロファイルを作成できましたが、プロファイルとユーザーの間に関係があるようには見えませんでした。
マイ プロファイル モデル リスト: belongs_to :user
マイ ユーザー モデル リスト: has _one :profile
私の routes.rb ファイルには次のものがリストされています:
map.resources :users, :has_one => :profile
map.resources :profiles
プロファイル テーブルに user_id 外部キーがあります。私のスキーマは次のようになります。
プロファイルをユーザーに接続するために、profiles_controller.rb ファイルを次のように更新しました。これは、基本的に Rails Getting Started Guide から推定したものです。私の考えでは、Rails Getting Started アプリでコメントが投稿に接続されるのと同じように、私のアプリではプロファイルがユーザーに接続されます。私のプロファイルコントローラーの関連部分は次のとおりです。それが助けになるなら、私はすべてを提供することができます:
終わり
プロファイル コントローラーにこれらの更新を行った後、アカウント作成画面で送信すると、次のようなエラー ページにリダイレクトされます。
ActiveRecord::RecordNotFound in ProfilesController#new
ID のないユーザーが見つかりませんでした
これはすべて非常に単純な Rails の使用例のように思えますが、どの部分が間違っているのかわかりません。よろしくお願いします。
design-patterns - ユースケースモデリングの具体的なメリット
私の現在の雇用主では、通常、従来の機能要件仕様を作成してから完全な技術設計を実行するという昔ながらのアプローチを採用しています。アプリが大きい場合は、アプリを小さなチャンクに分割し、一度に1つのチャンクを攻撃しますが、同じ基本パターンに従います。
このテクニックは何年にもわたって私に役立ってきました。ユースケースモデリングでは、ほぼ同じ情報を収集する必要があるようですが、編成が異なるだけです。
だから私の質問はこれです:ソフトウェア開発へのユースケース主導のアプローチに従うことの具体的な利点は何ですか?
model-view-controller - MVCとモデルコレクション
私はパターン初心者なので、ばかげているように聞こえる場合は、この質問を許してください。CityDataという名前の同一の構造のリストを必要とするアプリケーションをモデル化していますが、一度に表示する必要があるのはこれらの構造の1つだけです。このビューでは、ユーザーはさまざまなCityData間をスクロールできます。
今私の問題は次のとおりです。CityDataリストと現在表示されているインデックスを含む単一のモデルがあるか、CityDataがモデルであり、そのリストがコントローラーに含まれている必要があります。コントローラーはビューからのイベントを処理します。現在表示されているアイテムを更新しますか?
私は最初のものを選びますが、現在表示されているインデックス情報をモデル内に保持するという考えは、私には完全に正しく聞こえません...
programming-languages - 関数型プログラミング パラダイム用のビジュアル モデリング言語またはスタイルはありますか?
UML は、OO 言語で記述されるソフトウェアのモデリングを目的とした標準であり、Java と密接に関連しています。それでも、関数型プログラミングのパラダイムで書かれることを意図したソフトウェアをモデル化するために使用できるでしょうか? 埋め込まれたビジュアル要素を考えると、どの図が役立つでしょうか?
関数型プログラミング、具体的には Haskell を対象としたモデリング言語はありますか? 図をまとめるためにどのツールをお勧めしますか?
OP 2009 年 9 月 2 日編集:
私が探しているのは、コード内で何が起こっているかを最も視覚的かつ軽量に表現することです。わかりやすいダイアグラム、必ずしも他のプログラマー向けではない視覚的モデル。すぐに Haskell でゲームを開発する予定ですが、このプロジェクトは卒業制作のためのものであるため、提案されたソリューションの何らかの形式化を導入する必要があります。UML + Java 標準に相当するものがあるかどうか疑問に思っていましたが、Haskell 用です。ストーリーボード、記述された説明、形式化されていない図 (いくつかの浅いフローチャートのような画像)、形式化されていないユースケースの説明に固執する必要がありますか?
2012 年 6 月 21 日、jcolebrand が編集:
質問者はもともと視覚的な比喩を望んでいたことに注意してください.3年経った今、私たちはより多くの/より良いツールを探しています. 元の回答はどれも「ビジュアル メタファー デザイン ツール」の概念を実際に扱っていなかったので、それが新しいバウンティが提供しようとしているものです。
r - ランダム効果モデルをRのランダムとしてサブジェクトに適合させる方法は?
次の形式のデータが与えられた
主題、条件、時間の関数としてスコアをモデル化したいと思います。各(人間の)被験者のスコアは、変数Timeで示されるように3回測定されたため、測定を繰り返しました。
サブジェクト効果をランダムに適合させたランダム効果モデルをRに組み込むにはどうすればよいですか?
補遺:これらのデータをどのように生成したかを尋ねられました。ご想像のとおり、1日が長いため、データは偽物です。スコアは時間とランダムノイズの合計であり、条件1にあると、スコアにポイントが追加されます。これは、典型的なPsychのセットアップとして有益です。練習(時間)とスコアを上げる薬(条件== 1)で人々のスコアが良くなるタスクがあります。
この議論の目的のために、いくつかのより現実的なデータがあります。これで、シミュレートされた参加者は、スコアに追加されるランダムな「スキル」レベルを持ちます。また、ファクターは文字列になりました。
それを参照してください:
php - PHP用の最高の無料CASEツールは何ですか?
PHPで使用するお気に入りの無料のCASE/UML /コード生成/ダイアグラム作成ツールは何ですか?
PHP言語でのコード生成をサポートするさまざまな商用製品がありますが、無料のCASEツールはありますか?あなたは何をお勧めします?
ruby-on-rails - Rails で複雑な関係をモデル化する
アップデート
わかりました。品種については、次のように呼び出す必要がありました。ここに私の2つの質問があります:
(1) 結合モデルを呼び出していないため、レコードの編集/削除時に問題が発生しますか? Ryan Bates がこの点を強調しているビデオを見たことがありますが、ここで結合モデルを参照しようとしてもうまくいきません。言い換えれば、上記のコードは を介して呼び出す必要がありますuser_products
か?
結合テーブルを参照する次のコードを使用すると、結合テーブルからのみ表示することができvariety_id
ます (結合テーブルには品種の名前列がないため)。このコードを結合テーブルで参照する方法がわかりませんvariety_id
が、バラエティ テーブルに移動して、「名前」列からバラエティの実際の名前を取得します。
(2)この複雑なものはビューレイヤーに適切に配置されていますか、それともモデルまたはコントローラーに移動するためのより良い方法はありますか?
ありがとう。
以下の元の質問は現在解決されています...
私は次のモデルを持っています:
- ユーザー
- 製品
- 品種 - user_products
これが私がやろうとしていることの現実世界のバージョンです。User が食料品店だとしましょう。製品はリンゴのような果物です。そして品種は、フジやマッキントッシュなどのリンゴの種類です。
次のようなアプリを作成する必要があります。
ユーザーは自分のページに多くの種類の製品を追加できます。製品には複数の品種を含めることができますが、ユーザーは品種を含める必要はありません。たとえば、Topps Grocery Store はページにリンゴを追加できます。彼らが表示したいのはそれだけであれば、それで問題ありません。ただし、フジ、マッキントッシュなど、運ぶリンゴの種類を含めることで、さらに詳細を追加することもできます。品種は単なる詳細な製品ではありません。つまり、それぞれの商品をりんご - ふじ、りんご - マッキントッシュにすることはできません。それらは 2 つの別個のモデルである必要があります。
ユーザーのページ (つまり、「表示」ビュー) で、製品と品種 (存在する場合) の両方を表示できる必要があります。システムは、品種がこの特定のユーザーの特定の製品に関連付けられていることを理解する必要があります。
受け取った最初の回答に続いて、以下の回答で説明されているようにモデルを修正しました。各品種は 1 つの製品に属します。つまり、フジは製品テーブルの個別の 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>
ruby-on-rails - 「HasManyThrough」アソシエーションによる名前付きスコープの問題
名前付きスコープを使用していくつかのフィルタリングアクションを処理していますが、ログにはすべてが完全に機能していることが示されています。ただし、アプリが実行されて正しいデータが検出された後、検出されたデータは無視され、代わりに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
各市場の「表示」ページには、その市場で商品を販売しているユーザーを表示します。また、そのようなユーザーが市場に出ている曜日も表示します。このデータは、結合モデル(つまりスケジュール)に含まれています。
マーケットページでは、ユーザーがマーケットにいる曜日によるユーザーのフィルタリングをサポートする必要があります。
私のマーケットコントローラーには、次のものがあります。
私のマーケットモデルでは、これがあります:
私のユーザーモデルでは、これがあります:
と
Marketsのショービューでは、次のようになっています。
これが奇妙な部分です。以下は、月曜日のフィルターを選択したときのログ出力です。出力の[スケジュールの選択]行を見ると、クエリが限られた数のユーザーIDを検出していることがわかります。実際、これらは、フィルタリングされたクエリに対して表示したい正しいユーザーIDです。私が理解していない部分は、アプリがクエリを完全に実行した後、フィルタリングされた結果だけでなく、すべてのユーザーをロードしてロードすることです。何が欠けているのかわかりません。
さらに、この特定の市場に接続しているすべてのユーザーを一覧表示し、基本的にfind.allを実行します。
アップデート
以下のブラッドのコメントに応えて、マーケット/ショービューのコードを次のように変更しようとしましたが、同じ結果が得られました。問題がここのどこかにあることに同意しますが、それを解決する方法を完全に理解することはできません。