はじめに
前回に続き、アーキテクトの教科書を読んで思ったことを書き連ねていきます。
第2章は「ソフトウェア設計」です。
要求分析
UMLのユースケース図が紹介されていましたが、要求分析のフェーズであれば、SysMLの要求図の使用を検討してみても良いでしょう。
CRCカード
CRCとは、Class(クラス)、Responsibility(責任)、Collaborator(コラボレータ)の頭文字です。
どうやら、複数人でクラス設計をするときに、カードで書いて、並べながら行うモデリング手法のようです。
一人でクラス設計する際は、私はよく、Mermaidのクラス図を書いています。
Notionだと、コードを書くと、即座に図も表示されるため、試行錯誤しやすいです。
4つの抽象レベル(上ほど抽象度が高い)
- アーキテクチャ設計
- モジュール設計
- コンポーネントの集合体
- ユースケースの実行に必要な機能を提供する
- 例:「注文モジュール」「在庫モジュール」「出荷モジュール」など
- コンポーネント設計
- DIコンテナの管理対象となる。Helperクラスを含む。
- 例:「注文コントローラ」「注文登録サービス」「注文リポジトリ」など
- クラス設計
本やネットでは「モジュール」と「コンポーネント」が様々な文脈で用いられることが多く、具体的な違いをイメージしづらかったのですが、本書ではこのように整理されていたため、一つの参考になりました。
ただし、Columnに記載されている通り、やはり文脈によって定義が変化するため、注意した方が良いですね。本書で提示されていた定義は一つの例として認識すると良さそうです。
CLEANコード
以下の頭文字の集合体です。
- Cohesive(凝集性)
- Loosely Coupled(疎結合)
- Encapsulated(カプセル化)
- Assertive(断定的)
- Nonredundant(非冗長)
本書で詳しい内容が説明されていました。
設計やソースコードレビューの際に意識すると良さそうです。