システム開発ライフサイクル
システム開発ライフサイクル (Systems Development Life Cycle、SDLC) とは、システム開発、特にコンピュータシステム開発のモデルまたは方法論です。
ソフトウェアの開発工程と同義です。
システム開発ライフサイクルの手法は、1960年代から多くの手法が試され、生み出されてきました。
代表的なものに次のようなものがあります。
クリーンルーム
LSI の製造設備である Clean Room にちなんだ開発手法です。
クリーンルーム手法は、最初から欠陥の無いソフトウェアを開発することを目指して、IBMにいた Harlan Mills 氏らが長年掛けて開発した「開発手法」で、1987年に発表されました。
それ以来、各国の研究者やソフトウェアの開発組織において実際に取り組まれており、1990年に入って、その成果が報告されるに及んで、一躍注目されるようになりました。
クリーンルームでは、LSIなどの製造と同様に、ソフトウェアの開発工程と開発環境を常に管理し、開発したソフトウェアにバグが見つかったら、開発工程の欠陥として扱います。
つまり、ソフトウェア自体に欠陥があるとは考えません。
そして、開発工程の欠陥を改善した後に、改めて開発を行います。
欠陥の見つかったソフトウェアは修正したりせずに、そのまま廃棄します。
クリーンルーム手法が他のソフトウェア開発手法と大きく異なる点は、ソフトウェアの単体テストを行わないという点です。
反復
反復型開発とは、ソフトウェアシステムを徐々に開発していき、ソフトウェア開発者が開発から学んだことを生かして、使用可能なシステムを段階的にリリースしていくというものです。
開発者は、開発そのものと実際のシステムの使用から学びます。
要求仕様の単純なサブセットから開発を始め、徐々に改良を加えていき、最終的に完全なシステムを実装していきます。
反復ごとに設計が修正され、新たな機能が追加されていきます。
RAD (Rapid Application Development)
Rapid Application Development (ラピッド・アプリケーション・デベロップメント、RAD) とは、ソフトウェアの開発を容易にする仕組みの1つです。
ユーザーを含む少人数のチームで開発を進め、プロトタイプを作ってそれを評価するというサイクルを繰り返すことで、完成品に近づけていきます。
RUP (ラップ)
ラショナル統一プロセス (Rational Unified Process、RUP) とは、IBMのラショナルブランドのオブジェクト指向型ソフトウェア開発プロセス、およびその製品のことを指します。
RUPでは、以下の6つのベストプラクティスが定められている。
- 反復型開発
- 要求管理
- コンポーネント・アーキテクチャーの使用
- ビジュアル・モデリング
- 品質の継続的検証
- 変更管理
スパイラル (Spiral)
スパイラルモデル (Spiral Model) とは、トップダウン設計とボトムアップ設計の長所を生かしたソフトウェア開発工程のモデルであり、設計とプロトタイピングを繰り返して開発していく手法です。
ウォーターフォールモデル (局面化開発手法)
ウォーターフォールモデルとは、滝の水が上流から下流へ流れるように、システム開発が進んでいくモデルです。
システムの要件定義から設計、製造、テストまで、各開発フェーズを段階的に進めていく開発モデルを指します。
ウォーターフォール開発では、各開発フェーズの完了をもって次のフェーズに着手するために後戻りしません。
各工程、フェーズを局面と呼ぶこともあり、局面化開発手法と呼ぶこともあります。
各工程の名称は、次の通りです。
- 要件定義(要求分析)
- 外部設計(基本設計)
- 内部設計(機能設計)
- 詳細設計(プログラム設計)
- プログラミング
- 単体テスト
- 統合テスト
ウォーターフォールモデルの詳細は以下にまとめました。
Vモデル
V字モデルとはウォーターフォール型モデルをテストに着目して整理したものとなります。
V字型に表される概念図の左側はシステムの仕様を記述していく流れを示しています。
右側はテストの流れを示します。
それぞれの同じ高さの部分は、開発の詳細さのレベルを表しています。
V字モデルの詳細は以下にまとめました。
アジャイル
アジャイルとは、すばやい、俊敏な、という意味で、反復 (イテレーション) と呼ばれる短い開発期間単位を採用することで、リスクを最小化しようとする開発手法の一つです。
XP (エクストリームプログラミング)
アジャイル開発の1つです。
エクストリーム・プログラミング、XP (extreme programming) は、ケント・ベックらによって定式化され、提唱されているソフトウェア開発手法で1999年に発表されました。
XPでは、そのすべての原理となる以下の5つの価値が存在します。
- コミュニケーション
- シンプル
- フィードバック
- 勇気
- 尊重
そして、開発チームが行う以下の19のプラクティスが定められています。
- 反復
- 共通の用語
- 開けた作業空間
- 回顧
- テスト駆動型開発
- ペアプログラミング
- リファクタリング
- ソースコードの共同所有
- 継続的インテグレーション
- YAGNI (You Aren’t Going to Need It. 必要なことだけ行う)
- 責任の受け入れ
- 擁護
- 四半期ごとの見直し
- ミラー
- 最適なペースの仕事
- ストーリーの作成
- リリース計画
- 受け入れテスト
- 短期リリース
リーン
アジャイル開発の1つです。
リーンソフトウェア開発は、トヨタ生産方式 (TPS) を参考に考案された開発手法です。
リーンソフトウェア開発では、具体的なプラクティス (実践手順) や体系的なフレームワークの形ではなく、プラクティスを各分野・現場に合わせて作り出す際の手助けとなる、「7つの原則」および「22の思考ツール」として提示される。
「7つの原則」は以下の通りです。
- 原則1:ムダをなくす
- 原則2:品質を作り込む
- 原則3:知識を作り出す
- 原則4:決定を遅らせる
- 原則5:速く提供する
- 原則6:人を尊重する
- 原則7:全体を最適化する
スクラム (Scrum)
アジャイル開発の1つです。
スクラムとは、ソフトウェア開発における反復的で漸進的なアジャイルソフトウェア開発手法の1つです。
この方法論は「柔軟かつ全人的なプロダクト開発ストラテジーであり、共通のゴールに到達するため、開発チームが一体となって働くこと」とされます。
スクラムという言葉は、ラグビーのスクラムから来ています。
TDD (テスト駆動開発)
TDD、テスト駆動開発 (てすとくどうかいはつ、test-driven development) とは、プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き、そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルです。
テストをまず書くことをテストファーストと呼びます。
TDDは、アジャイルソフトウェア開発手法であるエクストリーム・プログラミングのプラクティスの1つです。
かんばん (Kanban)
かんばんは、トヨタで実践されているリーンをもとにしたソフトウェア開発手法で、作業の進行状況をカンバン(ホワイトボードなど)にまとめておくことで、プロジェクトの状態を「見える化」しする手法です。
特に、複数人での開発作業に有効な方法です。
カンバンを未着手・作業中・完了といったように3つに区切り、作業内容などを記載した付箋を貼り付けて作業の状態を可視化します。
プロトタイピング
プロトタイピングでは、ユーザーの要求を集め、プロトタイピングを行い、ユーザーがそれを検証します。
エンドユーザーは何が必要か明確に意識していないことが多く、要求分析フェーズで明確な要求や目的を開発者に伝えられないことがあります。
ユーザーはプロトタイプを検証した後、そのフィードバックに基づいて新たなプロトタイプが作られ、再度ユーザーがその検証を行います。
これを繰り返すことにより、徐々に欠陥や問題が解決されていきます。
最も使われているソフトウェア開発手法は何?
さまざまな開発手法はあるものの、システムインテグレーション (SI) で最も使われている手法はウォーターフォールモデルです。
コメント