MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

自動化システム開発のための要件定義入門


はじめよう! 要件定義 ~ビギナーからベテランまで

目次

はじめに

ロボットなどを使って、

自動化システムを開発する人向けの

要件定義の方法や、言葉の定義、作成物のリストなどをまとめておきます。

 

要望、要求、要件の違い

いろんな定義がありますが、自分が下記の定義が個人的に好きです。

英語 意味
要望 (User) Needs ユーザが最終的に実現したいこと
要求 User requirement 要望を実現するために、ユーザが具体的に実現したいこと
要件 System requirement 要求を実現するために、システムが実現すべきこと

qiita.com

youneedaken.hatenablog.com

要件の部分をもう少し噛み砕いて説明すると、

冒頭の書籍は要件をこのように定義しています。

要件とは: 依頼した人ができあがったものに対して「これならOKです」と言うために、「何がどうなればよいのか」ということを明確に定めたもの。

上記の定義に従って、これならOKです、と言うためには、

要望、要求、要件が明確になっている必要があります。

 

要件定義をするために準備すべきもの

基本的には、下記の資料を準備すると、自動的に要件定義を進めることができます。

1. プロジェクトやシステムの名称

まず、プロジェクトやシステムの名前をつけることが重要です。

ミーティング、ドキュメント、ソースコードなど全てにおいて、この名前が必要になります。

2. 5W1Hに基づくシステム概要

5W1Hに基づいて、システムの概要を定義すると全体像がわかりやすくなります。

  • Why: ユーザの要望はなにか?(要求と要件に関しては、後ほどまとめます)

  • What: 要求を満たすために、どのようなものをつくるか?

  • Who/Where: どこの誰がこれを使うのか?それによりどのような利益を得るのか?

  • When: 現時点でのユーザの納期はいつか?

  • How: どのような体制で開発を実施するのか?

3. ユースケース図

開発するシステムを真ん中において、そのシステムを使う人がどのように使うのかを列挙します。

システムのユーザには、システムの管理者や、3rd partyのシステムなども忘れないようにしましょう。

4. モジュール図

開発するシステムの簡単なモジュール(サブ機能)分割図を記述します。

5. 基幹技術リスト

下記のような、今回のシステム開発で利用する下記の基幹技術のリストを作ります。

  • フロントエンド側のプログラミング言語はなにか?

  • フロントエンド側の実装フレームワークはなにか?

  • フロントエンドとバックエンド間の通信プロトコルはなにか?

  • フロントエンドとバックエンド間の通信のデータフォーマットはなにか?

  • バックエンド側のプログラミング言語はなにか?

  • バックエンド側の実装フレームワークはなにか?

  • どのデータベースを使うのか?

6. 要求リストを作る

ユーザが求めている要求のリストをこのタイミングで作ります。

一度ですべての要求をすべて上げるのは難しいと思うので、

下記のユーザストーリーなどを作る際に新しい要求を思いついたら、

またこのリストに追加してきます。

またシステムのための要件は、最後に作るので、

この時点ではあくまでもユーザ視点での要求をまとめることに注力します。

 

7. ユーザーシナリオをつくる

前述の要求リストを元に、

その機能を使うユーザや、その機能の初期設定するユーザの

時系列の動きを決めるユーザーシナリオを作ります。

 

8. UI遷移図を作る

前述の各ユーザシナリオ毎に、

UIが絡むものに対しては、大まかなUI遷移図を作ります。

 

9. エンティティモデルを作る

ユーザシナリオがだいたい出来てくると、

必要なデータ(エンティティ)も明確になってくるので、

それを元にエンティティモデルを作ります。

この時点でちゃんと定義できる場合は、

ER図まで作成しても問題ありませんが、

最初のステップでは、データの分類を四角で作って、

関連するデータを矢印でつなげるぐらいでもOKです。

 

10. ワークセットリストを作る

先程のユーザシナリオと、エンティティモデルから、

ユーザがエンティティを操作する、ワークセットのリストを作ります。

そして、このワークセットとエンティティを縦と横に並べて、表を作り、

それぞれのワークセットをCRUD: (Create, Reference, Update, Delete)で分類し、

すべてのエンティティがワークセットによって抜けなく操作できることを確認します。

11. 要件リストの作成

最後に以上の検討結果を元に、最終的なシステム要件のリストや表を作成します。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com


はじめよう! 要件定義 ~ビギナーからベテランまで

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com