web-dev-qa-db-ja.com

どのくらいの頻度で正式なUMLを使用しますか?

私はアドホックMUML(作成されたモデリング言語)を使用して、システムをかなり頻繁に設計および説明しました。それはUMLに似ており、かなりよく理解される傾向があります。

しかし、私は、仕様にできるだけ近い厳密な正式なUMLの使用を嫌う教授を1人か2人いました。私はいつも、厳密なUMLは彼らが主張するほど一般的ではないことを疑っていました。それでは、どのくらいの頻度で、適切な行末、多重度、メンバータイプシンボルなどをすべて使用する完全な図を実際にどれくらいの頻度で描画しますか?

33
Fishtoaster

なし

結局、私が最後にanyUMLを作成してから数年が経ちました。ホワイトボードと紙くずの線図はカウントされません。

実際、面接時に使用するガイドからUMLの質問を1つだけ削除しました。なぜなら、私たちは誰も答えを気にしていないからです。

45
Shog9

私は(図の種類と図の情報の内容の両方に関して)十分なUMLを使用して、自分または他の誰かがシステムまたはサブシステムを実装できるようにポイントを渡しています。そして、UMLを使用する唯一の理由は、UMLが広く知られているシンボルのセットであるためで、それぞれが非常に具体的な意味を持っているため、あいまいさはありません。システム。

14
Thomas Owens

皮肉なことに、UMLは柔軟であることになっています。

現実の世界では、それはそれを行うための知識を必要としない演習ではないone正しい方法。システム/プロセス/アイデアを効果的に伝え、文書化することです。

あなたの質問に答えるために、私は他の人と一緒にいます。私は完全に正式なUMLを完全に利用したことはありません。

11
George Marian

Rational Roseからコードスケルトンのすべて(ほとんど)を生成する製品で、UMLを約4年間非常に定期的に使用しました。

過去5年間、その場で考案された「箱と矢」の数が増えましたが、通常、全体的な考え方を理解するのに十分です。この間、UMLを数回だけ正式に修正します。

6
FeatureCreep

しかし、私は、仕様にできるだけ近い厳密で正式なUMLの使用を嫌う教授を1人か2人いました。

彼が実際のシステムでそのアプローチを最後に使用したのはいつか教授に尋ねてください。真剣に。

私はUMLに関してはできるだけ形式的になるようにしていますが、それが理にかなっている場合に限ります。 (カウボーイからタイトなフォーマルリストまで)スペクトルの両側にいる熱狂者は、それを理解できません。

あまり厳格でないアプローチがある場合があります(個人的に使用するアプローチのような)は、従うのに最適なアプローチです。良い例は、要件が小さく完全に定義されていない小規模なシステムまたは変更の場合です。担当グループは効率的かつ効果的です。完璧にするよりも、取り出す方が重要です。それは繰り返し行われ、いくつかの欠陥は許容されます。

あるいは、正式なモデリング段階とは対照的に、ゲストとしての評価やスケッチをしている段階にいるのかもしれません。それらは頭に浮かぶ例です。

他の場合では、厳密な正式なUMLアプローチが必要です。たとえば、契約上拘束されている場合があります。複数のチームに非常に多くの開発者がいる(おそらく分散している)。プロジェクトの範囲は数年になる可能性があります。これは非常に大きなシステムです(ソフトウェアおよびハードウェアコンポーネントを含む)。故障のコストが高いなど.

その他の場合、UML(ペトリネット、CSP、または時相論理などの実際の数学的形式モデル)の代わりに何か他のものを使用する必要があります。これの例は、リアルタイムシステム、障害のあるシステムです。壊滅的(医療機器)または契約上拘束されている場所(つまり、ヨーロッパのように輸送システムを開発する場合)

それはすべて、状況と、各アプローチから何が得られるかによって異なります。形式に固執することを強要する教授は、単に盲目的な熱狂者です。エンジニアリングの世界は、黒と白の、正しい/間違った二分法ではありません。それはインテリジェントなトレードオフの世界です。

あなたが仕事を成し遂げるために効果的で適切な方法でカジュアルで非公式のモデルを使用するのに十分なほどインテリジェントであるなら、そうしてください。同様に、いつ[〜#〜] not [〜#〜]を使用するかを認識することが期待されます非公式なアプローチおよび/または[〜#〜] not [〜#〜]が正式なものを使用する場合。

そうは言っても、教授と耳でそれを再生する必要があります。彼らにあなたに等級を与えるように彼らに骨を与えてください、そしてそれが最終的に彼らの熱心なマントラに頭を下げることを意味するならば、それは結構です。あなたは何がうまくいくかを知っています、そしてうまくいけば、あなたは現実世界で何をどのように使うべきかを知っているでしょう。

4
luis.espinal

PhD研究の一環として、経験豊富なデザイナーが(人工的な設定ではありますが)デザインコラボレーションでUMLを使用する方法を研究しました。

私の発見によると、UMLのメタファーと表記法は借用されていますが、ツールの厳密さはほとんど守られていません。

後で、一部のモデルはより厳密なUMLに繰り返し変換される可能性があり、多くの場合、要求の厳しいCASEツールがコード生成の目的で使用される場合があります。

もちろん、学術研究の通常の警告が適用されます:)

論文の要約 および 論文自体(ACMアクセス権がない場合) へのリンク。

それとは別に、私はAmblerの「アジャイルモデリング」を強くお勧めします。

3
Uri

Hibernate ORMのコード生成には正式なUMLを使用します。他のほとんどのものは非公式またはホワイトボードです。形式生成の欠如はそれを壊すので、それはコード生成に関して私たちにとってのみ重要です。

1
jmq

それはあなたがいる業界に依存します。頻繁なテクニカルレビュー(PDR、CDRなど)を必要とする顧客のために働く場合、アドホックな表記システムではなく、ある種の標準化を好みます。特に政府の仕事。これにより、誤解や、考案した表記法の最初の15分の説明を防ぐことができます。

また、UMLを使用しているからといって、標準に従ってすべてのiにドットを付け、すべてのtに交差する必要があるわけではありません。これは、ある種の自動コード生成/実行を実行したい場合のみです。複数のプロジェクトでこれを行った人は誰も知りません。

一方、あなたがあなた自身の開発者のチームであなたの会社のために働いているなら、あなたはどの記法を使うか気にかけます。ただし、適切なツールを選択すれば、リアルタイムで節約できます。

以上のことを踏まえると、UMLを使用して設計することができなければ、一部の業界ではうまくいかないことがあります。他の業界では、あなたはそれを見ることは決してないでしょう。

また、UMLのヘビーユーザーであるほど修正のコストが高くなるため、設計を正しくする必要のある業界間の相関関係もわかると思います。業界との比較では、UMLはおそらく決して使用されない場所であるため、設計修正のコストはドキュメント/コードの変更にすぎません。

元の質問に関して。ほとんどのカレッジは、学生を最も頻繁に採用する企業向けに学生のトレーニングを調整する傾向があります。あなたが教授がUMLが重要だと思っているなら、あなたの学校から募集する企業の多くがUMLを使用していることは私を驚かせないでしょう。したがって、それを使用することを学ぶ必要があります。

1
Dunk

非常に時間のかかるビジュアルモデリングアクティビティ、フォーラムの雑用、コンピュータの周りで育った、または思慮深く学んだことのある過度に冗長なソフトスキルなどに対する厳格な主張のため、私は(少なくとも一時的に)おそらく一流大学を中退しましたユーザー・インターフェースに向かっていると、借金を深く掘り下げることを考えると、完全にフラストレーションで物事を壊したくなるでしょう。

私は、エントリーレベルとジュニアレベルの仕事が要求するものを見ることと、大学のABET認定のためにCESが何を設定するかを学習することを選択する必要がありました。 PERT評価で明らかになります。大学は教えていることを実践していません。

私の意見では、統一されたプロセスには多くのメリットがありますが、視覚的なアーティファクトを作成する全体の実践は、モデリング言語が少しばかげたことです。 Word、Workflowy、Evernote、OpenOfficeで作成された、またはワードプロセッサに名前が付けられているような、要約されたリストを含む反復的に洗練されたドキュメントは、統一プロセスに必要なものを完全に文書化できます。この単純な問題は、バージョン管理された複数のユーザーが簡単に作業でき、適切なツールを選択すれば、チームが同時に作業することもできます。これは、UMLが大群を統合するために必要なモードのように見えたときよりもはるかに簡単に実行できます。

0
JLG

私たちが実装したシステムを文書化している場合は、完全な正式なUMLを使用して配置しようとします。しかし、それ以外の時間は、アイデアを理解するために必要なだけ使用します。また、UMLよりも多くのDFDを使用していることにも気づきました。これは、最近設計しているシステムに適しているようです。

0
TMN

UMLについて読んだとき、私のC++コースで解決しようとしていたすべての問題についてこれを試しました。幸い、私が最初に試した例の1つは、リンクされたリストを記述することでした。
動作しませんでした。
とはいえ、優れたモデリングプロセスと組み合わせると、UMLが役立ちます。それが良いか悪いかの基準であるという理由だけで。
テンプレートメタプログラミングの記述言語が見たいです。 <<<>>> -landで何が起こっているのかを理解するのに大いに役立つと思います

0
user1041

モデル駆動型開発も試してみると、UMLは苦痛です。つまり、UMLは非常に便利なグラフィック表記であり、それ以外はすべて役に立たないということです。私はモデリングには費やしていませんが、プロジェクトの構造を作成するためにUMLを毎日使用しています。私がすることは、要件レベルで基本的なユースケース図をすばやく描き、すぐにクラス図に切り替えることです。ユースケース図とクラス図の間に要件トレーサビリティを追加します。クラスダイアグラムもライブ同期されるため、コードを作成します。 JavaプロジェクトにマップされているUMLモデルには、コードオールモデルのタグは保存されません。

いくつかのクラス図を使用してアプリケーションのスケルトンを作成し、コードに切り替えます。コードが完成したら、モデルとマージします。これは、コードがモデルを実行するコードとモデル間の一種の反復です。したがって、私のクラス図は、より高いレベルの抽象化とコードを提供し、コードはビジネスロジックの実装(メソッドなど)を提供します。

UMLモデリングには1日あたり10分もかかりません。これは、開発する必要があるものと方法を考える時間が必要なときに行われます。

UMLは素晴らしく、素晴らしく、本当に便利ですが、モデル駆動型開発は役に立ちません。

0
UML_GURU