要件定義と基本設計やってみた

<h1>はじめに</h1>
要件定義と基本設計をするに至った経緯は、下記になります。<br>
・社内システムの新規設計<br>
・技術力の向上および技術力の維持<br>

<h1>実際にやってみた</h1>
要件定義では非機能要件や機能要件の定義。<br>
基本設計ではシステム方式設計、画面設計、DB設計、外部インタフェース設計を行いました。<br>
以下、各項目での作業内容になります。

<h2>要件定義</h2>

<h3>非機能要件定義</h3>
非機能要件定義では、可用性、性能・拡張性、運用・保守性、移行性、<br>
セキュリティについて定義する資料を作成いたしました。
<img width="600" src=https://products.sint.co.jp/hs-fs/hubfs/images/ober/blog/nonfunctionalrequirements-01.webp><br>
出典：<a href=https://www.ipa.go.jp/sec/softwareengineering/std/ent03-b.html>IPA『システム構築の上流工程強化（非機能要求グレード）』</a>
<h3>機能要件定義</h3>
機能要件定義では、以下の資料を参考に成果物を作成し必要な機能の洗い出しを行いました。<br>
<ul>
<li>
<b>業務機能構成表</b><br>
ビジネスプロセスから業務作業までを階層的に整理した資料になります。<br>
関係する業務の抜け漏れを防ぐために整理を行います。<br>
<img width="600" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629102/8eadd07c-3bf4-37b1-83d5-7224b054e058.jpeg><br>
出典：<a href=https://www.ipa.go.jp/publish/qv6pgp0000000wrt-att/000079352.pdf#page=397>IPA『ユーザのための要件定義ガイド 第2版』,p.386<a>
</li><br>
<li>
<b>ユースケース図</b><br>
システムで何ができるかを「ユーザー目線で」表現した図になります。<br>
「システムを利用する人の目線で」具体的にシステムを利用する場面を想定しながら、<br>
 作図を行います。<br>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629102/03d8b750-4f8b-e277-5d80-704098b66b52.png><br>
 出典：<a href=https://www.ipa.go.jp/archive/publish/qv6pgp0000000xkx-att/000005113.pdf#page=25>組込みソフトウェア開発における品質向上の勧め［設計モデリング編］,p.49<a>
 </li>
</ul>

<h2>基本設計</h2>

<h3>システム方式設計</h3>
システム方式設計では、以下の構成図を参考に作図を行い<br>
AWS上でどのような構成で立ち上げるかをなど決定いたしました。<br>
AWSでの構成図のため下記のサイトで作成を行いました。<br>
<a href=https://app.diagrams.net/>https://app.diagrams.net/</a>
<ul>
<li>
<b>ハードウェア構成図</b><br>
ハードウェア構成を明確にする資料です。<br>
メインフレームが少なくなってきた現在ではサーバ構成図とも呼ばれています。<br>
<img width="600" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629102/29ef9281-5f23-e183-2c60-24b6a4b88134.jpeg><br>
 出典：<a href=http://www.maff.go.jp/j/kanbo/joho/densi_seihu/d_densan_system/pdf/genko6.pdf>農林水産省『ハードウェア構成図』<a>
 </li><br>
<li>
<b>ソフトウェア構成図</b><br>
必要なOSやミドルウェアを明確にする資料です。<br>
各サーバ毎に導入するものを整理します。<br>
<img width="600" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629102/52797db1-6b37-1415-50c6-b26c95b83785.jpeg><br>
 出典：<a href=https://www.maff.go.jp/j/kanbo/joho/densi_seihu/d_densan_system/pdf/genko6.pdf#page=2>農林水産省『ソフトウェア構成図』<a>
 </li><br>
<li>
<b>ネットワーク構成図</b><br>
必要なネットワーク構成を明確にする資料です。<br>
機器ごとのIPアドレスの定義などを行います。<br>
<img width="600" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629102/6a2347e8-38fb-5e03-ea21-c8ade6bd4ad4.jpeg><br>
 出典：<a href=https://www.atmarkit.co.jp/ait/articles/0103/29/news003.html>@IT『トラブル予防は現状の把握から』<a>
 </li>
</ul>
<h3>画面設計</h3>
画面設計では、以下の資料を参考に成果物を作成しどのような画面が必要でどのようなデザインにするか、<br>
また入出力項目についてどのような入力規則や制限を設けるかなどを決定いたしました。<br>
<ul>
<li>
<b>画面一覧</b><br>
開発する画面の規模感が分かる資料になります。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2019/06/gamen-list01-1024x441.jpg><br>
 出典：<a href=https://www.ipa.go.jp/files/000004521.pdf#page=18>IPA『機能要件の合意形成ガイド～画面編～』,p.17<a>
 </li><br>
<li>
<b>画面遷移図</b><br>
画面の流れが分かる資料になります。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2021/02/cb6aaf4328ad1c51c22d7975f5432239.jpg><br>
 出典：<a href=https://www.meti.go.jp/meti_lib/report/H29FY/000059.pdf#page=79>経済産業省『LPガス保安技術者向けWebサイト 管理更新システム』,p.79<a>
 </li><br>
<li>
<b>画面レイアウト</b><br>
画面のイメージを共有するための資料になります。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2021/02/c37c543d572b6a21d27725f528c59b58.jpg><br>
 出典：<a href=https://thinkit.co.jp/article/17375>ThinkIT『令和時代の設計書の基本方針』<a>
 </li><br>
<li>
<b>画面入出力項目一覧</b><br>
画面の入出力を明確にする資料になります。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2019/06/gamen-in-out.jpg><br>
 出典：<a href=https://pm-rasinban.com/wp-content/uploads/2019/06/gamen-in-out.jpg>IPA『機能要件の合意形成ガイド～画面編～』,p.30<a>
 </li>
</ul>
<h3>DB設計</h3>
DB設計では、以下の資料を参考に成果物を作成し、<br>
どのようなテーブルが必要でそのテーブルには何のデータ型のカラムが必要で<br>
桁数は何桁必要なのかを定義しどのタイミングでどのテーブルにデータを、<br>
作成、更新、読取、削除を行うかも定義いたします。<br>
<ul>
<li>
<b>テーブル関連図</b><br>
システムで取り扱うテーブル関係が分かる資料になります。<br>
機能実現に必要なテーブルを書き出します。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2019/06/er.jpg><br>
 出典：<a href=https://www.ipa.go.jp/files/000004509.pdf#page=17>IPA『機能要件の合意形成ガイド～データモデル編～』,p.16<a>
</li><br>
<li>
<b>テーブル一覧</b><br>
前述したテーブル関連図をもとに、主要なテーブルを一覧にまとめた資料になります。<br>
一覧化することで何のテーブルがあるかを一目でわかるようになります。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2019/06/entity-list.jpg><br>
 出典：<a https://www.ipa.go.jp/files/000004509.pdf#page=20>IPA『機能要件の合意形成ガイド～データモデル編～』,p.19<a>
 </li><br>
<li>
<b>テーブル定義</b><br>
前述したテーブル一覧を元にテーブル内の主要なデータ項目を一覧にまとめた資料になります。<br>
機能実現に必要な項目を書き出します。<br>
<img width="600" src=https://pm-rasinban.com/wp-content/uploads/2019/06/entity-def-1.jpg><br>
 出典：<a href=https://www.ipa.go.jp/files/000004509.pdf#page=23>IPA『機能要件の合意形成ガイド～データモデル編～』,p.22<a>
 </li><br>
<li>
<b>CRUD図</b><br>
各テーブルの作成・参照・更新・削除を整理した資料で、<br>
機能漏れやデッドロックの防止が期待できます。<br>
<img width="400" src=https://pm-rasinban.com/wp-content/uploads/2021/02/RD-CRUD.jpg><br>
 出典：<a href=https://pm-rasinban.com/wp-content/uploads/2021/02/RD-CRUD.jpg>IPA『機能要件の合意形成ガイド～データモデル編～』,p.25<a>
 </li>
</ul>

<h3>外部インターフェース設計</h3>
外部インターフェース設計では、ISBNから書籍情報を取得するためのAPIについて<br>
外部のものを用いるためどのようなAPI を用いるかを定義しました。<br>
今回は下記のAPIを使用いたします。<br>
<a href=https://iss.ndl.go.jp/information/api/api-lists/thumbnail_info/>国立国会図書館サーチが提供する書影API</a>

<h1>最後に</h1>
要件定義から基本設計までを通してどのようなことを考え、<br>
どのように成果物に落とし込むかについて知見を深めることができました。<br>
今後、詳細設計からテスト工程の作業を行っていく中でも同様に<br>
知見を深めていければと思います。