システムとは?
「目的を遂行するための体系や組織」と辞書には出てきます。
特にコンピュータの分野においては「何らかの目的・サービスのために、ソフトウェアやハードウェアを連携して構築されたコンピューター環境のこと」ぐらいの意味になるでしょう。
平たく言うと「問題解決のために集められたプログラムと機器の集団」です。
システム開発とは?
この「集団」を作ることになる訳ですが、既に有能なプログラムと機器が見つかっていればそれらを集めれば済みますし、そうでなければ作る必要が出てきます。この集団を作る人=システム開発する人は大きく2種類に別れます。
- 集団を集めるのに特化した人:SI (システムインテグレータ)
- プログラムを作るのに特化した人:デベロッパー
僕の印象ではデベロッパーをシステム開発と呼ぶことが多い印象です。
システム開発の流れ
「システム開発=プログラムを作る」のような印象を持っている人も多いと思いますが実際にはもっと大掛かりです。一般的な流れとしては次のような感じです。
- 営業・ヒアリング
- 何にかで困っているお客さんを見つける
- 問題課題を明確にする
- どうすればその問題を解決できるかを細分化していく
- 検証・提案
- FS(フィージビリティスタディ):技術的に可能なのか?経済的に現実的か?などを調査する。
- PoC(Proof of Concept):より具達的に調査する。試作品を作る場合もある。
- 提案書作成:問題課題をどの様に解決しその効果としては何が得られ、どれくらいの費用と期間がかかるかなど。
- 提案書と見積を提出
- 契約とプロジェクト開始
- 契約:提案書と見積にOKが出たらお互いの役割や業務の範囲、免責事項などを書面にして契約する。
- プロジェクト開始:工程表を作成し、メンバーを決め、それぞれの役割に割り振ります。
- 開発
- 要求定義:お客さんの要求を羅列して分類整理していく
- 外部設計:画面やデータ構造を決める
- 内部設計:プログラムの構造を決める
- プログラム開発:プログラムをガリガリ書く
- テスト・改修:バグを見つけては修正、修正、そしてまたテスト
- リリース
- ベータ版:ほぼ動くけどまだ完成していないから何か不具合が出るかもしれない。でも実際に使ってもらって修正点など教えてくださいね。
- 本番:やっと実際の業務で使われるようになります。
- 保守・サポート
- 保守:プログラムが動いているコンピュータやサーバのOSの更新やネットワークの構成変更への対応など、システムが正常に可動するように日々対応します。
- サポート:使い方でわからない点などを電話やメール、最近ではSlackなどで質問を受け回答します。
- バージョンアップ
実際にキーボードを叩いてプログラムを作るのは「4.4 開発 - プログラム開発」になります。
その前後には膨大な業務があるわけなのです。
そして、それらには人と時間がかかるのでシステム開発の費用は意外に高くなりがちなのです。
とは言ってもコレはあくまで一般論で、開発する組織が大きくなればなるほど、更に「社内承認」等のプロセスが増えることもありますし、開発する組織の規模が小さくなればプロセスが統合され短縮することもあります。その辺はまた次回お話します。