システム/ソフトウェア開発に おける問題点と外注管理

システム/ソフトウェア開発に
おける問題点と外注管理
最近のシステムやソフトウェア開発における開発方法論や開発支援環境およ
びツールなどの進歩は目覚ましい。またインターネットの発展により,フリーソ
フトやシェアウェアソフトが流通し,現在,ソフトウェアは開発するというより,
アセンブリー作業のように見える。そしてシステム開発は,以前と比べて大幅に
短納期になっている。簡単にできるのが常識かのごとくである。
ところが実際のシステムやソフトウェア開発の現場では,相変わらず品質の低
さら
いソフトウェアを納期遅延の危険に晒されながら開発している。しかも大量の外
注を使って,自らは何を開発しているのかさえも正確に把握できないまま推進し
ているプロジェクトも多い。
本章では,システムやソフトウェア開発の世界で問題になっている点と,特に
外注において発生している問題点について触れ,外注管理の二面性について考え
る。
1.1 システム/ソフトウェア開発における一般的問題点[1]
コンピュータが出現してから現在に至るまで,ソフトウェアは開発され続けて
いる。当初は簡単なプログラムのみであったが,急速に複雑化,大規模化し,デー
タベースが絡み始め,今やデータベースを中心としたシステム構築と,インター
ネットに代表されるネットワークや Web 技術を使った開発が主流になってきて
いる。このように複雑化,大規模化したシステムやソフトウェアを開発すること
はますます困難になりつつあり,それに伴い,種々の現象が見られるようになっ
てきた。すなわち,
13
第
1
章
1. システム/ソフトウェア開発における問題点と外注管理
①
ソフトウェアコストの増大
②
ソフトウェアが適用される実際の場の多様性とそれに伴う開発の視点,
および方法の相違
③
ソフトウェア開発におけるリソースの不足と外注
④
頻繁に見られるプロジェクト崩れ
などがある。
ハードウェアコストは低下の一途をたどっているが,それと反比例するかのよ
うにソフトウェア開発のコストは増加し続けている。エンドユーザ・コンピュー
ティングに見られるように,コストの上昇を「それを必要とする人は誰でも作れ
る」ということで抑えようとする動きがあり,それはそれで効果を上げている。
しかし,企業全体の情報システムを構築しようとすると,システムはより複雑に
なり,また環境がオープンになればなるほど困難になり,それがコストに跳ね
返ってきて,ますます費用は増大の一途をたどっている。アウトソーシングやシ
ステム・インテグレーションなどが脚光を浴びてきたのも,このような事態の改
善要求からである。
しかし,コストだけの問題ならば資金のあるところは問題がない。より根本の
問題は,開発されるソフトウェアの適用される場が多様化していることである。
インターネット上のシステムから組み込みソフトまで,金融から流通や電力の世
界まであらゆる場所にソフトウェアは使われている。そしてそれらの場からのソ
フトウェアに対する要求は,それぞれに異なる。例えば信頼性ということをとっ
ても,ある場合にはシステムがダウンしないこと,また他の場合はデータが破壊
されないことが重要である。また,制御システムでは処理データの数値が一定の
許容幅に入っていることで十分であるが,金融のシステムでは最後の一桁まで数
字が正確であることが必要である。
これらの要求から,ソフトウェアを開発する場合の重要とする視点もそれぞれ
相違してくるし,開発方法も異なってくる。したがって,あるシステム分野で経
験したからといって,他分野へ行って必ずしも通用するものではない。そのため
に,ソフトウェアを開発する要員もグロスでは評価できず,それぞれの観点から
考慮しなければならない。したがって,常にソフトウェアの開発やシステムの運
用にかかわる要員は不足がちになる。これはすべての分野で不足するというだけ
14
1.1 システム/ソフトウェア開発における一般的問題点
ではなく,ある分野で余っても他の分野では不足というような事態も起こり得る
ということである。一時期,COBOL 技術者は余って Java 技術者が不足したと
いうのはその端的な例である。このために,ソフトウェアの世界では外注が大き
なウエイトを占めている。
しかし,外注により,システムやソフトウェア開発の管理はますます複雑に
なってきている。そして図 1.1 に示すように,日常の世界ではいわゆる「プロジェ
クト崩れ」が発生してきている。2002 年 4 月に発生した某大手銀行のシステム
移行におけるトラブルは,その代表例である。これは,実際にソフトウェア開発
を経験し,ソフトウェア開発プロジェクトの困難性を感じた者でなければ想像も
できないような現象である。すなわち,「何をすべきか」を決めることが簡単で
あり,「どのように作るか」に精力を費やせばよいような世界の人にとっては,
想像もできない世界である。
? の 原 因
工程遅れ
納期遅れ
低信頼性
システム
立会検査/
検収不合格
ユーザの
信頼失墜
機能・性能
要件不備
予算超過
赤
字
プロジェクト
チームワーク
の崩壊
将来の発展性
の喪失
図 1.1 プロジェクト崩れ
15
1. システム/ソフトウェア開発における問題点と外注管理
「何をすべきか」を決めることが非常に困難な中でシステム開発を行おうとし,
現象的な要員不足から外注という行為に走っているソフトウェア開発の世界で
は,この「外注」をどのように扱うかが大きな問題となっている。「プロジェク
トマネジメント」=「外注管理」1と定義している会社もあるほどである。
日本の IT ビジネスにおける外注の平均的な実態は,憂慮すべき事態になって
いる。これには,システムやソフトウェアの本質に絡む問題と日本のビジネス構
造上の問題がある。
建築や土木,電気工事等の外注は,基本的にはやるべきことは明確であり,そ
れをいかに達成するかという視点から専門的スキルやノウハウ,調達インフラの
整備等が評価される。また,それだけの基盤ができている。しかしシステムやソ
フトウェアは,何をどこまでやるかのコンセンサスを取ることが本質的に困難な
あい まい
局面がある。それは,人間が本来持っているアナログ的な曖昧さの中での最適化
を思考する特性と,現在のシステムやソフトウェアの開発等に必要なディジタル
的明確さの要求のギャップである。このギャップを繋ぐのが SE であるが,その
SE の業務を明確にすることはまた難しい。
この本質的な問題は IT 関連では常に存在し,この解決を図るためにシステム
工学,ソフトウェア工学等の試みがある。また,これらを組織/集団の中でいか
にコンセンサスを取り,ベクトルを合わせるかに,プロジェクトマネジメント等
の追求がある。
1
最近 PMBOK 等の訳書において,「management」はそのまま「マネジメント」とし,
「control」の訳として「管理」が使用されている。しかし,「control」には「制御」と
いう訳語が以前からあった。「管理」は,本来はコントロールより広い意味を持ってい
る。したがって,本書では「マネジメント」と「管理」を同じ意味とし,現時点で比較
的大勢になっている方を使用している。例えば,「プロジェクトマネジメント」「外注
管理」。
16