本文へ移動

基本情報技術者試験 · 学習ガイド

開発プロセスと開発モデル

開発モデルとは

開発モデルとは、要件の固まり方や変化への向き合い方に応じて、開発を進める型のことです。

エルくんが予約画面の試作品に改善部品を取り付け、計画・実装・確認・振り返りを繰り返す図。
予約画面の試作品を利用者に触ってもらい、短い周期で改善するのが反復的な進め方です。動く成果を使って認識のずれを小さくします。

仕様を最初に固めやすい仕事と、利用者の反応を見ながら決める仕事では、適した進め方が違います。

基本の仕組み

基本の仕組みの図解。中央に予約画面の試作品を1台置き、画面を試す位置から「短い周期で改善」の円形矢印を回して画面へ戻す。左側には「優先順位」「完了条件」「振り返り」を縦に並べ、3つとも反復を支える条件として矢印につなぐ。
覚えること:優先順位・完了条件・振り返りが必要

予約画面の試作品を利用者に触ってもらい、短い周期で改善するのが反復的な進め方です。動く成果を使って認識のずれを小さくします。

ウォーターフォールは工程を段階的に進め、アジャイルは短い反復で価値ある成果を届けながら変化へ対応します。どちらも品質管理や関係者との合意は必要です。

アジャイルは計画も文書も不要という意味ではありません。優先順位、完了条件、振り返りがなければ、ただ作り直しを続ける状態になります。

開発モデルの使い分け

開発モデルの使い分けの図解。左のエルくんが中央の試作品を右の利用者に見せる構図。試作品と利用者の下に「要求の認識」を置き、両者からそこへ向かう矢印を合流させて、認識を合わせる流れを示す。
覚えること:試作品で利用者と要求の認識を合わせる

ウォーターフォールモデルは工程を順に確定させ、原則として前の工程へ戻らない前提で進めます。プロトタイピングモデルは試作品を利用者に見せて要求の認識を合わせ、スパイラルモデルはリスクを評価しながら設計・開発を繰り返します。

システムを機能ごとに分け、段階的に作って順次リリースするのが段階的モデル(インクリメンタルモデル)、全体を作ってから要求の変化に合わせて改良を重ねるのが進展的モデル(エボリューショナリモデル)です。DevOpsは開発チームと運用チームが連携し、自動化されたビルド・テスト・リリースで迅速に改善を続ける考え方です。

開発モデルの使い分け
モデル中心となる進め方
ウォーターフォール工程を順に確定させて進める
プロトタイピング試作品で要求の認識を合わせる
スパイラルリスク評価と開発を繰り返す
アジャイル短い反復で価値を届け、変化に対応する
DevOps開発と運用が連携し、継続的に改善・リリースする

スクラムの役割とイベント

スクラムの役割とイベントの図解。左に「スプリントゴール」とその「進み具合」、右に「直近の作業計画」を置き、左から右への矢印で確認から調整への流れを示す。中央にエルくん、右上に「15分」を配置する。
覚えること:15分で目標への進捗確認・直近計画調整

スクラムでは、プロダクトオーナーがプロダクトの価値を最大化する責任を持ち、プロダクトバックログの項目や順序を明確にします。例えば予約機能と通知機能のどちらを先に届けるかを、利用者の価値から整理します。開発者へ実装手順を一方的に命令する役割とは区別します。

デイリースクラムは、開発者がスプリントゴールへの進み具合を確認し、直近の作業計画を調整する15分のイベントです。管理者へ一人ずつ成果を報告するだけの会議ではありません。障害を見つけたら、必要な詳しい議論を別途行うこともできます。

バーンダウンチャートは、横軸に時間、縦軸に残作業量を置いて進捗を見る方法です。完了した量の累計を描くグラフと混ぜないようにします。線が下がらない場合は未完了の作業や見積りの変化を確認しますが、グラフだけで価値や品質を保証することはできません。

スクラムマスターは、スクラムの理論と実践をチームや組織が理解できるよう支援し、チームの有効性に責任を持ちます。スプリントは1か月以内の固定期間で、その中にスプリントプランニング、デイリースクラム、スプリントレビュー、スプリントレトロスペクティブが含まれます。

スクラムの役割とイベント
イベント目的
スプリント1か月以内の固定期間で、ほかのイベントを含む
スプリントプランニングスプリントで何をどう進めるかを計画する
デイリースクラム開発者が15分で進み具合を確認し、直近の計画を調整する
スプリントレビュー成果を関係者に示し、次に何をするかを検討する
スプリントレトロスペクティブチームのやり方を振り返り、改善策を決める

XPの代表的なプラクティス

XPの代表的なプラクティスの図解。一つの作業机の左にテスト用紙、右にコード編集画面を置き、左から右への矢印で「先にテストを書く→それを通すコードを書く」の順序を示す。場面を仕切らず、右端に「テストを通す」をゴールとして添える。
覚えること:先にテストを書き、通るコードを書く

XP(エクストリームプログラミング)では、テスト駆動開発(先にテストを書き、それを通すようにコードを書く)、ペアプログラミング(二人一組で一つのコードを書く)、リファクタリング(外部から見た動作を変えずに内部構造を改善する)、継続的インテグレーション(頻繁に統合し、ビルドとテストを自動で実行する)などを実践します。

今必要でない機能は作らないというYAGNI(You Aren't Gonna Need It)の考え方や、特定の担当者に限らず誰でもコードを修正できるソースコードの共同所有もXPの特徴です。リファクタリングは機能追加や不具合修正とは目的が違う点に注意します。

試験に出る

  • ウォーターフォールは工程を段階的に進め、アジャイルは短い反復で変化に対応する点の対比。
  • アジャイルは計画や文書が不要という意味ではなく、優先順位・完了条件・振り返りが必要である点。
  • プロダクトオーナーは価値を最大化し、プロダクトバックログの項目と順序を明確にする責任を持つ点。
  • デイリースクラムは進み具合を確認して直近の計画を調整する15分のイベントで、報告会ではない点。
  • バーンダウンチャートは横軸に時間・縦軸に残作業量を置く点と、グラフだけで品質を保証できない点。
  • リファクタリングは外部から見た動作を変えずに内部構造を改善することで、機能追加ではない点。
  • スプリントは1か月以内の固定期間で、レビュー(成果の確認)とレトロスペクティブ(進め方の振り返り)の目的が異なる点。

重要な言葉

ウォーターフォール
工程を段階的に進める開発モデル。
アジャイル
短い反復で価値ある成果を届け、変化に対応する進め方。
プロダクトオーナー
プロダクトの価値最大化に責任を持ち、バックログの順序を明確にする役割。
デイリースクラム
進み具合を確認し直近の計画を調整する15分のイベント。
リファクタリング
外部から見た動作を変えずに、プログラムの内部構造を改善すること。
テスト駆動開発
先にテストを書き、そのテストを通すようにコードを書き進める開発手法。

確認問題

確かめよう反復の最後に動く成果を確認する目的は?

利用者の反応を次の優先順位や改善へ反映するためです。

プロダクトオーナーは、プロダクトバックログの項目と順序を明確にする責任を持つ。

デイリースクラムは、管理者へ一人ずつ成果を報告する会議である。

プロダクトの価値最大化に責任を持ち、バックログの順序を明確にする役割は?

デイリースクラムの説明として正しいものは?

外部から見た動作を変えずに、プログラムの内部構造を改善するXPのプラクティスは?

仕様を最初に固めやすい仕事と、利用者の反応を見ながら決める仕事では、適したが違います。

予約画面の試作品を利用者に触ってもらい、短い周期で改善するのがな進め方です。動く成果を使って認識のずれを小さくします。

は工程を段階的に進め、は短い反復で価値ある成果を届けながら変化へ対応します。どちらも品質管理や関係者との合意は必要です。

アジャイルは計画も文書も不要という意味ではありません。、完了条件、振り返りがなければ、ただ作り直しを続ける状態になります。

スクラムでは、がプロダクトの価値を最大化する責任を持ち、プロダクトバックログの項目や順序を明確にします。例えば予約機能と通知機能のどちらを先に届けるかを、利用者の価値から整理します。開発者へ実装手順を一方的に命令する役割とはします。

は、開発者がスプリントゴールへの進み具合を確認し、直近の作業計画を調整する15分のイベントです。管理者へ一人ずつ成果を報告するだけの会議ではありません。障害を見つけたら、必要な詳しい議論を別途行うこともできます。

は、横軸に時間、縦軸に残作業量を置いて進捗を見る方法です。完了した量の累計を描くグラフと混ぜないようにします。線が下がらない場合は未完了の作業や見積りの変化を確認しますが、グラフだけで価値や品質を保証することはできません。

出典・参考資料

試験の公式案内と、この記事の参考にした学習資料です。

編集:Pinternet Works · 更新日:

教材の編集方針・訂正について