忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【ソフトウェア開発技術】変化を味方につける!「アジャイルプロセス」|情報処理問題1000本ノック

あらかじめ完璧な計画を立てるのではなく、小さな単位で開発を繰り返しながら完成度を高めていくアジャイル開発。その根底にある「アジャイル宣言」の考え方を攻略しましょう。

1. 問題:アジャイルプロセスの特色

【 問題 】 アジャイルプロセスの特色として、適切でないものはどれでしょうか?

ア、数週間程度の短いサイクルで開発を繰り返し、短期開発を目指す。
イ、開発チームと利用者が密接に協力し、利用者が積極的にプロジェクトに参加する。
ウ、形式的な仕様書や、数学的に厳密さが保証された膨大なドキュメントの作成を最重視する。
エ、開発の途中であっても、ビジネス環境やユーザーニーズによる要求の変化を柔軟に受け入れる。

2. 正解:開発プロセスに関する正解

正解: ウ、数学的に厳密さが保証されたドキュメントを重視する

3. 解説:「動くソフト」と「対話」を重んじる

アジャイル開発では、包括的なドキュメント(書類)よりも、実際に動作するソフトウエアを早く提供することを優先します。

【図解:アジャイルソフトウエア開発宣言のポイント】

■ 重視するもの(左側) vs 軽視はしないが優先順位が低いもの(右側)
1. プロセスやツール よりも 個人との対話
2. 包括的なドキュメント よりも 動くソフトウエア ★(ウ)のポイント
3. 契約交渉 よりも 顧客との協調
4. 計画の遵守 よりも 変化への対応

■ 数学的な厳密さについて
・選択肢(ウ)にある「数学的に厳密なドキュメント」は、主に「形式手法(フォーマルメソッド)」などで重視されるものであり、スピードと変化への対応を重視するアジャイルの思想とは対極にあります。
[ 関連用語:イテレーション(反復) ]
★ アジャイルでは「計画→設計→実装→テスト」という一連のサイクルを1〜4週間程度の短い期間で行います。この繰り返しの単位を「イテレーション」(スクラムではスプリント)と呼びます。

1. 理解のコツ: 「旅行ガイドブック(ドキュメント)を完璧に読み込む」ことよりも、「とりあえず現地へ行って、天気や気分に合わせて行き先を決める(動くソフトと変化への対応)」のがアジャイルのスタイルです。
2. 試験対策の視点: 「ドキュメントよりもプログラミングを優先」「計画変更を歓迎する」「ユーザーとのコミュニケーション」といったキーワードが正解(適切な特色)としてよく登場します。逆に、厳格な文書化や事前の詳細すぎる計画はアジャイルには馴染まないため、誤答の選択肢として使われます。


4. まとめ

「ドキュメントよりも、動くソフトウェアと変化への柔軟性を重視する」。これがアジャイルプロセスです。ビジネスのスピードが加速する現代において、ユーザーと共に価値を作り上げていくための現代的な開発手法です。


PR

【ソフトウェア開発技術】論理の美しさと正しさの基本!「適正プログラム」|情報処理問題1000本ノック

複雑なプログラムも、基本となるパーツが「入り口が一つ、出口が一つ」という規律を守っていれば、解析や修正が格段に楽になります。この基本的な定義を攻略しましょう。

1. 問題:プログラムの構造的定義

【 問題 】 プログラムの処理単位において、以下の2つの条件を満たすものを何と呼ぶでしょうか?
① 入口が一つで、出口も一つである。
② 入口から入って、必ず出口に到達する(無限ループがない)。

ア、構造化プログラム   イ、適正プログラム   ウ、保守性プログラム   エ、アルゴリズムド・プログラム

2. 正解:プログラム設計に関する正解

正解: イ、適正プログラム(Proper Program)

3. 解説:なぜ「出口一つ」が重要なのか

プログラミングにおいて、あちこちからジャンプして入ってきたり、途中で勝手に終了したりするコードは「スパゲッティコード」の原因となります。

【図解:適正プログラムの2条件】

■ 条件1:1入口・1出口(Single Entry, Single Exit)
・どこから始まってどこで終わるかが明確であること。
・これにより、処理を一つの「ブラックボックス(部品)」として扱いやすくなります。

■ 条件2:停止性(Terminating)
・途中でデッドロックを起こしたり、永遠に終わらないループに陥ったりせず、必ず出口にたどり着くこと。
[ 構造化プログラミングとの関係 ]
構造化プログラミング(ダイクストラが提唱)は、この「適正プログラム」を、「順次・選択・反復」という3つの基本構造だけで組み合わせる手法のことです。適正プログラムはその最小単位の理想形と言えます。

1. 理解のコツ: 迷路をイメージしてください。「入り口が1つ、出口が1つ、そして必ずゴールに辿り着けるルートがある」。そんな健全な迷路(プログラム)が「適正」な状態です。
2. 試験対策の視点: 紛らわしい選択肢として「構造化プログラム」がありますが、問題文が「1つの入口と1つの出口を持つ~」という定義そのものを問うている場合は、「適正プログラム」が最も適切な用語になります。


4. まとめ

「1つの入口と1つの出口を持ち、必ず終了する」。これが適正プログラムです。この規律を守ることが、バグが少なく、他人が読んでも理解しやすい「良いコード」への第一歩となります。


【開発管理】上流から下流へ!ウォーターフォールモデルの欠点と特徴|情報処理問題1000本ノック

滝が上から下へ流れるように、工程を一つずつ完結させて進める「ウォーターフォールモデル」。計画の立てやすさという大きなメリットの反面、現代のスピード感ある開発では課題となる「欠点」についても正しく理解しておきましょう。

1. 問題:開発モデルの特性と欠点

【 問題 】 システム開発におけるウォーターフォールモデルの欠点や性質として、不適切な(誤っている)ものはどれでしょうか?

① プロジェクトの後半にならないと、実際のソフトウェアが確認できない。
② 開発後半での仕様変更や手戻りに対して、柔軟に対応できないことがある。
③ 各工程で分業を前提とするため、工程間でのコミュニケーションロスが発生する可能性がある。
④ 開発の初期段階で、全体の期間や金額を固定的に見積もることができない。

2. 正解:開発モデルの比較に関する正解

正解: ④ 開発の初期段階で、全体の期間や金額を固定的に見積もることができない。

3. 解説:計画性と柔軟性のトレードオフ

ウォーターフォールモデルは、最初に全ての要件を決め、それに沿ってスケジュールを引き、工数を見積もります。そのため、「期間や金額を最初に見積もりやすい(固定しやすい)」のが最大の特徴であり、選択肢④はメリットの説明となっているため、欠点としては不適切です。

[ ウォーターフォールモデルの欠点 ]
実機確認の遅れ:テスト工程(後半)まで動くものが見えないため、最後に「イメージと違う」というリスクがある。
変更への弱さ:前の工程に戻る「手戻り」のコストが非常に高く、仕様変更に柔軟に対応しづらい。
分業の弊害:設計者と開発者が異なる場合など、ドキュメントを通じた伝達ミスが起きやすい。

[ アジャイルモデルとの違い ]
アジャイル:短いサイクルでリリースを繰り返し、変更に柔軟。ただし、全体の最終的な期間や金額を最初から固定するのは苦手。

1. 理解のコツ: ウォーターフォールは「建築(ビルを建てる)」、アジャイルは「料理(味見しながら作る)」に例えられます。ビルを建てる前に予算と工期が決まっていないと困るように、大規模な基幹システムなどでは今でもウォーターフォールが主流です。
2. 試験対策の視点: 試験では「手戻りコストの増大」や「利用者の確認が遅れる」といった欠点と、他の開発モデル(アジャイル、スパイラル、プロトタイピング)との比較が頻出します。それぞれの強みと弱みを表裏一体で覚えましょう。


4. まとめ

「最初に計画を固め、順序良く進める」。これがウォーターフォールモデルの核となる性質です。計画を固定しやすいというメリットが、変化の激しい現代では「柔軟性の欠如」という欠点にもなり得ることを押さえておきましょう!