Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する
Search
k-abe
September 01, 2022
Technology
0
94
組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する
自社勉強会の資料です。
要求をUSDMで仕様定義する際に感じたことを書きました。
k-abe
September 01, 2022
Tweet
Share
More Decks by k-abe
See All by k-abe
【連続講座3】デザインパターンを学び、ソフトウェア設計に生かそう(Facade・Observer・State)
kabe
0
29
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
25
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
33
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
68
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
340
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
580
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
360
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
75
テストからより良い組込みソフトウェア開発を考える
kabe
0
120
Other Decks in Technology
See All in Technology
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
120
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
コンピュータビジョンの社会実装について考えていたらゲームを作っていた話
takmin
1
590
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
230
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
190
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
120
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
3
5.8k
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.5k
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
260
Featured
See All Featured
Facilitating Awesome Meetings
lara
52
6.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
We Have a Design System, Now What?
morganepeng
51
7.4k
A Philosophy of Restraint
colly
203
16k
Thoughts on Productivity
jonyablonski
69
4.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
It's Worth the Effort
3n
184
28k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Building Adaptive Systems
keathley
40
2.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Designing Experiences People Love
moore
140
23k
Transcript
ʲ࿈ଓߨ࠲ #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