【第5回】アルゴリズムの王

システムエンジニアはシステムを設計するのが仕事である。
その役割は、プログラム仕様書作成から始まって、画面設計、帳票設計、データベース設計、サブシステム設計、要件定義、業務コンサルへと仕事の役割が発展していく。その初級SE(詳細設計SE)の一番重要な役割が、基本設計書をもとにプログラム一本一本のプログラム仕様書(SPEC)を作成することである。

SEはまず、アルゴリズムの王でなければならない。
あらゆるアルゴリズムを「単純処理」と「反復」と「分岐」に分解してプログラマーに提示できなければならない。
これができなければシステムエンジニアの道には入れない。
最近、なんちゃってSEが巷で増殖しているのは、この設計の基本中の基本である「アルゴリズムを自由自在に設計する能力」が完成しないうちに上流工程の仕事に入ってしまうからなのである。ちなみに、UMLの中には純粋にプログラムのアルゴリズムを支配するドキュメントが完備されていない。
もちろん、デマルコのデータフローダイアグラム(DFD)でもアルゴリズムは表現することはできない。
歴史的にコンピュータのプログラムのアルゴリズムを記述したドキュメントは、フローチャート、HIPO、NSチャート、構造図、PAD、などである。こ の中でもモジュールのアルゴリズムをシーケンスにではなくレベルごとに記述できるように作られた、構造図、PAD は優れたドキュメントであった。
実はオブジェクト指向の設計で必要なモジュール化の基礎も、この構造図を作成する訓練の中に入っているのである。
紙(プログラム仕様書)だけで自由自在にプログラマを操れるようになったとき、SEはアルゴリズムの王となる。

はっきり言うと、構造図をきちんと書けないSEはまだプログラマーからエンジニアに昇格したとはいえない。
エンジニアの条件は設計ができることで、最低アルゴリズムの設計もできないようではシステムエンジニアとはいえないのである。
ところが、なんちゃっての腕前でもドキュメントを100枚くらい書けばなんとなく仕事をしたように見えるので、そのことが設計不在の悲劇の温床になっているのだ(これは素人同士では判別不能であるが)。

まずは自分の考えているアルゴリズムをきちんと「単純処理」と「反復」と「分岐」の要素に落とし込める技術力が必要である。
これがすべてのシステム設計の基本となる。

どんな複雑なアルゴリズムでも構造図に落とし込めるようになったとき、SEはアルゴリズムの王となる。

複雑な事象を単純な要素の組み合わせに分解するという設計の基礎がここで完成するのである。
プログラム仕様書を馬鹿にしてはいけない。実際にきちんとアルゴリズムを表現できるSEはほとんどいないのだから。すなわち皆、SEの名を騙ったプログラマなのである。
これは一種の詐欺である。職業人として恥ずべきことである。

オープンの混乱の時代、プログラマがSEを騙ろうとして「ドキュメント不要」「プロトタイプやスパイラルでシステムを作るべき」だと主張した。
失われた20年の始まりである。
日本のSE はこの過程でシーラカンスのような希少動物になってしまった(本物がいなくなってしまった)。
なんちゃってSE(本当はただのPG)がのし歩くようになったのだ。

善男善女のエンジニア予備軍の皆さん、ゆめゆめお忘れなく。
基礎を固めて地道に精進すべし。エンジニアは一日にして成らずである。