僕は普段はSEとして働いています。メインの言語はpythonです。
今まで設計関係の本では”実践Python 3″, “Effective Python”, “リファクタリング”を読んでいました。
最近は要件定義、基本設計、詳細設計について知識を深めようと思いいくつか本を購入したので簡単に紹介します。
1冊目) はじめての上流工程をやり抜くための本
1冊目は上流工程の本です。
“経営戦略の策定”→”システム化企画”→”要件定義”→”基本設計”→”詳細設計”→”プログラミング/単体テスト”という工程があり、上流工程は”システム化企画”〜”基本設計”までのことです。
“システム化企画”、”要件定義”を重点的に解説していました。ストーリーがあり客先とのやり取りのイメージしやすかったです。
僕は客先常駐SEとして働いているので上流工程に携わることは今のところありません。しかし、上流工程の業務を理解しておくと、システム開発をより俯瞰して見ることができ設計にも良い影響を与えそうだなと思いました。
“基本設計”は概念図の様な図が出てきますが、クラス設計などのプログラミングに関する話は出てきません。
2冊目)初めての設計をやり抜くための本
2冊目は設計に関する本です。
設計と言っても、”外部設計”、”内部設計”、”データベース設計”、”画面設計”、”システム設計”など様々な設計があります。”外部設計”と”内部設計”、”基本設計”と”詳細設計”など意味は同じだが、違う言葉で表現されている場合もあります。
“外部設計”と”内部設計”の違いも知りませんでした。個人的には企業によって言葉の定義付けがされていて一般論はないだろうとも思ってました。
この本は僕が漠然と描いていた設計のイメージを具体的にしてくれました。
3冊目)現場で役立つシステム設計の原則
3冊目はシステム設計に関する本です。2冊目とは違いシステムの設計に特化した設計本です。
タイトルからは分からないですが、中身はドメイン駆動設計に関する内容になっています。本書の中で”エリック・エヴァンスのドメイン駆動設計ソフトウェアの関心にある複雑さに立ち向かう”の紹介がされており、それを参考に書かれた感じです。
ドメイン駆動設計の本は初めてでしたが、非常に勉強になりました。
「クラス使ってるし、デザインパターンも活用してるけどだんだんメソッドが肥大化して行って、if文の階層も深くなって開発しづらい!もっと開発しやすい設計ってないのか?」
とモヤモヤしていた悩みに答えてくれる様な設計方法でした。
「ドメイン駆動設計を知らずして設計ができるとは言えないかも」
と思ったほどでした。他のドメイン駆動設計に関する本も読んでより理解を深めて使える様にしたいと思っています。