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
120
組み込みソフトウェア基礎_【連続講座 #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
87
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
60
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
61
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
100
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
450
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
820
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
460
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
100
テストからより良い組込みソフトウェア開発を考える
kabe
0
180
Other Decks in Technology
See All in Technology
MCP サーバーの基礎から実践レベルの知識まで
azukiazusa1
5
1.2k
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
900
GCASアップデート(202508-202510)
techniczna
0
260
ピープルウエア x スタートアップ
operando
1
3k
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
180
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
720
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
960
어떤 개발자가 되고 싶은가?
arawn
1
420
AIエージェントを導入する [ 社内ナレッジ活用編 ] / Implement AI agents
glidenote
1
150
今から間に合う re:Invent 準備グッズと現地の地図、その他ラスベガスを周る際の Tips/reinvent-preparation-guide
emiki
1
260
サブドメインテイクオーバー事例紹介と対策について
mikit
14
6.7k
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
900
Featured
See All Featured
Fireside Chat
paigeccino
41
3.7k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Thoughts on Productivity
jonyablonski
72
4.9k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Building Adaptive Systems
keathley
44
2.8k
Statistics for Hackers
jakevdp
799
220k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
KATA
mclloyd
PRO
32
15k
Keith and Marios Guide to Fast Websites
keithpitt
412
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