システム開発とは?
コードを書くだけでなく、 スケジュール作成や要件定義などをまとめて、「システム開発」と呼ぶ。
要件定義
システムの目的や最低限満たすべき条件を明確化する工程。
この段階で、発注者と開発者が話しあい、何を作るか方向性を決める。
要件定義をきちんと行わないと、不完全なシステムになってしまったり、障害が起きる可能性がある。
◎機能要件
システムが何をするか? 発注者がシステムに求める機能。
例:
「今回作るシステムはログイン機能を付けます!」
「登録したものを一時保存できる機能を付けます!」
◎非機能要件
システムの品質・条件。
例:
「一定時間ログインがないと、自動的にログアウトする」
「保存期間は○○日までとする」
「1秒以内に検索結果を表示する」
「平日日中はサーバー稼働率99.9%以上を保証する」
設計
建物を建てる時、同様事前に設計を考えておく。
抽象的なものから詳細なものへ…という順で書くので、
画面 ⇒ データ ⇒ アプリケーション と設計する。
◎画面設計
いきなりHTMLを書かず、画面の設計を事前に決めておく。
- 画面の流れ(どこからどこに転移するか)
- 入力する項目、表示項目、配置など
以下の図を書いて設計することが多い。
画面遷移図(UI Flows図)
:
画面間のリンクや操作の流れを視覚化する。
[ログイン画面] → [ユーザ画面]
↘︎ [エラー画面]
ワイヤーフレーム
:
画面内の要素配置を簡易的に表現する。
┌──────────────────┐
│ ログイン │
│ ┌────────────┐ │
│ │ ユーザー名 │ │
│ └────────────┘ │
│ ┌────────────┐ │
│ │ パスワード │ │
│ └────────────┘ │
│ [ログインボタン] │
└──────────────────┘
◎データベース設計
概念設計
:
これから作成するシステムで、どんな情報を管理するのか、ビジネス的な視点で整理する。
ER図(エンティティ・リレーションシップ図)
で表現される。
例:
「ログインシステムにはメアドがいるな」
「一時保存機能には作成日時が必要だな」
- 管理すべき「もの(エンティティ)」は何か?
- それにはどんな関係性(リレーション)があるか?
- それぞれの特徴(属性)は何か?
論理設計
:
概念設計をもとに、データベースとして実装可能な形に落とし込む。
どのようなカラム・テーブルにするか、テーブル設計を行う。
ER図
やテーブル定義書
を作成する。
物理設計
:
物理的領域や格納方法を決める