2020年度小学校プログラミング教育必修化
システム開発って難しいですよね。多くのプロジェクトが失敗して、なかなか成功しません。
たとえ、要件定義がうまくいっても、設計で失敗。実装まで漕ぎついても、出来上がったものが要件を満たしていないなんてことがよくあります。
とある教科書の内容
とある教科書とその補足資料に示してあった人感センサーライトの例でおさらいしてみましょう。
要件定義
設計書
システムエンジニアのみなさん、このようなフローチャートのようなものを書いていませんか?
そもそもフローチャートって書きますか?
「人勧センサー」の分岐で、「感知したら」の否定は「感知しなかったら」の方が良いと思います。なぜなら、「感知しなくなったら」というのは、感知している状態から感知していない状態へ遷移したことを示唆する表現になっていませんか。そうです、これらはいわゆるイベント(トリガー)のことですよね。
「感知したら」イベントと「感知しなくなったら」イベントを用意して、それぞれのイベントハンドラで、「オン」と「オフ」とを行います。イベントって、フローチャートでは、どうやって表現するんでしたっけ???このひし形は、状態変化を待っているようにも、見えます。
もう一つ、開始直後って、オンですか?オフですか?
フローチャートって動作しないから、検証が本当に難しいです。図示しても、日本語の曖昧な表現が残ってしまいます。これらが設計を難しくしている要因でもありますよね。
実装(プログラミング)
さぁ、プログラマーのみなさん、設計書をもとに、レッツ、プログラミング!!
あれ、あれぇー、フローチャートには分岐が1つしかなかったのに、センサーブロックが2つになっちゃいましたね。「ずっとくりかえす」は、プログラマーさんがフローチャートの行間(矢印)からしっかりと読み取れましたね。
納品
それでは、完成ということでお客様へ納品しました。そしたら、しばらくして、「しばらくしても消えない」とお客様からご意見をいただきました。なぜでしょうか?
- 人が近づいていない状態で、開始する
⇒ 発光ダイオードは消えている(1~2秒間ついているかもしれない) - 人が近づく
⇒ 発光ダイオードがつく - しばらくすると
⇒ あれ?消えない・・・ - 人が離れると
⇒ 発光ダイオードが消える
プログラミング教育
さて、どこに問題があったのでしょうか。プログラミングがバグっているのでしょうか(小学生の流行語)。
2020年度から小学校でもプログラミング教育が必須化されます。ソフトウェア開発で日ごろからプログラミングを経験しているシステムエンジニアやプログラマーのみなさん、その経験をプログラミング教育に生かしてみませんか?
補足
ここに登場するとある教科書とは、次の内容解説資料である「新しい理科 | 2年度用 小学校教科書のご紹介 | 東京書籍」(編集上の留意点)から、抜粋したものです。
https://ten.tokyo-shoseki.co.jp/text/shou/rika/introduction/page08.html
実は、「しばらくすると消える」んです。なぜならば、電源にコンデンサーを使っているからです。
瑕疵対応
改めて、システムエンジニアとプログラマーは、お客様と要件を再確認し、設計を見直し、プログラムを修正することにしました。
小学校プログラミング教育の手引
いったいこの教科書はどうして、こうなっちゃったのかなー。
小学校プログラミング教育の手引(第二版)(PDF:3,685KB)を見ると、もっと的確なプログラム例(p.26)が示されていますよね。この記号の意味が分かるなら、あのフローチャートのようなものって必要でしたか?