「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
このように,詳細の前に全体を設計するやりかたをトップダウン設計と呼びます.そして,トップダウン設計に際して,検知のしくみを実装するための手段(周期的ポーリング,ハードウェア割り込み,OS依頼など)が何であろうとも,共通して使える表現が非同期呼び出しなのです(図5-3).言いかたを変えましょう.計算や入出力をコードの順番で実行するだけでは設計意図を実現できない可能性があるときに,非同期呼び出しで表現しておくということになります.
非同期呼び出しは,最初の呼び出しと実行の開始が同時刻でないことを示しているだけで,実行がいつまで続くのか,ほかの実行と並列に行われるのかなどは明示しません.具体的なふるまいについては,
1)設計図のモジュール仕様書を作成するときに決める
2)プログラムを書くときに決める
など,後のタイミングで決定,記録すればよいわけです.細かい部分を先に決めてしまうのは失敗のもとです.Javaで実装するつもりになっていても,コーディングの段階でCにする必要が出てくるかもしれません.細かい部分の決定はなるべく後にするというのが,安全な「繰り延べ」の考えかたです.
〔図5-3〕非同期呼び出し(構造化設計手法で示した)
非同期呼び出しは,図で表現するときには点線の矢印を使い,実線の矢印で示す同期呼び出しと区別する.縦線が2本ある長方形のモジュールはライブラリ・モジュール(すでに設計やコーティングがなされているモジュール),6角形のモジュールはデータ・オンリ・モジュール(データのみのモジュール)である.
●格言:へたな鉄砲は数を打っても当たらない
プログラミングに慣れてしまうと,きちんと設計しなくても動くものができるようになるものです.しかし,非同期処理が必要でかつ高い品質の組み込みソフトウェアを開発しようと思ったら,設計工程に時間をかけることがたいせつです.