モジュール分けのルールについて
質問失礼します。
卒業研究で、通信販売のページを作るという課題がでたのですが、
その制作の前段階として、モジュール分けのルールを決めてくれと言われました。
しかし、モジュール分けのルールと言われても、
「共通して利用できる部分はモジュール分けをする」
…程度しか思いつかず、
モジュール分けのルール、と言われても、
はっきりとしたルールが良く分からず、悩んでいます。
そこで、皆さんに質問なのですが、
これまで、どのようなルールでモジュール分けを行って来たのでしょうか?
また、どのようなルールがありましたでしょうか?
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.2です。
お礼ありがとうございました。
>ルールとして足りえるものでしょうか
「強度の尺度」については、あくまでもガイドラインです。
つまり、何もかも単一機能にはできないからこそ、このような表になっているので、あくまでも優先順位ですので、例外は規模が大きくなるほど当たり前のようにあります。
ですから、あまりそれで縛るのはかえってわかりづらいプログラムとなります。
私が以前した方法として、特に新人などには、自分担当分の機能概要を説明させて、その機能ごとにモジュール分けをさせることです。
さらに、モジュールステップの上限を決めることです。たとえ単一機能であっても1つのモジュールが数千ステップもあっては可読性が悪くなります。
普通は、上限を1000~1500ぐらいでもいいと思いますが、DBなどで項目数が多い場合はそれ以上になるでしょう。
また、昔COBOLの頃は、メイン処理で「初期処理・主処理・後処理」と良く言えばスッキリ、でも実は何をやっているか訳がわからなかったですが、多少ステップ数は多くなっても、なるべく主処理で全体の機能概要が掴めるようにした方が可読性が高くなると思います。
突き詰めるところ、モジュール分けはセンスです。
ある程度のガイドラインは出せても、答えは人それぞれで何が正解とは言えません。
(でも、ある程度の経験者ならば、大体は同じようなモジュール分けになるのも確かですが)
また、注意が必要なものにモジュール間インターフェース(結合の尺度)があります。
これも、なるべくパラメータで渡すの(データ結合)が理想ですが、それだと十数個もの引数になる場合もありますので、これもセンスが必要です。
あまり答えになってませんが、個人個人で作りが悪ければ、結局それで苦労して、そこからもっとうまい方法が生まれる。この繰り返しだと思います。
特に、1人でステップ数が1万~2万ぐらいにもなるプログラムでは、経験者とそうでない人では、作り方やコメントなど経験者でなければできないものが必ずあります。
でも、誰でも最初の時はあるわけで、それをうまく導くのもリーダーの仕事だと思います。
とりとめのない回答になって済みませんでした。
事細かに説明していただき、本当にありがとうございます。
ルールは、やはりガイドライン程度に収め、
結局それ以上の事は、経験値のある人のサポートや
制作者、チームの努力や試行錯誤で改善されて行くものなのですかね。
とても参考になりました、
ありがとうございました!
No.4
- 回答日時:
No.3の訂正です。
>なるべく主処理で全体の機能概要が掴めるようにした方が可読性が高くなると思います。
主処理ではなく、メイン処理の誤りでした。
訂正して、お詫びいたします。
No.2
- 回答日時:
構造化プログラミングの基本は、「単一機能」にモジュール分けすることです。
よく「構造化プログラミングとオブジェクト指向とは、考え方が全く違う」ようなことを言うやからがおりますが、オブジェクト指向は構造化プログラミングを進化させたもの(カプセル化を容易にしたもの)であって、構造化プログラミングが否定されたものではありません。
下記URLの、ページ下段の「強度の尺度」を参考になされることをお勧めします。
参考URL:http://www.smg.co.jp/~toyo/Program/note.html
この回答への補足
回答ありがとうございます
URL参考にさせていただきます。
オブジェクト指向プログラミングについては、私もいくらか経験済みですので、
構造化プログラミングによく似ているというのは、理解しているつもりです。
問題は、担当者全員に、ルールによって
「どのようにモジュール分けしてね」
という縛りをつけられるかなのですが、
モジュール分けのルール、として
・「単一機能」にモジュール分けをする。
・「結合度」「強度」を意識する。
・ 共通させたい機能ごとにまとめる。
で十分ルールとして足りえるものでしょうか
No.1
- 回答日時:
必要な機能ごとにまとめてみてはどうでしょう。
通信販売のページということですが、Amazonのような感じと思われます。
1.個人情報の管理 ログイン・購入履歴・住所・氏名
2.商品管理 在庫を確認する・商品の説明・レビュー評価
3.画面表示用クラス 引数できたものを画面に出力する
などのように、自分の共通させたい機能毎にまとめるのもひとつのルールです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メールソフト・メールサービス) メールアドレスに大文字を含んだメールの仕分けができない。 1 2022/04/28 12:02
- 一眼レフカメラ SFP モジュールについて 1 2023/06/04 14:54
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- 経営情報システム 製造業です。モジュール化の意味がよく分かりません。モジュール化ができていないとどんな不具合があります 4 2022/07/26 06:55
- 建設業・製造業 製造業です。モジュール化の意味がよく分かりません。モジュール化ができていないとどんな不具合等がありま 2 2022/07/25 22:42
- ルーター・ネットワーク機器 PCをWI-FI化(現在は有線) 9 2023/01/16 08:20
- ガスコンロ・IHクッキングヒーター・給湯器 シャープ製品JH-WB1821 と BCGシャープ共同開発品JH-WB182E の違いについて 1 2023/05/06 20:06
- その他(社会科学) 状況を表す言葉が知りたいです 1 2022/04/26 17:24
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- その他(暮らし・生活・行事) ルール違反 6 2022/05/27 16:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
【vba】フォームに書いてあ...
-
グラフのX,Y座標を取得したい
-
VBA モジュールで共通に使う変...
-
Excel VBAで、ユーザーフォーム...
-
複数のフォーム間での変数宣言
-
ユーザー定義関数をEXCELに常駐...
-
Excelで時刻になったら知らせて...
-
エクセルVBA クラスモジュール...
-
モジュールとは何ですか
-
Excel VBA 定義されたプロージ...
-
モジュールからフォームのボタ...
-
VB2005ーDataGridViewの選択さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
モジュールとは何ですか
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォーム...
-
Form間の値の渡し方
-
モジュールとクラスの違いって...
-
Access VBA標準モジュールにつ...
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
おすすめ情報