3.8K Views
June 16, 22
スライド概要
自社勉強会の資料です。
要求をUSDMで仕様定義する際に感じたことを書きました。
組込みソフトウェアエンジニア。 技術バックボーンはC言語・ベアメタル。 CQ EVカートのオーナーで、ハード・ソフトウェアの改造を通じて自身のスキルアップを日々考え中・・・。 LAPRASポートフォリオ: https://lapras.com/public/k-abe GitHub: http://github.com/grace2riku Qiita: https://qiita.com/juraruming Zenn: https://zenn.dev/k_abe よろしくね。
組み込みソフトウェア基礎 【連続講座 #2】要求仕様を定義する 2022/6/16 パーソルテクノロジースタッフ株式会社 阿部耕二 [email protected]
目次 • 自己紹介 • 参加者一言コメント • 講座開催の背景・目的 • 本日のテーマ【要求仕様を定義する】 • 参加者感想 • 次回予告 2
自己紹介 • 阿部 耕二(あべ こうじ) • 技術本部 機電技術部 首都圏2G • [email protected] • 医療機器開発 • 組込みソフトウェア開発。C言語、ベアメタルの開発業務経験がほとん ど。 3
参加者一言コメント ご自由に一言コメントいただけますとありがたいです。 例) お名前 例) 今回の講座に期待すること 例) お仕事内容(話せる範囲で) 例) ソフトウェア開発担当工程(要求仕様の定義?設計?実装?テスト?) 4
講座開催の背景・目的 • なにかテーマを決めて、ソフトウェア開発の上流工程から下流工程まで説明 する講座を開催し、スキルアップを図る。 ■要求仕様の理解 資料・記事 ■要求仕様の仕様化 ★いまここ ■設計 ■テスト ■実装 5
講座開催の背景・目的 テーマ: 【既存組込み製品(CQ EVカート)の マイコンを移植する】 6
講座開催の背景・目的 テーマ:【既存組込み製品のマイコンを移植する】 対象装置:CQ EVカート 背景: ・講師が持っており、対象装置のドメイン知識を理解している。 ・ソフトウェアの構造を理解している。 ・対象装置のマイコンが新規採用非推奨品になった。 ⇛学習・スキルアップのため別マイコンに移植してみよう!!! 7
本日のテーマ 【要求仕様を定義する】 • まずは用語の定義から。 ・【要求仕様】 ・【仕様】 この用語をどう認識していますか? 8
本日のテーマ 【要求仕様を定義する】 この講座では次の定義をします。 ■【要求仕様】:装置・システムが実現したい目的 ● 〜したい、など要求を示す言葉で表現する。 ■【仕様】:要求仕様を実現するための具体的手段 ⇛仕様がソースコードになる。 9
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 10
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 11
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 【CQ EVカート】とは??? ・動画1: 走行中 ・動画2: 基板を拡大 過去に書いた技術書(EV カート 始めるモ ル ース開発)をベースに説明します。 記載箇所:【第1章 EVカートとは何か】 ベ デ で 12
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 テーマ:【既存組込み製品のマイコンを移植する】は次の前提とする。 ・派生開発(既にある装置でマイコンのみ変更) ・ハードウェアあり。電気的仕様確認OK。 ・旧マイコンでのソフトウェア資産あり。※GitHub, 資料 の各リンク ・個人開発(お仕事にも適用できるエッセンスはあるかと思います) 13
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 14
本日のテーマ 【要求仕様を定義する】 • 要求一覧 • マイコンを移植したい。 • ハードウェアの拡張に対応できるソフトウェア構造にしたい。 • TDD(テスト駆動開発)したい。 15
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 16
本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 要求が明確になったからといってすぐに仕様化することは難しい。 次の知識が必要だと思う。 1) 開発対象の構造・関係 2) 用語 3) 要求の目的・背景 4) その他 17
本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 1) 開発対象の構造・関係 ・メカと電気の関連 ・電気とソフトウェアの関連 ソフトウェアで電気的仕様のxx条件になるようプログラムすると、メ カがどう動くか、の知識。 ※この講座はこれが明確になっている前提とします。 18
本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 2) 用語 開発対象で使う専門用語・専門知識をまとめた用語集は有用と感じている。 開発者同士がコミュケーションし(会話ができる)、円滑に開発できるポイントと考える。 用語集があるメリット ・開発チームに新規参加するメンバーが早く馴染める。 ・用語集自体が会社の資産になるかもしれない。 ※今回作ってみた用語集の例 Webで検索すればわかる用語(例.CppUTest)は書かず、プロジェクトメンバーで共通認識を持ちたい用 語(例. 旧マイコン)を書いている。 19
本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 3) 要求の目的・背景 【要求】には目的・背景がある。 そこを理解しているか・否かが重要と思う。 ■要求の目的・背景を理解しているメリット 1) お客様が本当に求めるものがつくれる。 2) 設計の考慮漏れがなくなる。 3) 重点的にテストすべきポイントがわかる。 4) 2, 3の結果、開発の出戻り工数が少なくなる。 20
本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 3) 要求の目的・背景 要求の目的・背景を理解する難しさについて考えてみる。 ・要求の目的・背景を深ぼる工数がない。 ・要求の目的・背景を理解するのに時間がかかる。 ・要求の目的・背景をお客様から引き出すのにスキル(※)が必要。 ※対象装置の知識・ヒアリング・コミュケーション能力 21
本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 22
本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 次の要求をUSDMで仕様化していく。 1. マイコンを移植したい。 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 3. TDD(テスト駆動開発)したい。 23
本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 USDMの記載手順で特徴的だと思うところ ■要求に名前をつける ■要求を階層化する ■要求には理由を書く 24
本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 ■要求に名称をつける - 名前をつけることで仕様を特定しやすい(開発メンバーで会話しやすい。共通認識持ちやすい)。 - 仕様と検証の紐付けができる(このテストはこの要求から導かれたものという関係がわかる)。 1. マイコンを移植したい。⇛【PORTING01】 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 ⇛【SCALABLE01】 3. TDD(テスト駆動開発)したい。⇛【TDD01】 25
本日のテーマ 【要求仕様を定義する】 • 要求の仕様 ■要求を階層化する ■要求には理由を書く 26
本日のテーマ 【要求仕様を定義する】 • 要求の仕様 次の要求を仕様化していく。 ※今回書いたUSDMのリンク 1. マイコンを移植したい。 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 3. TDD(テスト駆動開発)したい。 27
参加者感想 • 是非とも講座の感想を一言お願いします。 28
次回予告 次回は【7/21(木) 19:30〜20:30】で開催予定です。 【連続講座 #3】仕様から概要設計する 今回定義した仕様からソフトウェアの分析・概要設計します。概要設計では 具体的な実現方法を意識せずに対象システムの本質を表すように気をつけて 設計したいと思います。 参加の方、是非ともよろしくおねがいします。 29
参考 ■USDMの入門 AFFORDD 派生開発推進協議会 T02:「USDM」の入門 ■USDMの仕様書の例 USDMで仕様書を書いてみた ページ冒頭のLEDキューブシステムUSDM仕様書は個人的に参考になりそうです。 30
終わり ご静聴ありがとう ございました。 31