IT関係の仕事に関わっている人ならば、システム構築という言葉をどこかで聞いたことがありますよね。とくにエンジニアは、現場で働いてシステムを実装する側なだけであってシステム構築について聞いたことのある人が多い傾向でしょう。一方で、エンジニア以外はあまり馴染みがなく、聞いたことがない、もしくは聞いたことを忘れていることもあるかもしれません。
しかし、非エンジニアだけでなくエンジニアであっても、なぜシステム構築が必要なのか、システム構築ではどんな流れなのかについてはあまり知らないといった人もいるでしょう。システム構築について知っておけば、自社でシステム開発を行う、あるいはシステム会社に依頼する場合でもスムーズに開発の話を進められるに違いありません。
そこで今回は、システム構築について、その意味や流れについて解説します。まずは、システム構築が指す「システム」とはなんであるのか説明しましょう。
システムとは、その種類も合わせて解説
IT用語辞典バイナリでは、システムとは
「複数の要素が体系的に構成され、相互に影響しながら、全体として一定の機能を果たす何物かのこと」
引用:IT用語辞典「システム」
と説明されています。システムは一般用語としても用いられますが、IT用語ではより限られた範囲を意味します。一般的にコンピュータ関係のハードウェアやソフトウェア、OS(オペレーティングシステム)、周辺機器などさまざまなものを指し、複数のものが複数の階層でつながり、ある機能を持つようになったもの、といえるでしょう。
IT業界におけるシステムは構築環境(開発環境)に応じるとWeb系、汎用系、オープン系にわけることができます。この分類の仕方は切り口によって異なりますが、それぞれ解説しましょう。
Web系システム
その名の通りWeb上で動作するシステムのことです。主にECサイトやSNSで活用されており、ユーザー閲覧者に必要な情報を提供したり、Webページを高速で表示させたり、などをします。
汎用系システム
汎用機と呼ばれる、汎用的に処理できる大きなコンピュータを使って構築されるシステムのことを指します。現在はコンピュータの小型化により、パソコンでシステム構築をおこなうことも増えていますが、大規模であったり、古くからある企業だったりする場面では汎用機でのシステム構築が見られるでしょう。
オープン系
業務効率化やコストダウンなど、おもに業務系のシステムのことです。ユーザーである企業がどのような環境で業務をおこなっているかに応じてシステムを構築していくので、自由度が高いという特徴があります。
このように、一口にシステムといっても意味や種類はさまざまです。では、なぜそもそもシステム構築をするのか気になりますよね。次に、システムを構築する意義について解説します。
システムを構築する意義
そもそもシステム構築とはどういう意味かというと、システムの設計から実際に動作させるまでの流れを指します。現在は「システム開発」とほとんど同じように使われることが多いです。つまりシステムを構築する意義は、システムの流れを決める、システムそのものを作る、という2つにわけられます。
システムの流れを決めることの意義は、効率的に作業が進められる、ということがあげられます。例えば学校の試験勉強や受験勉強で計画を立てて勉強をした方が効率的ですよね。同様にシステムの構築でも、顧客にヒアリングしたり、逆算して納期を決めたりすると、より効率的にシステム作りを進めることができます。
一方システムそのものを作る意義は、経済や社会に良い影響を与えること。新しいシステムができれば、企業の業務効率化や売上の増加へとつながるでしょう。また、公益性の高いシステムならば、社会生活を送る人々がより豊かな生活を享受できるようになるに違いありません。
システムを構築する意義がわかったら、実際にどのようにシステム構築を進めていくのか知りたいですよね。続いてシステム構築の流れについて解説します。
システム構築の流れ
システム構築はいくつかの工程にわけられ、各解説本やWebサイトでの説明も少々異なります。今回は、要件定義、基本設計、詳細設計、コーディング・開発、各種テスト、納品、保守・運用の7つにわけてシステム構築の流れを解説しましょうす。
要件定義
顧客からヒアリングをおこない、やりたいことをシステムでどのように実現するか明確にする工程です。ここでは、システムになにを実装するのか、開発コストや開発期間をどの程度にするのか決定します。のちほど詳しく説明しますが、最重要の工程といって良いでしょう。
基本設計
システム設計の第一段階です。ここでは、要件定義をもとにシステムの概略を決定し、仕様書に落とし込みます。この段階での仕様書はコーディングできるほど詳細な仕様書ではなく、非エンジニアでもわかりやすい状態の仕様書です。
詳細設計
システム設計の最終段階です。ここでは、基本設計で作った仕様書をもとに、コーディングできるほどの詳細な仕様を決定します。例えばエラー時の処理や文言といった部分まで決めるのが詳細設計です。
コーディング・開発
実際の開発です。詳細設計で作った仕様書をもとにプログラミングをおこない、プログラムを実際に作り上げます。
各種テスト
仕上がったプログラムが使用を満たしているかチェックをおこなう工程です。テストは、プログラム単位でおこなう単体テスト、複数のプログラムを組み合わせておこなう結合テスト、すべてのプログラムを組み合わせてシステム全体を対象におこなうシステムテストなどにわけられます。
納品
システムを顧客に納品する工程です。システムを実際に使うコンピュータに組み込みます。
保守・運用
システムは、納品して終わり、ではありません。システムの改善や不具合への対処をする保守や、システムの動作を確認したり、顧客からの質問に答えたりする運用も大事な工程です。
これがシステム構築の大きな流れになります。そして、この流れの中で重要なのが要件定義。それはなぜなのか、次に解説します。
システム構築において、「要件定義」が重要な理由
システム構築で要件定義が重要なのは、もっとも上流にある工程だからです。要件定義でしくじってしまうとその後の工程に影響が出たり、最悪の場合、再度要件定義に戻ってしまったりすることも。
そのため、要件定義ではシステム化の必要性や、システムの役割やシステムに期待されること、なにをどの程度システムに実装するのかの決定をきちんとおこなうことが要求されます。そして、これらを達成するためには、入念なヒアリングやすり合わせが必要です。
要件定義の重要性がわかったところ、では実際にシステム構築はどのように進められるのか気になりますよね。続いて、システム構築の手法について解説します。
システム構築の手法
システム構築をより良くおこなうために、さまざまな手法が編み出されています。とくに使われているのが、ウォーターフォールモデル、アジャイル開発、プロトタイプモデル、スパイラルモデルの4つです。
ウォーターフォールモデル
上流工程から下流工程まで、大きくさかのぼることなく順々にシステム構築を進めていく手法です。昔からあるポピュラーなモデルで、「水が流れるように」システム構築が進むことから“ウォーターフォール”と名付けられています。
アジャイル開発
ウォーターフォールモデルでは、上流工程は正しい、と仮定しておこなうため、上流工程でミスが生じていた場合に修正するのが困難です。その問題点を解消すべく編み出された手法がアジャイル開発で、システムを機能ごとに細かく分割し、各工程を分割した単位ごとに反復的に進めます。進捗管理の難しい手法ですが、細やかな修正が可能です。
プロトタイプモデル
ひとまず先にプロトタイプを作ってしまい、あとから機能を追加していくのがプロトタイプモデルです。顧客の要望を逐次チェックし、柔軟に修正することが可能であり、どのようなシステムを求めているのか明確でない場合に有効な手法です。
スパイラルモデル
設計目標を決めてシステムの設計とプロトタイピングを反復し、一度の反復完了時点で顧客が評価するのがスパイラルモデルです。ウォーターフォールモデルとアジャイル開発の良いとこ取りである手法となっています。予測や管理がしやすい一方、工期が長引きやすいです。
このようにシステム構築の手法は主に4つあり、それぞれ一長一短となっています。最後にシステム構築にあたって注意点を解説します。
システム構築を考える際に、気を付ける点
システム構築でもっとも気をつけなければならないのは、先ほど述べたように要件定義をきちんとおこなうことです。入念にヒアリングしたり、最終的な完成イメージに加えて問題がどのように解決するのか提示したりすることが重要となります。
実際の開発工程で注意したいのは、問題点や開発目的の共有。言い換えれば円滑なコミュニケーションを取る、といえます。このためシステム構築に当たって、その中身だけでなく、SEやプログラマといった開発担当者が働きやすい環境を整えましょう。
さて、今回はシステム構築について、その意味や流れについて解説しました。システムにはWeb系や汎用系、オープン系などがありますが、いずれにおいても、より効率にプロジェクトを進めるためにはシステム構築が重要です。
システム構築の流れは次の7つの工程にわけられました。
- 要件定義:システムの目的決定
- 基本設計:おおまかな仕様書作成
- 詳細設計:コーディングできるレベルの仕様書作成
- コーディング・開発
- 各種テスト:開発したものをチェック
- 納品
- 保守・運用:システムの動作や不具合をチェック
また、システム構築では次の4つの手法が良く用いられます。
- ウォーターフォールモデル
- アジャイル開発
- プロトタイプモデル
- スパイラルモデル
システム構築は顧客に営業をかけたり、工程管理をしたりすることもあるため、非エンジニアも知っておきたい知識です。システム構築の知識をつけて、エンジニアと上手くコミュニケーションを取りましょう。
ところで、当メディア(AIZINE)の運営会社お多福labでも、システム構築や業務でのAI(人工知能)の導入支援などを行っています。実際、このような相談は増えている傾向です。システムを構築したい!とお考えの方はまずHPをご覧ください。