SEMAT “Call for Action” の日本語訳
いまさらなんだろうけど、SEMATという活動に注目した。
それでいろいろ調べていて見つけたものの一つが、The Essence of Software Engineering: The SEMAT Kernel で、日本語訳が「ソフトウェアエンジニアリングのエッセンス」にある。訳者は SEMAT Japan Chapter のメンバー有志。ただし、もともとの文献が SEMAT vision statement をかなり引用しているようなので、そのような箇所はメンバーの一人、平鍋健児さんが訳した「ソフトウェア工学の方法論と理論」からの転載であることが多いようだ。
最初に後半部分を書いたんだけど、調べたらSEMAT自体がイマイチに感じてきたので、そちらを冒頭に持ってくる。
SEMATは「アルファ」という、チームが達成すべき項目(段階付けされた目標を持つ)を使うそうだ。
Alpha Cards(図はソフトウェアエンジニアリングのエッセンスから引用。ただし、当該記事ではこれをカーネルと示しているが、Jacobson による記事には “the SEMAT checkpoints measure outcome. Thus, the universal elements represent achievements rather than documents or artifacts. [omit] There elements are called alphas.” とあるように、誤解がある。)
SEMATいわく、これらアルファカードを参照することによって、次の図のようにチームの状態を把握することができる。
(図はソフトウェアエンジニアリングのエッセンスから引用)
また、チームの現在状態と次の着手内容を明確にするために、”Alpha Abacus”というアイディアも示されている。
で、これって結局、複数の観点について行うウォーターフォールと何が違うのかな??
ウォーターフォールの失敗は反復がないことだけど、アルファも「フィードバック」の遷移矢印が書いてない。じゃあ本質的に反復でないってことだよね。
アルファを実際に運用して確実に起ることが、上を参照しながらたとえば “要求 が 受理可能 になったはずなのに、実は 一貫 してないことが判明した” ってやつだ。これはウォーターフォールでは「設計を始めたのに、要求定義が間違っていたことに気がついた」ってのと変わらない。
これが――関係者がハンコを押せばプロジェクトが次状態に確実に移行できるという仮定が――まったく現実的でないが故にウォーターフォールは失敗し続け、そしてSEMATアルファも上手くいかないだろう。
「いやアルファはSEMATの構成要素でしかなくて、もっと自由度がある。反復プロセスを扱うときはアルファが反復をしても構わないんだ」という反論もあるかもしれない。いやいやいや、そうやって逃げても問題は解決してない。だって、実際の開発ではなにかが確実に状態Aであるという判断は不可能だ。反復するしないじゃなくて、アルファの状態を決定できるという前提が成り立っていないんだよ。
ああいうブロック図で物事を単純化した人たちは気持ちいいだろうが、それは問題の本質的な複雑さを実践者たちに押しつけたに過ぎないんじゃないかな。
というわけで、このアルファについて理解したときに、私はSEMATを見限ることにしました。だいたい混沌を究めた方法論乱立の原因みたいな人たちが集まって、結局新しい飯の種をでっち上げただけって気がするわ。Vision Statement には共感したんだけどなあ。
以下、最初に書いた文章。
日本語訳が微妙で、誤訳に解釈誤り、果ては訳者による勝手な追記など無茶苦茶だったので書いたんだけど、どうでも良くなってしまった。
「ソフトウェア工学の方法論と理論」は平鍋さんが「とりあえず個人でやりました」的な立ち位置だと思うので特にアレだが、「ソフトウェアエンジニアリングのエッセンス」は SEMAT Japan Ch. としての活動なのだろうから、その内容には対外的な責任が生じるだろうと思う。
さてそうしたわけでとりあげる「―エッセンス」を通勤時間に読んでいたのだが、現状を嘆くところが面白かったので、書き手の意図を汲み取りたいと思って、英語の原文にも当たってみた。
そしたら、どうも訳がいまいちじゃないか。(そもそもタイトルからして、”The Essense of Software Engineering: The SEMAT Kernel” が「ソフトウェアエンジニアリングのエッセンス」という訳もどうなのか……。何も訳してない上に肝心の ”The SEMAT Kernel” が抜け落ちてていいのだろうか。)
Call for Action で現状を嘆くところ(私が共感したところ)にはこんなことが書いてある;
Some areas of software engineering today suffer from immature practices. Specific problems
include:
- The prevalence of fads more typical of the fashion industry than an engineering discipline.
- The lack of a sound, widely accepted theoretical basis.
- The huge number of methods and method variants, with differences little understood and artificially magnified.
- The lack of credible experimental evaluation and validation.
- The split between industry practice and academic research.
さて日本語訳(太字と項番は私)は、
現在のソフトウェアエンジニアリングのいくつかの分野では、未成熟なプラクティス(immature practices)に苦しめられている。
具体的には、以下の問題を含む。
- 言葉の流行が、エンジニアリングの一分野というよりファッション業界のようである。
- 堅固で広く受け入れられるような理論的基礎を欠いている。
- 非常に多くの方法論(methods)とその派生であふれ、それらの違いはほとんど理解されず作為的に強調されている。
- 信頼できる実験的評価(experimental evaluation)と妥当性確認(validation)を欠いている。
- 産業界の実践(industry practice)と学界の研究(academic research)の乖離。
らしい。
違和感があるので私が訳してみた;
現在のソフトウェア工学のいくつかの分野では、未熟なやり方に悩まされている。具体的な問題としてたとえば、
- 工学分野よりもファッション業界でよくある一時的な流行の蔓延
- 広く受け入れられた、強固な理論的基礎の欠如
- よく理解されず誇張された違いを持つ、非常に多くの手法と亜種
- 信頼できる実験的な評価と検証の欠如
- 業界の慣行と学術研究の乖離
日本語としてこなれてるかどうかは別にいいんだけど、文意が変わっているようだと参考にしづらいなあ。SEMATに期待する点の一つに “kernel languages” を定義する、という活動があるらしいので、それらの日本語訳についても正確なものをお願いしたいところです。