- PR -

シーケンス図からのソース生成

投稿者投稿内容
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-05-25 00:17
こんにちは。
題名の通り、シーケンス図からソースを生成するツールを探しています。
結構前から探しているのですがなかなかこれは、と思うようなものにあたりません。
ソースコード⇔シーケンス図間で相互変換ができると開発効率がとっても上がると思うのですが。

お勧めツール、もしくはご意見等ありましたらぜひ書き込みお願いします!
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-25 02:29
シーケンス図から一意にコードを導出することってできるんでしょうか?

とりあえず、ソースからシーケンス図であれば JBuilder とか Together とかでできます。
http://www.codegear.com/products/jbuilder
http://www.borland.com/jp/products/together/index.html#designer
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-05-25 07:43
>インギさん

返答ありがとうございます。
確かにソースからシーケンス図を起こす方法っていくつかあるみたいですね。
EAでもできるようです。
http://www.sparxsystems.jp/swf/ea_use13.htm
http://www.sparxsystems.jp/bin/MakeSequenceDiagramFeatureGuide.pdf

ただシーケンス図からのソース生成は需要がないらしく(社長のブログに載ってた)、いまのところ対応予定ないらしいです(><)
作成順序としてはシーケンス図→ソースとなるはずなので絶対需要あると思うんだけどなぁ・・
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-25 10:34
引用:

キタキツネさんの書き込み (2007-05-25 07:43) より:
ただシーケンス図からのソース生成は需要がないらしく(社長のブログに載ってた)、いまのところ対応予定ないらしいです(><)
作成順序としてはシーケンス図→ソースとなるはずなので絶対需要あると思うんだけどなぁ・・



似たような代物でフローチャートがありますが、
現場でフローチャートを書いてからコーディングすることは少ないですね。
フローチャートとコードを同レベル(コードと1対1で対応付けられる)で
描くぐらいなら最初からコードを書いたほうが早いからです。
同じようにシーケンス図をコードと同レベルで描いてからコードを
書く人もまずいません。

なにより、全てのメソッドコールをシーケンス図で書くと煩雑で
逆に意味のわからないものになってしまいがちです。
インスタンスの生成順序、インスタンスの寿命、およびメソッドコールの関係で
特徴的な部分を抜き出して説明する際にシーケンス図を用いるのではないでしょうか。
フローチャートも全てを描くのではなく、強調したい内容に抽象化して描きます。

そして、抽象的な概念を確認するためのシーケンス図、フローチャートからでは
コードには変換できません。
大雑把にしか書かれていないのでコードへの変換に使えないのです。

これらの図式は概念を説明するための図式と思ったほうがよいでしょう。
実際のところ、コードときれいに合致するようにこれらの図を
メンテナンスすることは非常に困難です。
コード修正というアスペクトに対して横断的に修正作業をこなすのは
よほど神経質な人が目を光らせるでもしないと難しいことでしょう。
キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-05-27 22:40
>nagiseさん

こんばんは。返答ありがとうございます。

確かに設計段階で詳細なシーケンス図を書くことは少ないと思います。(ないことはないですが)
でも、実装フェーズに入る前には何らかのシーケンス図を書く必要があるなあ、と感じています。
私がいままで関わったプロジェクトでは、ひとつの処理についての設計シーケンス図を書くことが多かったですね。
※例:
サービスAがモデルCの検索メソッドを呼び出す。
モデルCの検索メソッドがDAOの検索メソッドを呼び出す、等の処理を図示化したもの。setter,getter等の細かい処理は記載しない

やはり処理フローを追っかけるにはシーケンス図が分かりやすいと思いますし、
レビューや認識合わせをするためにも作成は必要だと感じています。


で、、何をいいたいかというと、
実装フェーズが始まると、設計フェーズで作成したシーケン図を元にコーディングをしていきますが、この作業が機械的な感じがして、なんとか自動化できないものかなぁ、と思ってます。
もちろん、実装フェーズで行うべきものも多々ありますが、それも設計シーケン図をソースに落とし込んでからの作業になります。
最初に設計シーケン図からソースを起せると結構、作業が楽になるんですよねぇ。。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-05-28 14:47
引用:

キタキツネさんの書き込み (2007-05-27 22:40) より:
で、、何をいいたいかというと、
実装フェーズが始まると、設計フェーズで作成したシーケン図を元にコーディングをしていきますが、この作業が機械的な感じがして、なんとか自動化できないものかなぁ、と思ってます。


シーケンス図に描く/描かないの閾が人間の主観によるところなので、
機械処理は難しいのではないかと思います。
アノテーションのような手法でうまくマーキングしてやることで
半自動で処理する方法論であれば実現可能かもしれませんね。

また、自動処理で完全相互変換可能な場合は問題ないのですが、
初期生成後に手を加えるような場合だと、後のメンテナンスが非常に難しい。
再生成すると加筆部分が吹き飛ぶために図とコードが一致しなくなるんですね。
一致しないということは資料としての価値が無くなっていくことを意味します。
このあたりも自動処理をするに当たって分の悪いところでしょう。
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2007-05-28 16:12
シーケンス図ではありませんが、状態遷移図からならIBMのRose Realtimeでコードの
自動生成が出来ます。C++では使ったことがありますが、Javaも対応していたかと。

http://www-06.ibm.com/jp/software/rational/products/design/rosetech/

状態遷移のトリガーはシーケンス図でメッセージとして記載されているはずですので、
かなり近い線ではないでしょうか。動作状態でメッセージを記録して、予期した
シーケンス図と比較する機能なんかも付いていたはず。名前にRealtimeは付いてますが
実態はあんまりRealtimeとは関係ないです。

Rhapsodyも似たような機能があるみたいです。

http://www.ctc-g.co.jp/~EDA/ilogix/contents/03a_rhapsody.html

それから、コード -> シーケンス図生成は出来ません。また、生成されるソースも
人間が手を入れるのは不可能とはいいませんがちょっと...という状態に
なりますので、作り込みは原則としてシーケンス図(状態遷移図)レベルで
行うことになります。もはや"C++で作る"(あるいはJavaで...)とは言えない
ような状態になりますので導入にはそれなりの検討と覚悟が必要かと思います。

あと、値段が高い...

キタキツネ
常連さん
会議室デビュー日: 2006/11/23
投稿数: 32
お住まい・勤務地: 沖縄県名護市
投稿日時: 2007-05-29 06:57
こんにちは。返答ありがとうございます。

スパークシステムさんに要望だしてみたのですが、やっぱり追加予定はないみたいです。

http://uml.livedoor.biz/archives/50646526.html?1180388971

私がシーケンス図からのソース生成でやりたかったことも詳しく書いてみたので、良ければ見てみてください。

んー効率的な開発ってなかなか難しいですねぇ。。

ちょっと話しがそれますがJUnitでのテストコードを自動生成するようなツールをご存知の方っていらっしゃいますか?
こちらも結構コードが機械的に書けそうな気がしてます。基本形を自動生成して値だけビジネスに合わせて変える、ってのができると嬉しいです。

スキルアップ/キャリアアップ(JOB@IT)