【システム開発】【R&D】プログラムのモジュール化


プログラムソースコードを構築していくにあたり、ファイル分割を行う事が多くあります。

これは「プログラムに多様性を持たせる」、「部品化して処理の内容を把握しやすくする」、「プログラム・リユース」などの特徴がある事で知られていますが、このモジュールたちをどういう単位で分けるかなどの設計はとても難しく、一般的にこうあるべきなどと定義が出来ない部分であるように思います。

システム開発の実際のプログラムコーディングの部分においては、何が重要視されるべきなのか。

それを考察していきます。


ファイル分割を行うとは、つまり管理するべきファイルが増えるという負のイメージが直感的に出てくると思うのですが(違いますか?)、これに関して一つのファイルに全てのプログラムを書き込む事を考えてみます。

ファイルサイズが数メガバイトになるとテキストエディタなどでファイルを開る事が出来なくなり、開けたとしても該当のプログラムを検索機能で毎回探す羽目になる事は容易に想像出来ます。

それを回避する手段として、適当な箇所で区切ったファイルを複数個持つ事によるファイル分割があります。

以上の事からプログラムソースファイルはある程度分割したものを管理する事が推されます。
しかし、それらのファイルはどこで分割するべきなのでしょうか。

「プロジェクトによって異なるから臨機応変に分割せよ」というのはセオリーレスポンスなのでしょうが、私がこの記事を書いたのはそんな事を言いたいためではありません。
ここではある程度、ファイル分割すべき箇所を具現化していこうと思います。

 

注目すべき点としては、プログラムの細分化です。

プログラムの細分化というのは、簡単に言うと製品を分解して部品にしようと言う事です。

 

何も考えずにただただ分割していくと、構造が分からなくなった壊れた部品になってしまうかもしれません。これはダメですね。

つまり、意味が分かるように分割する必要があるという事です。

部品になっても何の部品であるか意味が分かる状態でなければいけません。

解決する方法としては、段階的な分割をする事です。

しかしながら最終的には大量のモジュールが生成されてしまう事かと思います。

一般的に取られている方法としては、ファイル名や関数名、クラス名などを区分毎に切り分ける方法です。
これは処理の大分類である名称を頭に付ける事やIDを振る事などがありますが、これでは結局名称を覚えておく必要があるため恒久的な解決策になっているわけではありません。

これを解決するために明確な解決手段が欲しいところですが、実はこれで今悩んでいます。

ヒントとしては、モジュール部品が他のシステム開発などで再利用できるかどうかという所にあるのではないかと思いますが、これもファイルの増殖を促す点を持っているという意味では解決手段としては微妙です。

 

モジュール化をする上でキーとなる事は上記でも言った通り、意味が分かるように分割する必要があります。

つまり元のプログラムが分からなくなってしまってはダメなのです。

 

それを解決するにはモジュール化は全部するのではなく、部分的にASSY(部品の集合体)として残しておかなければいけません。

 

言い換えて考えます。

これ以上プログラムを分割すると本プログラムとして組み合わせる時に、元のシステムではない別のシステムが出来上がってしまう可能性がある状態

これはもうモジュールとして分割すべきではないでしょう。

分解した部品は意味が一意でなければなりません。複数の意味を持つ部品が出来上がってしまうとダメです。

 

結局のところ、モジュール化は意味もなく適当に分けるのではなく、モジュール単体でも機能として成り立つものかどうかその理念を維持する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください