レビュー:現場がわかる組込みソフトウェア開発【ソフトウェア開発】

現場がわかる組込みソフトウェア開発


正にタイトル通り、組込みソフトウェア開発の現場がわかる本でした。
少し現場を経験した状態で読んだため、すんなり理解できました。
ぽつぽつと欠けていた部分の知識
セマフォリアルタイムOSなど)を補完することができ
これまでの経験を本書で一本につなげることができたように感じます。
組込みソフトウェア開発の新人(またはなる人)は読むべき本だと思います。

特徴として、「どのようにスキルアップしていくのか」という順で進行するため、
本当に当時私が疑問に思った順番にいろいろ説明してくれることになりました。
そして、出口さん(著者)と私のいる会社は異なるはずなので、
組込みソフトウェア開発の現場ってどこもだいたい同じような感じなのかとも思いました。

具体例に関してもわかりやすく、自分の理解確認になりました。

そして、現場の実際だと、本質は同じであっても規模が大きくなるので
なかなか上手くいかないんだよなぁと思ったりもしました。
仕様書ファイルがいっぱい、ファイルの中身もページがいっぱいみたいになっているので、
欲しい情報はわかっているけど、どこにファイルあるの?どこ見れば良いの?とかあったりします。
こういうときは先輩に聞いている状態です。。。

幕間にColumnがあるのですが、ここの記述も
ためになりました。現場にいた方の言葉で非常に納得感があり勉強になりました。

以上、いろいろ書きましたが素晴らしい本でした!
 //相互に項目の参照がされていますが、
 //ページ数も併記してくれると嬉しいなって思いました。
(宙花こよりさんのイラストもかわいくて良かったです)

以下、まとめです。

はじめに
 組込みエンジニアは「設計・プログラミング・テスト」ができる人
 組込みプログラマは「プログラミング・テスト」ができる人
  ※自分は組込みプログラマ状態なので、あと1年でエンジニアにならないといけないような気がします。

一章 組込み開発現場に入る前に(最初の疑問)

 新人が開発に参入するタイミングは、プログラミング開始~テスト
  ※はい、私もそうでした。

 いつ発生するかわからないイベントをきっかけとし、
 決められた制限時間内に決まった制御を行える性質を「リアルタイム性」といいます。
  ※こういう丁寧な説明が随所にあり、素敵です。
 
 タスクとはリアルタイムOS上で動作する仮想的なCPUのことで
 引数と戻り値がない関数です。呼び出しができません。

 タスクは呼び出せないので「起動」する。
 タスクを起動するためにシステムコールを利用する。

二章 プログラミングとテスト(プログラマの視点)

 タスクの状態遷移
  ディスパッチ:実行可能状態となったタスクのうち、
         CPUを使う権限をもつタスクが実行状態へ移動するときの矢印

  プリエンプト:あるタスクが実行状態のときに、
         そのタスクより優先度の高いタスクが実行可能状態で入ってきたときなど
         実行が中断される際に辿る矢印

 タスク優先度は小さい方が優先度が高い

 割り込みとは「優先的に実行される処理」
 
 割り込み線に対応する関数が用意されていて、そこに処理を記述する。
 このそれぞれの処理を「割り込みハンドラ」と呼ばれる。

 なぜ「割り込み」が必要なのか
 →事前に「このタイミングで実行する」というふうにプログラミングしておくこができないため

 リアルタイムOSプログラミングで気をつけることは
 いつ割り込みが入っても制御が成り立つようにしておくこと

三章 内部設計とプログラム設計(エンジニアの視点)

 要求分析を行う上で必要な視点は
 「異常時に、どうすればよいか」という視点。

 階層構造のルールを適用し、ルールを守って実装すれば、
 処理の抜けや漏れが発生しにくくなる。

四章 チームのリーディング(チームリーダーの視点)

 チームリーダーの仕事は
 「コミュニケーションを図ること」「後輩を育成すること」 

 何度か開発経験を経た人材は「何が起きるか」のノウハウを持っている。
 ※起きたことはしっかりと記録する。

 チームリーダーになるには
 自分の70%の仕事ができる後輩を3人育成してください。

 開発現場で欲している人材は
 リーダーシップを発揮できる(マネジメントスキルをもつ)技術者です。

 「やってみせて」「させてみせて」「褒める」の3ステップ
 もともとは上杉鷹山山本五十六の言葉が大元と言われています。

 
 システムテストのバグ原因究明は、できの悪いクイズを解くようなもの

 組込みエンジニアは、電気・機構にもある程度精通していなければならない。

 

現場がわかる組込みソフトウェア開発

現場がわかる組込みソフトウェア開発