組み込みソフトウェア開発の技術を習得するのに、実際にモノを動かしながらプログラミングできる電子工作は有用と思います。簡単な課題から現実のシステムを模した難しい課題まで、様々なレベルに対応できますし、要件定義、設計、実装、テストと様々な開発フェーズのソフトウェアエンジニアリングを体験することができます。
なので、ここでは信号機の制御を題材にした電子工作を通じてソフトウェア開発の雰囲気を体験したいと思います。電子工作に主眼を置くのではなく、ステートマシンを活用した組み込みソフトウェア設計などのソフトウェア開発がテーマになります。
動作確認
信号機①要求仕様に書かれたシナリオに沿って、検証してみます。とは言ってもボタンを押して振る舞いを観測するだけですが。
今回、動作確認としていますが、テスト設計としてテスト仕様を書いたなら、様々な曖昧な点が見つかるかもしれません。例えば、ボタンを途中で押したらどういった振る舞いにすべきか、などです。
ボタンの押すパターンと振る舞いは、テスト設計や設計をきちんとすれば、要求仕様の漏れとして検出できたかもしれませんね。
今回の設計、実装では、ボタンの途中押下を無視するようにしています。
その背景にはどういった要求があるのでしょうか。さらに深く要求から検討していれば、妥当性が確認できるようになります。テストにも様々な段階があり、それぞれの段階で着眼点が違います。
おわりに
信号機制御システムの動作確認は人の命に係わるシステムですから念入りにテストしなければなりません。実際にはテスト設計があり、検証や妥当性確認といった技術が必要です。詳細は別の機会に触れたいと思います。
まとめ
何となく組み込みソフトウェア開発を体験できたでしょうか。
電子工作の信号機を用いたソフトウェア開発の体験は今回が最後になります。いろいろな家電製品や工場にあるシーケンス制御のシステムを題材にすれば様々なニーズの教育プログラムが作れると思います。