開発モデル
2層モデル(クライアントサーバーモデル)
引用:http://www.soi.wide.ad.jp/class/20050002/slides/07/25.html
かつて、システム開発の主流だったモデルです。下記2層に分けてシステムを提供します。
- クライアント
- サーバー
クライアント
3層モデルで言えば、「プレゼンテーション層」と「アプリケーション層」が位置する。
Visual Studio等のGUIアプリで、クライアント側に、画面とビジネスロジックを配置して、かなり大きな仕事をさせる「リッチクライアント」だった。
サーバー
3層モデルで言えば、「データ層」が位置する。
このモデルのデメリット
- ビジネスロジックに変更があった場合は、いちいち全てのクライアントのプログラムを変更しなければならなかった。
- クライアントにビジネスロジックを任せていたので、性能面で貧弱だった。
- クライアントとサーバーのネットワーク通信量が多く、回線がボトルネックとなっていた。
3層モデル(リッチクライアントからの脱却)
引用:http://ossforum.jp/en/node/813
クライアントサーバーによる2層モデルの欠点を考慮して、現在の、システム開発において主流のモデルになり、下記3層に分けてシステムを提供します。
- プレゼンテーション層
- アプリケーション層
- データ層
プレゼンテーション層
ユーザーインターフェイスを提供する層
Webアプリで言えば、Apache等の「Webサーバー」のことを示します。
アプリケーション層
ビジネスロジックを提供する層
Webアプリで言えば、JBOSS(RedHat)等の「アプリケーションサーバー」のことを示します。
データ層
データベースの層
Webアプリで言えば、Oracle等の「データベースサーバー」のことを示します。
このモデルのメリット
Webブラウザさえ入っていたら動き、クライアントでのソフトインストールが必要なくなった。(もちろん、Flash等のリッチクライアントの名残は、まだギリギリ残っていたりしますが…。)
開発手法
システム開発のモデルには、大きくは下記の3種類があります。
- ウォーターフォールモデル
- プロトタイピングモデル
- アジャイル
ウォーターフォールモデル
引用:http://gihyo.jp/lifestyle/serial/01/ipa-terminology/0012
特徴
- 「要件定義→設計→開発→テスト」と、一つずつ順に工程をすすめていくモデルです。
- 基本的に、時間とコストがかかりすぎるので、工程がさかのぼる(手戻りする)ことはない。
- 手戻りがないので、各工程にかなりの精密さが求められる。(特に、後半の工程に行くほど手戻りが難しくなります。)
- 大規模なシステム開発で採用されることが多い。
デメリット
お客さんに完成品を見せるのが数か月先の話になり、お客さんの考え方が変わっている可能性がある。(手戻りに大幅な工数が必要なので、完成品をお客さんに見せた時に多少不満があっても我慢してもらうのが普通でした。)
また、計画に多少問題があってもその計画は絶対で皆それに従って作業を進めます。結果64%の機能を作った後に使わないという結果になっているようです。
昨今事情
日本ではまだ主流のようですが、海外ではあまりこの開発手法は見られなくなりつつあります。
プロトタイピングモデル
引用:http://gihyo.jp/lifestyle/serial/01/ipa-terminology/0012
特徴
- 最初に、小さな試作品を作って、客に見せてフィードバックをもらいそれを取り入れて、循環的に開発をしていく
- 早い段階で、具体的なイメージを客に見せるため要件の取りこぼしを防げたり、手戻りが減る。
- ただ、何度も同じ工程を繰り返すので、情報が発散してしまう可能性がある。
- 小規模なシステムで利用されることが多い。
アジャイル
引用:http://gihyo.jp/lifestyle/serial/01/ipa-terminology/0012
特徴
- 「プロトタイピングモデル」を応用したモデル。
- 迅速なサービス提供を行うことが求められるWeb系システムで採用されることが多いです。
- 「事前に全て正確に予測して、計画することはできない」という前提のもとに動いている。
- 機能ごとに優先順位を決めて機能ごとに設計→コーディング→テストをして動くソフトを作ります。
代表的なアジャイル開発手法
スクラム開発
昨今事情
2017年では、海外で96%ものプロジェクトでアジャイル開発を導入しているとのことです。
この記事へのコメントはありません。