2016-09-26 11 views
0

私はソフトウェアエンジニアリングの学生です。私の講師である「ソフトウェア・アーキテクチャーとデザイン」は、すべてのUMLダイアグラム(またはほとんどのもの)からソースコードを生成できることを教えてくれました。 私はすでにクラス図からコードを生成することができます。私は他の図からコードを生成することができません。 これを行うには、それらの図をクラス図に接続する必要がありますか?Enterprise Architectのユースケース、アクティビティ、またはシーケンス図からコードを生成することは可能ですか?

答えて

-2

私は答えを見つけたと思います。コードを生成することができます。 「ユースケース」があるとします。私はそれを右クリックします。 "advance"に行き、 "instance classifier"を選択してください。そこに私は実際に私の "ユースケース"、 "シーケンス図オブジェクト"などを既に作成されたクラスのインスタンスにすることができます。

1

これは単なるナンセンスです。任意の図からコードを生成することはできません。ただし、UMLモデルからコードを生成することはできます。これは、人間の視覚化を助けるために、いくつかの図を持つことができます(ただし必須ではありません)。

コードはクラスに関連しています。つまり、モデルに定義された少なくともいくつかのクラスが必要です。ユースケースは、クラスが行うべきことをクラスが行う理由を理解するのに役立ちます。しかし、ユースケースからコードを作成することはできません。

さらに詳しいコードを作成するためのサポートを提供する他のモデル要素があります。例えば、同等のコードセクションに変換できるステートマシンです。

アクティビティとシーケンス図は、実行中に特定のコードセクションがどのように実行されるかを視覚化するのにも役立ちます。しかし、(真剣に)それらを使ってコードを作成することはありません。

+0

実際には、コードを生成できます。 「ユースケース」があるとします。私はそれを右クリックします。 "advance"に行き、 "instance classifier"を選択してください。そこに私は実際に私の "ユースケース"、 "シーケンス図オブジェクト"などを既に作成されたクラスのインスタンスにすることができます。 –

+0

コードは直接クラスに関連しています。 UCは間接的にクラスに関連しています。要件はUCに間接的に関係しています。要件は、誰かが一度に持っていた考えです。だからあなたは単なる考えからコードを作ることができます。あなたと一緒に力を発揮してください。 –

0

はい、可能ですが、説明しているほど簡単ではありません。 Model-Driven Architectureは現在研究の活発な分野ですが、実際にはまだ "つかまえていません"。その提案者は、アセンブリ言語より抽象度が高く、JavaよりもCより抽象度が高い抽象化を提供すると主張しています。こので非常に有用であると思います将来的には、ツールリングの権利を得ることができます。

実際、これはまったく新しいアイデアでもありません。一般的なグラフィカルプログラミングの考え方(考えてみれば、基本的にはUML由来プログラミングの一般化です)は、少なくとも1980年代私が知っている(そしておそらくもっと早く)。実際には、フレデリック・ブルックスJr.がでそれについて特効薬を語っていない - ソフトウェア工学における本質と事故(元々は1986年に出版され、人月の神話の現行版で表示されました):

博士課程のお気に入りの科目です。ソフトウェア工学の論文は、グラフィカル、またはビジュアルプログラミング、コンピュータグラフィックスのソフトウェア設計への応用です。このようなアプローチの約束は、コンピュータグラフィックスが非常に有益な役割を果たしているVLSIチップ設計の類推から仮定されることがあります。時には、このアプローチは、フローチャートを理想的なプログラム設計媒体とみなし、それらを構築するための強力な設備を提供することによって、正当化されることがあります。

魅力的ではなく、エキサイティングなことはまだありませんが、そのような努力からまだ現れていません。私は何もするつもりはないと確信しています。

彼の議論は、書かれた時点では、まだ「そこに」ありませんでした。例えば、画面のサイズは非常に小さいとされていました。また、実際にはフローチャートは実際には悪い設計メカニズムです。また、

さらに根本的に、私が上で主張したように、ソフトウェアは視覚化することが非常に困難です。コントロールフロー、可変スコープネスト、変数相互参照、データフロー、階層データ構造などをダイアグラムするかどうかは、複雑に連動しているソフトウェアゾウの1つの次元のみを感じます。多くの関連ビューで生成されたすべての図を重ね合わせると、どのようなグローバルな概観も抽出することは困難です。 VLSIの類推は根本的に誤解を招く - チップ設計は、幾何学的にその本質を反映した層状の2次元オブジェクトである。ソフトウェアシステムではありません。

あなたが彼に同意するかどうか、またはそれがまだ適用されているかどうかを判断するためにあなたに残します。

要約すると、理論的には可能ですが、UMLダイアグラムからコードを生成するにはかなりの努力がありましたが、基本クラス構造とメソッドスタブよりはるかに多くの図を作成する必要があります。ユース・ケース・ダイアグラムを作成し、ボタンを押して、魔法のように完全なソフトウェア・システムを作ることはできません。

関連する問題