システム開発(ソフトウェア開発)の進め方

私たちが提供するサービスのひとつであるシステム開発ですが、実際にどのように進めていくかがわからない方もいらっしゃると思います。そこでこの記事ではシステム開発、特にソフトウェアの開発をする際の進め方について説明します。

システム開発の工程

システム開発としてのソフトウェア開発には、5つの工程があります。

各工程について簡単に説明していきます。

要件定義

要件定義では、依頼者と開発者が話し合い、実現したいシステム・ソフトウェアについてすり合わせを行い、仕様を決定します。ここで、開発者が依頼者の実現したいシステムのイメージや解決したい課題を十分理解することが重要です。ここで認識の不一致が生じると、システムが完成した後で仕様変更が必要になるなどの問題にもつながります。

設計

開発者は、要件定義での話し合いをもとに、必要な機能やユーザーの使いやすさを考えてシステムの構想を設計していきます。

設計は大きく基本設計詳細設計に分かれます。

基本設計では、必要な機能を明確化し、システムの構成などの基本的な仕様を依頼者にわかりやすい形で決定します。この基本設計の内容について依頼者の了承が取れれば次に詳細設計に移ります。

詳細設計では、基本設計をベースに具体的にどのように必要な機能を実装していくかを定めます。次のプログラミング工程で各メンバーが自らの担当を理解し、効率的に業務を進めるために重要な工程です。



プログラミング

プログラミングでは開発者が設計に沿って、コードを記述することで具体的なシステム・ソフトウェア部分を実現していく工程です。ここで設計した機能や外観を実現します。

プログラミングは、必要な機能を効率よく実装するための内部実装と、ユーザーの使い勝手に関わる見た目などの仕様に関わる外部実装の2つに分けられます。

テスト

プログラミングにより具体的なシステム・ソフトウェアが形成された後は、そのシステムを実際に使用し、動作に問題がないか実現したいシステムのイメージが実現できているかなどを確認します。

テストでは、まずシステムを形成する各要素ごとの動作に関して単体テストを行い、問題がなければシステム全体の動作を確認する結合テストを行います。その後、実際にユーザーに使用してもらい動作確認する運用テストや、要件定義フェーズで定めた仕様を満たしているかを総合的に確認するシステムテスト(総合テスト)を行います。これらのテストにより、徹底的にシステムの不具合や不備を取り除きます。

納品・運用保守

テストに問題がなければ、開発したシステムを依頼者に納品します。

完成したシステムを受け取った依頼者は、システムが正常に動作しているかを定期的に確認し、トラブルを抑制する運用と、トラブルや不具合への対処、アップデートなどによるシステムの変更に対応する保守を行います。依頼者が追加の契約を行い、開発者が運用保守を兼任することもあります。

システム開発の手法

システム開発の手法には主にウォーターフォール型アジャイル型の2つが使われます。それぞれについて説明します。

ウォーターフォール型

ウォーターフォール型開発では、上記で説明した各工程を「要件定義」→「設計」→「プログラミング」→「テスト」→「リリース・運用保守」という一連の流れで行います。水が流れ落ちるように、上流工程が終わってから次の工程に移り、それぞれの工程を経て一つのシステムを作り上げます。基本的に前の工程に戻ることはありません。ウォーターフォール型開発は古くから使用され、今でも多くの会社によって使用されています。

ウォーターフォール型のメリット・デメリット

ウォーターフォール型開発の大きなメリットのひとつは、スケジュール管理が行いやすいことにあります。後戻りすることなく工程を進めていくので、納期などのスケジュールの見通しが立てやすくなります。これにより、費用についても必要な予算を立てやすくなります。また、初めに要件定義で依頼者と開発者のすり合わせをほとんど終わらせてしまうため、開発中に逐次依頼者に確認をとることが難しい大規模開発に対応しやすいというメリットもあります。

ウォーターフォール型のデメリットとしては、各段階を経て最終的にシステムが完成する形になるのでリリースまでに時間がかかる傾向にある点があげられます。また、仕様変更や大きなトラブルがあったときに各工程を一からやり直すことになってしまうので、対応に時間がかかってしまいます。

これらのメリット・デメリットより、作りたいものが明確に決まっていて、開発までに時間を要する大規模なプロジェクトがウォーターフォール型開発に向いています。

アジャイル型

アジャイル型開発では、「要件定義」→「設計」→「プログラミング」→「テスト」→「リリース」という一連の流れを、細かいステップで何度も繰り返します。1〜2週間のサイクルで、開発した成果について依頼者が確認してフィードバックを行い、次のサイクルでの開発に活かします。これらの小さな開発の繰り返しによって、最終的にシステムを作り上げるという手法です。

アジャイル型のメリット・デメリット

アジャイル型開発では、初めから具体的なシステムが複数回納品されるため、依頼者からの要望を開発者に伝えやすいというメリットがあります。また、開発のサイクルが細かいので、要望やトラブルに対する対応も1からやり直しということはなく、対処しやすくなっています。

依頼者と開発者のすり合わせを行い、随時修正しながら開発を進めていくので、当初の計画とは異なったシステムが出来上がる可能性があります。

アジャイル型のデメリットとしては、プロジェクトを通して開発者と依頼者で密なコミュニケーションを維持しなければならないことにあります。開発者だけでなく、依頼者もプロジェクトにある程度のリソースを割いて進めていかなければ開発のスケジュールやシステムのクオリティに影響が出る場合があります。

総じて、アジャイル型開発は完成するシステムのイメージが明確でないプロジェクトや、小規模なプロジェクトに向いていると言えます。

まとめ

この記事では、はじめにシステム開発の「要件定義」、「設計」、「プログラミング」、「テスト」、「リリース・運用保守」といった各工程についてご紹介しました。また、これらの工程の進め方として、各工程を順番に進めていくウォーターフォール型と、小さいサイクルでの開発とフィードバックを複数回繰り返していくアジャイル型を説明しました。

システム開発の進め方について少しでも理解が深まっていれば幸いです。

システム開発のご依頼がございましたらお気軽にお問い合わせください。

(坂下)

タイトルとURLをコピーしました