今日のソフトウェアシステムは大量のコードで構成されており、通常は独自のソフトウェアとサードパーティのソフトウェアが混在しています。
コードの量は人間の脳にとって管理できるかどうかの課題であり、私たちが扱うには情報が多すぎます。
システムを効率的に開発、テスト、保守するためのツールが必要です。
システムのモジュール化はそのようなメソッドツールであり、ソフトウェアの世界ではモジュラープログラミングとして一般に知られています。モジュール化は、システムをモジュールと呼ばれる明確に定義された小さな部分に分解します。モジュールのサイズは人間が管理できるようにします。また、プログラマーだけでなく、組織にとって他にも多くのメリットがあります。ソフトウェアシステムのモジュール性を高めると、時間の経過とともにモジュラーシステムのアジャイル性、フレキシビリティと効率化が加速されます。
この記事では、ソフトウェアモジュールとは何か、およびソフトウェア用のモジュラーシステムの利点について説明します。
ソフトウェアでは、モジュールという用語には、コンポーネントという用語と同じように、さまざまな定義があります。それは多くの異なる定義を持つ用語ですが、説明には共通点があります。これらの説明のいくつかを見てみましょう。
まず最初に、このように表現されている資料があります:
モジュールは、さまざまなシステムで(再)使用するために独立して作成および保守できるコードの一部です。
そして、ウィキペディアでは、モジュールを次のように記述しています:
「モジュラープログラミングは、プログラムの機能を独立した交換可能なモジュールに分離することを強調するソフトウェア設計手法です…」
これらに共通して表現されているポイントは何でしょうか?
モジュールは、他のモジュールに影響を与えることなく、またはほとんど影響を与えずにモジュールを開発および保守できるという意味で、他のモジュールから独立している必要があります。プログラムの実行時に、モジュールが他のモジュールに依存していないことを意味するものではありません。
これは、生産性の向上に役立つため、ソフトウェアモジュールの重要な側面です。独立したモジュールにより、コードを作成、保守、およびテストするときに、エンジニアリングチームが互いにより独立したものになります。
モジュールはさまざまなシステムで再利用でき、システム内でも互換性(交換可能)があります。モジュールを変更せずにさまざまなシステムや製品で再利用できることは非常に有益であり、市場投入までの時間を短縮するのに役立ちます。
交換可能とは、システムの他の部分に影響を与えることなくモジュールを交換できることを意味します。これは、新機能やバグ修正のため、システムをアップグレードする際の重要なプロパティです。変更を1つまたはいくつかのモジュールに制限できる場合は、変更の実装とテストに必要な時間が短縮されます。システムの影響を受ける部分に関して、より頻繁でより小さなリリースは、アジャイル性を可能にします。リリースが小さいということは、新機能をリリースする際のリスクが少ないことも意味します。
モジュールは、より大きなシステムの一部です。上記の最初の説明はコードの観点から分解を定義し、2番目の説明は機能の観点から分解を定義します。この分解の定義とは類似点の観点からでしょうか、それとも相違点でしょうか?
-両方とも言えます。これは、システムをより小さな部分に分解することですが、次のようになります。
ソフトウェアモジュールを独立させ、再利用可能にし、交換可能にするにはどうすればよいですか?
ソフトウェアモジュールには、チームが独立して作業できるようにする重要なプロパティがいくつかあり、ソフトウェアモジュールを多くのシステムで再利用可能にし、交換可能にします。
モジュール…
次の図を使って説明しましょう。
モジュールB1は、モジュールAへのインターフェースBを提供し、2つのインターフェースCとDが必要です。パフォーマンスが向上した新しいモジュールB2があるとします。モジュールB2が同じインターフェースを提供し、B1と同じインターフェースを必要とする場合、それはB1と交換可能です。
同じインターフェースを提供および必要とする2つのソフトウェアモジュールは交換可能です
提供された必要なインターフェースを定義するモジュールは、他のシステムで再利用可能になります。たとえば、モジュールB1は、必要なインターフェースが提供されている限り、別のシステム提供された必要なインターフェースを定義するモジュールは、他のシステムで再利用可能になります。たとえば、モジュールB1は、必要なインターフェースが提供されている限り、別のシステムで再利用できます。
UMLコンポーネント図を使用して、提供された必要なインターフェースを備えたモジュールを文書化できます。
ソフトウェアモジュールを形成する上で見過ごされがちな側面は、企業戦略に従っているか、です。上記のプロパティを使用してモジュールを作成する場合、通常は特定の意図を念頭に置いており、これは明示的である必要があります。意図は、次のような戦略的な質問に答えることによって表現されます。
ソフトウェアアーキテクチャはコーダーによって簡単に回避されたり誤解されたりする可能性があるため、繰り返し戻って、特定の機能がモジュールにグループ化された理由を確認することが重要です。このため、モジュールの戦略的意図を述べて文書化することが重要であると考えています。定義されたモジュール戦略は、何かをモジュールと呼ぶための基準と見なすことさえできます。モジュール戦略が定義されたソフトウェアモジュールは、戦略的ソフトウェアモジュールです。
同僚のブログ投稿「優れたモジュラーシステムは何をもたらすのか」で、モジュラーシステムは広い範囲で柔軟であり、長期間使用できる必要があると説明しています。戦略的なソフトウェアモジュールを作成することで、寿命が長くなる可能性が高くなります。堅牢性は人に依存しなくなります。
戦略的ソフトウェアモジュールの文書化は、従来のソフトウェア文書化とは異なります。戦略的ソフトウェアモジュールは、機能をカプセル化し、インターフェースを定義し、戦略によって推進される必要があります。これは、簡単に伝達、議論、説明できる方法で文書化する必要があるものです。これを行う1つの方法は、ドキュメント管理システムに保存されている1ページの戦略的ソフトウェアモジュール仕様を作成することです。これらの側面を文書化するもう1つの柔軟な方法は、wikiです。
効率的でフレキシビリティ、アジャイル性を実現するには、大規模で複雑なシステムをより小さなパーツまたはモジュールに分解する必要があります。独立したモジュールにより、開発チームの自律性が高まり、効率が向上し、市場投入までの時間が短縮されます。モジュールはさまざまな製品で再利用可能であり、モジュール化された製品ポートフォリオを持つ企業は、一般的な再利用可能なモジュールの組み合わせから製品を構築します。
ソフトウェアモジュールの戦略的意図を定義することにより、戦略的ソフトウェアモジュールを作成します。これは、モジュールが形成された理由が文書化されているため、変更に対してより回復力があります。
カプセル化、インターフェース、戦略の3つの単純な属性しかないモジュールが非常に多くの価値を提供できることは魅力的です。 以下の戦略的ソフトウェアモジュール仕様を文書化するためのPowerPointテンプレートをダウンロードしてください。
+46 8 456 35 00
karl.brategren@modularmanagement.com