このページは以下の「ITパスポート シラバス6.3」学習用コンテンツです。
◆大分類:4.開発技術
◆中分類:9.ソフトウェア開発管理技術
◆小分類 | ◆見出し | ◆学習すべき用語 |
---|---|---|
26.開発プロセス・手法 | (3) アジャイル | ユーザーストーリー XP(エクストリームプログラミング) テスト駆動開発 ペアプログラミング リファクタリング ふりかえり(レトロスペクティブ) 継続的インテグレーション(CI) スクラム スクラムチーム(プロダクトオーナー,開発者,スクラムマスター) スプリント プロダクトバックログ スプリントバックログ |
ユーザーストーリー
ユーザーストーリーはアジャイル開発において要件を簡潔に表現する方法であり、ユーザーが何を望んでいるかを記述します。具体的には「誰が」「何を」「なぜ」するかの3つの要素で構成され、システムの機能や価値を説明する短い文です。
ユーザーストーリーを利用することでチームはユーザーの視点から開発を進め、価値のあるソフトウェアを提供することが可能となります。
ユーザーストーリーに関する学習用問題
問題
ユーザーストーリーの構成要素として適切なものはどれですか?
1 目的、詳細、技術的仕様
2 要件、設計、テストケース
3 誰が、何を、なぜ
%%replace6%%
正解
3 誰が、何を、なぜ
解説
ユーザーストーリーは「誰が」「何を」「なぜ」の3要素でユーザー視点の要件を表現します。
選択肢1の技術的な内容や、選択肢3の設計とテストはユーザーストーリーの主眼ではありません。
問題
ユーザーストーリーの主な目的として適切でないものはどれですか?
1 ユーザーの視点から要件を明確化する
2 ソフトウェアの設計図を提供する
3 開発チームに優先順位を示す
%%replace6%%
正解
2 ソフトウェアの設計図を提供する
解説
ユーザーストーリーは要件を簡潔に伝える手段で、設計図を提供するものではありません。
設計や技術的な詳細は他の文書で定義されますが、ユーザーストーリーはユーザー価値に焦点を当てた要件です。
問題
ユーザーストーリーの利点として適切なものはどれですか?
1 開発の方向性をユーザー視点から維持しやすい
2 要件の迅速な変更が困難になる
3 詳細な技術仕様書を作成するための基礎資料になる
%%replace6%%
正解
1 開発の方向性をユーザー視点から維持しやすい
解説
ユーザーストーリーはユーザーの視点を反映しており、開発の方向性を維持するためのガイドとなります。
迅速な変更への対応を妨げるわけではなく、技術仕様書の代わりとして使うものでもありません。
XP(エクストリームプログラミング)
XPはアジャイル開発手法の一種であり、迅速なリリースと品質の向上を目的とします。開発チームが短期間で反復的にソフトウェアをリリースし、顧客のフィードバックを取り入れて改善を重ねます。
ペアプログラミングやテスト駆動開発などのプラクティスが特徴で、開発の柔軟性と高品質を追求します。
XPに関する学習用問題
問題
XPのプラクティスに含まれるものとして適切なものはどれですか?
1 ウォーターフォールモデル
2 ペアプログラミング
3 リリースの長期計画作成
%%replace6%%
正解
2 ペアプログラミング
解説
XPのプラクティスにはペアプログラミングが含まれ、開発者が2人1組でコードを書くことで品質を向上させます。
ウォーターフォールモデルは異なる開発手法で、リリースの長期計画作成もXPでは推奨されません。
問題
XPにおける主な特徴は何ですか?
1 顧客のフィードバックを重視した反復開発
2 長期の計画に基づくリリース
3 仕様書に基づく厳密な設計プロセス
%%replace6%%
正解
1 顧客のフィードバックを重視した反復開発
解説
XPは反復的な開発を行い、顧客のフィードバックを取り入れてソフトウェアを継続的に改善します。
長期計画や厳密な設計はXPの柔軟性のある手法とは異なります。
問題
XPで重視される価値として適切でないものはどれですか?
1 コミュニケーション
2 勇気
3 コスト削減
%%replace6%%
正解
3 コスト削減
解説
XPはコミュニケーションや勇気といった価値を重視しますが、直接的なコスト削減を目的としているわけではありません。
XPの主な目標は品質向上と開発の柔軟性の確保です。
テスト駆動開発(TDD: Test-Driven Development)
テスト駆動開発(TDD)は最初にテストを作成し、そのテストに合格するコードを書く開発手法です。
テストがシステムの要件を具体的に定義するため、開発者は何を実装すべきかが明確になり、コードの品質や保守性が向上します。
テストに合格するまでコードを修正することで、バグを防ぎ、正確に動作する開発がなされます。
テスト駆動開発に関する学習用問題
問題
テスト駆動開発の基本的なサイクルとして適切なものはどれですか?
1 設計→コーディング→テスト
2 テスト作成→コーディング→リファクタリング
3 コーディング→デバッグ→リリース
%%replace6%%
正解
2 テスト作成→コーディング→リファクタリング
解説
テスト駆動開発では最初にテストを作成し、そのテストを満たすコードを記述した後、コードをリファクタリングして改善します。このプロセスにより品質を保ちながら開発を進めることが可能です。
問題
テスト駆動開発の主な目的は何ですか?
1 開発スピードの大幅な向上
2 新しい技術の採用促進
3 コードの品質と保守性の向上
%%replace6%%
正解
3 コードの品質と保守性の向上
解説
TDDの目的はテストを先行させることでコードの品質を確保し、バグを減らすことです。
開発スピードの向上や新技術の採用を直接の目的とはしていません。
問題
テスト駆動開発においてリファクタリングを行う目的として正しいものはどれですか?
1 コードの動作を変更するため
2 コードの構造を改善して読みやすくするため
3 新しい機能を追加するため
%%replace6%%
正解
2 コードの構造を改善して読みやすくするため
解説
リファクタリングはコードの動作を変更せずにその構造を改善することを指します。
目的はコードの保守性や可読性を高めることにあります。
ペアプログラミング
ペアプログラミングは2人のプログラマーが1台のコンピュータを使って共同でコードを書く開発手法です。一方が「ドライバー」としてコードを書き、もう一方が「ナビゲーター」としてコードのレビューや問題点の指摘を行います。
ペアプログラミングは品質向上や知識の共有に効果的です。
ペアプログラミングに関する学習用問題
問題
ペアプログラミングにおける「ナビゲーター」の役割として適切なものはどれですか?
1 コードのレビューや改善点の指摘を行う
2 コードの入力を担当する
3 開発環境の設定を行う
%%replace6%%
正解
1 コードのレビューや改善点の指摘を行う
解説
ナビゲーターはコードを書かず、ドライバーが入力するコードを監視し、レビューや改善点を指摘します。
開発環境の設定はペアプログラミングの主要な役割ではありません。
問題
ペアプログラミングの利点として適切でないものはどれですか?
1 バグの早期発見
2 知識の共有
3 開発コストの削減
%%replace6%%
正解
3 開発コストの削減
解説
ペアプログラミングはバグの早期発見や知識の共有に効果がありますが、短期的にはコストが増加する場合があります。
コスト削減は主な目的ではありません。
問題
ペアプログラミングを行う際の適切な進め方はどれですか?
1 ドライバーが全ての意思決定を行う
2 ナビゲーターが頻繁に役割を交代する
3 ナビゲーターは指示を出さず黙って観察する
%%replace6%%
正解
2 ナビゲーターが頻繁に役割を交代する
解説
ペアプログラミングではドライバーとナビゲーターの役割を定期的に交代することで、双方がコードを書くこととレビューすることを経験し、知識の共有を促進します。
リファクタリング(Refactoring)
リファクタリングはソフトウェアの外部動作を変えずに内部構造を改善する技術です。コードを整理し保守性を高めることが目的で、不要な重複を減らし可読性を向上させます。
リファクタリングは定期的に行われることで品質の低下を防ぎます。
リファクタリングに関する学習用問題
問題
リファクタリングの主な目的は何ですか?
1 コードの動作を変更すること
2 新しい機能を追加すること
3 コードの内部構造を改善し保守性を高めること
%%replace6%%
正解
3 コードの内部構造を改善し保守性を高めること
解説
リファクタリングは動作を変えずにコードの内部構造を整理し、可読性や保守性を高めることが目的です。
新しい機能の追加や動作変更を目的とするものではありません。
問題
リファクタリングを行うタイミングとして適切でないものはどれですか?
1 新しい機能を追加する前
2 コードにバグが見つかったとき
3 すべての開発が完了した後
%%replace6%%
正解
3 すべての開発が完了した後
解説
リファクタリングは開発の進行中に行うべきで、特に新機能の追加前やバグ修正時に実施すると効果的です。
すべての開発が完了した後にまとめて行うと、変更が複雑になりやすくなります。
問題
リファクタリングによって期待できる効果はどれですか?
1 プログラムの実行速度が常に向上する
2 コードが簡潔になり読みやすくなる
3 リリーススケジュールが短縮される
%%replace6%%
正解
2 コードが簡潔になり読みやすくなる
解説
リファクタリングによってコードの重複を減らし、構造を整理することで可読性が向上します。
実行速度やリリーススケジュールの短縮はリファクタリングの直接的な効果ではありません。
ふりかえり(レトロスペクティブ)
ふりかえり(レトロスペクティブ)はアジャイル開発におけるチームの作業プロセスの評価を行うミーティングです。
スプリントの終了時に行われ、うまくいったことや改善点を話し合い、次回のスプリントに向けて具体的な改善策を考えます。継続的な改善を促すための重要な活動です。
ふりかえりに関する学習用問題
問題
ふりかえりの目的として適切でないものはどれですか?
1 過去のスプリントで起きた問題を追及する
2 次のスプリントに向けて改善点を見つける
3 チームの作業プロセスを評価する
%%replace6%%
正解
1 過去のスプリントで起きた問題を追及する
解説
ふりかえりの目的は改善点を見つけ、次のスプリントに役立てることです。問題の追及や責任追及ではなく、前向きな改善策を検討します。
問題
ふりかえりの開催頻度として一般的なものはどれですか?
1 毎日行う
2 スプリントの終了時に行う
3 1年に1回行う
%%replace6%%
正解
2 スプリントの終了時に行う
解説
ふりかえりは通常、スプリントの終了時に開催され、作業プロセスを評価し改善策を考えます。毎日や年に1回行うものではありません。
問題
ふりかえりで話し合われるべきこととして適切でないものはどれですか?
1 次のスプリントで試すべき改善策
2 スプリントでうまくいったこと
3 個人のミスや責任追及
%%replace6%%
正解
3 個人のミスや責任追及
解説
ふりかえりはチーム全体の作業改善を目指し、個人のミスや責任を追及する場ではありません。改善策や成功事例の共有が中心です。
継続的インテグレーション(CI: Continuous Integration)
継続的インテグレーション(CI)は開発者がコードを頻繁に統合し、自動テストを実行する手法で、統合の問題を早期に発見し解決できます。
CIはアジャイル開発の基本的なプラクティスであり、品質の維持とリリースの迅速化に役立ちます。
継続的インテグレーションに関する学習用問題
問題
継続的インテグレーションの主な目的として適切なものはどれですか?
1 統合の問題を早期に発見すること
2 手動でのテストを省略すること
3 すべてのバグを自動で修正すること
%%replace6%%
正解
1 統合の問題を早期に発見すること
解説
CIはコードの統合を頻繁に行い、自動テストによって統合の問題を早期に発見することを目的とします。
手動テストの省略や自動バグ修正を目的としたものではありません。
問題
継続的インテグレーションで行われる自動テストの主な利点は何ですか?
1 コードのバグをすべて修正できる
2 リリースの頻度を減らすことができる
3 コードの品質を継続的に確保できる
%%replace6%%
正解
3 コードの品質を継続的に確保できる
解説
自動テストにより、コードの変更が問題を引き起こしていないかを継続的に確認できます。バグの自動修正やリリース頻度の減少が目的ではありません。
問題
継続的インテグレーションを行う際の重要な要素はどれですか?
1 コードの変更を手動で統合する
2 自動化されたテストのセットを頻繁に実行する
3 リリース作業を完全に自動化する
%%replace6%%
正解
2 自動化されたテストのセットを頻繁に実行する
解説
CIではコードの変更があるたびに自動テストを頻繁に実行し、統合の問題を早期に検出します。
手動での統合やリリース作業の完全自動化は、CIの主要な要素ではありません。
スクラム
スクラムはアジャイル開発手法の一つで、チームが小さな単位で製品を開発し反復的に改善を行うことを目的とします。
スクラムでは役割やイベントが明確に定義され、スプリントと呼ばれる一定期間で作業を進めます。チームの自己管理とコミュニケーションを重視し、適応力を高めることを目指します。
スクラムに関する学習用問題
問題
スクラムにおけるスプリントの主な特徴として適切なものはどれですか?
1 期限が決まっておらず、自由に延長できる
2 一定の期間で開発する反復的なサイクルである
3 スプリント終了後にすべての機能をリリースする必要がある
%%replace6%%
正解
2 一定の期間で開発する反復的なサイクルである
解説
スプリントは通常1〜4週間の一定期間で設定され反復的に作業を行います。期限が決まっており、延長は基本的に行いません。
すべての機能をリリースする必要はなく、次回のスプリントに持ち越す場合もあります。
問題
スクラムにおけるデイリースクラムの目的は何ですか?
1 チームの進捗状況を確認し、問題を早期に解決すること
2 長期的な計画を詳細に策定すること
3 顧客からのフィードバックを収集すること
%%replace6%%
正解
1 チームの進捗状況を確認し、問題を早期に解決すること
解説
デイリースクラムは毎日行われる短いミーティングで、進捗確認や問題の解決に焦点を当てます。
長期計画の策定や顧客フィードバック収集を目的とはしていません。
問題
スクラムにおいてプロダクトバックログの管理を担当するのは誰ですか?
1 開発チーム全員
2 プロダクトオーナー
3 スクラムマスター
%%replace6%%
正解
2 プロダクトオーナー
解説
プロダクトオーナーはプロダクトバックログの管理を担当し、優先順位の決定や要件の明確化を行います。
スクラムマスターはスクラムのプロセスを支援し、開発チームは実際の作業を担当します。
スクラムチーム(プロダクトオーナー、開発者、スクラムマスター)
スクラムチームは3つの役割で構成されます。プロダクトオーナーは要件の決定やプロダクトバックログの管理を担当し、開発者はソフトウェアの実装を行います。
スクラムマスターはスクラムのプロセスをサポートし、チームの障害を取り除く役割を持ちます。この3つの役割が連携することで、効果的なスクラム開発が可能となります。
スクラムチームに関する学習用問題
問題
スクラムチームにおけるスクラムマスターの主な役割はどれですか?
1 プロダクトバックログの優先順位を決める
2 ソフトウェアのテストを担当する
3 スクラムのプロセスをサポートし、チームの障害を取り除く
%%replace6%%
正解
3 スクラムのプロセスをサポートし、チームの障害を取り除く
解説
スクラムマスターはスクラムが正しく実行されるようサポートし、チームの障害を解消する役割です。
プロダクトバックログの管理はプロダクトオーナーが担当し、テストは開発チームの作業範囲に含まれます。
問題
プロダクトオーナーの責任として適切でないものはどれですか?
1 要件の決定とプロダクトバックログの管理
2 開発チームのパフォーマンス評価
3 ステークホルダーとのコミュニケーション
%%replace6%%
正解
2 開発チームのパフォーマンス評価
解説
プロダクトオーナーは要件の決定やバックログの管理を担当しステークホルダーと連携しますが、開発チームのパフォーマンス評価は担当外です。
パフォーマンス評価は組織の人事部門などが行います。
問題
開発者の役割に含まれる業務として適切なものはどれですか?
1 プロジェクトの全体計画の策定
2 実装する機能の設計とコーディング
3 スプリントの終了後にリリース計画を立てる
%%replace6%%
正解
2 実装する機能の設計とコーディング
解説
開発者はソフトウェアの設計と実装を担当します。
全体計画の策定やリリース計画はプロダクトオーナーやスクラムマスターと協力して行うことが一般的です。
スプリント
スプリントはスクラムの開発サイクルで、1〜4週間の一定期間で作業が行われます。スプリントの目的は、計画された作業を完了し、製品に機能を追加することです。
スプリント終了時には、レビューを行い、成果物の評価と次のスプリントに向けた計画を立てます。
スプリントに関する学習用問題
問題
スプリントの期間として一般的に適切な範囲はどれですか?
1 1〜4週間
2 6〜12ヶ月
3 毎日行われる
%%replace6%%
正解
1 1〜4週間
解説
スプリントの期間は1〜4週間が一般的でこの期間内で計画された作業を行います。
6〜12ヶ月や毎日行うのはスプリントの定義から外れます。
問題
スプリント終了時に行われるアクティビティはどれですか?
1 プロジェクトの全体計画の再策定
2 次のスプリントに向けての休憩期間を設ける
3 スプリントレビューとふりかえり
%%replace6%%
正解
3 スプリントレビューとふりかえり
解説
スプリント終了時にはスプリントレビューで成果物を評価し、ふりかえりでプロセスの改善を図ります。
全体計画の再策定や休憩期間はスプリントの主要なアクティビティではありません。
問題
スプリント中に要件変更が生じた場合の対応として適切なのはどれですか?
1 スプリントを中断して新たに開始する
2 現在のスプリントを完了させ、その後に変更を考慮する
3 即座にスプリントの内容を修正する
%%replace6%%
正解
2 現在のスプリントを完了させ、その後に変更を考慮する
解説
スプリント中に要件が変更された場合は現在のスプリントを完了させた後に変更を取り入れるのが基本です。
スプリントを中断したり、即座に修正するのは推奨されません。
プロダクトバックログ
プロダクトバックログはプロジェクトに必要なすべての要件をリスト化したものです。プロダクトオーナーが管理し、優先順位を付けることで、開発チームはスプリントで取り組むべきタスクを明確にします。
バックログは随時更新され、プロジェクトの進行に合わせて変更されます。
プロダクトバックログに関する学習用問題
問題
プロダクトバックログの管理を担当するのは誰ですか?
1 スクラムマスター
2 開発チーム全員
3 プロダクトオーナー
%%replace6%%
正解
3 プロダクトオーナー
解説
プロダクトバックログの管理と優先順位付けはプロダクトオーナーが担当します。スクラムマスターや開発チームはバックログの内容を基に作業を進めますが、管理はプロダクトオーナーの役割です。
問題
プロダクトバックログに含まれるべき情報として適切でないものはどれですか?
1 機能要求
2 技術的負債の対応策
3 詳細な技術設計書
%%replace6%%
正解
3 詳細な技術設計書
解説
プロダクトバックログには機能要求や技術的負債の対応策が含まれますが、詳細な技術設計書は含まれません。
設計に関する詳細は他のドキュメントで扱います。
問題
プロダクトバックログが更新されるタイミングとして適切なのはどれですか?
1 スプリント終了時のみ
2 常に必要に応じて随時更新される
3 プロジェクトの初期段階のみ
%%replace6%%
正解
2 常に必要に応じて随時更新される
解説
プロダクトバックログはプロジェクトの進行に応じて随時更新され、優先順位や内容が調整されます。
スプリント終了時のみの更新や初期段階のみに限定することはありません。
スプリントバックログ
スプリントバックログは特定のスプリントで取り組むタスクのリストです。開発チームがスプリント計画ミーティングで選択したプロダクトバックログの項目から構成され、スプリントの進行に伴いタスクが更新されます。
スプリントバックログは作業の可視化と進捗管理に役立ちます。
スプリントバックログに関する学習用問題
問題
スプリントバックログに含まれるのは何ですか?
1 特定のスプリントで実施するタスク
2 プロジェクト全体の要件一覧
3 将来のリリース計画
%%replace6%%
正解
1 特定のスプリントで実施するタスク
解説
スプリントバックログには現在のスプリントで実施するタスクのみが含まれます。
プロジェクト全体の要件や将来のリリース計画はプロダクトバックログで管理されます。
問題
スプリントバックログを管理するのは誰ですか?
1 スクラムマスター
2 開発チーム
3 プロダクトオーナー
%%replace6%%
正解
2 開発チーム
解説
スプリントバックログは開発チームが管理し、スプリント中の進捗を追跡します。
スクラムマスターやプロダクトオーナーはサポートしますが、管理の主担当は開発チームです。
問題
スプリントバックログが更新されるタイミングとして適切なものはどれですか?
1 スプリント中に必要に応じて随時更新される
2 スプリント計画ミーティングのみ
3 スプリント終了後
%%replace6%%
正解
1 スプリント中に必要に応じて随時更新される
解説
スプリントバックログはスプリント中に進捗やタスクの状況に応じて更新されます。
スプリント計画ミーティングで一度決定した後も必要に応じて変更が加えられます。