マネージャさん。今度、マイコンを使った組込みシステムを開発しなくてはならなくなりました。
そうですね。回路とソフトウエアの両方の知識が得られますね。エンジニアとして幅が広がるじゃないですか!
はい。
しかし、私は機械系エンジニアで、ソフトウエアのことは少しは分かるのですが、組込みシステム用ソフトウエア開発は初めてです。
私のグループ内にも組込みシステム用ソフトウエア開発の経験者おりません。
今のところ、外注さんに依頼しようかと思ってます。しかし、どこから手を付けていいのかわからずに困ってます。
そうですか。
では、初めて組込みシステム用ソフトウエアを開発するあなたに、私の経験から仕事の進め方についてお話したいと思います。
この記事では、組込みソフトウエア開発エンジニアでないエンジニア(例えば、機械系技術者、電機系技術者、物理・化学系技術者)が、初めて組込みシステム用ソフトウエアの開発を実施するときの仕事の流れについてお話します。
この記事では、組込みシステム用ソフトウエアを外注へ依頼するまでの仕事の流れについてお話するため、マイコン以外の周辺回路設計は完了している前提でお話します。
実際の開発の現場では、主要電子部品であるAD(アナログ・デジタル)コンバータや、その他周辺回路設計も進めます。しかし、 周辺回路設計のお話は省略し、別の機会でお話したいと思います。
マイコンで処理する範囲を考える
マイコンは、
センサからの物理情報や外部機器からの通信情報を入力し(入力)、
何かの処理をしたあと(処理)、
外部へ出力する(出力)
ものですね。これらの、入力、処理、出力をブロック図にしてみましょう。そして、マイコンでやってもらうこと、マイコンではやらせないことを明確にしましょう。
この段階で仕様書を書いてはいけません。。。やり直しが多くなってしまいます。
マイコンを選定する
あなたは始めてマイコンを使った組込みシステムを開発することになります。なので、マイコンメーカなんて知るはずもありません。
私は、機器開発エンジニアでした。開発する機器は、あまり高度な処理は必要はなかったですが、低消費電力、大量データ処理、小型(ADC内蔵等)のマイコンを選ぶ傾向が多かったです。
そのため、日本テキサス・インスツルメンツ合同会社(TI)、ルネサスエレクトロニクス株式会社(ルネサス)、STマイクロエレクトロニクス株式会社(STマイクロ)等を用いることが多かったです。
では、どのようにマイコンを選定していくのか。初心者のあなたがマイコンメーカホームページやカタログを眺めながら選定するのは得策ではありません。それは、初心者のあなたはマイコンに関する知識が圧倒的に不足しているからです(この記事はそのような方に向けて記載してます)。
その様な場合には、マイコンメーカの方にマイコンを選定してもらいましょう。私の場合は、上記の3~4社ぐらいのマイコンメーカの営業担当者さんと、商社の方に来場してもらい、先にまとめた、入力、処理、出力をベースにマイコンで実施したいことをお話しました。
そうすることにより、マイコンメーカは、取り扱っているマイコンで最も適したマイコンを選定してくれます(但し、単品装置等で1つのマイコンのみ使う場合は無理です。数がある場合にはメーカの人は対応してもらえます)。
また、複数社を同時に比較することで、最も安価なメーカを選ぶことができます。
本命のメーカの価格が他社に比べて高い場合には、価格交渉の材料になりますので、必ず複数社から相見積もりを取るようにしましょう。
プログラミング言語の選定
マイコンの選定が終わりました、組込みシステム用ソフトウエアの開発言語を選定しましょう。メーカ推奨の言語もあるかと思います。
しかし、外注さんの依頼が終了しソフトウエアが出来上がった後に、ちょっとした機能追加、仕様変更等があった場合、自分で実施した方がいいこともあります。
このような場合、あなたが今まで取り扱ったプログラミング言語、またはチームメンバーが扱ったことがあるプログラミング言語を選定することをお勧めします。
ドキュメント作成(仕様書類)
外注さんへ依頼するドキュメントを作成しましょう。
依頼の範囲を決める
今回外注さんに依頼したいと思っている組込みシステムは、あなたの付加価値の高い機器(装置)を実現するため手段ですね。
そのため、コアの技術(コアのアルゴリズム等)のプログラムがある場合には、あなた自身で記載するべきですね。あなたが作業するプロジェクトのコアとなる技術の範囲は、できるだけ外注さんにはブラックボックス化することで技術漏洩点からもお勧めします。
一方、外部への情報の入出力、基本的な信号処理、ハードウエアの制御等は、外注さんの経験が豊富であると推察できるところは全面的にお願いしましょう。
機能仕様書作成
機能仕様書を作成しましょう。初めて組込みシステムを開発される方には、マイコンで実現した機能を箇条書きで結構ですから書き出してみましょう。ここまでだけですと、
処理の流れなど、
具体的な組込みシステムの構成
は外注さん任せになります。途中で、全面的な設計変更のリスクがあるかもしれません。
そのため、フローチャートや状態遷移図などまで記載できるようであれば記載して指示できるようにしておいた方がいいです。
この機能仕様書の中には、”依頼の範囲を決める”でもお話しましたが、あなたがプログラミングする必要がある場合には、その点は明確に記載しましょう。
あなたがプログラミングするところは、たぶん、今の時点では曖昧(不確定)なところが多いと思います。不確定なアイテムが外注さんが担当するところに含まれると、開発費が大きくなる可能性があります。
そのため、外注さんにお願いするところ、自分でプログラミングするところは明確に分けるようにしましょう。
依頼する性能仕様書作成
性能仕様書を作成しましょう。
性能仕様で一番気になるところは処理時間になります。外部から信号がタイミングとその信号量、処理する時間と処理信号の量、外部へ信号を出力するタイミングとその信号量があります。すなわち、処理の時間が最もシステムを決めるうえで大きな影響を持つことになります。
そのため、一定の処理を実施するための処理時間を中心に記載するようにしましょう。
試験(検査)仕様書作成
上記の機能仕様書、性能仕様書に明記した機能および性能を確認するための項目、試験方法、期待する試験結果を記載し、外注さんに試験してもらうにしましょう。
提出ドキュメントリスト
外注さんが作成するドキュメントをリスト化しておきましょう。
例えば、
外部仕様書(取扱説明書等)、
内部仕様書(関数やデータ構造等が記載されているもの)、
フローチャート、
状態遷移図、
試験成績書
等が挙げられると思います。
外注さん調査、外注さんへの説明・見積もり依頼、外注さん選定
外注さんの調査
初めて組込みシステムを開発するためにあなたは、組込みシステムの外注さんなんて知るはずがありませんよね。その場合には、あなたの会社の購買部門に依頼して、過去(または今現在)、付き合いがある組込みシステムの外注さんを選んでもいいかと思います。
また、あなたの会社の購買部門で組込みシステムの外注さんと付き合いがない場合には、マイコンメーカが取り扱う商社の担当者に紹介してもらうてがあると思います。
マイコンメーカの商社さんは、マイコンの組込みシステムなどの問い合わせが外注さんからあるので、把握されていることが多いです。
少なくとも相見積もりを取るために外注さんは少なくとも3社にはお声がけをするようにしましょう。
外注さんへの説明・見積依頼
作成されたドキュメント類を外注さんに説明しましょう。その時に、外注さんからの指摘で不明瞭な点があった場合には、仕様書を見直しましょう(これによって仕様書作成能力が上がります)。また、的確に指摘をしてくれる外注さんは、技術力も高い可能性があるので、選定する際の評価のポイントとしてもいいかと思います。
説明が終わったら、
見積書(開発費・納期)、
計画書を各作業項目ごとにガントチャート
で提出してもらうようにしましょう。
外注さん選定
少なくとも3社からの見積もりがとれましたでしょうか?
見積もりが取れましたら、見積もり書を比較して、開発費、開発スケジュール、また、説明時の外注さんの理解度や提案力などを勘案して、決めるようにしましょう。
外注先の選定によりプロジェクトの可否が決まると言ってもいいので、選定には慎重に実施するようにしましょう。
ただ、開発費が特に安い会社に頼むことはリスクがある場合があります。技術力や提案力、組込みシステムソフトウエアの開発終了後のフォロー等を含めて総合的に決めてください。
依頼時に注意すること
秘密保持契約は結ぶこと
技術漏洩を防ぐためにも秘密保持契約を締結しておくことをお勧めします。
ソフトウエアの権利は自社にしておくこと
ソフトウエアの権利の帰属をあなたの会社にしておくことを、外注さんとの打ち合わせの時に取り決めしておきましょう。せっかく開発費を投じて開発しても、その権利は外注さんに会って、その外注さんだけでしか修正ができなくなることがあります。
自社でソフトを修正することも、別の外注さんへ変更することもできなくなることがあります。
権利を譲らない外注さんへの依頼は注意しましょう。
いかがでしたでしょうか?少し長い記事で退屈だったかもしれませんね。
次は、記事は、自社内に派遣のソフトウエア技術者を置いて開発するときの方法についてお話します。