工程で品質を作りこむ

昨日参加したとあるソフトウェア開発関係の研究会で「重要なのは『工程で品質を作りこむ』ことだ」とか言う話をしていた。 この「'工程で'品質を'作りこむ'」ってフレーズはよく聞くが、「まあなんとなく言いたいことはわかるが、へんな日本語だなあ、これ英語に訳せないよ」といつも思っていた。
 というのも、通常の製造業でもそうなんだろうが、このフレーズはソフトウェア開発の話をしている場合、以下のようなコンテキストで使われるからだ。

ソフトウェアの品質を、開発の後期、つまりテストとデバッグの実施によって担保するというやりかたは良くない。そうではなくて、要件定義とか設計とか開発の早期で品質確保を実現すべきだ。(なんちゃらかんちゃら)、結局「工程で品質を作りこむ」ことが大事なのだ(ビシッ!)

 こういう話を聞くと、「早期工程で品質確保作業を含めるべき」という意味で使っているように聞こえるし、そう思っていた。つまり、ここでいう工程は'phase'だと思っていたのだ。けど、phaseだとすると'工程で'が「工程という手段によって」だと変だし、かといって、'で'が時期を意味するなら、'各工程'とか'早期工程'とか工程を限定してくれないとフレーズが意味をなさないだろう。だからよくわからなかったのだ。
 で、なんか4月からPMBOKなりCMMIなりを読んでいて、思っただが、ここでいう工程は'process'という意味で使っているんだな。つまり「人に依存して品質が保障できない状態で成果物を作った後、品質をテスト&デバグなどの手法で'後から上昇させる'のではなく、定義された手順に従って(=プロセスを決めて)初めから'作って'しまいなさい」と言っているのだな。多分。
 ただ、工程で品質を作りこむググると工程をphaseと捉えている人もいるし、processと捉えている人もいる。自分は後者の意味が正しいと思うのだがどうなんだろうか。
どちらにしろ、原因はprocessphaseをどちらも工程と訳してしまっているからだろう。おかげで自分含めてprocessとphaseをごっちゃに捉える人が多いが意味はぜんぜん違う。

  • process: systematic series of actions directed to some end
  • phase: a stage in a process of change or development

ちなみに、waterfallモデルで用いられる「工程」は'phase'の訳だし、おそらく工程というとphaseの意味で考える人がソフトウェア開発に関係する人では多いだろう。だから、processは工程と訳さずにプロセスというカタカナにしたほうがいいと思う。*1
 抽象的、概念的な言葉の真の理解は難しい。XMLを理解する上でわかりにくい3つのSというのがあって、「semantic」と「syntax」ともう一個なんかだったのだが、今やっていることで、真の意味を理解するのが難しい単語はPから始まるものが多い。practice, product, process, phase, project, program(コンピュータプログラムでなく'南アジア貧困撲滅プログラム'とかいう使い方の'program'), plan, portfolio, profile, pattern, purpose, perspectiveとか。抽象的、概念的な言葉はラテン語が起源である場合が多いだろうから、ラテン語はpから始まる単語が多かったということなのだろうか。まあ、理解する対象として最もわからんのが、いまだに'people'なのだが。

*1:かくいう自分も、processとphaseをごっちゃにしていた結果、CMMIに出てくる「プロセス'領域'」という概念が、理解できなかったのだが