2021.03.23  2021.04.09

システム開発の進め方。様々なシステム開発モデルとエクストリームプログラミングについて

皆さんこんにちは!マコブログです!
今回は、様々なシステム開発モデルとエクストリームプログラミングについて紹介していきたいと思います。

システムの開発モデル


システム開発の進め方には様々なモデル(パターン)がありますが、その中でも代表的なものを紹介します。

ウォーターフールモデル
要件定義→システム設計→プログラミング→テストといったように、各工程を順番に行う開発モデルをウォーターフールモデルといいます。
開発の順番がはっきりしているので、進捗状況を把握しやすいという特徴があります。その反面、いったん次の工程に進んでしまうと、前の工程に戻って修正するのは難しい為、先祖帰りがないよう各工程の終了時にはチェックし、完了判定を行う必要があります。
ウォーターフールモデルは、比較的大きいシステムの開発に向いています。
ウォーターフールモデルのイメージから、要件定義や設計など開発の初期段階に行う工程を「上流工程」、開発の後半に行うプログラミングやテストなどの工程を「下流工程」と呼ぶことがあります。



プロトタイピングモデル
早い段階から試作品(プロトタイプ)を作り、ユーザに確認してもらいながら開発を進めていく開発モデルをプロトタイピングモデルといいます。発注元とベンダの間に勘違いや誤解があっても、早い段階で確認して修正できるため、開発ミスや手戻りを少なくすることができます。

スパイラルモデル
システムをいくつかに分割し、分割したサブシステムごとにウォーターフールモデルによる開発を繰り返して完成させていく開発モデルをスパイラルモデルといいます。開発工程を順番に行うことができ、サブシステムごとにユーザの評価も得られるため、ウォーターフールとプロトタイピングの両モデルのメリットを兼ね備えているといえます。

リバースエンジニアリング
既存のソフトウェアのプログラミングを解析して、プログラムの仕様と設計を導き出す手法をリバースエンジニアリングといいます。
要件定義→設計→プログラミングの開発の流れを逆行(リバース)する手法です。システムの運用後に不具合が起きたとき、きちんとした仕様書が残されていなくてもバグの修正が行えるようにできるほか、他社製品の仕様や技術を参考によりよい製品を開発することができます。

アジャイル
ウォーターフールモデルのように最初から全機能を開発するのではなく、細かい機能ごとに短期間で開発してはリリースするサイクルを繰り返しながら機能を追加していく開発手法を、アジャイルといいます。アジャイルとは「機敏な」という意味で、ユーザが必要とする機能を素早く提供できるほか、機能変更のニーズにも柔軟に対応できます。
小規模な開発チームによるシステム開発や、スマートフォン向けアプリなど、めまぐるしくニーズが変化するシステムの開発に向いています。また、ユーザと強調しながら開発を進める、設計書などのドキュメントを作ることよりも「ソフトウェアを作ること」を優先する、といった特徴があります。
設計からリリースまでの、繰り返し行われる開発サイクルをイテレーションといいます。

エクストリームプログラミング(XP)

アジャイル開発には、いくつかの手法があります。代表的な手法であるエクストリームプログラミング(XP:eXtreme Programming)では、以下のプラクティス(実施項目)などが定義されています。



テスト駆動開発
通常の開発では、作成したプログラムが想定通りに動作するかどうか、テストプログラムを作成して確認します。テスト駆動開発は逆で、最初にテストプログラムを書いてから、そのテストプログラムが動作するプログラムを書きます。そうすることで、最初からバグの少ないプログラムを書くことができ、開発期間を短縮できます。

ペアプログラミング
二人一組になり、「コードを書く人」「コードをチェックする人」という役割を交互に担当しながら開発を行うことで、ソフトウェアの品質を高める開発手法をペアプログラミングといいます。

リファクタリング
外部仕様を変更することなく、プログラムの内部構造を変更することをリファクタリングといいます。ソフトウェアの動作は変えずに、プログラムを後から見たときに分かりやすく、修正しやすくなるよう変更します。ソフトウェアの保守性を高めることができます。


DevOps(デブオプス)

システムの開発部門と運用部門が密接に連携し、システムを迅速に顧客へ届けることをDevOpsといいます。開発(Development)と運用(Operations)の文字を合体させた造語です。
開発部門は一般的に、ユーザからの機能追加の要求に対して、迅速に対応することを重要視します。
一方で運用部門は、システムを安定稼働させることを重視するため、機能追加は慎重になります。
役割の違いから対立しがちな両者が密接なコミュニケーションを図り、目的を共有して協力しあうことで、リリースまでの期間を短縮し、柔軟かつ迅速なシステム開発を実現します。

まとめ

いかがでしたか?
今回は、様々なシステム開発モデルとエクストリームプログラミングについて紹介しました。
是非こちらの記事も是非チェックしてみてください↓
インターネット脅威への対策。ネットワークセキュリティを強化するために行うべき事

あなたにオススメの記事
マコブログ
Makoto
高校卒業と同時にプログラミングを学習しはじめ、今年で4年目になります。
普段はフロント周りで作業をしていて、WordPressの開発とSEO対策には自信があります。
マコブログでは、プログラミングやSEO対策についての情報を発信しています。

よく読まれる記事

S&P500研究所

【マコブログ 2nd】S&P500研究所がOPENしました!!

Read More →