「演習で身につくソフトウェア設計入門 構造化分析設計法とUML 第2版」感想とまとめ

ソフトウェア設計
項目評価
オススメ度3.0 – DFDを知ることができた
内容がためになるか3.0 – UMLの初級本
読みやすさ3.0 – 数時間もあれば読める
面白さ2.0 – 元々知っている内容だった
人気度Amazonでは割と高評価
対象レベル初級者。UML初学者

本書について

タイトル:演習で身につくソフトウェア設計入門―構造化分析設計法とUML
発売日:2016年4月
ページ数:151ページ
著者:井上 克郎 教授(ソフトウェア工学)

概要

本書は,プログラミングに初めて携わる学生や社会人を対象に,「構造化分析設計法」と「UML」という2種類の方法を用いて,ソフトウェアの設計法を解説している。全11章すべてに設けられている演習問題は,詳細な解答・解説によって,読者の理解を定着させる。重要なプログラミング用語を簡潔な言葉で要説したコラムも充実。
好評ロングセラーにつき、装丁一新!

ソフトウェア工学の教授が書いた、UMLの初級本。UMLとしては、クラス図、オブジェクト図、ユースケース図、シーケンス図、コラボレーション図、状態図、アクティビティ図、コンポーネント図、配置図と幅広く紹介されている。更に構造化分析設計法として、コンテキストダイアグラムやデータフローダイアグラム(DFD)が紹介されている。本書の特徴は、章ごとに演習問題がついており、その解答が充実している点にある。約20%が演習の解説。

感想

恐らく、大学の初年度程度の授業で使われることが想定されている本。151ページ程とかなり薄く、文字も大きく図も豊富なので、パラパラとテンポよく読み進めることができた。数時間もあれば読めると思う。演習が豊富なため、初学者や学生には良い本と思う。

普段使わないUML図の説明もあったので、概要を知るには良かったと思う。これだけだと、UMLの理解もまだまだ浅いと思うので、やはりMartin FowlerのUML モデリングのエッセンス 第3版等も読むのが良いだろうとは思う。

昨今では、オブジェクト指向や関数型が一般的になっており、構造化分析について書かれた本はかなり少なくなっていると思われるが、C言語を使うような組込みソフトウェア界隈では構造化分析は使える部分は使えると思う(組込みでも規模が大きいものは、オブジェクト指向で作るべきと思うが)。特にDFDは、データの流れを整理するのには使えると思う。

DFDに関して、現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法で有名な増田さんが以下をつぶやいていた。やはり、DFDは使える部分はそれなりにあるのだろう。

DFD(データフローダイアグラム)はマイクロサービスの設計図に見える。
ローカルなデータストアをそのままローカルなデータベースとし、フローを非同期メッセージングで実現すれば、まさにマイクロサービスアーキテクチャ。
複製されたデータストアは別のデータベースのテーブに複製する。

— 増田 亨. (@masuda220) July 22, 2021

DFDをどの粒度まで詳細化するかも、マイクロサービスをどの粒度で実装するかと直接的に対応しそう。
DFDではなくマイクロサービスアーキテクチャ図とか呼ぶと流行るかもしれないw

— 増田 亨. (@masuda220) July 22, 2021

その他、DFDに関して役に立ちそうなツイートがあったので貼っておく。東大の暦本先生のDFDは見やすいと思う。

構造化分析手法の流れでデータフローダイアグラムDFDの料理レシピやってました🤗(1985) https://t.co/POZRgNcqSq pic.twitter.com/VsLVkxiBzS

— Jun Rekimoto : 暦本純一 (@rkmt) October 12, 2022

Data Flow Diagram。はじめて見たけれどとても使いやすそう。
入力と外部データから出力がどう生成されるかがたいてい重要なのに、UMLのシーケンス図やアクティビティ図は制御フローに主眼があるのでやたらと線があるのに情報量が少なくなりがち。DFDならデータ変換の流れに集中できそう。 pic.twitter.com/SWMVbQUvBL

— uharaqo (@uharaqo_jp) April 15, 2021

目次

1章 ソフトウェアの設計とは
1.1 プログラミングと設計
1.2 ソフトウェアの設計の位置づけ
1.3 設計の視点
演習課題

2章 構造化分析設計法
2.1 構造化分析設計法の概略
2.2 コンテキストダイアグラムの作成
2.3 データフローダイアグラムの作成
2.4 構造図の作成
2.5 設計図のチェック
演習課題

3章 UML記述
3.1 UMLとは
3.2 UMLと開発プロセス
演習課題

4章 クラス図とオブジェクト図
4.1 クラスとオブジェクト
4.2 クラスの抽出
4.3 関連の表記
4.4 多重度
4.5 汎化
4.6 集約
演習課題

5章 ユースケース図
5.1 アクターとユースケース
5.2 シナリオとイベントフロー
演習課題

6章 シーケンス図とコラボレーション図
6.1 シーケンス図
6.2 コラボレーション図
演習課題

7章 状態図とアクティビティ図
7.1 状態とその遷移の表記
7.2 状態の階層化と並行化
7.3 アクティビティ図
演習課題

8章 コンポーネント図と配置図
8.1 コンポーネント図
8.2 配置図
演習課題

9章 UMLを用いた開発プロセス
演習課題

10章 設計のレビュー
演習課題

11章 UMLの記述からプログラムへの変換と設計支援ツール
11.1 クラス図
11.2 シーケンス図と状態図
11.3 他の設計支援機能
演習課題

コメント

タイトルとURLをコピーしました