【オブジェクト指向でなぜ作るのか】8章〜12章、補章のまとめ

8章から12章、補章のまとめ

簡単にまとめを記載していきます。

オブジェクト思考に関わる設計技法や開発手法について

記載されています。(UML、アジャイル開発など)

 

システム構築に対して、

オブジェクト指向をどのように適応するのか。

※章立ての題名はカネコチの解釈でつけているため、本の内容と違う場合があります。

 

8章 UMLは形のないソフトウェアを見る道具

Unified Modeling Language:統一モデリング言語

オブジェクト指向で作成されたシステムを図を用いて、

見える化するのがUMLです。

大事なポイントとして、

これを作ることを目的としてはいけないという点です。

UMLは手段であって、目的ではないことを忘れないようにしたいですね。

 

本書では、下記が説明されています。

  1. クラス図
  2. シーケンス図
  3. コミュニケーション図
  4. ユースケース図
  5. アクティビティ図
  6. ステートマシン図

シーケンス図、ユースケース図、アクティビティ図は業務の中で、

使用したことがあり、有用であると思います。

 

それぞの説明ざっくり。

クラス図

オブジェクトの構造を見える化する。

クラスの関係性や内包するメソッドを図で表現することで、

解りやすくする。

補足:図の表現方法も工夫できる。ベン図、オブジェクト図、多重度。

シーケンス図

物事の相互関係を順序立てて図にする。

その為、上から下に流れるように記述する。

補足:プログラムの動きを表現する。ステークホルダー別の役割や動きを表現する。

コミュニケーション図

ステークホルダーの役割をオブジェクト、動きを矢印で表す。

補足:現実世界の動きを図に表したい時に利用する。

ユースケース図

現実世界の役割とシステムが実行する役割を明確にする。

補足:わかりやすい。お客様に説明する際も利用できる。

アクティビティ図

現実世界の業務の流れを表現する時に使われやすい。

補足:フローチャートに縦軸(ステークホルダー)を追加した感じ。

ステートマシン図

状態変化を表現する図。

補足:状態遷移図と同義である。

 

9章 現実世界をソフトウェアに落とし込む方法

本章はUMLを実際の開発工程の中でどう使っていくのか、

どういう効果があるのかを例を用いて説明しています。

「業務分析」「要件定義」「設計」これらの各工程でどう使うのかを説明しています。

※この章は本を読んでください。

 

10章 ソフトウェア作るときのコツ

「実行効率」よりも「保守性」「再利用性」を重視する。

「実行効率」はハードウェアの性能により解決できる。

「保守性」「再利用性」はそうはいかない。

感想です。

レガシーな現場のコードは、

「実行効率」を意識した時代の名残が多い気がする。(変数名省略してたりとか)

現場の実践で勉強するよりも本などで、勉強することは大事。

 

コツは3つ。

1.重複を削除する

継承やポリモーフィズムの活用。

コピー&ペーストプログラムを無くす。

2.部品の独立性を高める

凝集度を強めて、結合度を弱める。

一言で表現できる名前をつける。

隠す。(カプセル化)

小さく作る。

3.依存関係を循環させない

循環させると影響範囲が広くなる。

 

11章 開発手法も大事

作業項目、作成手順、メンバーの役割、成果物などを定義している。

ウォーターフォール

後戻りが発生すると大変。

アジャイル

オブジェクト思考から生まれた。

開発工程を繰り返すため、変更の反映がしやすい。

 

アジャイル開発での代表的な製造方法

テスト駆動開発

テスト用のプログラムを作り、

それを元にシステムを作成する。

リファクタリング

一度動くプログラムを作り、綺麗にする。

継続インテグレーション

コンパイル、ビルド、単体テストを定常的に繰り返し自動で行う。

 

12章 オブジェクト指向を楽しもう

この章は題名の通りでした。

 

補章 関数型言語

変数を変更できなくし、式と値で表現する?

クラスという概念はない。

関数同士を組み合わせて、実現したい機能を作成する?

 

あまり理解できていない。

関数型言語の本を読みたい。

 

まとめというか感想

UMLについてあまり勉強したことはなかったので、

理解がより深まった。

何の為、どうして作られたといった、

本質の部分を知れた気がする。

また、使い方についてもざっくりわかった。

 

実際にどう使うかやさらに理解を深める為に、

同様の本を読んでみたいと思った。

Licensed under CC BY-NC-SA 4.0
Last updated on Jun 20, 2022 07:54 UTC
Built with Hugo
Theme Stack designed by Jimmy