タグ付けされた質問 「modeling」

8
プロジェクトにデザイナーがいない場合、開発者はUIモックアップを行う必要がありますか?
私はプロプライエタリなWebアプリケーションを作成する小さなチームと協力しており、UXは私たち自身が操作するので優先順位は高くありませんが、仕事を楽にするよう努めています。 開発者として、新しい画面の作成を開始する前にUIモックアップを作成する必要がありますか?派手なことは何もありません。ほとんどの場合、同僚と話し合って参照モデルを作成するための一般的なレイアウトです。盲目的にコードを記述する前に、いくつかのUMLダイアグラムの作成と比較していました。 私の同僚の一人は、これは馬鹿げていると言い、それをするのは私の仕事ではありません。

8
依存関係を他のプログラマーに非常に明白にすることを促進するプログラミングパラダイムはありますか?
私は、さまざまなアーティファクトをリンクする迷路のような依存関係を持つ多くのストリームとレイヤーを介して複数のシステムを調達するデータウェアハウスで働いています。ほぼ毎日、このような状況に陥ります。何かを実行しますが、機能しません。大量のコードを調べますが、数時間後には、今わかっていることのごく一部のプロセスマップを概念化することができました。後日必要になるので、誰かに尋ねて、この他のストリームを最初に実行する必要があることと、ここでチェックした場合(他のコード化された依存関係の巨大なスタックの一見arbitrary意的な部分を示す)、これを見た。とてもイライラします。 再帰的なレベルのコードや、さらにはデータにオブジェクトを深く埋め込むのではなく、オブジェクト間の依存関係をより明確に見えるようにするためにもっとや​​った方がいいだろうとチームに提案できた場合おそらく、よく知られ、試行され、テストされたソフトウェアパラダイムを参照することで、別のストリームが存在するために存在する必要があります。 私のチームにこの利点を説明するのはちょっと難しいです。彼らは物事をありのままに受け入れる傾向があり、システム全体を新しい方法で概念化できる利点を見るという点で「大きく考える」ことはしません。巨大なシステムをモデル化できるなら、効率的な場合、メモリの非効率性、ストリーム停止の一意の制約、重複キー、ナンセンスデータに遭遇する可能性が低くなります。元のビジョンに沿って設計する方がはるかに簡単で、後でこれらすべての問題に遭遇することはありません私たちは現在、過去の仕事では珍しいことを知っていますが、彼らは避けられないと考えているようです。 では、依存関係を強調し、理想の長期的な順守を確保するために、システムの一般的な概念モデルを促進するソフトウェアパラダイムを知っている人はいますか?現時点ではかなり混乱しており、すべてのスプリントは「こことこことここにこのものを追加するだけ」であるように見えます。

8
原始的な強迫観念がコード臭ではないのはいつですか?
私は最近、原始的な強迫観念をコードの匂いとして説明する記事をたくさん読みました。 原始的な強迫観念を回避することには2つの利点があります。 ドメインモデルをより明確にします。たとえば、郵便番号を含む文字列ではなく郵便番号についてビジネスアナリストと話すことができます。 すべての検証は、アプリケーション全体ではなく1か所で行われます。 いつコードの匂いがするかを説明する記事がたくさんあります。たとえば、次のような投稿コードのプリミティブな強迫観念を取り除くことの利点を見ることができます。 public class Address { public ZipCode ZipCode { get; set; } } ZipCodeのコンストラクタは次のとおりです。 public ZipCode(string value) { // Perform regex matching to verify XXXXX or XXXXX-XXXX format _value = value; } 郵便番号が使用されるすべての場所にその検証ロジックを置くDRY原則を破ることになります。 ただし、次のオブジェクトについてはどうですか: 生年月日:気づきよりも大きく、今日の日付よりも小さいことを確認します。 給与:ゼロ以上であることを確認します。 DateOfBirthオブジェクトとSalaryオブジェクトを作成しますか?利点は、ドメインモデルを説明するときにそれらについて話すことができることです。ただし、これは多くの検証がないため、オーバーエンジニアリングの場合です。いつ、いつ原始的な強迫観念を取り除くべきでないかを説明するルールはありますか、可能であれば常にそれを行うべきですか? クラスの代わりに型エイリアスを作成できると思います。これは上記のポイント1に役立ちます。

7
オブジェクトモデルの変更を伝播するためのパターン..?
対処するのが常にイライラする一般的なシナリオを次に示します。 親オブジェクトを持つオブジェクトモデルがあります。親には、いくつかの子オブジェクトが含まれます。このようなもの。 public class Zoo { public List<Animal> Animals { get; set; } public bool IsDirty { get; set; } } 各子オブジェクトにはさまざまなデータとメソッドがあります public class Animal { public string Name { get; set; } public int Age { get; set; } public void MakeMess() { ... } } 子が変更されたとき、この場合はMakeMessメソッドが呼び出されたときに、親の値を更新する必要があります。Animalの特定のしきい値が混乱した場合、ZooのIsDirtyフラグを設定する必要があるとします。 このシナリオを処理する方法はいくつかあります(私が知っていることです)。 1)変更を通知するために、各動物は親動物園の参照を持つことができます。 …

20
プロジェクトを成功させるためにUML図はどれほど重要ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私はプロジェクトの途中で、UMLダイアグラム(ユースケース、クラスダイアグラムなど)を書くように頼まれました。プロジェクトはそれほど複雑ではありません。 これは私の時間の無駄なのだろうか?コードを書くような他の楽しいことをやるだけですか?そして、すべての概念フェーズを経ずに何かを構築することは大丈夫ではないのはいつですか?複雑さがすべてですか?もしそうなら、それを測定する方法?
22 uml  modeling 

5
ソフトウェアシステムをモデル化することと、すべてをコードで実行することの利点は何ですか?
私が知っているすべてのIT担当者ではないにしても、ほとんどの場合、コーディングの前にUMLまたは他のタイプのダイアグラムでソフトウェアをモデル化することが有益であると考えています。(私の質問は、特にUMLに関するものではなく、ソフトウェア設計のグラフィックまたはテキストによる説明です。) 私はそれについてはよくわかりません。主な理由は次のとおりです。コードは嘘をつかない。コンパイラーまたはインタープリターによってチェックされます。自動化されたテストがあり、静的コード分析に合格する必要があります。モジュールが別のモジュールと正しくインターフェイスしていない場合、エラーメッセージが表示されるため、通常はコードで明らかです。 このすべてを図や他のドキュメントで行うことはできません。はい、UMLをチェックするツールはありますが、これまで見てきたことはすべて非常に限られています。したがって、これらのドキュメントは不完全、一貫性のない、または単純な偽である傾向があります。 ダイアグラム自体が一貫していても、コードが実際にそれらを実装していることを確認することはできません。はい、コードジェネレーターはありますが、すべてのコードを生成することはありません。 モデリングの強迫観念は、コードが不可解に不可解な混乱であり、建築家、デザイナー、または全体像をつかむ他の有給の人々が対処する必要がないという前提から生じることに執着するように感じることがあります。そうでなければ、あまりにも高価になってしまいます。したがって、設計上のすべての決定は、コードから移動する必要があります。コード自体は、それを書くことができる(そしておそらく読むことができる)専門家(コードモンキー)に任せるべきですが、他に何も処理する必要はありません。これはおそらくアセンブラが唯一のオプションであったときに意味をなしましたが、最新の言語では非常に高いレベルの抽象化でコーディングできます。したがって、モデリングの必要性は実際にはありません。 ソフトウェアシステムをモデル化するための引数がありません。 ところで、図はソフトウェア設計の特定の側面を文書化して伝達するのに最適な方法であると考えていますが、それはソフトウェア設計をそれらに基づいて行うべきではないということです。 明確化: この質問は不明確であるとして保留されています。したがって、いくつかの説明を追加しましょう。 私は、ソフトウェア設計に関する真実の主要な情報源としてソフトウェアをモデル化する(コードではない)ドキュメントを使用することが理にかなっているかどうかを尋ねています。コードの大部分がこれらのドキュメントから自動的に生成されることを念頭に置いていません。この場合、ドキュメント自体をモデルではなくソースコードと見なします。 この手順の欠点をいくつか挙げたので、(私の経験では)なぜ多くの人がこの手順をソフトウェア設計の好ましい方法と考えているのか疑問に思います。

6
マーケティングおよびUIの命名が変更された場合、エンティティの内部命名(クラス、メソッド、データベーステーブルなど)を変更する必要がありますか?
この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 8年前に移行され ました。 約8年間、長寿命の製品を提供しています。時間が経つにつれて、概念とエンティティの名前が変わります。これらの新しい名前と一致するように、すべてのコードベースとデータベースのテーブルと列の名前を変更する作業を行う必要がありますか? これに関する調査や公開されたベストプラクティスはありますか? ありがとう

2
UMLの代わりに機能プログラマは何を使用していますか?
私はCSの学生です。現在、客観的な分析と設計を教えている講義に参加しています。ほとんどの場合、ユースケースの記述、クライアント用のアプリケーションを作成するときに直面する問題の分析、拡張可能で開発者にとって明確であり、クライアントがいくつかについて議論するときに問題が発生しないようにプロジェクトを設計する方法特徴。「客観的」なので、OOPの観点(クラスなど)から学習しています。 現在、ヘルパーツールとしてUMLを使用しています。私はOOPを十分に理解していると思いますが、機能的なパラダイムも学び、いくつかの小規模なプロジェクトでうまく使用しました。 私たちの先生は、「機能的なパラダイムについてはどうですか?」質問では、彼は関数型言語でより大きなプロジェクトをプログラミングしておらず、関数型プログラムがどのツールを使用しているのかを知りません。 それで、彼らは何を使うのでしょうか?このための方法論はありますか?それとも、そのようなことの必要はありませんか?

5
より表現力のあるプログラミング言語の進化により、ソフトウェア設計仕様の必要性は大幅に減少しましたか?
数年前の私を含む多くのIT担当者にとって、理想的なソフトウェア開発プロセスでは、コード行を記述する前に、多くのUMLダイアグラムを含む詳細な設計ドキュメントを作成する必要があります。(これはウォーターフォールモデルの説明のように見えますが、反復がより小さいことを除いて、アジャイルでも同じです。) 過去2、3年の間に、私は完全に考えを変えました。関連するテストケースを含む詳細な要件仕様は、絶対に不可欠であると私はまだ考えています。大規模なプロジェクトの場合、コーディングを開始する前に、アーキテクチャ全体の概要も必要になります。ただし、残りはすべてコードで可能な限り行う必要があります。理想的なケースでは、コード自体を除いてソフトウェア設計の説明はありません。 どのようにしてこの結論に達しましたか?以下にいくつかの引数を示します。 フィードバック 文書を書いたり、図を作成したりするツールはほとんどフィードバックを提供しません。はい、UMLダイアグラムの整合性チェックを行うモデリングツールがありますが、それらは制限されており、多くのオーバーヘッドが伴います。 フィードバックがなければ、エラーを認識して修正することは困難です。 コードを書くとすぐに、次のような多くのフィードバックが得られます。 コンパイラからのエラーと警告 静的コード分析結果 単体テスト エラーをすばやく認識して修正できます。 一貫性 コードがドキュメントと一致していることを確認するには、何度も確認する必要があります。頻繁な変更がある場合、コードとドキュメントの同期を保つのは困難です。 リファクタリング テキストの説明や図をリファクタリングするのは通常困難でエラーが発生しやすい一方で、コードをリファクタリングするための強力なツールとテクニックがあります。 この作業を行うための前提条件が1つあります。コードは読みやすく、理解しやすいものでなければなりません。これはおそらくAssembler、Basic、またはFortranでは達成できませんが、最新の言語(およびライブラリ)ははるかに表現力があります。 したがって、私の議論が有効であれば、ソフトウェア設計の仕様やドキュメントの軽量化や軽量化に向かう​​傾向があるはずです。この傾向の経験的証拠はありますか?

1
UMLアクティビティ図でネストされたアクションを表現するにはどうすればよいですか?
この質問は非常によく似ているこのいずれかが、答えは私のニーズと一致していません。特定のUMLツール(Papyrus)に焦点を当てていますが、私の質問はUMLについてより一般的です。 ネストされたアクションをアクティビティ図で表現したいと思いますが、それを行う一般的な方法はわかりません。考え方は、他のアクションと同じスコープのアクションがありますが、その実行はより複雑であるということです。他のレベルと同じレベルでこのアクションを表示できるようにしながら、その実行に関する詳細を表示したいと思います。 ある種の「バックホーム」アクティビティを示すアクティビティ図である以下の例では、ネストされたアクションがアクションに含まれていPet the catます。この図には別の潜在的なエラーがあることに注意してください。質問の最後の正誤表を参照してください。 構造化ノードを使用しましたが、それが正しい方法であるかどうかはわかりません。そのため、質問です。ステートチャートでは、同等のものは複合状態になりますが、複合アクションについては何も見つかりません。構造化されたノードについては、それに関するいくつかのドキュメントを読んだ後、それがどのように使用されるべきかをまだ本当に理解していないので、この図ではまったく間違っているかもしれません。 また、下の画像のように、トライデントシンボルで別のサブアクティビティを参照する可能性があることも知っていますが、同じ図にすべての情報が必要なので、ニーズに一致しません(印刷できるようになります情報の損失なし) では、そのようなネストされたアクションを表す標準的な方法は何ですか?標準では、一般的に見られ、可能であればほとんどのUML設計ツールで実行可能な有効なUMLを意味します。 無関係な正誤表:私の図では別のことが間違っています。同じアクション(Scratch behind the ears)に来る矢印は、アクションに入る前にマージノードに移動する必要があります。このJOTの引用を含む、以下のコメントを参照してください。
16 uml  modeling 

2
シミュレーションおよびモデリング用のFP
シミュレーション/モデリングプロジェクトを開始しようとしています。OOPがこの種のプロジェクトに使用されていることは既に知っています。しかし、Haskellを勉強することで、コンポーネントのシステムのモデリングにFPパラダイムを使用することを検討しました。詳しく説明します。 データセット(温度や圧力、PDE、境界条件などのパラメーター)で特徴付けられるタイプAのコンポーネントと、異なるデータセット(異なるまたは同じパラメーター、異なるPDEおよび境界条件)。また、各コンポーネントに適用される関数/メソッドが同じであると仮定しましょう(たとえば、Galerkinメソッド)。オブジェクトの可変状態は、定数でないパラメーターに使用されます。 OOPアプローチを使用する場合、各タイプのデータをカプセル化する2つのオブジェクト、PDEを解決するメソッド(ここではコードの再利用に継承が使用されます)、およびPDEのソリューションを作成します。 一方、FPアプローチを使用する場合、各コンポーネントは、PDEのソリューションを取得するためにデータパーツとデータに作用する関数に分割されます。非定数パラメーターは、他の何かの関数として渡されるか(たとえば、時間)、ある種の可変性(可変性のエミュレーションなど)で表現されます。 結論として、FPアプローチの実装は、OOPアプローチと比較して、実際にはシンプルで管理しやすい(pdeを解決するために異なるタイプのコンポーネントまたは新しいメソッドを追加する)でしょうか? 私はC ++ / Fortranのバックグラウンドを持っていますが、プロのプログラマーではないので、間違いがあれば修正してください。

7
プロのソフトウェア開発チームは、重要なプロジェクトの複雑な設計にどのように対処しますか?
まず、私はこの質問が多少長く漠然としていることを理解しており、お詫び申し上げます。これはおそらく、「理解した」人にとっては短い名前の基本的な問題ですが、私はこの点について欠けていると思うので、問題を説明する際はご容赦ください。 私は11歳の頃から、この方法でプログラミングを行ってきました。これは、私が最初から自分にすべてを教えていたことを意味します。私は技術教育を受けましたが、厳密にはコンピュータサイエンスではありませんでした(私はフォトニックエンジニアリングの学位を取得して卒業しています)。もちろんプログラミングコースもありましたが、これは私にとっては基本的なもので、新しいことはあまり学びませんでした。私はその喜びのために自分自身を教育し続けており、プログラミングのキャリアを追求することを常に知っていましたが、その当時の私のプロジェクトはすべて非常に小規模でした。私はそれらを私の心に留め、維持するのに問題はありませんでした。 現在、私はチームでリードしていますが、企業環境ではありません-私は大学でエンジニアリングアプリケーション用の科学ソフトウェア(C ++)を開発しています。突然、プロジェクトは(比較的)大きくなり、ほとんどの場合、私はそれを心に抱くことができなくなりました。主に次の2つのことに多くの時間と労力を費やしています。 しばらく作業していなかったコードのセクションに戻る必要がある場合、それがどのように機能したかを思い出すことが困難です。私は、関連するクラスのヘッダーファイルを確認し、途中でソースファイルに配置したコメントを読むのに多くの時間を費やしています。私が垣間見ることができ、より簡単に画像を取り戻すことができる何らかの「回路図」があるといいのですが。 変更を導入するとき、私がやろうとしていることが他の場所で何かを壊してしまうことの中間点に気付くことがあります(さらに悪いことに、それは実行時にのみ驚きとして現れます)。私は元に戻して別の方法で始めましたが、他のコンポーネントへの影響を無視したことがわかりました。何かが行われる方法、他のコンポーネントに影響を与える方法、変更を実装する前に詳細に計画する方法を確認できる「アーキテクチャダイアグラム」があったらいいのにと思います。 私が一緒に仕事をする人のほとんどは私と同じようなストーリーを持っています-強力な技術的志向と時には素晴らしいスキルですが、彼らの仕事を整理する方法がありません。しかし、彼らのプロジェクトは通常私のプロジェクトよりもはるかに小さいので、彼らはどういうわけか対処します。とにかく、それが私にとって何を意味するかというと、私は一人でいるので、良い実践を学ぶ人がいないということです。 ITの管理に関する大学院のコースを受講しましたが、ITの管理は非常に満足できるものであると感じましたが、主に非プログラマーを対象としており、プロジェクト管理の方法論、予算/スケジュールの見積もり、エンタープライズアーキテクチャなどについて説明しており、ソフトウェアの設計や計画などは担当していません。それは大丈夫です、私もそのことを学ぼうとしています。もちろん、いくつかのツール(UMLなど)とソフトウェア開発プロセスのタイプ(カスケード、反復、アジャイル...)が導入されましたが、明らかにそれほど詳細ではなく、何を選択して使用するかを決めるのに苦労しました(とどの程度)。 私はSOのソフトウェア設計について多くの質問と回答を読んでいます-これまたはその特定のツールまたは方法論を使用してそれを行うことについては多くあります。UMLのドキュメントが私の問題を解決すると確信している場合-私はそれをピックアップし、それを使い始める。しかし、それを誓う人もいれば、役に立たないと言う人もいます。抽象化のより高いレベルでの答えを探しています-私が抱えている2つの問題を解決する方法はありますか。おそらく1つの特定のツールに縛られることなく、それを実行できるようにするには何を学ばなければなりませんか?これらは時々流行から脱却し、プロジェクトの種類によって適用性が異なると思います。 読んでくれてありがとう、私はもっと簡潔に言うことができませんでした(ソフトウェア設計の経験と語彙が不足しています)。

2
この研究分野は何ですか?
靴の再販業者のウェブサイトをデザインしている状況があるとします。彼らは異なるブランドと種類の靴を持っています、そしてもちろん、彼らは本当に良い検索機能を望んでいます。 したがって、靴にはさまざまな特性があります。サイズ、幅、性別、子供/大人などの排他的なプロパティを持つことができます。または、色などの非排他的なプロパティを持つことができます(靴には2つ以上の色がある場合があります)。「ドレス」や「カジュアル」など、一部のカテゴリは競合する可能性があります(靴はドレスシューズとスニーカーの両方にはなれません(この例では「コンフォート」ドレスシューズは無視))が、まだ競合していません「ドレス」や「ブーツ」などの他のもの(靴はドレスブーツの場合もあります)。排他的なプロパティは簡単にモデル化できますが、競合する可能性のあるプロパティはどうですか?これは集合論にとって問題でしょうか? 一般的に、このような応用コンピュータサイエンスは何と呼ばれますか?データモデリング、またはより具体的なもの?排他的プロパティや非排他的プロパティなど、より抽象的な哲学の原則に触れ、それらの原則がコード、データ構造、およびデータベーススキーマにどのように実装されているかを確認したいと思います。 私が話していることの良い例は、変更されたプレオーダーツリートラバーサルアルゴリズムです。これは、ネストされた階層的分類システムを作成するための優れた方法です。つまり、実際の組織の問題、つまりカテゴリがあり、その問題をモデル化するデータ構造があります。 この種のものについてどこでもっと知ることができますか?

3
非常に複雑なフォームのフィールド間の依存関係をモデル化する方法
複数の保険商品の申し込みフォームとして使用するWebアプリケーションを作成する必要があります(合計15)。このアプリケーションフォームはフォームウィザードに似ています。4〜10の製品に応じて、複数のページにまたがります。 フォームがレンダリングするすべてのさまざまな要素(入力、選択ボックス)の合計は約250ですが、最も複雑な製品でさえ170を超えることはありません。最も複雑でないものでも約80の要素が必要です。 製品ごとに1つずつ、15の異なるアプリケーションフォームを作成するのではなく、すべての製品で使用される単一のアプリケーションフォームを作成する必要があります。 想像できるように、要素には要素間に多くの依存関係があります。フィールドに値を入力すると、別のフィールドまたはフィールドのセットが(現在のページまたは次のページで)表示または非表示になります。入力した値に基づくその他の依存関係: 要素の値が必要かどうか 選択ボックスの可能な値が変更されます 検証制約が変更されます ご想像のとおり、これのモデリングは非常に複雑です。問題は、これらすべての要素のモデリング(および文書化)、それらの間の依存関係、および検証制約にどのツールを推奨するかです。どのようにモデリングしますか?この場合、データモデルについてはまったく触れません。このモデルは、必要な作業の仕様の一部となり、プロジェクトの完了後の参考になります。モデルを変更しても、申請書は自動的に変更されません。 簡単にできることのいくつか: 特定の要素が依存する要素を確認する 特定の製品のフォームに含まれるすべての要素を確認する 特定の製品に必要な要素を確認する 各要素の検証ルールを定義する 各要素にさまざまな属性を定義する 制限:モデリングを行うのは製品マネージャーと製品所有者です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.