はじめに
直近、rustを勉強してた際にプログラミングのそもそもについて調べてました。そこでこの本を見つけて読みました。
役に立ちそうな内容だったのでメモ書き程度で残したいと思います。
Architecture設計の目的
ゴールとしてビルド、メンテナンスに必要な人的リソースを最小限に抑えます。
根拠として用いられた図
- Growth of the engineering staff
- Productivity over the same period of time
- Cost per line of code over time
- Productivity by release
- Monthly development payroll by release
- Time to completion by iterations and use/non-use of TDD
>各図式を通してArchitectureの必要性を挙げている。
プログラミングパラダイム
- Structured-Programming:Structured programming imposes discipline on direct transfer of control.
- OOP(object-oriented):Object-oriented programming imposes discipline on indirect transfer of control.
- Functional-Programming:Functional programming imposes discipline upon assignment.
設計原則(SOLID)
- SRP:A module should be responsible to one, and only one, actor.
- OCP:A software artifact should be open for extension but closed for modification.
- LSP:Liskov Substitution Principle(INHERITANCE)
- ISP:Interface Segregation Principle
- DIP:Dependency Inversion Principle(ABSTRACTIONS, FACTORIES)
>Low-Level Principle.
コンポーネント原則
- REP:The Reuse/Release Equivalence Principle
- CCP:The Common Closure Principle
- CRP:The Common Reuse Principle
>High-Level Principle.
Architecture abstract static matrix
• I: Instability: I = Fan-out , (Fan-in + Fan-out).
• Nc: The number of classes in the component.
• Na: The number of abstract classes and interfaces in the component.
• A: Abstractness. A = Na ÷ Nc.
• D: Distance. D = |A+I–1|
>Target Architecture measture method.