事例の分析からソフトウェア開発プロセスにおいて、従来のWaterfall Modelではしばし ば工程間の連携が分割されることが確認されるとともに、そうした工程間の連携が確保さ れることがソフトウェア開発には重要であるということが明らかにされた。
本章では、前章で示された開発の現場で行われた作業プロセス間の連携や開発担当者の 知的活動とプロジェクトの成否との関係に関する分析を中心として、ソフトウェア開発プ ロジェクトの成否を左右する諸要因を考察する。また、ソフトウェア開発プロジェクトの 成否に影響を及ぼす諸要因が、なぜ、またどのようにそうした開発プロジェクトの有効性 の発揮の有無と関係しているのかについて、有効なソフトウェア開発プロセスが試行錯誤 を繰り返して問題発見、解決を図っていく知識労働を伴うものであること、さらにそれに 携わる技術者が創造的作業者としてプロジェクトに従事することが必要であることを知識 マネジメントの視点から論じる。
(1) 開発事例から明らかになった問題
前章の事例分析では、3 件のソフトウェア開発プロジェクトを対象に、ソフトウェアの 開発プロセスにおける分業関係の編成によってどのような問題が生じるのか、さらにそう した問題が開発プロジェクトの成否にいかに関係しているのかを明らかにした。事例分析 による発見事実は以下のように要約される。
① 事例1
事例1からは、工程間の分業で生じる問題のほか、頻繁な設計変更が発生する問題、そ して熟練技術者でもその工程間が分断されてしまうと連携が難しくなってしまう問題が明 らかにされた。事例1は同じ企業の中におけるメンバー間の分業を対象としたものであっ たが、もう1つの特徴として、新規開発のため日々変更していく仕様や設計に悩まされて いたという点がある。これまで述べられてきたように、ソフトウェア開発では要件定義工 程や設計工程で仕様が確定することは少なく、そのため曖昧なまま工程を進める過程で、
徐々に擦り合わせを行っていくという特徴がある。さらに、頻繁な仕様変更が発生するた め、そういった仕様や設計の変更に対応できることが求められる。
また、事例1では、長年システム開発を行ってきた高い専門性を持つ技術者がメンバー として採用されたが、そのメンバー間の連携が順調にいかなかった。ソフトウェア開発に 高い専門性が必要なことはすでに述べてきたが、ソフトウェアは技術者がチームを組んで 開発するため、そういった専門性の高い技術者が隣り合ったメンバーや工程の内容を理解 しなければ、その作業も順調にいかないといえる。特に、事例1は新規開発であったため、
仕様や設計を一から決めなければならない部分が多く、こうした作業における知識労働を
分割してしまったことで、工程間を通したイノベーションが困難になったことが考えられ る。
② 事例2
事例2からは、企業間の分業の難しさと上流工程で決められた要件や設計が必ずしも十 分ではないことが明らかにされた。事例2では、上流工程と下流工程で企業間の連携が行 われ、そこでは上流工程を担当した企業が作成した仕様や設計を元に、下流工程を担当し た企業がソフトウェアを作成する分業が行われていた。しかし、ソフトウェアの設計書に は、設計に関わる情報がすべて記載されているわけではなく、ソフトウェア開発に必要と なるものは満たしていても、それ以上の十分なものまでは書かれていない。また、そのよ うな設計書に書かれたものは、必ずしもプログラムとして実際に作成して動かしたもので はなく、稼働させてみて初めて分かるような多くの問題を抱えている。そのため、設計に 含まれた問題を見抜く力が必要となるのである。
さらに、事例2では、企業間の分業が行われているが、そこでの情報連携の難しさも浮 き彫りとなった。社内でのやり取りとは異なり、企業間でやり取りを行う場合、分業をど のように進めていくのか、リスクと成果をどのように分担するか、そして意思疎通や発生 する問題をどのように解決していくのかを決めなければならず(武石, 1999)、さまざまな 費用が発生することになる。
③ 事例3
事例3からは、設計工程とプログラム作成工程を交互に繰り返す試行錯誤の取り組みが その特徴として明らかにされた。ソフトウェア開発の過程で、設計工程に含まれていた不 備をプログラム作成工程の中で発見し、その問題を解決するとともに設計工程にフィード バックするという一連の作業を何度も繰り返し、品質を上げていった。このようなソフト ウェアの設計とプログラム作成の工程は、そこで生じる複雑な問題に対して試行錯誤を繰 り返し、解決を図っていくという点において、製造業の製品設計のようなものとして捉え ることができる(妹尾, 2001; Cusumano, 2004)。こうした複雑な問題を解決していくには、
専門化や細分化することが重要となるが、前章の事例で示されたように、特定の工程に対 する専門性だけでは不十分であり、専門性を持った技術者間や工程間のやりとりにソフト ウェア開発の難しさが存在するのである。
以上の発見事実を踏まえて、次節では、ソフトウェア産業の分業構造およびソフトウェ ア開発プロセスにおける知識労働の重要性、さらに情報技術を含む知識を使いこなして問 題解決に結びつけたり、設計変更に対応したりする組織能力について検討する。また、ソ フトウェアの設計の複雑さに対し、専門化と熟練、細分化がどのように影響するのか、そ
こに含まれる問題を発見し、その解決のための試行錯誤をいかに実現するかを検討すると ともに、開発に従事する作業者の問題解決能力の根幹に関わる経験やそれに基づく類推と いった知的活動の重要性について論じる。
(2) ソフトウェア開発の分業構造と問題解決
① 専門性の問題
前章の事例1では、長年システム開発を行ってきた高い専門性を持つ技術者がメンバー として採用された事例を検討した。
ソフトウェア産業では、製造業や建築業の上流・下流工程の分離と、それに影響された
Waterfall Modelのような工程の前戻りを許さないといった開発手法を援用してきたが、製
造業や建築業ではこの工程の分離により、上流工程と下流工程で設計技術者や製造技術者、
建築家や大工などの熟練、専門分化が進んできた。
ソフトウェア産業でも、工程を分離することにより、技術者をシステム分析・コンサル タント、設計者、コーダー、テスター、保守要員などの分業、専門化が進んでいった136。
こういった専門性について、守島(2002)は、人材マネジメントの観点から20世紀前半 を分業と専門化による大量生産の時代とし、そこでは熟練による効率性の達成のため、組 織は固定、かつ安定的に分業、専門化され、従業員も一つの職種に専門・固定化されたと している。そして、この専門化と固定化により、同じ専門知識や行動様式を身に付けたメ ンバーが、迅速、かつ確実に業務を遂行し、ヒエラルキー型のマネジメントがうまく機能 していたと説明している。
このような専門性の細分化、深化について、高橋(2012)は、キャリア形成の大きな流 れとして、多くの分野で高い専門性が必要となり、さらにその専門性を持った人たちがチ ームを組まなければ成果をあげることができないような仕事が出てきており、理論体系的 な専門性を持ったプロフェッショナルが求められていると述べている。
一方で、このような専門化の度がすぎると、辺境的な思考パターンの原因となってしま うため、専門能力とまとめる能力を共存・バランスさせるべきという指摘もある(藤本, 2001b)。
特に、藤本(2001a)は、管理層やインダストリアル・エンジニアリングの専門家による 意思決定と現場の作業者との間に生じる垂直的な分断の流れについて、20世紀後半のアメ リカの製造システムで競争力低下の一因となった過度の分業化や管理層の現場からの遊離 であることを指摘している。
藤本(2001b)は、個々の技術者の作業割りあて範囲が広く、専門化の程度が低いほど、
136 第1章の用語の定義で説明したように、日本ではこれら職種を総じてシステムエンジニ ア、もしくはその一部をプログラマーのように、まとめて呼ぶことが多く、その職務上の 定義は非常に曖昧となっている。