システム開発で品質はどれほど重要か~過剰品質のSier~ | システムエンジニアライフ

システム開発で品質はどれほど重要か~過剰品質のSier~

ヘッダー広告
スポンサードリンク

Sierでは品質にたいしてかなり高い意識をもっている企業・人が多いと思います。 品質にたいしてのその高い意識は本当にそこまで重要なものなのでしょうか。 私はSierの品質にたいしての高い意識に疑問を持っています。

過剰品質への意識

QCD

システム開発において開発が成功したかどうかの判断にはQCDという指標が多く使われています。 QCDとは、品質:Quality・コスト:Cost・期日:Deliveryの略で、当初予定したQCDの通りに開発を終わらせることが出来たかを判断します。

この3つの要素は、それぞれが他の要素に影響を及ぼします。

例えば、開発を進めていくうちに、納期に間に合うか怪しくなってくるとします。 納期に間に合わせるためには、残業をしたり、対応する人を増やしたりなどが必要となります。 つまり、納期(Delivery)に間に合わせるために、コスト(Cost)をかけて対応するのです。

システム開発成功率

ちなみにQCDが当初の計画通りに進み開発が完了するという開発案件は、全体のうちの30%程度しかありません。 多くの開発がQCDに何かしらの問題をかかえてしまっている。つまり開発が失敗しているのです。

そしてSierでは、品質を求めすぎて、多くの工数を使ったり、期日に間に合わないといった失敗が多く発生しています。

そしてそんなに多くの開発が失敗している原因は、要件定義やマネジメントの問題であったりと言われているのですが、私は過剰な品質を求めすぎていることが他の要素に対しての大きな障害となっていることで失敗しているのではないかと考えています。

多すぎるレビュアー

多くのSierでは、ウォーターフォールでの開発を行なっています。 ウォーターフォールでの開発は、要件定義が終わったら外部設計、それが終わったら内部設計と、前の工程が完全に完了してから、次工程へと進んで行きます。 一度終わった工程へ戻ることは通常ありません。

何か問題が発生してしまうと、上の工程からやり直すため手戻りとなり、大きな工数がかかってしまいます。 そのため私の現場では、オフショアにて作成→オフショア内部の別の人がレビュー→他社(日本にいる2次請け会社)がレビュー→元請け企業がレビューと4人以上で成果物のレビューをして次工程へと進んで行きます。

しかし多くの人がレビューするということは、それだけ時間がかかり、お金がかかるということになります。 そして多くの人がレビューしたからといって、バグがなくなるということは絶対にないです。 むしろ、後半にレビューした人の指摘を反映したことにより、別の問題(バグ)が出てきたりします。 また日本語の表現などに細かい人のレビューでは、システムの品質に関係のない指摘が多数発生し、無駄な修正工数がかかることもあります。

そのため、このレビュー体制が過剰品質になりやすいポイントの一つです。

バグが許されない

Sierではどんなに些細なバグであったとしても大きな問題として扱われます。 例えばWebサイトに表示する文字列を、「システムエンジニアは仕事以外でも勉強をする人が優秀になる」が正しいとして「システムエンジニアは仕事以外でも勉強をする人が優秀でなる」と誤ってしまったとします。

Sierではこの間違いに対して、原因をなぜなぜ分析というものをして再発防止策を毎回考える必要があります。 なぜ「になる」を「でなる」に間違えたのかを5回程度なぜを繰り返して本当の原因を考えます。 ただの寝不足でタイピングを間違えてしまっていたとしても、なんで間違えたのか、なんでチェックが漏れたのか、なんで気づけなかったのか、今後どうするのかを延々と繰り返し考えます。

タイミングが悪く(リリース前に気づいたのでタイミングが良く)リリースの1週間前など直前に気づいた場合には、同様な問題がないかを調査したり、原因を追究したりなどを徹夜で実施することもあります。

しかし些細なバグに対して何時間もかけて原因を考えたり、対策を実施したりを行うということは、他の作業を実施する時間が減ってしまうということになります。 作業の時間が減るということは、品質に対しての新しい不安が出てくるということになります。

確かにバグは0に近づけていく必要はありますが、バグが0のシステムはないと絶対にあり得ないです。 にも関わらず単純なミスに対していつまでもいつまでも原因を考え続けたとしても、逆に違う原因を出して本質から離れた対策を作成することになると考えます。 ※よくある対策はなんでもチェックリストの項目に組み込んでいき、無駄なチェックが増えていくというものです。

QCDの中で何が一番重要か

これはQCDの話題になった際、QCDの中で何が一番重要かという話題となることはよくあります。 そしてSierではQ:品質が一番重要だと考えられていると私は思います。 何よりも品質が重要で、他の要素であるコスト・納期は品質を優先した結果と考えられていて、大きなコストや遅い納期に対しては目をつぶっていると感じます。

しかし私は、QCDの中で何が一番重要ということはないと考えています。 状況に応じて、納期を優先する案件もあれば、納期は遅くてもいいからコストを低く抑えたいという案件も多くあると考えています。 つまりその時々でQCDのバランスを考えたうえで、当初に立てた目標を達成できるSEが優秀なSEであると考えます。

過剰品質を意識する

私が今回の記事で言いたいことは、今のSierの多くは品質ばかりを気にしすぎていて、他の要素であるコストや納期がおざなりになっているということです。 システムというのはあくまでユーザー企業が経営手段の一つとして目的をもって開発をしているということを強く意識しないといけません。 どんなシステムでも品質を優先するのではなくて、システムの用途にあったレベルをQCDのそれぞれの要素に対して設定する必要があります

もし品質が重要だと考えているのであれば、Sierには顧客へそれをきちんと説明をして、それ相応のシステム開発費用を請求する必要があります。 顧客はバグは発生しないのが当たり前と考えている会社が多いですが、品質を重要としたいのであれば、品質を高めるためには時間とお金がかかることを説明しなくてはいけません。 逆に他の要素が重要で品質は重要でないシステムであれば(例えば社内業務を効率化するシステム等)、品質を高めるための時間を抑える代わりに、稼働後のバグはこのレベルまでは許容してほしいときちんと伝えて、稼働後のトラブルを抑える必要があります。

Sierの中で顧客と会話することが出来る一部の元請け企業は、上記のことをきちんと認識して交渉する必要があります。 そういうことを行っていかないと、自分達を始めとして、下請けのSierまでかなり苦しい思いをすることになります。

品質を高めるにはお金がかかるというのを、システム開発に関する人全員が認識して、その時その時にあったQCDの目標値を定めて開発を進めていき、IT企業のレベルを上げていけるといいなと思います。 過剰品質になることが多いシステム開発を改善して、価値の高いシステムを作れるSier・ユーザーが増えると、日本のエンジニアとしての価値が向上していけると信じています。

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする