4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

要件定義・設計の流れをなんとなく理解しておくだけでも全然違う!

Posted at

要件定義とは?

要件定義とは、発注者の要求を実現するために進め方をまとめたものです。
ここではしっかり発注者にヒアリングを行い、プロジェクトのゴールを定めるため、最終的に納品されるシステムのクオリティを左右する一番重要と言っても良い工程です。

主な流れ

STEP1:ヒアリング

まずは解決したい課題と目標を明確にしながらヒアリングを行なっていきます。ここが具体的であるほどに設計や開発がスムーズになります。
また、システム構造に関わる機能要件だけでなく、セキュリティなどの非機能要件も確実に確認しておくようにしましょう。

  • 機能要件
    • システムの機能に関する要件。
      • 例:案件一覧検索ができること、ログイン機能があること...etc
  • 非機能要件
    • 可用性、性能、拡張性、運用・保守性、セキュリティなど機能以外の要件。
      • 例:応答は3秒以内、同時アクセスはユーザー数の15%を想定する...etc

ここで業務フロー図やデータフロー図など、簡単な図で分かりやすくしておくのも効果的です。

STEP2:要求の細分化

ここから要求をヒアリングした後に、「実現可能か?」「コストは大丈夫か?」など問題点を深掘りして解決策を模索します。優先順位をつけたり代替案を考えたりして発注者と相談をしましょう。
5W2H(いつ?どこで?誰が?何を?なぜ?どうやって?いくらで?)を質問して明確にすることで問題が解決に向かいこともあるのでオススメです。

STEP3:要件定義書の作成

では、ここまでヒアリングしてきた内容を定義書に落とし込みます。
具体的には以下のようなことを書いておけば問題ないかなと思います。

  • システム概要や目的
  • システム導入後の業務フロー
  • 機能要件
  • 非機能要件
  • スケジュール
  • 見積もり(予算)

IT知識が少ない人が見る可能性も高いので、分かりやすい言葉を使うよう意識しながら作成しましょう。

設計とは?

設計とは、要件定義で決定された要件を実現するための項目を設計することです。
具体的には、以下のような項目の設計を行います。

  • システムが行う作業の範囲
  • システム利用者が手動で行う作業の範囲
  • システムに使用する機材、機器
  • システムに使用するソフトウェア、アプリケーション
  • 開発に使用する言語やフレームワーク

このように、システム方式設計では、開発するシステムのベースとなる内容を決定することが特徴です。
この工程での品質は後にかなり大きな影響を与えるので注意が必要です。

主な設計内容

1.ハードウェア・ソフトウェアの構成

システムを稼働させるためのハードウェア・ソフトウェアの構成・環境を決定する必要があります。
基本的には「オンプレミス」「クラウド」「ハイブリッド」の3種類からシステムを稼働させる環境を決めた後、詳細を突き詰めていきます。

2.ネットワークの構成

サーバーのネットワーク構成についても決定を行います。システムが安定して稼働できるように、適切なネットワーク構成・負荷分散・トラブルを想定した予備サーバーまで詳細に検討します。
システムを稼働させるハードウェアとネットワークは関連性が高いため、全体的な機能を考慮しつつセットで検討することが一般的です。
最近では、基本的にAWSで構築することが多いですかね(諸説あり)

3.開発言語の決定

設計では、どの開発言語を使用するかも決める必要があります。開発言語は複数ありますがそれぞれ特性が異なるため、開発するシステムに適した言語を多角的に分析したうえで選定を行うことが重要です。

開発言語は複数ありそれぞれに特徴がありますが、それを多角的に分析した上で選ぶようにしましょう。
具体的には、、

  • 開発期間
  • サポート
  • 作業効率
  • フレームワーク
  • バージョン

などを検討しておきましょう。

4.外部システムとの連携方式の決定

外部システムとの連携が発生する場合の連携方法・連携方式についても決定を行います。
開発するシステムの規模が一定以上となると、システム単体で完結することが難しくなるため、外部システムとの連携を行う必要性がでてくるためです。

5.画面(UI)

ユーザーは画面(UI)を通じてソフトウェアを利用するので、
まず最初に 『画面の使いやすさ』 を考えると良いでしょう。

  • 各画面で何ができるのか考える
  • 表示する情報(文字、画像 など)とレイアウト構成を考える
  • 画面遷移図にまとめる

ということをすればOKです。

6.機能設計

機能設計は 『実行する処理』『必要なデータ』 を定めます。

  • 機能名と処理内容
  • 処理に必要なデータ、データの取得元
    • 例:画面から入力、DBから取得...etc
  • 処理したデータの受渡し先
    • 例:画面表示、DBへ保存...etc

ここまでやればパッと見ただけでどんなプログラムを実装すれば良いかがわかるようになります。

7.データ設計

ここでは文字通り、扱うデータを設計します。

  • データの具体的な内容
    • 例:会員情報(名前、メールアドレス、パスワード)
  • データベース設計
    • 例:会員マスタ(name、email、password)

データベース設計ではER図を用いることでより分かりやすくなります。

参考

要件定義とは?進め方・必要スキル3つを簡単に解説【ITシステム開発に必須】

要件定義の流れ|失敗しないように進めるポイントと必要なスキル

システムの要件定義とは 基本の内容や進め方、必要な準備を簡単解説

システム方式設計とは?目的や書き方のコツ、注意するポイントについて解説

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?