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
達人に学ぶソフトウェアの構造と設計 29,30章
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kazuki
December 09, 2020
Technology
0
94
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki
December 09, 2020
Tweet
Share
More Decks by kazuki
See All by kazuki
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
80
達人に学ぶソフトウェアの構造と設計 9,10,11章
kazuki_ijima_ym
0
220
Other Decks in Technology
See All in Technology
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
350
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
200
Tebiki Engineering Team Deck
tebiki
0
24k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
Red Hat OpenStack Services on OpenShift
tamemiya
0
140
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
190
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Visualization
eitanlees
150
17k
Writing Fast Ruby
sferik
630
62k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
190
The Limits of Empathy - UXLibs8
cassininazir
1
220
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Site-Speed That Sticks
csswizardry
13
1.1k
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間でデータを移動しているに過ぎない
だけど、パフォーマンスはどうなの? • 気になるけど、下位レベルの関心ごと
小話