会社で購入してもらった「達人プログラマー」を読んでいます。これが評判通りなかなか勉強になりますので、
個人的な備忘録として残します。
内容はそこまで新鮮なものではないのですが、ソフトウェア開発で常識とされていることが、「何故」常識と言われているのかといた理由や説明がしっかりしているので、改めて理解する分に最適だと思います。
以下、達人プログラマーを読んだメモ&個人的見解です。
(興味がある節から読んでいるので、順不同です)
9. 可逆性
要点
- プロジェクト開始段階で「当たり前」だと思っていたことが、本当に当たり前とは限らない。顧客の都合や開発工程の都合等により、「当たり前」が容易に覆ることがある。
なので、「当たり前」を前提にした設計/実装をしてはならない。- 例えば、開発当初は DB に MySQL を使用する予定だったのが、社内の決定でオラクルの仕様を強制されることもあるかもしれない。開発当初はクライアントサーバ型だったのに、顧客の都合でスタンドアロン型に変更を余儀なくされるかもしれない。
- そのために、柔軟なアーキテクチャを採用する必要がある。
- CORBA や REST 、 MVC などのアーキテクチャを採用し、言語やプラットフォームの変更容易性を実現すべし
- 抽象インターフェイスを使用して、サードパーティー製品や技術的なことがらを隠蔽すべし
解説および個人的な見解
どうも「可逆性」という言葉はしっくりきませんが、上記の例で言うと、DB に MySQL → オラクルとなったとしても、オラクル→ MySQL になったとしても、どちらでも対応できるようにしましょうということでしょうか。
柔軟なアーキテクチャとは?
ここで言う「柔軟なアーキテクチャ」とは、つまりは エリックエヴァンスのドメイン駆動設計で紹介されている、「レイヤー化アーキテクチャ」を採用しましょうということだと思います。
例えばインフラ層にデータ永続化の技術的なことを隠蔽(いわゆるリポジトリーパターン)して実装すれば、データベースベンダーの選択し直しといった「変更」に対しても割と柔軟に対応できます。
コメント