Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
Technology
0
31
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
Tweet
Share
More Decks by kazuki
See All by kazuki
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
30
達人に学ぶソフトウェアの構造と設計 9,10,11章
kazuki_ijima_ym
0
87
Other Decks in Technology
See All in Technology
実験!カオスエンジニアリング / How to Chaos Engineering
oracle4engineer
PRO
0
130
GitHub 엔터프라이즈 어카운트 소개 및 엔터프라이즈 서버 구축 경험
posquit0
1
130
動画配信技術について
yaminoma
0
200
jaws-ug-asa-datasync-20220510
hiashisan
0
460
Deeplearning from almost scratch
hn410
0
580
AWS CloudShellという推しサービスについて / lt-20220502-jawsug-cli
becominn
0
630
一人から始めるプロダクトSRE / How to start SRE in a product team, all by yourself
vtryo
4
2.3k
New Features in C# 10/11
chack411
0
640
ニフティでSRE推進活動を始めて取り組んできたこと
niftycorp
2
180
Devに力を授けたいSREのあゆみ / SRE that wants to empower developers
tocyuki
3
440
開発者のための GitHub Organization の安全な運用と 継続的なモニタリング
flatt_security
2
2.7k
msal.jsのあれこれ
takas0522
0
1.4k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Automating Front-end Workflow
addyosmani
1351
200k
The Language of Interfaces
destraynor
148
20k
Building a Scalable Design System with Sketch
lauravandoore
447
30k
The Power of CSS Pseudo Elements
geoffreycrofte
46
3.9k
Side Projects
sachag
449
37k
Building Applications with DynamoDB
mza
83
4.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
From Idea to $5000 a Month in 5 Months
shpigford
372
44k
Web development in the modern age
philhawksworth
197
9.3k
Transcript
クリーンアーキテクチャ 達人に学ぶソフトウェアの構造と設計 29,30章 kazuki ijima
29,30章 クリーン組込みアーキテクチャ データベースは詳細
29章 クリーン組込みアーキテクチャ
ソフトウェアは消耗しないが、ファームウェアやハードウェアは時代遅れになる。 その結果、ソフトウェアの変更が必要になる。 ソフトウェアは消耗しないが、管理できていないファームウェアやハードウェアの依存関 係により、ソフトウェアが内部から破壊される可能性がある。
• ファームウェアは、ハードウェアの変化に対して、どれだけ依存しているかで変化し にくさが決まる • 依存の強いコードを書く = ファームウェアを書いているようなもの
適性テスト • ソフトウェアを構築する活動 ◦ 動作させる ◦ 正しくする(リファクタ、変更しやすく、理解しやすく ) ◦ パフォーマンスを高速化する
• 適性テスト ◦ アプリを動作させること ◦ アプリを動作させることだけに関心を持つプログラマは、 プロダクトに不利益を与えている Apptitude Aptitude
ターゲットハードウェアのボトルネック • HWは、SWやFWと同時に開発されることが多い ◦ 開発中はHWに欠陥があることが多い ◦ SWの開発は通常よりも遅くなる
ターゲットハードウェアのボトルネック • クリーン組込みアーキテクチャ = テスト可能な組込みアーキテクチャ • レイヤー ◦ 図29-1 ▪
HWは変化していく ◦ 全てのコードからHWの知識の汚染を取り除くものが存在しない ◦ SWとFWを混ぜるのはアンチパターン • ハードウェアは詳細 ◦ 図29-3 ◦ SW - FWの境界は、HW - コードの境界ほど明確ではない ◦ HAL(Hardware Abstraction Layer)
ハードウェアの詳細はHALのユーザに明らかにしない • クリーン組込みアーキテクチャのSWは、 ターゲットHWをオフにしたテストが可能 • プロセッサは詳細 ◦ 全てのSWはプロセッサに依存しないようにすべき。 FWにはそれができない ◦
例 • OSは詳細 ◦ 寿命を延ばすために OSの依存関係から身を守る ◦ 図29-5 ◦ OSAL(OS抽象化レイヤー)
インターフェイスに対するプログラミングと代替可能性 • 主なレイヤーにHALやOSALを追加するだけでなく、これまでの原則を適用するべ き • このタイミングで説明する内容??
DRYな条件付きコンパイル命令 • 代用可能性 ◦ 組込みのC/C++のプログラムが複数のターゲットや OSを扱う方法 • HALを使うといい
30章 データベースは詳細
• データベースはエンティティではなく、詳細 ◦ データベースはデータモデルではない ▪ データベースはソフトウェアに過ぎない ▪ データアクセス機能を持つ道具に過ぎない
リレーショナルデータベース • 普及した ◦ 素晴らしいもの • ただし、アーキテクチャの円の外側 ◦ 単なるテクノロジーの一つに過ぎない ◦
あくまで詳細
なぜデータベースシステムが普及しているのか? • 素晴らしい点 ◦ ディスクの進化 ▪ 小ささ ▪ 容量 ◦
欠点である、ディスクの遅さを軽減する方法がある ▪ ファイルシステム ▪ リレーショナルデータベース
もしもディスクがなかったら? • ディスクはRAMに取って代わられつつある ◦ ? • ディスクが絶滅した場合 ◦ ? ◦
次の節に繋がる
詳細 • データベースは、ディスクとRAM間でデータを移動しているに過ぎない
だけど、パフォーマンスはどうなの? • 気になるけど、下位レベルの関心ごと
小話