見出し画像

システムはどのように作られていくのか

前回はシステムの企画からITベンダーに見積もりを依頼する流れについて書きました。

今回はシステム開発の契約後、システムの開発がどのように行われて、完成してお客様に引き渡されるのかという部分にフォーカスを当ててみたいと思います。せっかくですので当社アイシスがシステムの開発を請け負った時のよくある流れを紹介します。

開発工程を進行順に分かりやすく紹介するため、ウォーターフォール型で説明します。

システム開発にはいくつかの「工程」というものがあり、それらを順番に進めていくことで完成します。主に次のような工程があります。

  1. 要件定義

  2. 基本設計

  3. 詳細設計

  4. プログラミング

  5. 開発側テスト(単体、結合、総合テスト)

  6. ユーザテスト

お客様が直接関係する工程は、主に1の要件定義工程と2の基本設計になります。よく上流工程と呼ばれており、どのようなシステムにするのか決めて、その基本設計をする工程となります。
3の詳細設計からは下流工程と呼ばれており、お客様はあまり関わらずシステム開発会社の中で進行していく工程です。

開発を依頼するITベンダーによりますが、当社の場合は我々開発チームに任せて頂けるお客様がほとんどです。

そして最後、システムが完成間近になりましたら6のユーザテストを実施して頂き、問題がなければ納品となります(省略されるお客様もいます)。

それでは各工程についてそれぞれ紹介します。


1.要件定義

要件定義工程では見積り時にイメージされているシステムへの要望や要求を整理していき、明文化していきます。現在の業務のすべて、またはその一部をシステム化する場合は、業務の流れに沿ったものかどうか業務フローを作成してシステム導入前後のイメージを確認していきます。

また、システムで「できること」と「できないこと」を明確にしていき、お客様と開発チーム側で認識に齟齬がないことを確認していきます。そして、それらを要件定義書としてまとめて双方で合意できれば要件定義工程は完了です。

この工程でシステム開発プロジェクトの成否がほぼ決まりますのでとても重要な工程です。従ってお客様にも多くの時間を割いていただいて入念な準備して頂く必要があります。

また、ウォーターフォール型での開発では原則として前の工程に戻ることはしません。そのため、設計開発が始まってからやはりこういうシステムにしたかった、ということがないようしっかり要望や要求を伝えてシステムに盛り込みましょう。

厳密には前の工程に戻れないことはありません。お客様のシステム化方針に変更が出た場合など戻らざるを得ない場合もあります。
ただ再計画した際に追加でコストが生じる場合もあり、やむを得ない場合を除いては前工程に戻らないようにすることが重要です。

2.基本設計

システムで実現したいものがなにかというものが確定したら、次はいよいよシステムの基本設計工程に入ります。この工程も要件定義工程に続いて重要な工程で、ここでシステムの使い勝手などの良し悪しが決まってしまいます

2.1 システム機能設計

基本設計工程で決めることはいろいろありますが、特にお客様に多く関わって頂く部分としては、画面インタフェース設計外部インタフェース設計があります。

画面インタフェース設計ではシステムで実現したい機能をどのような画面構成で実現するか、各画面に用意する各項目の詳細を決めます。また画面がどのように遷移していくかなども決めます。

外部インタフェースもまた重要です。他のシステムからデータを入力したり、逆に他のシステムへデータを連携する場合などはこのインタフェース設計をきちんと双方で詰めておく必要があります。
ここが曖昧なままだと他システム連動の時にデータが読み込めない、連携できないという問題が発生してしまいます。

それ以外にもシステム設計の重要ポイントとしてはデータベース設計がありますが、こちらは特別なこだわりがなければ開発チームで適切なデータベース設計を行います。

2.2 インフラ設計

システムを稼動させるにはそれを動かすためのハードウェアまたはそれに相当するものを準備する必要があります。以前はオンプレミスサーバ構成といって、お客様側でサーバ機器を調達し、お客様の施設内やデータセンター等に設置するのが一般的でしたが初期コストが嵩みます。

最近ではクラウドサービス上にサーヒズを構築するのが主流になり、こちらの場合は物理的な機器の調達が不要であることからオンプレミスサーバ構成と比較すると初期コストを格段に抑えることが出来ます。

当社でもクラウドサービスであるGCPAWS上にシステムを構築する案件一色です。

またクラウドサービス上にシステムを構築した場合、システム運用開始後もサービスの利用状況によって柔軟にサーバリソースを変動できるためランニングコストもサービスの利用状況に合わせて調整ができるようになり無駄が無くなります。

ちなみにインフラ設計についてはほぼすべてのお客様がアイシスにお任せです。開発チームでは、システムの内容や規模からベストプラクティスなインフラ設計を行っております。

2.3 基本設計工程のポイント

ここでシステムのベースデザインが決まります。これ以降は開発チームでの作業がメインとなりますので、開発期間中は暖かく見守って頂ければ幸いです。
次にお客様が登場する工程ですが、システム完成手前のユーザテスト工程となります。そこではシステムの仕上がり具合を確認して頂きます。

3.詳細設計

これ以降は開発チームで進めていく開発工程になりますので、ここから先はお客様には見えにくくなります。ただせっかくですので、実際にアイシス社内の開発現場ではなにが行われているのかご紹介します。

詳細設計工程では基本設計書を基に、エンジニア視点でのより詳細な機能設計、モジュール分割等の各種検討を行い、次工程のプログラミングが正しくかつ効率よく実施できるよう準備を行います。

4.プログラミング

いよいよプログラミング言語を使い、設計書の内容に沿ってシステムを動かすためのコードを書いていきます。エンジニアが書いたコードはプロジェクトリーダーが確認(レビュー)します。この時に設計通りにプログラムされているか、またコードに誤りや性能劣化を引き起こすものがないか点検し、問題がなくなるまでコードを確認します。

5.開発側テスト工程

プログラムが書き上がると次は徹底的にシステムの動作検証を行うテスト工程に入ります。ここは開発するシステムの特性によってテスト対象スコープや実施方法などが変化するのですが、今回は一般的なWebシステムの例を紹介します。

5.1 単体テスト

単体テストでは詳細設計でモジュール分割した細かい各機能単位でそれぞれ仕様通りに問題なく動作するか検証します。
例えばモジュール単位での入出力のバリエーションを検証や、エラーが発生した時に正しくエラー処理を行うかなど確認します。

5.2 結合テスト

モジュール単位で正しく動くことが確認できたモジュールについては、次にモジュール間で仕様通りにデータ連携して動作するか検証します。
例えば、画面で入力したデータが正しくデータベースに格納されて画面に登録完了メッセージを仕様通りに表示するか、と言った一連の動作を確認します。

5.3 総合(システム)テスト

すべてのモジュールの連動が仕様どおりであることが確認できたら、次はいよいよ総合テストとなります。ここでは業務要件通りにシステムが動作するかという点を重点的に検証します。
例えば、業務想定シナリオを用意してそのとおりに動作するか、システムの想定利用ユーザが同時にアクセスしてもシステムに影響が出ないかなど確認します。

5.4 ユーザテスト

ここでお客様が再登場です。この工程ではシステムの開発を依頼したお客様自身で注文したシステムが想定どおりに動作するか確認します。また、実際に運用開始した時を想定したテストを実施されるお客様もいらっしゃいます。

どんなテストをすればよいのか分からない、というお客様もいらっしゃいますのでその時はサポートをすることもあります。

まとめ

当社にシステム開発をご依頼頂いた場合のシステム開発の流れをご紹介しましたが、いかがでしたでしょうか。

もちろん、これは標準的な1つの開発例です。ご相談頂ければ開発の進め方は柔軟に変更することが可能ですし、開発の進め方に制約などがある場合に於いても、できる限りそれに沿った形で進めることも可能です。

アイシスでは簡単な質問にいくつかお答え頂くだけで概算金額を見積もるツールをWebで公開中です! 是非お試しください!


この記事が気に入ったらサポートをしてみませんか?