ITで品質を作り込むは正しいか


早い手軽がアジャイルなんでしょ?
システム開発手法にアジャイルがあって、良く取り上げられるのが安いコストで早いデリバリができると言うもの。
困った理解ですね。

アジャイルは、変化に対応できるように仕組みを変えようというものであって、そのひとつが開発期間を短くすることであり、顧客も開発チームと一緒になって要件を出したり、スコープを決めて、早く顧客にビジネス価値を届けよう”


、というものです。
#かなりおおざっぱ。

一方、品質は?と問われれば、安くて早いんだからそれなり、という訳ではないです。きちんと、高い品質を維持することを求めています。


じゃあ、ウォーターフォールの品質は?
で、いつも対極に置かれるウォーターフォールなら品質が高いのかって言うと、逆に質問するけれど、

「なら、なぜみんな苦労しているの?」


と正座していただいてコンコンとお聞きしたい。

金融システムの開発なら、標準化チームがあって品質管理標準が決められていて、設計工程なら設計レビューでメトリクスと採取したり、試験工程でも仕様レビューと不具合のメトリクスを収集して、計画した数値の範囲に収まるようにプロセスコントロールしたりするものです。

そこまで品質管理プロセスをやっても、管理範囲から外れるものは外れるし、ほっといてもそこそこ品質を確保できるものは出来るもので、不思議と言えば不思議な世界です。


品質を作り込む
良く、“品質を作り込む”と言いますが、作り込むってなんでしょうね。具体的に何をすればいいかイメージわくものですか。周りを見ているとお里が知れそうな気がしますが、

「試験をやった結果が期待とおりならばいいでしょ?」


的な人を相手にするとき、ワタシとの会話するレベルが違い過ぎて話に苦労することがままあるものです。
#なんだかな...と。

作り込むって言うくらいですから、“元になる何か”があって、それから逸脱しないような作業を言うのではないか、と思っています。言い換えれば、

“手本があって、手本のとおりに出来上がるかどうか”


、ってことです。それを分かって話しているのか、していないのか。
まぁ、大体そこを明示的に話してくれないから話が面倒になるのすけど。


そもそも品質って何?
ずばり、

“顧客の要求事項から当事者が合意した機能”


ですね。なので、要件定義なりなんなりで、きちんと顧客の要求事項を“具体的”に明らかにしておくことが大切で、それを手を抜いたり、顧客に質問できないと言い訳したりすると後で困ることになります。

要件定義では、ビジネス要求からシステム化するものをシステム要求として整理し、システム方式に向けてより具体的なイメージに落としていきます。基本設計工程では、実現仕様に落とすためにより具体的に仕様に落としていく。こうして、工程を追うごとにシステムの仔細な振る舞いを決めていくことになります。

で、気をつけておくことは、工程を追うごとに、

“品質の元となる顧客要求からずれていないよね?”


と意識して、乖離させないことです。その活動こそが品質管理です。
#メトリクスを取って、範囲内でよかったねーとか、外れたから合わせようとかすることではないです。


要求と現物の乖離を戻す
曖昧なものから具体的なものになるときに離れていくことを計り、戻す。工程の終わりになって離れていましたね、戻しましょう、では遅いのです。最悪、その工程をやり直しすることになります。

短い納期、少ない工数だからこそ、品質を維持することに注力することを怠らないことが肝要ですが、何が何でも100%やれは現実的でないところが悩みどころです。


大切なことは
ならば、どうするか。

作っているものは、顧客のもので、品質が悪ければ顧客が困るし、過剰な品質は、時間とコストをオーバーランさせるだけです。

品質は顧客と具体的にイメージを合わせます。イメージは、図、表を多用して、言葉の解釈が起きないようにしておくことです。

試験では、試験方針を立て顧客と合意します。試験方針では、なぜこの試験方針でよいのか、そこから何を確保するのかを。何をカバーして何を手薄にするのかロジックを作り、顧客と合意しておきます。

システムを実現するSIerとしても、諸々都合があるのだから、その都合も加味して合意しなければなりません。逆に言うと、SIerから品質方針の調整に行くのだから、都合を入れ込んでそこから話が出来る、と言うことです。
顧客だって立場があるのだから、SIerの言いなりにはなりませんが、話す土台があって、そのロジックが理解できるなら無理は言わないものです。
だからこそ、必要なポイントで顧客と合意していくのは、何かあったときに、

“顧客と相談できる元を作ること”
“何かあったときに、顧客が上に言い訳できるようにしてあげること”


という背景があるからです。