とあるIT屋の独白

ITや経営について主に書きます

アジャイル開発における設計

アジャイル開発というと、ドキュメントもあまり書かないし、要件確認したらすぐ実装に入るという印象を持っている人もいると思います。これはこれで間違いではないのですが、ただチームやメンバーの成熟度によっては、このような開発を行って失敗するケースもあると思います。それはもちろん要件の落とし込みが不十分という点も要因として挙げられますが、個人的には設計がしっかり考えられてないという点も要因として挙げられるのではと考えています。というわけで今回は設計工程にフォーカスを当てて、アジャイル開発を考えてみたいと思います。
まず、アジャイル開発がどういうプロセスで、開発を進めていくかという点について。下記の記事の通り、要件定義・設計・実装・テストを短いスパンで回していくようなスタイルが基本になります。この繰り返しをイテレートと言って、長くても1ヶ月以内で回すように開発のトピックを設定することが肝になってきます。

udemy.benesse.co.jp


 アジャイル開発においても設計という工程は必要になってきますが、中々見過ごされるというかスキップされがちな部分と感じます。さて、そもそも設計とは何かということで少し設計の内容についても触れてみます。
アジャイル開発で大事になってくるのは、ウォーターフォールで言うところの「基本設計」と思います。もちろん、詳細設計もチームの成熟度によってはやるべき状況もありますが、ロジックやクラスの設計を考えてドキュメント起こすくらいなら、個人的には実装を始めてしまって良いと感じます。基本設計の概要について、下記の記事に書いてありますが、要件に従って機能や画面、テーブルなどを定めていきます。ここら辺が決まってない状態で開発を進めるのはアジャイル開発においても、あり得ないと思っていて、どういう形にせよきちんとメンバー間で認識がとれていることが大事だと思います。

www.zooops-japan.co.jp

 

実際にイテレートを回す単位で適切に開発を分割するには、事前の要件確認と設計を行ったり来たりして内容を詰めていく必要があると私は考えます。この作業を怠って、えいやでイテレートを進めることは愚策であって、開発工程の負荷が高まるかつ期限通りに開発を回せないということにつながると思います。

blog.sushi.money

 

不確実性が高い状態ではイテレートを回すことに注力するよりも、要件確認と基本設計に注力して決めるべきことを決めることに、プライオリティを置くべきと私は考えています。で、結局洗い出された機能や画面のうち何が大事で何から手をつけるのか、この認識がメンバーの間で共有できて、はじめて開発のイテレートがスタートするのかなと感じます。