標準化とは何か
標準化とは、システム開発の手順を規定することである。システム開発は、その経験によって成果物の品質に差が生じる。これはシステム開発に限った話ではなく、個人に蓄積されたノウハウによって作業内容が大きく異なっていく。これらの、個人間での成果物の差を無くし、誰が業務を担当しても一定の品質で成果をあげることを狙いとして、開発標準を整備する。標準化はシステム開発が本格化する前に行っておく必要がある。本格化する前とは、設計や製造、テストによって作成する文書や成果物を作る前の段階である。
標準化するターゲット
標準化するターゲットは、システム開発に存在する業務の全てである。例えば製造フェーズであれば、コーディング規約、プログラムや関数の命名規則、レビュー記録表、などがあげられる。これらを開発標準として、ある程度のルールに従った開発を行うことが出来る。標準類の代表例を次に示す。
- レビュー記録表
- コーディング規約
- 命名規則
- 設計書フォーマット
- 開発ワークフロー
上記の中でも特に、開発ワークフローに注目が高まっている。開発ワークフローは、開発の業務プロセスそのものを規定し、業務に対するインプットとアウトプットを明確化する。さらに、レビューなどの指摘に対応するために、どこの業務まで戻るのか、何をもって業務を完了とするのかをこと細かく、徹底的に取り決める。担当者はそれらのワークフローに従い開発を進め、各開発フェーズの各業務において何をすべきかを知ることが出来る。
標準化の重要性
開発標準に沿って開発が進められるため、その標準が開発にマッチしていなかったり、標準そのものに矛盾があってはならない。例えば、レビュー記録表に記載できる項目がバグの指摘だけの場合、レビュー内容で指摘された内容がバグでなかったものは記載できないことになる。あるいは、1回分のレビューのみしか記載できないなど、再レビューの可能性が考慮されていない標準類は、開発担当者を大いに混乱させる原因となる。 一方で、一字一句を開発標準と同様に記載しなければならない、という標準も問題である。これは明らかに開発者の業務を妨害することになり、作業効率は一気に低下する。例えば、コーディング規約などにはある程度の自由度を持たせるべきである。プログラムの最上位モジュールに関しては、ある程度コーディング規約に沿ってコーディングしてもらうことが必要だが、外部呼出しされない、閉じた世界での関数やメソッドに対しては、プログラマのやりやすい書き方で実装させるべきである。外部呼出しされない関数やメソッドに規約を導入しても、メリットよりデメリットのほうが大きい。 上記のことから、標準化作業こそ、システム開発に深く精通している者が担当するべきである。システム開発を円滑で高品質に進めるためには、現場でどのような意思決定が働き、どのような状況が発生しうるかを想定して標準化を行わなければならない。
開発標準の市場
開発標準は、大手IT企業のノウハウを集約した形で今や商品化されている。例えば富士通やNEC、IBM、野村総合研究所などが発表している。これらの開発標準は、プログラムジェネレータもパッケージの中に組み込んだ形のものもあり、製造ですらボタン一つでコードを生成することができるようになってきている。 今後も開発標準はどんどん進化していき、システム開発へ投じるコストも削減の一途を辿ることになるだろう。無論、これはビジネスとして当然の結果でもあり、ムダを排除しようとする基本的な発想が、こうしたビジネスチャンスを生んでいる。コードジェネレータのみならず、いつかはシステムインテグレータというソフトウェアが開発されるのではないだろうか。IT構築の利便性が向上する一方で、ITエンジニアの活躍の場が減少するという、極めて自然で衝撃的な結末に向かおうとしている。