ソフトウエア設計とは2024/01/25 22:21

ソフトウエアコンポーネント間の依存関係を管理する技(技術)である。依存関係を最小化し、必要な抽象化を導入し妥協点を見いだすことを目的とする。

と、ある書籍(C++ソフトウエア設計)にありました。

依存関係を管理するとは、複数のモジュール(原作者が自分とは限らない)を適切に活用するための技のことであり、これが依存関係こそがソフトウエア開発の鍵である。

雲のつたない経験でも、複数のモジュール(作者は自分)を適切に活用することの難しさは実感します。大体の場合、適切に依存関係を管理すると言うより、依存関係を再定義する(つまり、利用しようとしているモジュールを変更して適用する)ということが多いです。

これは、早い話、様々なプロジェクトに共通して利用可能なモジュールを開発するスキルが雲に欠けている(というか、無い)ということであり、言葉を換えれば、そのような共通モジュールを作ることの難しさの裏返しだと思います。