Updated at: 2017-09-19
Software Enginnering
一般教養
用語 / 頭字語系
- 参考:コンピュータ略語一覧
- ACID 特性
- トランザクション処理の信頼性を保証する 4 つの性質
- 原子性 (Atomicity) : 処理が一部分だけ実行されたりしない
- 一貫性 (Consistency) : 整合性。処理前後でデータが矛盾のある状態にならない
- 独立性 (Isolation) : 処理の途中の状態を外部から観測できない
- 永続性 (Durability) : 処理完了時点でデータが保存され、障害時でも失われないこと
- トランザクション処理の信頼性を保証する 4 つの性質
分離レベル | Dirty Read | Fuzzy Read | Phantom Read | Lost Update | 処理速度 |
Read Uncommitted | 発生 | 発生 | 発生 | 発生 | 速い |
Read Committed | 起きない | 発生 | 発生 | 発生 | ↓ |
Repeatable Read | 起きない | 起きない | 発生 | 発生 | ↓ |
Serializable | 起きない | 起きない | 起きない | 起きない | 遅い |
※ Fuzzy Read は Nonrepeatable Read とも
- CRUD
- Create, Read, Update, Delete
法則系
- KISS の原則
- Keep it simple, stupid / シンプルに保てアホ
- YAGNI
- You ain't gonna need it / そんなの必要ないって(必要になるまでやるな)
- DRY原則
- Don't repeat yourself / 繰り返しを避けよ
- 何かのときにすっと出したい、プログラミングに関する法則・原則一覧 - Qiita
- デメテルの法則(最小知識の原則)
- ヴィルトの法則(ソフトウェアはハードウェアが高速化するより速く低速化する)
- ムーアの法則:ハードの性能 18 ヶ月 で 2 倍
- ゲイツの法則:ソフトの速度 18 ヶ月 で半分
- ブルックスの法則
- 遅れているプロジェクトへの要員追加は、プロジェクトをさらに遅らせる
- 9人の妊婦を集めても、1ヶ月で赤ちゃんを出産することはできない
- コンウェイの法則(組織構造がシステム設計に影響を与える)
- ホフスタッターの法則
- 常に予測以上の時間がかかる(ホフスタッターの法則を計算に入れても)
- 驚き最小の原則
- どちらかで悩んだら、よりユーザやプログラマが驚かない方を選ぼう
- ボーイスカウトの規則
- 来たときよりも美しく
- ハンロンの剃刀 - Wikipedia
- 無能で十分説明されることに悪意を見出すな
- 陰謀論より失敗論
- アムダールの法則
- あるプログラムの並列化による速度の向上は、プログラムの逐次処理部分によって制限される
- (並列化できない部分の処理が n 時間かかるなら、全体をいくら並列化しても n 時間より速くはできない)
設計の指針
- 設定より規約
- 規約を設けることで設定やパラメータの指定を減らせる
- もともとの意味は「開発者はシステムの慣例に従わない部分だけを指定する」
- こうすれば柔軟性も損なわれない
SOLID原則
- Single responsibility principle
- 単一責任の原則
- 開放/閉鎖原則
- オープン・クローズドの原則 (OCP : Open-Closed Principle)
- クラスは拡張に対しては open で、修正に対しては closed であるべき
- 振る舞いを追加可能であり、振る舞いの追加で既存コードは影響を受けないということ
- リスコフの置換原則
- LSP : Liskov Substitution Principle
- コード中である基本クラスが使われている場所は、そのどんな派生クラスでも置換可能であるべき
- インターフェイス分離の原則(ISP)
- Dependency inversion principle
- 依存関係逆転の法則
- 上位モジュールは下位モジュールに依存してはならない。どちらも抽象に依存すべき
- 参照を抽象クラス / インタフェースで持つ(具象クラスを参照しない)
- 具象クラスを継承しない
- 基本クラスで実装済みのメソッドをオーバライドしない
参考
定理
- CAP定理 - Wikipedia
- 分散システムでは以下の 2 つしか同時に満たせないという性質:
- C : Consistency (一貫性 / 整合性)
- A : Availability (可用性)
- P : Partition-tolerance (ネットワーク分断への耐性)
- ※ 実際には CAP はどれか 2 つと言うより、細かい粒度で様々な度合いを選べる:
- 分散システムでは以下の 2 つしか同時に満たせないという性質:
性質
尺度
テスト
キーワード
- 正常系、異常系、エッジケース
- カバレッジ
- αテスト、βテスト
- Feature Complete, Release Candidate
- 単体テスト、結合テスト、システムテスト、受け入れテスト、スモークテスト
- ドライバ、スタブ
- ホワイトボックステスト、ブラックボックステスト
エンジニアが使う言葉 / 慣用句
- Boilerplate code
- 自明だが省略できないお決まりのコード片
教訓系読み物
- ArticleS.TimOttinger.ApologizeIncode
- コードのコメントは謝罪である
あれ何だっけシリーズ
配列の操作
unshift -> [][][] <- push // 足すやつ
shift <- [][][] -> pop // 出すやつ
何とか互換
用語 | 英語 | 意味 | 例 |
上位互換 | Upper compatibility | 上位グレードの製品が下位の機能も有する | Pro 版は Lite 版の全ての機能を含む |
下位互換 | Lower compatibility | 下位グレードの製品でも上位機能(の一部)を有する | ゲームボーイカラーのゲームは GB でも(色は出ないが)動く |
前方互換 | Forward compatibility | 新しいシステムの規格を古いシステムでも使える | Excel 2016 で作成したデータが昔の Excel 2013 でも開ける |
後方互換 | Backward compatibility | 古いシステムの規格を新しいシステムが使える | ・Excel 2013 のデータは Excel 2016 でも開ける ・PS のゲームが PS2 で動く |
- 一般的なのは上位互換と後方互換