システム開発においては、ソフトウェアアーキテクチャの存在がその品質を大きく左右する。それは異論のないところだろう。しかし、実際にこれを表現するとなると大きな壁を感じる企業も多いのではないだろうか。実は、そこには企業が取るべきナレッジマネジメント戦略があった。カナダ ブリテッィシュ・コロンビア大学のソフトウェア工学で教鞭をとり、かつてはIBM Rationalでラショナル統一プロセスの開発責任者としても名を馳せたフィリップ・クルーシュテン教授を招いて開催されたUMTPモデリング技術セミナーの模様をお届けする。
※UMTP(UMLモデリング推進協議会):UML技術者認定試験やモデリング技術の研究や普及を推進するNPO
ソフトウェアアーキテクチャとは何か
ソフトウェアアーキテクチャは、高品質のソフトウェアシステムを開発する上で、重要な基盤となるものである。しかし、その定義はIT専門家の間でもまちまちで、私の友人がソフトウェアアーキテクチャの定義を書き込むための掲示板を用意したところ、50~60もの定義が集まったという。
その中でも、私が最も気に入っているのはRational Software社にいた時代に仲間と作ったものだ。ソフトウェアアーキテクチャというのは重要な設計判断のセットで、大きく2つのパートから成っている。ひとつは、構造をどのように構成するかというもの。通常、この構造はインタフェースを有し、ソフトウェア同士、ボトムアップアプローチやトップダウンアプローチでつながることで、大きなサブシステムを構成していく。もうひとつは、ふるまいをどう構成するかを規定するものだ。
また、ソフトウェアアーキテクチャはスタイルを持ち、その使用法、機能、パフォーマンス、可用性、信頼性、拡張性、上位互換性、再利用性、統一性などに加えて、コストと技術的な制約、審美性なども考慮したものでなければならない。
そのためにナレッジの資産化が必要
では、そのようなソフトウェアアーキテクチャをどのように実現するか。構築に必要なナレッジは、暗黙知のままとどまっているものが多いため、表現にはそれなりの努力が必要だ。
ナレッジが資産であるとはよくいわれることであるが、それならば、それをきちんと資本化するための手段を持つべきだろう。ナレッジを創造し、配り、共有し、これらを共通理解基盤とするというサイクルを確立するのである。
暗黙知の形式知化を説明するモデルとしてよく知られたものに、野中郁次郎と竹内弘高が提唱したSECIモデルがある。このモデルによれば、個人の暗黙知(tacit knowledge)は話し合われることで外部化し、文書に整理されることで形式知(explicit knowledge)となり、それら形式知と形式知の組み合わせが、ふたたび個人の新しい暗黙知となる。
オランダのDe BoerとFarenhorstは、ここに一般知(generic knowledge)と特定知(specific knowledge)という概念を加え、4象限から成る図を考案したが、ITの文脈でナレッジをマッピングすると図1のようになる。
企業のIT部門が常日頃行っているナレッジサイクルには、「フレームワークやIEEE標準、パターンなどの一般知を特定知に適用すること」、その逆に「特定知で得たナレッジを再利用のために抽象化して一般知とすること」「プロジェクトを経験するごとに要求仕様定義や設計判断といったものを洗練させていくこと」「特定知の抽象化により得たパターンや標準といったものを見直しを成熟化させること」などがそれにあたる。
これまで企業では、明示的なナレッジマネジメント戦略として、情報の集積化やパーソナリゼーションを進めてきた。前者は大きなリポジトリに個人の持っている暗黙知を保管し、いつでも取り出せるようにしようというもの。個人はリポジトリ充実のために貢献を求められることになる。どちらかというと官僚主義的でうまく機能しないことが多い。
一方、後者は誰が何を知っているかを記述したイエローページを持つイメージだ。情報の集積化では形式知に重みがおかれるのに対して、パーソナライゼーションは暗黙知を認めつつ、それをマネジメントに生かすという点に特徴がある。