オブジェクト指向開発でのUMLを活用した既存実装への追加機能開発のコツ

業務でソフトウェア開発をしていると,別のクラスで用意されているAPIにアクセスして既存実装に機能を追加する場面がけっこうある。

実際に2019年11月頃にC++の開発業務でこういう仕事に取り組んでいた。あれこれ調査して2週間くらいかかってどうにか実現できた。しかし,作業が終わってから振り返ると,改善点があったなと反省した。

以下のようにすればよかった。

オブジェクト指向開発での既存機能への別APIを使用した機能追加実装手順
  1. 関連するクラスのクラス図 (機能実装対象クラスと使用APIの提供クラス) を描いて,クラス同士の依存関係を整理する。
  2. メンバー変数やプロパティに,使用したいAPIのクラスを継承しているものがないか,ゲッターがあるかどうかの観点で注目する。
  3. ここで見つかれば,そのメンバー変数を使えばいい。
  4. なければ,一番近いところに実装する。

その時の作業では,クラス図を作成するところまでは行っていた。ただし,メンバー変数やメンバー関数が多く,メンバー関数は記述していたが,メンバー変数の記述を省いていた。まず,ここがダメだった。

そして,その後にクラス間の関係の観察が不足していた。調査を進めていくと,当初想定していたAPIではなく,本質的には別のAPIを使えばいいということが判明した。こちらの新しいAPIは実はクラス図上で関連が存在していたのだが,クラス図を振り返らなかったため,関連に気づくことができず,別のルートからのアクセスを調査を進めて,発覚が遅れてしまった。

せっかくUMTP L1の資格を取得して開発業務にUMLを取り入れたものの,まだまだ未熟だと感じてしまった。

こうした実業務を通じたノウハウは貴重なので,ここに記録して次回の参考にしたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です