組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する_20220826_connpassイベント版

1.2K Views

August 26, 22

スライド概要

2022.8.26 Connpassイベント(※1)の資料です。
組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する(※2)をベースに次を変更。
・p27 エクスモーションの動画リンクを追加
・p28 LEDキューブシステムUSDM仕様書のリンクを追加

※1
#2 【連続イベント】組込みソフトウェア基礎 #2〜要求を仕様化する〜
https://k-abe.connpass.com/event/256632/

※2
組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する
https://www.docswell.com/s/juraruming/KVYP4K-2022-06-16-211650

profile-image

組込みソフトウェアエンジニア。 技術バックボーンは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 よろしくね。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

組み込みソフトウェア基礎 【連続講座 #2】要求仕様を定義する 2022/8/26 Connpassイベント版 2022/8/26 パーソルテクノロジースタッフ株式会社 阿部耕二 [email protected]

2.

目次 • 自己紹介 • 講座開催の背景・目的 • 本日のテーマ【要求仕様を定義する】 • 次回予告 ※前回資料からの変更点を赤三角マーク△で示します。 2

3.

自己紹介 • 阿部 耕二(あべ こうじ) • 技術本部 機電技術部 首都圏2G • [email protected] • 医療機器開発 • 組込みソフトウェア開発。C言語、ベアメタルの開発業務経験がほとん ど。 3

4.

講座開催の背景・目的 • なにかテーマを決めて、ソフトウェア開発の上流工程から下流工程まで説明 する講座を開催し、スキルアップを図る。 ■要求仕様の理解 資料・記事 ■要求仕様の仕様化 ★いまここ ■設計 ■テスト ■実装 4

5.

講座開催の背景・目的 テーマ: 【既存組込み製品(CQ EVカート)の マイコンを移植する】 5

6.

講座開催の背景・目的 テーマ:【既存組込み製品のマイコンを移植する】 対象装置:CQ EVカート 背景: ・講師が持っており、対象装置のドメイン知識を理解している。 ・ソフトウェアの構造を理解している。 ・対象装置のマイコンが新規採用非推奨品になった。 ⇛学習・スキルアップのため別マイコンに移植してみよう!!! 6

7.

本日のテーマ 【要求仕様を定義する】 • まずは用語の定義から。 ・【要求仕様】 ・【仕様】 この用語をどう認識していますか? 7

8.

本日のテーマ 【要求仕様を定義する】 この講座では次の定義をします。 ■【要求仕様】:装置・システムが実現したい目的 ● 〜したい、など要求を示す言葉で表現する。 ■【仕様】:要求仕様を実現するための具体的手段 ⇛仕様がソースコードになる。 8

9.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 9

10.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 10

11.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 【CQ EVカート】とは??? ・動画1: 走行中 ・動画2: 基板を拡大 過去に書いた技術書(EV カート 始めるモ ル ース開発)をベースに説明します。 記載箇所:【第1章 EVカートとは何か】 ベ デ で 11

12.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 テーマ:【既存組込み製品のマイコンを移植する】は次の前提とする。 ・派生開発(既にある装置でマイコンのみ変更) ・ハードウェアあり。電気的仕様確認OK。 ・旧マイコンでのソフトウェア資産あり。※GitHub, 資料 の各リンク ・個人開発(お仕事にも適用できるエッセンスはあるかと思います) 12

13.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 13

14.

本日のテーマ 【要求仕様を定義する】 • 要求一覧 • マイコンを移植したい。 • ハードウェアの拡張に対応できるソフトウェア構造にしたい。 • TDD(テスト駆動開発)したい。 14

15.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 15

16.

本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 要求が明確になったからといってすぐに仕様化することは難しい。 次の知識が必要だと思う。 1) 開発対象の構造・関係 2) 用語 3) 要求の目的・背景 4) その他 16

17.

本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 1) 開発対象の構造・関係 ・メカと電気の関連 ・電気とソフトウェアの関連 ソフトウェアで電気的仕様のxx条件になるようプログラムすると、メ カがどう動くか、の知識。 ※この講座はこれが明確になっている前提とします。 17

18.

本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 2) 用語 開発対象で使う専門用語・専門知識をまとめた用語集は有用と感じている。 開発者同士がコミュケーションし(会話ができる)、円滑に開発できるポイントと考える。 用語集があるメリット ・開発チームに新規参加するメンバーが早く馴染める。 ・用語集自体が会社の資産になるかもしれない。 ※今回作ってみた用語集の例 Webで検索すればわかる用語(例.CppUTest)は書かず、プロジェクトメンバーで共通認識を持ちたい用 語(例. 旧マイコン)を書いている。 18

19.

本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 3) 要求の目的・背景 【要求】には目的・背景がある。 そこを理解しているか・否かが重要と思う。 ■要求の目的・背景を理解しているメリット 1) お客様が本当に求めるものがつくれる。 2) 設計の考慮漏れがなくなる。 3) 重点的にテストすべきポイントがわかる。 4) 2, 3の結果、開発の出戻り工数が少なくなる。 19

20.

本日のテーマ 【要求仕様を定義する】 • 要求を仕様化する準備 3) 要求の目的・背景 要求の目的・背景を理解する難しさについて考えてみる。 ・要求の目的・背景を深ぼる工数がない。 ・要求の目的・背景を理解するのに時間がかかる。 ・要求の目的・背景をお客様から引き出すのにスキル(※)が必要。 ※対象装置の知識・ヒアリング・コミュケーション能力 20

21.

本日のテーマ 【要求仕様を定義する】 • テーマの前提説明 • 要求一覧 • 要求を仕様化する準備 • 要求の仕様化 21

22.

本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 次の要求をUSDMで仕様化していく。 1. マイコンを移植したい。 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 3. TDD(テスト駆動開発)したい。 22

23.

本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 USDMの記載手順で特徴的だと思うところ ■要求に名前をつける ■要求を階層化する ■要求には理由を書く 23

24.

本日のテーマ 【要求仕様を定義する】 • 要求の仕様化 ■要求に名称をつける - 名前をつけることで仕様を特定しやすい(開発メンバーで会話しやすい。共通認識持ちやすい)。 - 仕様と検証の紐付けができる(このテストはこの要求から導かれたものという関係がわかる)。 1. マイコンを移植したい。⇛【PORTING01】 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 ⇛【SCALABLE01】 3. TDD(テスト駆動開発)したい。⇛【TDD01】 24

25.

本日のテーマ 【要求仕様を定義する】 • 要求の仕様 ■要求を階層化する ■要求には理由を書く 25

26.

本日のテーマ 【要求仕様を定義する】 • 要求の仕様 次の要求を仕様化していく。 ※今回書いたUSDMのリンク 1. マイコンを移植したい。 2. ハードウェアの拡張に対応できるソフトウェア構造にしたい。 3. TDD(テスト駆動開発)したい。 26

27.

1 本日のテーマ 【要求仕様を定義する】 ▪2022/8/26 Connpassイベント用追記部分 ●USDMを使えば綺麗にわかりやすく要求仕様を定義できると思っていた。 仕事で日常的に使っているわけではないので考えが甘かった。 USDMの特徴の説明、使いどころについてわかりやすい動画があったの で共有する。 エクスモーション/eXmotionさんのイベントページのこちらの動画 こちらの動画は非常にわかりやすいので最初から見ることをおすすめし たい。 個人的には再生時間19:25あたりの【手法の使い分け】が非常に参考になっ た。USDMの特徴を理解し、使うことの重要さに気づけた。 27

28.

1 本日のテーマ 【要求仕様を定義する】 ▪2022/8/26 Connpassイベント用追記部分 ●今回のUSDM記述は整理して書けていない実感がある。Webに個人的に組 込み装置のお手本となりそうなUSDMを見つけたので紹介する。 ・USDMの仕様書の例 USDMで仕様書を書いてみた ページ冒頭のLEDキューブシステムUSDM仕様書 きちんと書くべき内容を章にして、何の仕様について書いてあるのか、 が図を使いわかりやすく表現されている。 28

29.

1 ディスカッション 今回のテーマ【仕様を定義するには?】について自由なディスカッション ティスカッションテーマの例) ・要求から仕様を定義する際に気をつけていること ・要求から仕様を定義する際にこんな手法を使っている ・要求から仕様を定義する際にこんな失敗をして開発終盤で大幅な出戻 りがあった ・仕様化の漏れを少なくする技術・手法としてこんなことを実践している ・具体的手法(こういう取り組みをしたら取り組み前と比べて不具合の発 生頻度が劇的に少なくなった、など) ・具体的手法の事例(私のチームではデシジョンテーブル、状態遷移図と 状態遷移表の併用、その他を使い考慮漏れを少なくする努力をしてい る、など) ・その他 29

30.

参考 ■USDMの入門 AFFORDD 派生開発推進協議会 T02:「USDM」の入門 ■USDMの仕様書の例 USDMで仕様書を書いてみた ページ冒頭のLEDキューブシステムUSDM仕様書は個人的に参考になりそうです。 30

31.

終わり ご静聴ありがとう ございました。 31