オブジェクト指向におけるモデル化と開発
オブジェクト指向で対象領域をモデル化するとき,次のように分けてモデル化する手法がある。
- 外部とのインタフェースを担当するオブジェクト
- データ管理を担当するオブジェクト
- 両者を接続するオブジェクト
ここでは,それらのモデル化手法とオブジェクト指向開発の手法であるユースケース駆動開発をとり上げる。
オブジェクト指向とは
オブジェクト指向について,その概念を理解するのは難しい。オブジェクト指向を扱っている文献を取り上げる。
バートランド・メイヤー『オブジェクト指向入門 第2版 原則・コンセプト』
オブジェクト指向は,ソフトウェアの品質向上を目的とする考え方の一種です。定義には諸説あり,たとえばバートランド・メイヤー氏の書籍『オブジェクト指向入門 第2版 原則・コンセプト』では「クラス,表明,総称性,継承,多相性,動的束縛から構成されるもの」とあります。
仙場 大也,『良いコード/悪いコードで学ぶ設計入門――保守しやすい 成長し続けるコードの書き方』,技術評論社,2022年5月12日
『オブジェクト指向 UI デザイン――使いやすいソフトウェアの原理』
なお,オブジェクト指向というときの「オブジェクト」を日本語に訳す場合,「物」や「対象」という言葉がよく使われます。しかしオブジェクト指向のコンセプトに照らせば,「客体」が適当だと思います。オブジェクト指向とは,システムをデザインする際に主体(近くする者)ではなく客体(知覚される物)をモデル化することに本質があるからです。
ソシオメディア株式会社,『オブジェクト指向 UI デザイン――使いやすいソフトウェアの原理』,技術評論社,2020年6月18日
オブジェクト指向設計における設計原則
開放・閉鎖原則
オブジェクト指向設計における設計原則のうち,開放・閉鎖原則とは,「モジュールは,拡張に対して開放されており,修正に対しては閉鎖されていなければならない」というものである。これは,モジュールの機能には追加や変更が可能であり,その影響が他のモジュールに及ばないようにするという設計原則を意味している。
単一責務の原則
クラスにもたせる役割は一つだけにするべきであり,複数の役割が存在する場合にはクラスを分割する。
インターフェース分離の原則
クラスを利用するクライアントごとに異なるメソッドが必要な場合は,インタフェースを分ける。
依存関係逆転の原則
上位のモジュールは,下位のモジュールに依存してはならない。
BCE モデル
BCE モデルは,オブジェクトを Boundary,Control,Entity の三種類に分ける手法である。
Boundary | 境界オブジェクト | 画面操作や画面表示などを担当するオブジェクト |
Control | 制御オブジェクト | 業務処理の実行を制御するオブジェクト |
Entity | 実体オブジェクト | データの実体を管理するオブジェクト |
例えば,商品の注文を行う処理で,注文画面は境界オブジェクト,注文に関わる一連の処理は制御オブジェクト,商品や在庫などの実体は実体オブジェクトに該当する。
オブジェクト指向分析における分析モデルによって,ユースケース内のオブジェクトを分類するとき,境界オブジェクトに該当するものはどれか。
平成27年度 秋期 システムアーキテクト 午後Ⅱ 試験 問3
- オブジェクト間の相互作用を制御するためのオブジェクト
- 画面操作や画面表示などの GUI オブジェクト
- システムの中核となるデータとその操作のオブジェクト
- データモデルにおけるエンティティに相当するオブジェクト
境界オブジェクトに該当するものは「画面操作や画面表示などの GUI オブジェクト」である。
MVC モデル
MVC モデルは,オブジェクトを Model,View,Controller の三種類に分ける手法である。
Model | データ処理や業務処理を担当するオブジェクト |
View | 画面操作や画面表示などを担当するオブジェクト |
Controller | 実体の制御を担当するオブジェクト |
ユースケース駆動開発
ユースケースとは,ユーザから見たひとまとまりの機能(要件)のことである。ユースケース駆動開発は,ユースケースの識別からシステム開発を開始し,ユースケースごとに設計,製造,テストを実施する開発手法である。
マイクロサービスアーキテクチャ
マイクロサービスアーキテクチャは,アプリケーションを「マイクロサービス(小さなサービス)の集合」と捉え,マイクロサービスを連携させることで一連の業務処理を実現する考え方である。マイクロサービスアーキテクチャに対し,従来型のアプリケーションをモノリシックアーキテクチャと呼ぶこともある。
マイクロサービスアーキテクチャの利点
- サービスが更新された場合でも,対応するマイクロサービスのみを置き換えるだけでよい
マイクロサービスアーキテクチャの欠点
- 各サービスが保有するデータの整合性を確保しにくい
- サービス連携のためのオーバヘッドが多くなる
更新履歴
- 2022年12月15日 『良いコード/悪いコードで学ぶ設計入門――保守しやすい 成長し続けるコードの書き方』の引用を追加
- 2023月2月5日 『オブジェクト指向 UI デザイン――使いやすいソフトウェアの原理』の引用を追加
- 2023年2月19日 「平成27年度 秋期 システムアーキテクト 午後Ⅱ 試験 問3」を追加
- 2023年4月7日 「オブジェクト指向設計における設計原則」を追加