プログラマは言葉と解釈の自動変換をしてはいけない2009年12月22日 23時47分42秒

現在、またまた短期で請けている助っ人案件ですが、基本設計、ポリシー設計などを行っています。

さて、私のμITRONベースのソフトウェア基本設計書でdly_tskでループしてdly_tskから起き上がるたびに他のタスクにタイムアウトイベントを通知するタイマータスクの実装を指示していました。

周期ハンドラの使い方が間違っている開発だったので新規追加部分ではタスクで大まかなタイマ監視を実現することが目的です。

設計書にも「タスク生成・タスク起動」とか、名前もタイマ監視「タスク」って書いているにもかかわらず、実装担当者は「周期ハンドラ」を生成していました。 いちいちコードは見ないので「出来た」ということばを信じて任せていたら、デバッグで動かない。

なんせ、周期ハンドラでdly_tsk(1)などをコールしているものだからぜんぜん駄目です。wdtでシステムがリセットしてしまいます。 周期ハンドラでdly_tsk()は使えません。待てないんだから。 多分処理的には永久ループになってしまう。

今回のプログラマ向けの教訓は以下です。

  1. 自分を信じて、自分の思い込みで言葉の自動変換をしてはいけない
  2. 仕様書に書いてあることをそのまま実装することを心がける
  3. タスクはタスク、ハンドラはハンドラ。違うものだよ!!
  4. 設計者が間違っていて自分が正しいと思ったらきちんと実装前に意見する