組込み開発と仕様と設計の重要性
私は長年、組込み開発に従事してきたベテランエンジニア.Tと言います。組込み開発を中心に、ソフトウェアエンジニアはどうあるべきか、など、日頃考えている事や感じた事をとめどなく書いてみようと思います。
新人組込み開発エンジニアのシステムテストでの失敗
私がプログラミングに慣れた頃の遥か昔のとあるお恥ずかしい話です。
ある日、リアルタイムオンラインシステムのトランザクションフォーマット変換を行う中枢の組込み開発プログラムの変更を任されました。変更の内容は、新しく追加されたトランザクションへの対応です。プログラムの変更と単体試験、結合試験を完了させて、システムテストを行うために本番環境に組み込んだまでは良かったのです。
システムテストを開始して間もなく先輩が怒鳴り込んで来ました。「おまえ、いったい何処を触った!!トランザクションが消えてしまうぞ!」
組込みプログラムでなぜか破棄されたトランザクション
先輩が騒いでいるトランザクションを調べてみると、何と不正トランザクションとして破棄されていたのです。もちろんそのトランザクションは有効なトランザクションです。
なぜ破棄されるかを調べていくと、私がプログラム変更中に関連する一部のコードが何のためのコードか理解できなくて、当初の設計と仕様を確認せず、また、先輩にも確認することなく、勝手に未使用の不要なコードと決めつけて、削除したことが原因でした。
改めて、プログラムの設計と変更仕様と削除したコード、そして件の入力トランザクションを見て、初めてそのコードの意味を理解したのです。
組込み開発のリファクタリングの難しさ
リファクタリングというと格好良いように聞こえますが、リファクタリングを行う場合、当初作成した設計を十分に確認し、変更前の設計や仕様や機能を十分に理解して進めるべきです。『素人が全体を理解せず局所だけを見てリファクタリングを行うべきではない』ということを身をもって体験した出来事でした。(反省)
組込み開発における設計と命名規則
もう一つ、組込み開発の設計と命名規則についてのお話です。
私がコンピューターメーカに入社し三か月間の集合研修が終わって、とあるプロジェクトに数名の同僚と共にOJT(On the Job Training、いわゆる実地研修)のために配属された頃のことです。
先輩より組込み開発における設計書と仕様書を渡されてプログラムの作成を指示されました。業務で実際に稼働させるためのプログラム仕様書ですが、初めてですのでシステム全体のことやその中での位置づけなど何も理解できていません。しかし先輩より何時までに動かすように、との指示だけはありました。それで、とにかく渡された仕様書とにらめっこしつつプログラミングを始めたのです。
組込み開発場面で関数名や変数名は何をつけても良い?
そのような状況で、同僚の一人がユーモアのセンスをひけらかそうと、関数名や変数名に彼が知っているあらん限りの女優やアイドルの名前を付け始めたのです。『馬鹿なことをしてるな』とは思いましたが、それがどのような結末を迎えるかまでは思いが至りませんでした。
プログラミングが終わってからの彼のデバッグは悲惨でした。ソースを追おうとしても関数や変数から何をやっているかが分からないのです。プログラムの版数を自動管理していましたが、その版数を見た先輩が「とうとうお前の彼女は二十歳を過ぎたな」と皮肉たっぷりな嫌味を聞かされていました。その後、先輩の指導の下、それらは機能に関連する名前に修正させられました。
プログラミングの教科書には、関数名や変数名はその機能を連想させる名前を付けるべきと書かれています。その重要性を彼は身をもって知ることになったようです。彼のドタバタを見て、私も『教科書は正しかった』と、図らずも納得してしまいました。
ちなみに、当社では組込み開発を始め、様々なシステム開発の相談、設計、実装を全国対応で行なっています。無料相談も実施していますので、お気軽にご相談ください。