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
88
組み込みソフトウェア基礎_【連続講座 #2】要求仕様を定義する
自社勉強会の資料です。
要求をUSDMで仕様定義する際に感じたことを書きました。
k-abe
September 01, 2022
Tweet
Share
More Decks by k-abe
See All by k-abe
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
23
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
46
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
300
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
430
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
310
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
60
テストからより良い組込みソフトウェア開発を考える
kabe
0
73
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則
kabe
1
400
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
kabe
0
260
Other Decks in Technology
See All in Technology
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
300
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
400
強いチームと開発生産性
onk
PRO
34
11k
TypeScript、上達の瞬間
sadnessojisan
46
13k
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Code Reviewing Like a Champion
maltzj
520
39k
GraphQLとの向き合い方2022年版
quramy
43
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Scaling GitHub
holman
458
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Being A Developer After 40
akosma
86
590k
Automating Front-end Workflow
addyosmani
1366
200k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
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