- PR -

プロジェクト分割単位

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-01 09:40
VS2005 Windowsアプリです。

システム内に50の機能があったとします。
プロジェクト分割単位を機能単位とした場合に

@(ありえないですが)50機能を1つのexeで作成した
A1つのexeと機能ごとに50のクラスライブラリを作成した
B1つのexeと機能をグルーピングし25のクラスライブラリを作成した

上記の選択により具体的にどのような影響があるのでしょうか?
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2008-04-01 09:42
回答じゃないですが
C普通に50のexeとメニュー画面を作った
ぱてお
常連さん
会議室デビュー日: 2008/03/07
投稿数: 41
投稿日時: 2008-04-01 10:34
システム規模とか50と言っている機能それぞれの規模とか
それによっていくらでも変わる話だと思います。
つまりそのシステムその物に関してちゃんと理解していないと
レスのつけようが無いと思いますよ。

機能が50であるからクラスライブラリが50になると
考えるのも変な話です。機能的に類似していれば一つに
するケースもあるはずですよね。それが25になるか
30になるかは機能の中身と規模次第だと思います。

そういう意味ではめだかさんが書かれている構成もありでしょうし。
その構成がリーズナブルであると判断できれば、良いのではないかと。
今提示されている条件にそれが判断できるような要素はないので
なんともいえないと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-01 11:37
引用:

未記入さんの書き込み (2008-04-01 09:40) より:

システム内に50の機能があったとします。
プロジェクト分割単位を機能単位とした場合に

(1)(ありえないですが)50機能を1つのexeで作成した
(2) 1つのexeと機能ごとに50のクラスライブラリを作成した
(3) 1つのexeと機能をグルーピングし25のクラスライブラリを作成した

上記の選択により具体的にどのような影響があるのでしょうか?


前提条件と合致している選択肢が (2) しかないので、(1) と (3) は 「要件を無視している」 という影響があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-01 11:43
ぱておさん返答ありがとうございます。
要件があいまいということですので前提条件を付けます。
現実的にはあり得ませんが、50機能すべて同一規模とします。
また25のライブラリになるか30のライブラリになるかはわかりませんが、ある程度グルーピングは行えることとします。

質問の意図としましては
ある程度グルーピングできるにもかかわらず、1exeと50のクラスライブラリを作成した場合と
ある程度グルーピングを行い1exeと25〜30のクラスライブラリを作成した場合に
どのような影響があるのか?ということを知りたいのです。

システム要件によりめだかさんが書かれている構成も有だということは解っていますが、
その構成が有と判断するための根拠がわかりません。

純粋にdllの読み込み速度だけの問題なのでしょうか?

未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-01 11:56
じゃんぬねっと様
すいません。質問がおかしかったですね。

例えばマスター系の画面が10個、在庫系の画面が20個、売上系の画面が20個あったとします。
売上系の画面だからといって相互に関連性はなく1画面で処理が完結し、ある売上系の画面処理後に別の売上系の画面で処理を行うといった連動性?みたいなものは無いとした場合
これを1exeと50のdllとした場合
または1exeと10,25,25のdllとした場合
何がどう変わるのかが知りたいのです。

後出しのように質問が変わってしまい申し訳ありません。

プロジェクト単位は縦割り(UIで1dll、ビジネスロジックで1dll)といったものではなく
横割りという意味で使いました。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-01 12:26
引用:

未記入さんの書き込み (2008-04-01 11:56) より:

例えばマスター系の画面が10個、在庫系の画面が20個、売上系の画面が20個あったとします。売上系の画面だからといって相互に関連性はなく1画面で処理が完結し、ある売上系の画面処理後に別の売上系の画面で処理を行うといった連動性?みたいなものは無いとした場合これを1exeと50のdllとした場合または1exeと10,25,25のdllとした場合何がどう変わるのかが知りたいのです。


画面の連動性がないのはわかりました。 あとはデータの連携がないかどうかですが、提示された条件からすると一般的なデータベースを利用したアプリケーションという前提で良さそうですね。 その上で、

引用:

現実的にはあり得ませんが、50機能すべて同一規模とします。


ということであれば、50 のアセンブリに分割でしょうね。 exe にするか dll にするかは単独起動をすべきかどうかに依ります。 それ以外の方法は拡張する時に妨げになります。 せっかく仕様段階で分割できているのですからそれに合わせない理由はありませんよね。

そう考えると急に単純明快になってしまったような気もします。 ひょっとするとこんな回答は求めてらっしゃらないかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-01 13:10
じゃんぬねっと様 いつもありがとうございます。

私は50の画面を関連がないからといって50のexeにするのはどうなのかなぁと思っていました。これは間違っていたようです。

システム要件によりけりで「これが解!」というものが存在しないことは承知しておりますが、プロジェクト分割を横割りにした場合のプロジェクト分割指針みたいなものを理解したいと思っており、質問いたしました。

じゃんぬねっと様の回答から、私は以下のように認識したのですが間違っていたり捕捉がありましたらご返答いただけないでしょうか?
よろしくお願いいたします。

dll分割は読み込み速度だけの問題であり
画面間に相互に関連がなければ細かく分割する方がパフォーマンスに優れる。
画面間に相互に関連がある場合は、最小の関連だけで(=最小の機能単位)でdllを作成する。例えば関連のない100画面100プロジェクトとされたら、開発者はうんざりするけれど
そこらへんは保守性とのトレードオフである。

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