システム開発の進め方の種類
システム開発の方法には、大きく2種類あります。
開発するシステムについて先にしっかりと設計をしてから進める

1つは、開発するシステムについて最初にしっかりと設計をして、進めるやり方。これは課題が明確になっていて、システム化したいものも明確な場合に選択するべき方法で、コストを事前に決めて開発を進められます。
開発初期の要件定義や設計の時点で、しっかりとお客様が仕様を確認出来て、承認を出すことで、本格的な開発を開始するので、ゴールが明確になります。半面、仕様を見直したり変更したり、ということが発生すると、コストと納期の双方に影響が出て来やすいです。
短いサイクルでゴールを設定しトライ&エラーを繰り返しながら作る(アジャイル開発)

2つ目は、アジャイル開発に類するもので、短いサイクルでゴールを設定して開発、リリース、評価、フィードバック、再度またゴールを設定して開発…という繰り返しで進めるやり方です。
トライ&エラーを繰り返しながら作るイメージですので、何を作るべきか、どのようなシステムにするべきかが、明確でない場合に、お客様と開発チームが一体になってモノづくりをすることが、成功のカギとなります。デメリットと言える点は、納期を明確にしづらく、コストも事前には明確に出来ないケースが考えられます。ある程度の期間、持続的開発をしていく前提になります。
システム開発の基本的な工程
ウォーターフォール型開発
要件定義
どのようなシステムを作らなければいけないかの、ゴールを決めるフェーズです。
・課題は何か
・課題を解決したらどうあるべきか
を、お客様の立場で明確にしていきます。
基本設計
要件定義を受けて、システム側の立場での設計を開始します。基本設計とか、外部設計、といったフェーズでは、様々なシステム間のインターフェース仕様を中心に設計をしていきます。ユーザとのインターフェースとなる、ユーザ・インターフェースも設計していきます。
・どのようなアーキテクチャのシステムか、システムの全体像を明確にする(サーバ、データベース、クライアント、等の機器、その他に必要な機器など)
・どのような情報(データ)を扱うかを明確にする
・外部システムとのインターフェース(情報連携仕様)を明確にする
・内部システム間でのインターフェース(情報連携仕様)を明確にする
・ユーザ・インターフェース(画面仕様など)を明確にする
製造
技術者がシステムを作り始めます。
最初に「詳細設計」という、プログラムを作る上で必要な設計を行うことが多いです。
また、製造工程が終る前に、「単体テスト」という、プログラム1つずつのテストも行います。
このフェーズは一番長く、人の数も必要になります。
テスト
システム開発中は様々なテストが行われますが、ここでいうテストは、「結合テスト」と「システムテスト」を指しています。
「結合テスト」では、外部システムとの連携や、内部システム同士の連携をテストします。
「システムテスト」では、本番環境相当での、ユーザも含めてのテストを行います。
保守
システム本番稼働後のフェーズになります。
システムは、稼働開始した時からが重要で、不具合が出ないか、仕様に問題はないか、考慮漏れで追加機能が必要ではないか、といったことをお客様と一緒に観察したり修正したりを繰り返します。
アジャイル開発
以上、「ウォーターフォール型開発」と言われるものの要点を説明しましたが、お気づきのとおり、「テスト」フェーズに入らないと、お客様は動くシステムを参照することが出来ません。製造フェーズは数ヶ月かかるため、要件定義フェーズでやりたいことを伝えたあと、実際にそれを見ることが出来るのは、半年後、ということもあり得ます。日々の業務に追われているお客様が、要件定義で何を決めたか、覚えているのは至難の業だと思います。そういったシステム開発に伴う困難を乗り越えるために、提唱されたのが、「アジャイル開発」でもあります。
スプリント
アジャイル開発、と呼ばれるものにもいろいろな方法がありますが、「スクラム開発」では、「スプリント」と呼ぶ2週間程度の短い期間で、設計・製造・テスト・リリース、を、全て行います。
スクラム開発の特徴は、お客様も一緒に参加して行うところにあります。スプリント毎に何をどこまで作るのか、について、お客様と合意をします。無理にあれこれ押し込んでも出来ませんので、小さな機能に落とし込んで、開発チームはお客様と合意の上で開発を進めます。ですから、2週間でシステムが出来上がる訳では当然ありません。しかし、製造の最初からお客さまもシステムを見ることが出来るため、意図していたものと違う、といった事を早期に発見しやすいです。
アジャイル開発のデメリット
スプリントの繰り返しで、都度動きを確認しながら進められるのは、スクラム開発の最大の魅力ですが、システム全体として、何をいつまでに作るのか、について、事前に確約することが出来ません。絶対の納期がある場合、別途調整が必要になります。
ハイブリッドで考える
不確定な要素が多い昨今、システム開発は、アジャイル開発で行うことを前提に進めるのが、良いのではないかと考えています。
例えばアジャイルに開発を一旦して、作らなければいけないものが本当に明確になったら、別途スケジュールを組んでシステム開発を行い、保守フェーズになったらまたアジャイルに戻す、といったことも、有効です。予算、納期、要件、いずれもシステム開発にとって重要な要素ですので、ご相談頂ければ、私たちの考えるベストな組み合わせをご提案致します。
システム開発の工程モデルと特徴
ウォーターフォール型 | アジャイル型 | |
---|---|---|
概要 | 上流工程(要件定義や設計)を開始し、前工程が完了してから次の工程を開始していく開発手法です。 | 開発プロセスを短い期間で繰り返しユーザーのフィードバックを組み入れながら開発を進める手法です。 |
メリット |
|
|
デメリット |
|
|
向いているプロジェクト |
|
|
ユーネットの基本的な開発モデル
ユーネットでは「アジャイル開発」で進める事をお薦めしています。開発プロセスにお客様自身も関わって頂く事で使いやすく効果の高いシステムを作り上げていく事が出来ます。
システム開発の注意点
システムを導入する事が目的になりがちですが、本来の目的はシステムを使って課題を解決する事です。現場の要望や意見を形にする事だけのものにならないよう気を付けましょう。
システム開発に使われる略語
- RD=Requirement Definition=要件定義
- BD=Basic Design=基本設計
- ED=External Design=外部設計
- DD=Detail Design=詳細設計
- CD=Coding=コーディング
- UT=Unit Test=単体テスト
- IT=Integration Test=結合テスト
- PT=Product Test=総合テスト
- OT=Operations Test=運用テスト