これからシステム開発を頼みたいという人にとって、開発工程を知ることは非常に重要です。なぜならシステム開発における工程を知っていることによって、今がどのようなフェーズなのか、自分がどのようなことに気をつける必要があるのかを意識できるためです。
会社やプロジェクトマネジメントの方法によってその工程は様々ですが、今回は代表的な開発の工程をご紹介します!
目次
1. システム開発の工程には何がある?
作りたいシステムの種類や会社の方針によってその工程は様々ですが、ベーシックな受託開発現場でよく取り入れられている工程をみてみましょう。
システム開発工程その1:要求分析
どんな目的で何を作りたいのかが明確でないと開発はできません。クライアントが何の目的でどんなものが作れると嬉しいのかを確かにする作業が要求分析です。
実際にクライアントが話す「作りたいもの」が、実際の業務や目的に照らして考えた時に本当に必要となるものは食い違う可能性があります。要求をそのまま受け取るのではなく、実際の業務を見直してみたり、ターゲットとしているユーザーを分析したりといったステップを踏むことでより有意義な開発ができる可能性が高まります。
システム開発工程その2:仕様策定
要求がクリアになったら、実際に開発するために仕様を決める必要があります。できる限り詳しく、必要なシステムの要件、インターフェイスのイメージなどを記述すると後の工程において混乱が避けられます。
開発のやり方や、システムの種類によって形式は様々ですが、システムの目的や想定されるユーザー、各機能でどのようなことができるのか、要求されるシステムの応答スピードや対応ブラウザ、デバイスを記載するのが一般的です。
システム開発工程その3:システム設計
仕様書にしたがってシステムを設計していきます。どのようなサーバーが適しているか、データベースはどのような設計にするか、ストレージサービスやキャッシュはどうするか…など、システム開発に必要となること、システムの全体像をエンジニアと共に決めていきます。
後の工程で構成が変更になる可能性も十分にありますので、柔軟な設計にしておくことが大事です。
システム開発工程その4:実装
目的や作りたいものが明確になったらいよいよ実装に入ります。一言で実装と言っても、作るシステムによって様々な工程に分かれます。
実装の種類:デザイン
デザイン工程ではユーザーが使う見た目をデザインします。ユーザーにどんなふうに使って欲しいかを考えながらモックアップやワイヤーフレームを作成していきます。この工程は仕様策定やシステム設計前に入ることもあります。
実装の種類:フロントエンド
見た目の部分を作るエンジニアはフロントエンドエンジニアと呼ばれます。上記で策定したデザインを実際にコードを書いて実現し、ユーザーが触れるようにします。またバックエンドから渡されるデータをきれいに表示できるようにするのもフロントエンドの仕事です。
使用される言語はHTML、CSS、JavaScriptなどが代表的です。
実装の種類:バックエンド
バックエンドはサーバー上でデータの処理を行うコードを書きます。ユーザーがボタンをクリックしたらどんな処理をするのか、どんなデータをデータベースから取得してくるのかをコードで表現していきます。
主な使用言語はPython, Ruby, PHP, Javaなどです。
また、インフラエンジニアと言われる、アプリケーションが動くためのインフラを作るエンジニアもいます。小規模なプロジェクトであればほとんどはバックエンドエンジニアが兼任すると思いますが、大規模なプロジェクトやサーバーがダウンしづらいインフラを構築する必要があるようなシステムではインフラ専門のエンジニアがアサインされることが多くなってきます。
実装の種類:モバイルアプリ開発
ハイブリッドアプリと呼ばれる、Webとモバイルで両方使えるようなアプリではなくネイティブのモバイルアプリが必要な場合は、モバイルアプリエンジニアもアサインされます。
主な使用言語はSwift, Kotlin, Objective-C, Javaです。
システム開発工程その5:テスト
実装が終わったらテストに入ります。テストを専任で行うエンジニアはQAエンジニアと呼ばれます。システムの規模にもよりますが、テストにはいくつかフェーズがあります。
テストの種類:単体テスト
小さな機能ごとでテストを行うことは単体テストと呼びます。通常は、関数やメソッドごとで行うものです。
テスト駆動開発と呼ばれる、先にテストコードを書いてから実装を行なっていく方法も一般的で、先にテストを書くことで実装時に明確に入力、出力のイメージを掴みやすくなり実装がしやすくなる、バグを早めに見つけられるメリットがあります。
テストの種類:結合テスト
複数の機能を組み合わせたテストを行うことを、結合テストと呼びます。内部の機能同士の結合テスト、外部のサブシステムなどとの連携をテストする結合テストがあります。
単体でうまく動いていても、各機能の連携ができていないとスムーズな処理ができません。ここでうまく動作するかは、システム全体のことを考えても非常に重要になってきます。
テストの種類:システムテスト
システム開発の最終段階で行われる総合的なテストがシステムテストです。実際にユーザーが使うように使ってもバグがでないか、各機能の目的は達成されているかを確認します。本番と同じ環境でテストすることで、実際のリリースに備えます。
テストは、シナリオに沿って行うテストと、ランダムに行うモンキーテストがあります。モンキーテストでは、テスト実行者が思いつきでシステムを操作するもので、ユーザーがシステム開発社が想定しない操作をした時にバグが出ないかどうかを確認します。
テストの種類:受け入れテスト
システムテストが終われば、クライアント側での受け入れテストになります。クライアント側で発注をした通りにシステムが動くかを確認します。
システム開発工程その6:リリース
テストをすべてクリアしたら本番へリリースします。ここでようやく実際のユーザーが触れるようになります。受託開発においてはここでいったん納品完了となり、その後は保守・運用といった形になることが多いです。
2. アジャイル型とウォーターフォール型の違いとは
上記の工程はウォーターフォール型のプロジェクトにおいて用いられることが多いです。ウォーターフォール型というのは、最初に要件定義やスケジュールを全て決めて仕様変更を極力少なくしながら進めていくプロジェクトのことです。
上記の工程をもっと小さい単位にして1週間〜1ヶ月ほどの短いスパンで繰り返していくようなプロジェクトはアジャイル型と呼ばれます。顧客の反応をテストしながら柔軟に作っていきたいようなプロジェクトではこちらのプロジェクトマネジメント手法が取られることが多く、システムも小さな機能をどんどん開発していく形になります。
3. システム開発のまとめ
開発の工程を知ることで、どのくらいのステップを踏んで実際にシステムが出来上がるのかを想像することができます。要求分析を深くまですることで本当に欲しいものを再定義できたり、仕様をしっかり決めることで後の実装フェーズが楽になったり…システム開発と言っても、実は実装をする前の段階が非常に大切なので、それを踏まえて良いものを作れるように開発会社と協業していきましょう。
4. システム開発をするなら、べトナムでのオフショア開発No.1企業のバイタリフィへ
バイタリフィでは、ベトナムでのオフショア開発にのサービスを提供しております。12年以上に及ぶベトナムでのオフショア開発経験を活かした高品質・低価格な開発体制です。
開発チーム内には世界コンペにて、約3000チーム中世界10位以内に入ったプロフェッショナル集団も在籍しています。無料でご相談いただけますので、オフショア開発に興味がある方は、ぜひ一度お気軽にお問合せください!