うまとま君の技術めも

2015年新卒入社した社畜の勉強内容などなど

アジャイル設計

アジャイル設計

アジャイル設計とはプロセスやイベント等の事ではない。ソフトウェアの構造や読みやすさを向上させるため、原則・パターン・プラクティスを継続的に適用する行為である。

ソフトウェアは時間が経つにつれ腐敗していく。汚いコードが溜まっていき、どんどんメンテナンスしづらくなってしまう。そうなると、ちょっとした変更でさえも大変な労力を必要としてしまう。

アジャイル開発者は可能な限りソフトウェアをきれいな状態に保ち、変更しやすい状態にしておく必要がある。だから、毎日、毎時間、毎分、ソフトウェアをリファクタリングする努力を怠ってはいけない。

設計の悪臭 - 腐敗するソフトウェアの兆候

次に示す傾向が1つでも現れたら、ソフトウェアが腐敗し始めた兆候である。

  1. 硬さ
  2. もろさ
  3. 移植性のなさ
  4. 扱いにくさ
  5. 不必要な複雑さ
  6. 不必要な繰り返し
  7. 不透明さ

硬さ

変更によって他の部分にまで影響が出てしまい、他の部分も変更を必要とする状態。
1つの変更で、依存しているモジュールを芋づる式に次々と変更しなければならないような場合を、設計が「硬い」という。

もろさ

変更によって他の部分が壊れてしまう状態。
モジュールのもろさが増すと、1つの変更でさえも予期せぬ自体を招くようになる。
もろいモジュールは、常にリファクタリングが必要とされるモジュールを探すと良い。

移植性のなさ

他のシステムでも役に立つ部分があった場合に、その部分を切り出すことが困難な状態。

扱いにくさ

ソフトウェアの扱いにくさと開発環境の扱いにくさの2種類がある。
変更をするときに、設計構造を維持しないやり方を選んだほうがやりやすいソフトウェアは「扱いにくい」。
設計構造を維持できるかどうかではなく、開発環境の非効率差を増やさないような変更をしたくなるソフトウェアは「扱いにくい」。

不必要な複雑さ

設計している時点で必要のない要素が含まれている設計は「不必要な複雑さ」である。
あとで必要になると思い、予め処理しやすい仕組みを取り入れておいた場合などに発生する。

不必要な繰り返し

同じようなコードが何度も現れるような状態。
システム内に重複しているコードがあると変更が大変になる。重複している箇所からバグが見つかった場合に同じような箇所を全て修正しなくてはならないのである。

不透明さ

わかりにくいモジュールは「不透明」である。
時間が経つにつれ、コードはどんどんと不透明になっていく。そういった不透明さを最小限に抑えるために常にリファクタリングする努力を怠ってはいけない。

設計を行う

  1. アジャイルのプラクティスに従って問題を発見する
  2. 設計の原則を適用して問題を分析する
  3. 適切なデザインパターン(設計パターン)を適用して問題を解決する

参考文献