Test First / Document First

仕事に忙殺されていますが、今日は時間が空いたので以前から懸案だった gcc 向けの信号処理ライブラリに手をつけました。とりあえずはFIRフィルタからです。FIRフィルタは簡単とはいえ、きちんとBlackfinのDual MACを使うにはそれ相当の注意が必要です。
いつもなら思いつくままにコーディングに取り掛かるのですが、今回はやはり懸案だったTest First手法を取り入れてみました。Test Firstとは、まずきちんとしたテストプログラムと「とりあえず動く」プログラムを作り、最初に動作を確実にした後にアルゴリズムを改良していく手法です。アルゴリズムの改良とは、信号処理ライブラリの場合はアセンブリ言語による記述を含めた高速化になります。
ついでに保守性を高めるためにDoxygenに食わせるコメントも書きながらコーディングしています。Doxygenは使うたびに気に食わないところにぶち当たるものの、メモ代わりにもなりますし、出力プログラムはシンタックス・カラーリングが施され、シンボル・リンクが張られて圧倒的に可読性が高くなります。
コーディング環境は、PizzaFactory 3.1です。PF3.1のBlackfin free standing環境には、stdioへの出力がコンソールに表示されない問題が残っています。しかし、ファイルIOはきちんと動作し、ホストのファイル・システムに出力ファイルを作ることができます。今回はこれを利用しています。バイナリの動作環境は実機ではなくシミュレータなので、出張先でもデバッグできます。ただし、gdbのBF シミュレータは非整列データアクセスの扱いが甘いため、この部分はテスト・プログラムがカバーする必要があります。
とにかく、そんなこんなで、テストプログラムとドキュメントを同時に書いています。たかがFIRフィルタが一日たって完成しないどころか、まだC言語によるテストも終わっていません。とりあえず、テストプログラムの出力を紹介します。出力はHatena記法を使っているため、ざっと見るためにははてなダイアリーなりグループを通すことになります。何かポータブルで単純なフォーマッタがあれば使ってみてもいいなと思っています。unixならroffを使うんでしょうけど。