- PR -

プロジェクト分割単位

投稿者投稿内容
ぱてお
常連さん
会議室デビュー日: 2008/03/07
投稿数: 41
投稿日時: 2008-04-01 16:26
システム規模が大きい場合は、細かく分割できた方が
分割して開発が行えると言うメリットがあると思います。
しかも各画面間に直接の関係が無いとなれば、
分割して同時開発と言うのもやりやすいでしょうし。

昨今のハードウエアを対象に考えるのであれば、
よほど冗長なつくりになっていない限りはそこまでパフォーマンスに
影響するとは思えないです。
どちらかと言うとメンテナンス性とか開発効率とかそっちの影響が
大きいのではないかと思います。

DLLを細かく分けると必要最小限の入れ替えで機能を変更したり出来そうですが、
数が多いと管理が面倒になると思います。
通常は形態管理システムを使うでしょうけれど、
あまりにも多いと人為的なミスが発生する可能性が増えると思います。
この辺はトレードオフになると思うのでモジュール分割は必要最小限と言うのが
良いのではないかと私は考えています。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-01 22:16
私はたまに使う手法として
人ごとにDLL化するんです。
  すると物理的に割れる事によって
  他人同士、I/Fを明らかにしなければならない
    と言う重大な事に気づくのです。
     (ホントは逆ですが)

あと、スマートクライアントではないですよね(?)
Windowsアプリならアセンブリ配置にあまり気にしなくてもよいのでは?
(しいて言えば、Sale.dll, Stock.dll等、名前から機能がわかるぐらいがよいのでは)
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-04-02 00:03
引用:

例えばマスター系の画面が10個、在庫系の画面が20個、売上系の画面が20個あったとします。


私ならですが、マスタ・在庫・売上をDLLにします。
それ以外にシステム共通系としてDLLを1つと起動用のexeを用意します。なので5分割でしょうか。

[追記]
肝心なこと書き忘れました。
他の方も記載していますが、アセンブリの数が多くなりすぎると管理が面倒になるというのがあります。
あとWindowsFormでは、いくつかのDLLに分割した場合でも、configファイルとしては、xxx.exe.configの1つとなります。そのためDLL側は考慮しなければならないケースがあります。すべてexeなら問題にはならないと思いますが。。。

[ メッセージ編集済み 編集者: GENZO 編集日時 2008-04-02 00:13 ]
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-02 10:07
GENZO様、indigo-x、ぱてお様 返答ありがとうございます。
やはりdll分割単位もこれといった解はなく、保守・開発性とのトレードオフということですね。皆様の意見を参考にdll分割単位を再考します。

indigo-x様
よろしければスマートクライアントではどのように分割されてるのか参考までに教えていただけないでしょうか?
私が作成したものは1exeと共通系のdllを1つで2分割としています。
これは単にスマートクライアントではシステム規模がさほど大きくないためという理由だけです。
よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-02 11:15
引用:

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

dll分割は読み込み速度だけの問題であり
画面間に相互に関連がなければ細かく分割する方がパフォーマンスに優れる。


CLR は必要最小限のモジュールをオンデマンドにロードしますから気にすることはないと思います。

引用:

画面間に相互に関連がある場合は、最小の関連だけで(=最小の機能単位)でdllを作成する。例えば関連のない100画面100プロジェクトとされたら、開発者はうんざりするけれど
そこらへんは保守性とのトレードオフである。


開発者はうんざりするどころか喜ぶと思いますよ。 開発者がうんざりするとすれば、各アセンブリに強い関連性がある場合ではないでしょうか? もしくは 「1 人で 100 アセンブリ作れ」 と言われた場合ではないでしょうか? (そんなことはあまりある話ではないですが)

開発者の人数が増えれば増えるだけ喜ばれます。(喜ばれるというよりは不満が減るといった方が正しいかもしれません) 大規模開発で多くの人間が関わる前提だとしたらどうでしょう? すでに意見として挙がっているとおり、アセンブリごとに割った方が考える範囲が狭くなり容易になります。 また問題も発生しにくいですし、問題を早期発見できます。

アセンブリの管理はある程度の数を超えてしまうと大変さに変わりはありません。 どうせ VSS 任せになったりします。

引用:

例えばマスター系の画面が10個、在庫系の画面が20個、売上系の画面が20個あったとします。


マスタ系、在庫系、売上系で 50 アセンブリです。これらが、大規模開発だった場合は、これに加え 「分散ソリューション」 を使うと思います。 マスタ系、在庫系、売上系で各々ソリューションを作ります。 そうすれば、1 ソリューション 1 ~ 20 アセンブリで管理できるということになります。 システム自体を分けるという発想ですね。 (これでまとめて発注しやすくなりますよw)

ひとつのシステムにいくつか業務形態の処理があるようなアプリケーションは、多くの場合は部署 (オペレータ) によって不要なものがあります。 ですので 「分散ソリューション」 というのも開発形態としてはアリでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-04-02 11:45
じゃんぬねっと様

引用:

じゃんぬねっとさんの書き込み (2008-04-02 11:15) より:
CLR は必要最小限のモジュールをオンデマンドにロードしますから気にすることはないと思います。


上記に関して確認させてください。

たとえば相互に関連のない50個の画面を1dllにしたとして、
オペレータがそのうち1つの画面にアクセスしようとした場合、
その他の49個の画面もロードされるのですよね?
そこに無駄が発生すると感じますが、保守性との兼ね合いで適度に分割されていれば
気にすることはないということでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-02 12:01
引用:

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

たとえば相互に関連のない50個の画面を1dllにしたとして、
オペレータがそのうち1つの画面にアクセスしようとした場合、
その他の49個の画面もロードされるのですよね?


いいえ。 ロードされません。 CLR は型を参照しているメンバが呼ばれるまでアセンブリ モジュールをロードしません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-02 12:14
スマートクライアントでの考慮点はいくつかあると思いますが。

 ・当然(Web)サービス系とは分離されると思いますが、そうすると
  クライアント系との共通な部分は別DLLとして実装しなければなりません

 ・ClickOnceの場合ならVSのプロジェクトプロパティのセキュリティ
  にてアセンブリ単位にアクセス許可を設定できるようになってます
  のである程度切り分けが必要です。

 ・あと、生々しいSQL文または(ノウハウ的)ビジネスロジックが
  クライアントに行くのを嫌う場合もあります。(同一アセンブリなら)

 ・その他見られたくない情報(リソース等)まで行く場合です。(同一アセンブリなら)

その他もあると思いますが。。。。

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