設計のアプローチ

最近書いてないので、システムチックなことも書く。

『システム設計』について、エンジニアがどのようなアプローチでやってるかはあまり知られていない。 基本設計と詳細設計のアプローチは、ウォーターフォールとプロトタイプぐらい違ったりする。 知らない人は、あることが決まらないと次に進まないと思っているけど、実は外堀から埋めることもすごく重要。 基本設計については特に。

一応ここでの定義を書いておく

基本設計:画面設計、DB設計 詳細設計:IN/OUT、フロー、ロジック設計

※この定義は、手法によって色々違う。あくまでここで書く上での定義。

経験が浅いエンジニアは、まずは詳細設計から覚える。 これは、Webの場合、画面から落としていくアプローチが一番早い。 分かりやすい。 いわゆる単体レベル。

経験を積んでくると、基本設計が出来るようになってくる。 これは、詳細設計より概念的なものになる。 全体的なER図(概念データモデルとか言ったりするかな)、各システム(画面や外部システム)との連携を考えたり。 ウォーターフォールモデルだと、データからのアプローチになる。

プロトタイプやアジャイル開発だと、データアプローチでない事が多くなる。 データアプローチからやると構造化され、オブジェクト指向からはずれてしまうこともある。 オブジェクト指向の定義は、話がずれるので触れない。

基本設計は結構難しい。 具体的なもの(オブジェクト、画面)はあまりなく、概念的に考えていって形にしていく感じ。 ひらめきなんかも必要かも。 頭の中でシステムを組み上げて、時には部分部分を整理したりドキュメント化したり。 そうして、エンジニアの中で全体のシステムが出来上がる。 そこでやっと詳細設計が出来る。 単体(詳細)同士を全部つなげるのが、結合レベル。 これは、大きいシステムになればなるほどその傾向だと思う。 で、組み上がって業務フロー含めたシステムが、総合レベル。

と、文章で書いても、結構感覚的なものになってしまって分かりにくい。。 今度また出直そうwまた書く。

以下、余談。 基本設計を伝授出来ないからエンジニアが育たないんだと思う。。。 エンジニアとして基本設計が出来るか、スーパープログラマーになるか、 これが『35歳定年説』に実はひもづいてる気がする。 35歳ぐらいまでに出来ないと、ただのプログラマーで、体力で勝負出来る20代には負けてしまう。 それで、『35歳定年説』なんていう言葉が生まれたけど、 「35歳過ぎても全然いけるじゃん!」という声をよく聞くが、これは上記の事が自然と出来てしまっているエンジニアなんだと思う。