Web教材一覧システムの調達

システム開発技法

キーワード

ウォータフォール型、アジャイル開発技法、プロトタイピング型、スパイラル型、XP(エクストリーム・プログラミング)、デザイン思考、スクラム、DevOps


ウォータフォール型開発技法

後工程になってから前工程の不備や誤りが見つかると、手戻りが発生して多大な費用や時間がかかります。それを防ぐために、各工程ごとに関係者の承認を得てから次工程に進む開発技法をウォータフォール型開発技法といいます。
 従来から広く採用されている技法で、環境変化が比較的少ない分野での大規模なシステムに適しています。

しかし、ウォータフォール型開発技法では、次のような欠点があります。
  前工程が完成しないと次工程に進めないので、開発に時間がかかる。
  外部設計後に環境変化が起こっても、手戻りするのが困難である。
  利用者は、移行実施段階になってから実物を見て、要求の手違いがわかる。
それで、環境変化が激しい分野のシステム開発には不向きです。

アジャイル開発技法

ウォータフォール型の欠点を回避するために、短期間でシステム開発を行うための開発技法が出現しました。その総称をアジャイル開発技法といいます。
 いろいろな開発技法がありますが、システム全体を細分化あるいは簡素化により小規模なシステムにして、要求分析から実現までの期間を短縮すること、少数の開発者と利用者が一緒に作業することにより、互いに成果を確認・評価し、改善・拡大を繰り返すのが特徴です。

イテレーション型開発技法
イテレーションとは、要求分析から移行までの一連の活動です。ウォータフォール型開発技法では、イテレーションを1回しか行わないのに対して、短期間にイテレーションを行い繰り返す開発技法の総称です。それにより、利用者の要求と開発成果物の不一致の解消、要求変更への柔軟な対応、利用者のシステム理解の徹底などに効果があります。
インクリメンタル型開発技法
一挙にシステム全体を構築するのではなく、まず中核となる部分だけを構築し、逐次機能を追加したり、対象範囲を拡大する方法の総称です。ともかく短期間に最低限の機能を実現し、それから周辺機能の拡充や使い方の改善を図ろうとするものです。

ウォータフォール型開発技法以外の主な開発技法を示します。上記の区分は何に注目したかの視点によるものであり、以下の開発技法は複数の総称技法に属しています。

プロトタイピング開発技法
プロトタイプ(見本)を短期間に構築して利用者に見せ、要求を取り入れて逐次改善していく方法です。
スパイラル開発技法
プロトタイピング開発技法は、見方を変えれば、各工程をスパイラル(らせん)的に繰り返すことだともいえます。その意味では、スパイラル開発技法とプロトタイピング開発技法は、似たようなものだといえます。
しかし、スパイラル開発技法は中核を作ってからスパイラル的に対象を拡大することを重視しており、インクリメンタル型開発技法の一つだともいえます。
情報技術者試験問題では、後者の解釈が多いようです。「見本」ならばプロトタイピング、「繰返し」ならばスパイラル」と理解しておけばよいでしょう。

近年の開発技法

近年は、企業間競争が激しくなり、情報システムの企画から稼働までの時間短縮が重視されるようになりました。そのための開発方法論の総称をRAD(Rapid Application Development)といいます。
 比較的短期間の開発期間を決めておき、その間で開発する方法です。
 技法的には、プロトタイピング開発技法やスパイラル開発技法を発展させ、CASE技術を組み合わせています。
 体制的には、業務をよく知っているユーザと、能力の高い開発者がペアになって開発を行い、テストや文書化などの作業はまわりのスタッフが支援するような体制で行ないます。
 RADを行うための方法や体制について、多様なモデルが提案されています。

ラウンドトリップ・エンジニアリング
モデリング段階とコーディング段階を往復しながらソフトウェア開発を行う技術です。UMLのようなモデル図からソースプログラムを自動生成したり、ソースプログラムを修正するとモデル図が自動修正されるようなツールが使われます。
カンバン方式
トヨタによるジャストインタイム生産方式をシステム開発スケジューリングに応用して、何を、いつ、どれぐらいのコストで開発するかなどを管理するプロセス管理システムあるいはそれを活用した開発体制です。

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

従来の開発技法は、ドキュメントが重視され、仕様が正しく定義され、正しい手順で開発すべきだとされてきました。XPの提唱者ケント・ベックらは、「変化を享受せよ」として、開発に伴う変化を当然あるべきものとして積極的に対応できることを目指しました。開発スピードの重視、ダウンサイジングなどの環境変化などにマッチし、急速に普及しました。

XPの5つの価値

開発チームが共有すべき5つの価値
 ・顧客と開発者、開発者間の円滑な「コミュニケーション」
 ・必要最小限の設計しか行わない「シンプルさ」
 ・頻繁なテストによる「フィードバック」
 ・大胆な設計変更に立ち向かう「勇気」
 ・関係者の意見や能力の「尊重」
19のプラクティス(抜粋)

XPのプラクティス

共同のプラクティス

開発のプラクティス

管理者のプラクティス

顧客のプラクティス

スクラム開発技法

システム開発でも、ラグビーのスクラムのように、各メンバーが協力し、全体が同じ目的を共有することが重要だとする、少人数によるアジャイル開発手法です。
比較的小規模なシステムを、利用者のニーズを柔軟に反映させながら、短期間で稼働させることを目的としています。

開発すべきシステムを細分化して1~4週程度で完結する開発の単位をスプリントといい、各スプリントを短期間で開発、まとめ、レビュー、調整の繰り返しで開発します。
・テスト駆動開発
・受け入れテスト駆動開発
・リファクタリング
・継続的インテグレーション

などの技法が用いられ、XPと似た特徴をもっています。

スクラム開発の組織

バックログ

バックログとは、解決すべき事項です。これがなくなったときがスクラムのプロジェクトの終了になります。

スプリントの流れ

スプリントとは1~4週程度で完結する開発の単位です。利用者も加わり開発、まとめ、レビュー、調整の繰り返しで行ないます。

DevOps

開発担当者(Development)と運用担当者(Operations)が協調してシステム開発・運用します。Devは、システムに新しい機能を追加すること、Opsは、システムを安定稼働することであり、システムによるビジネスへの価値向上を確実かつ迅速にエンドユーザに届け続けること、その継続的改善を確実にすることが目的です。開発担当者とはベンダやIT部門、運用担当者とはユーザ企業あついは利用部門です。

アジャイル開発技法の一つではありますが、カイゼンやリーン生産方式を背景とした概念で、常にシステムに新しい機能を追加することを重視しています。組織文化の変化を伴うカイゼン運動としての要素もあります。

CLAMS

Devopsの特徴としてCLAMSを挙げています。
  Cluture(文化)
  Lean(リーン)
  Automation(自動化)
  Measurement(計測)
  Sharing(共有)

チーム組織文化

チーム組織文化として、次のルールを定めています。

支援ツール

「Devopsツール」というような特定のツールはなく、既存のツールあるいは手法の利用を推奨しています。
 特に重視しているのは自動化と情報共有です。次のようなツールを掲げています。