アジャイル開発での基本設計の流れ
はじめに
小規模アプリケーションの開発業務で基本設計を行なった際の手順や作成した資料についてまとめます。また、本記事の元となるプロジェクトではアジャイル開発を採用しており、ウォータフォール開発と比較するとドキュメントの数が少なくなっています。
【本記事の基本設計の範囲】
本記事では以下の工程を基本設計とし記述します
- 要件定義書をもとに機能の洗い出し
- 各機能をどのようなクラスで実現するかを分解
- 各クラスはどのような処理を担当するのか
- クラス間のデータフロー図
- クラス間のシーケンス図
【基本設計の流れ】
【機能の洗い出し】
要件定義書を元に要件を満たすアプリを作成するために必要な機能の洗い出しを行います。
ここでの機能はユーザから見た機能だけではなく、他のアプリから使用される機能なども含めて洗い出しします。
【機能分解】
洗い出した機能を実装可能なファイル単位まで分解します。
例えばDBのレコードの更新や削除を行う機能を1つの機能とするイメージで機能の分解を行います。ここで分解した単位でクラスとして実装するため、適度な細かさになるように分解する必要があります。個人的にはWordで記述する際に2行程度でクラスの説明が記述できる程度の細かさが適切だと思っています。以降この記事ではファイル単位のかたまりをクラスと呼ぶことにします。
【クラス概要】
【機能分解】で分解されたクラスごとに処理や場面などの概要を記述します。
ここで記述したクラス単位で詳細設計を行うことになると思うため、概要に全て記述しなくても良いと思いますが各クラスがどのような役割を持っているかはこの段階で明確にしておく必要があります。今回のプロジェクトではこのクラスの概要をまとめたものをクラス設計書としました。
【クラス間のデータフロー図】
【クラス概要】で作成した内容を元にクラス間のデータの流れを記載した図を作成します。
特にデータの型等は気にせずに日本語でデータの内容を記述します。
【クラス間のシーケンス図】
【クラス概要】や【クラス間のデータフロー図】の内容を参考にアプリの起動から一連の処理が完了するまでのクラスの呼び出しやコールバックの順番がわかるように記述します。
今回のプロジェクトではPlantUMLを使用してシーケンス図を作成しました。
PlantUMLについては参考サイトに公式のユーザガイドを載せていますのでそちらを見ていただけるとわかりやすいと思います。
【まとめ】
今回はアジャイル開発の中で行なった基本設計の流れについて書きました。実際のプロジェクトでは【機能の洗い出し】〜【クラス間のシーケンス図の作成】までを1通り実施した後に機能やクラスの不足を感じたらその手順に戻って実施する形で進めました。同じ基本設計でもプロジェクトによって求められる資料や手順は異なると思いますので、基本設計を行う際の参考の一つになればと思います。
Discussion