疑似コードとxUnitフレームワークと


リーンソフトウェア開発と組織改革 の“フレーム6 構成的な実装による品質”を読んでいて、

“欠陥を発見し修正するのは開発プロセスの最後が適している、というアイデアはいったいどこで生まれたのか?”
(リーンソフトウェア開発と組織改革 P113)


で、引っかかりながら、“テスト駆動開発”のxUnitフレームワークを読み進めているうちに、常々、思い周りに伝えていることがひっかかっているんだな、と。
何がひっかかっているかというと、品質管理を名ばかりでやっているプロジェクトは、品質のメトリクスを取っていても工程(=フェーズ)の終了時期に纏めて分析するだけなんだね。
品質管理は、プロジェクト全体では開始から完了までの一貫したプロセスの流れの中で顧客要求を実現するもので、一貫したプロセスを構成する工程もそれぞれの工程が次工程に渡すときにdeliverableには要求される顧客要件を担保されていなければなりません。
モノのつくりとして、出来上がってから“出来ているかな?”と確認していては、求められる顧客要求との差異があるときにリカバリなんて追いつかないことは誰でもわかることです。
#そう、誰もわかっているのに変えないですよね。なんで?


xUnitフレームワークは“アレ”なのだ!
で、品質はその工程の中で不良の混入を発見してすぐに除去するのが良いに決まっているのだから、作ったら(=コードを書いたら)不良を見つけ出し、同質の不良は排除したいものです。

xUnitの「テスト」−−あるいは他のツールでの同等の機能−−とは、ソフトウェア仕様のことである。コードの最小単位がどのように動作するか、また、それらがお互いにどのように作用してコンポーネントを形成するかを、技術的な観点から指定する。こうした仕様を書くのは開発者で、ソフトウェア設計のツールとして利用する。xUnitの「テスト」はコードが書かれる前(あるいは後)に一度にまとめて作成してはならない。コードを書く開発者が、そのコードを書く直前に、一度に一つずつ書くのである。
(リーンソフトウェア開発と組織改革 P115)


xUnitとは、単体テスト(ユニットテスト)を行うためのテスティングフレームワークの総称ですね。JUnitとか。
で、言い換えると、仕様書をもとにコードを書いたプログラムを、コードのとおり動きますよというテスト仕様を書くのではなくて、仕様書のとおり動作するテスト仕様を用意して、それを見ながらコードを書くということですね。

で、これを読んで、「ほら、前にあったじゃん?あれ、そう、あれ。何て言うんだっけ?」と。


アレはコレでした
まだ、ハードウェアリソースが高い時に書いていたものがありました。そう、疑似コード。“アルゴリズムを、自然言語を用いてプログラミング言語のように記述したもの”です。
今時やったことある人少ないだろうなぁ。
#ワタシもやったことはないです。


その疑似コードとxUnitフレームワークに類似項があるのではないかな、と。

疑似コード アルゴリズム自然言語を用いてプログラミング言語のように記述したもの
xUnitフレームワーク コードの最小単位がどのように動作するか、また、それらがお互いにどのように作用してコンポーネントを形成するか、技術的な観点から指定する


どちらも、前工程の実現仕様を別の表現に言い換えてコーディングのための仕様を書いているということに変わりはないのではないか、と思うんだけど。ただ一つの違いは、xUnitはコードを食わせれば動くけれど、疑似コードは動かないこと。
そして、どっちも面倒なのは、インプットの仕様が変わったら疑似コードもxUnitも修正しないといけないということ。

そう考えると、疑似コードって“コードに不良を混入させない”という意味合いでは、先進的ではなかったのか、と思えてならない。じゃあ、疑似コードをやらせるかと問われれば「やりません。」です。
疑似コードをやっていた時代にそれに関与していたわけではないので、その疑似コードを導入した目的がはっきりしないのですが、コンピュータリソースが高くて、ローカルのPCも性能が低くてジョブをホストに突っ込む前後の時間的な待たされ時間があったこととコンピュータリソースの資源の節約のためではなかったか、と想像するからです。

xUnitのようなテスト駆動の目的から疑似コードを書くのであれば、検討の余地があるかもしれませんが、コンピュータリソースが劇的に安くなっている今、疑似コードを書いても次工程に価値をもたらさないのであれば、価値をもたらさない作業は選択する理由がないのです。
xUnitは、インプットの変更があればxUnitを修正しなければならないのですが、その手間を惜しんでも良いのは一度書いてしまえば回帰テストで使えるところに価値があるのだと思うのです。


4048687417 リーンソフトウェア開発と組織改革

xUnit


  • 道具室(アプリとか)
  • 音楽室(PCからリンクをクリックするとき、PCにiTunesが入っているとアプリケーションが起動します)
  • 視聴覚室
  • 調達室

B0098WGNIEダイキン(DAIKIN) 加湿空気清浄機「うるおい光クリエール」 バニラホワイト TCK55M-W

これ買っちゃいました。充電用はどうしよう。
B007X8IL1WPanasonic Qi対応(無接点充電対応) USBモバイル電源パック リチウムイオン 5,400mAh 白 QE-PL202-W

B007X8IL1CPanasonic USBケーブル電源専用 ACアダプター QE-AP104

B008FCWGG6パナソニック(Panasonic) 無接点電源パッドQETM101 ECM750