【インターン日記】システム開発における要件定義って何?
こんにちは!ダイソンです。シリーズとしてやっていくインターン日記の第一弾 【インターン日記】システムエンジニアのインターンとしてベ ンチャー企業を選ぶまでに至った理由に、引き続き、第二弾は要件定義です!要件定義とは、システム開発をする上で最初に行う不可欠な工程です。
開発の流れは大まかに、
1 2 3 4 5 |
①要件定義 ②環境構築 ③データベース設計 ④コーディング ⑤エラーチェック、テストなどなど! |
となっているので一番最初の段階ですね!
今回はその要件定義とはなんなのか、また何故それをする必要があるのかということを説明していこうと思います(・∀・)ノ
要件定義とは?
何かを作るにあたって何故それを作るのか、これまでと比べてどれだけ便利になるのかということを定義することが必要ですよね!それを定義してからお客さんとの打ち合せなどをして掘り下げていって、どんな機能があったらよいか、またどんな技術やミドルウェアなどが必要なのかということをまとめていくのが要件定義です。
後にわかりますがこの作業はこれからデータベース設計やコーディングを行っていく中でこの工程が必要不可欠となっています。具体例がないとわかりにくいかと思うので、今回作った端末管理システムにおける要件定義を具体例として挙げたいと思います。
携帯・スマホ端末管理システムでの要件定義
問題点の発見
sonicmoovの社内では、スマホでもきちんと画面のレイアウトが整っているかどうかを確認するための端末(スマホやタブレット端末)が多数用意されています。
今までこれらの社内端末を借りる時には、端末を自分のデスクへ持っていく前に端末棚の横のノートに自分の名前と端末名、借りた日時を書き、逆に返却するときには借りるときに書いたノートの記述を横線で消すという作業をしていました。
つまり、、
1 2 3 4 5 6 7 8 |
<strong>借りる作業</strong> ①端末棚まで行く ②目的の端末があるか探す ③「あった!」->⑥へ 「ない。。」->ノートからその端末を誰が借りているか探す ④その端末を借りている人のところまで行く ⑤交渉するなりして借りる ⑥ノートに名前、借りる端末名、借りた日時を記入 |
1 2 3 4 |
<strong>■返す作業</strong> ①端末棚まで行く ②自分の記述を一生懸命探す、、 ③その記述を消す |
正直面倒臭いですよね(´Д`)~ハァー
ここからまず、現状の問題点を整理していきます。
1 2 3 4 |
<strong>■問題点の整理</strong> ①端末を探す時にまず3Fと2Fにある端末棚を見に行き、その目的の端末があるかどうかを探す手間がある ②端末が借りられている場合、誰が借りているかといったことがノートの記述をいちいち追わないとわからない ③面倒くさがってノートに書かない人が出てきたりすると、その端末が行方不明となり、誰が持っているのかを聞きに回るタスクが発生する |
はい。。現状不便すぎますね( ̄Д)=3
必要な機能の洗い出し
上記のような問題点を打ち合わせで持ち寄ってどうすれば便利かということを話し合うのがまず要件定義をする上での前提となります。そこから解決方法を探し、意見を出し合った結果どんな機能が必要かまとめると、
1 2 3 4 |
<strong>■必要な機能</strong> ①どの端末が今どこにあるのか(3Fか2Fの端末棚)がひと目でわかる機能 ②その端末が借りられているのかといった情報をひと目でわかる機能 ③上に挙げた機能が端末棚へ行かなくてもわかるようにする |
わりとシンプルになりました(≧▽≦)ゞ
これらの必要な機能から具体的な機能を検討し、文書に落としこんでいきます。必要な機能の①と②は端末を検索できれば解決できます。必要な機能の③はノートを用いずブラウザなどから端末一覧を見れれば自分のデスクから端末を探せるため解決できますよね。
システムの仕様決め
ようやく上記の必要な機能から仕様を考えます!!
1 2 3 4 5 6 |
<strong>■借りる作業</strong> ①自分のデスクからブラウザで借りたい端末を検索 ②「誰も借りてない!」->社員番号を入力し借りるボタンを押す。->④へ 「◯◯さんが借りてる。。」->その人にメールを飛ばすなりする ③メールで交渉し、その人に端末を棚へ返してもらう。 ④端末棚へ行って端末ゲット! |
1 2 3 4 |
<strong>■返す作業</strong> ①自分のデスクからブラウザで借りてる端末を検索(自分の名前で検索するとヒットする) ②返すボタンを押す ③端末棚へ返す |
あれ、、楽だっ( ゜Д゜;)!?これだ!!!
仕様を詳しく述べると端末を借りるときに社員番号を入力させ借りるボタンを押します。そしてシステムではその社員番号からユーザーの名前をとり、端末一覧画面に反映させることで誰がどの端末を借りているのかがわかります。
また、端末名、スペック、ユーザー名、借りているか借りてないかなどで検索できるようにすると楽に端末を探すことができます。返すときは返すボタンを押して楽々返却できます(めんどくさくない!!)。これで仕様が決まりました。
そして要件定義の最後はそのシステムを作るためにどんな技術、ミドルウェアが必要かまで行います。今回の端末管理システムは環境構築から自社で行うので、OS,Webサーバ、MySQL,PHPといったミドルウェアが必要であり、PHPでベタ書きするよりもフレームワークを用いたほうが可読性が上がるなど効率良く開発できるとのことから導入することにしました。
要件定義まとめ
端末管理サイトの要件定義のように問題を探し、そこから必要な機能を洗いだして、最後にその必要な機能を具体化して仕様を決める、といったプロセスを踏んで行くということで何か必要なシステムを作った時に、「この機能あればなぁ」というようなシステム上やはり必要であった機能を作っていなかったという抜けを減らすことができます。
つまり
良いシステムを作るには良い要件定義が必要
ってことです!!
要件定義という行程は授業などではなかなかしないと思うので実務で得られた良い経験でした。次回は環境構築について述べていきたいと思います。