ソフトウェア開発管理技術とアジャイル
ソフトウェア開発には構造化手法やオブジェクト指向といった手法、ウォーターフォールやスパイラルといったモデルがあります。アジャイル開発は短い期間を繰り返しながら機能を作り上げる手法で、代表的な手法にスクラムがあります。
代表的なソフトウェア開発の手法とモデルの特徴を説明できるようになります。また、アジャイル開発とスクラムの考え方、開発を支える実践技術やフレームワーク(CMMIなど)の役割を理解します。
ソフトウェア開発の手法・モデルや、アジャイル開発、スクラムの用語(スプリント、プロダクトバックログなど)は、ここ数年のITパスポート試験で出題が増えている分野です。用語の意味を正確に押さえておくことが得点につながります。
開発の手法とモデル
ソフトウェアをどのような考え方で組み立てるかには、いくつかの代表的な手法があります。構造化手法は、業務の処理を「入力→処理→出力」のような流れに分解し、上から下へ段階的に詳しくしていく古くからの考え方です。これに対してオブジェクト指向は、データとそれを扱う処理をひとまとまりの「モノ(オブジェクト)」として捉え、モノどうしのやり取りとしてシステムを組み立てる考え方です。利用者がシステムをどう使うかを「利用者(アクター)」と「機能」の関係で整理するユースケースや、オブジェクト指向の設計を図で表す共通の記法であるUML(統一モデリング言語)は、この考え方とあわせて使われます。
開発したシステムをすばやく安定して運用するための考え方として、開発チーム(Development)と運用チーム(Operations)が協力し合うDevOpsがあります。開発と運用を分けて考えるのではなく、両者が連携することでリリースの頻度と品質を両立させる狙いがあります。近年は、機械学習モデルの開発と運用を同じように連携させるMLOpsという考え方も使われています。
システム開発の進め方には、単元16で扱った工程を一方向に進めるウォーターフォールモデルのほか、試作品を早期に作ってユーザーに確認してもらうプロトタイピングモデル、機能ごとに設計・開発・評価のサイクルを繰り返すスパイラルモデル、画面のひな形などを使って短期間で開発するRAD(ラピッドアプリケーションデベロップメント)があります。また、既存のプログラムを解析して設計書を作り直すリバースエンジニアリングという技術もあり、通常の開発とは逆向きの流れであることが名前の由来です。
これらの手法とモデルは、それぞれ別の軸で選ばれるものです。構造化手法とオブジェクト指向は「どういう考え方でプログラムを組み立てるか」という設計思想の違いであり、ウォーターフォールとプロトタイピング、スパイラルは「どういう順序で工程を進めるか」という進め方の違いです。試験では、この2つの軸を混同した選択肢が出てくることがあるため、いま問われているのが設計思想の話か、進め方の話かを最初に見極めるとよいでしょう。
アジャイル開発とスクラム
アジャイル開発とは、システム全体を最初にすべて設計してから作るのではなく、優先度の高い機能から順番に、短い期間で「設計・開発・テスト・リリース」のサイクルを繰り返しながら進めていく軽量な開発手法です。ウォーターフォールモデルが最初にすべての仕様を固めるのに対し、アジャイル開発は開発の途中で要望が変わることを前提にしている点が異なります。計画を立てないわけではなく、計画を立てる単位を短くして、柔軟に見直せるようにしている点がポイントです。
アジャイル開発の代表的な手法がスクラムです。スクラムを実践するチームをスクラムチームと呼び、そこには開発すべき機能の優先順位を決めるプロダクトオーナー、実際に開発を行う開発者、チームがスクラムの進め方を正しく実践できるよう支援するスクラムマスターという役割があります。
チームで開発すべき機能や要望を一覧にしたものをプロダクトバックログと呼び、その中から今回の期間で取り組む項目を選んでまとめたものをスプリントバックログと呼びます。この作業を、1〜4週間程度のスプリントという期間で繰り返しながら、少しずつ機能を作り上げていきます。プロダクトバックログとスプリントバックログは、どちらも「やることの一覧」という点では似ていますが、対象がプロジェクト全体か、今回のスプリントだけかという範囲の違いで区別します。
スプリントの期間中は、チームメンバーが毎日短時間集まって進捗や課題を共有する場が設けられ、スプリントの終わりには完成した機能を関係者に見せて確認してもらう場も設けられます。役割・作業・期間の3つが、それぞれ短い名前の用語で表されているのがスクラムの特徴です。用語の意味を単独で覚えるのではなく、「誰が」「何を」「いつ」の3つの軸で整理すると、試験本番でも思い出しやすくなります。スクラムでは、こうした短い期間の会議や確認を繰り返すことで、問題が大きくなる前に見つけ、次のスプリントの計画にすぐ反映できるようにしています。この短いサイクルの積み重ねこそが、アジャイル開発全体の柔軟さを支えています。
実践技術とフレームワーク
アジャイル開発、とくにスクラムと合わせてよく使われる実践技術にXP(エクストリームプログラミング)があります。XPでは、利用者からみた要望を短い文章で表すユーザーストーリーを単位に開発を進めます。プログラムを書く前に、まずそのプログラムが満たすべきテストを先に作っておくテスト駆動開発や、2人の開発者が1台のパソコンで役割を交代しながらコードを書くペアプログラミング、機能を変えずに内部の構造だけを整理し直すリファクタリングなどが代表的な実践です。開発者どうしがこまめにプログラムを統合し、そのたびに自動でテストを実行する継続的インテグレーション(CI)も、変更による不具合を早期に見つけるための技術です。スプリントの終わりに、チーム自身の進め方を振り返って改善点を話し合うふりかえり(レトロスペクティブ)も、次のサイクルの精度を高めるために欠かせません。
開発プロセス全体を標準化する枠組みもあります。共通フレームは、ソフトウェア開発とその取引を適正に行うために、作業項目を一つひとつ定義して標準化したもので、SLCP(ソフトウェアライフサイクルプロセス)とも呼ばれます。また、開発組織の仕事の進め方そのものがどれくらい成熟しているかを評価するモデルがCMMI(能力成熟度モデル統合)です。CMMIでは、組織のプロセス成熟度を5段階のレベルで表し、レベルが上がるほど、場当たり的な進め方から、計画的で継続的に改善される進め方へと変わっていきます。共通フレームが「何をやるべきか」の標準、CMMIが「どれだけうまくできているか」の物差しという違いで区別すると整理しやすくなります。
XPの各実践技術も、狙いを整理しておくと覚えやすくなります。テスト駆動開発とペアプログラミングは、コードを書く時点で誤りを減らすための工夫であり、リファクタリングと継続的インテグレーションは、書いたあとの品質を保ち続けるための工夫です。ふりかえりは、技術そのものというより、チームの進め方自体を定期的に見直す活動という位置づけになります。狙いの違いを意識しておくと、混同しにくくなります。
この単元の確認問題
答えを見る前に、まず自分の言葉で答えてみてください。言葉にできないところが、そのまま本試験で止まるところです。
Q. データとそれを扱う処理をひとまとまりの「モノ」として捉え、システムを組み立てる考え方を何と呼びますか。
A. オブジェクト指向です。
処理の流れを段階的に分解する構造化手法とは異なり、モノどうしのやり取りとしてシステムを捉える点が特徴だからです。
Q. チームで開発すべき機能や要望を一覧にしたもののうち、プロジェクト全体を対象とするものを何と呼びますか。
A. プロダクトバックログです。
今回のスプリントだけを対象とするスプリントバックログとは異なり、プロジェクト全体の要望をまとめたものだからです。
Q. プログラムを書く前に、まずそのプログラムが満たすべきテストを先に作っておく実践技術を何と呼びますか。
A. テスト駆動開発です。
先にテストを用意しておくことで、実装が仕様を満たしているかをすぐに確認できるようにする、XPの代表的な実践だからです。
ソフトウェア開発管理技術とアジャイルは、読んで分かることと、本番で点になることが別です。点にするための材料はこちらにまとめてあります。
- この単元の問題 17問(どこをどう間違えたかまで解説)
- この単元のひっかけ(本試験がどう引っかけてくるか)
- この単元をそのままITパスポート専用AIチューターに質問できます
- 間違えた問題だけを自動で拾い直す復習リスト
「第4章 開発技術」の他の単元
この単元を、手を動かして確かめる
ITパスポートAIチューターでは、いま読んだ単元の四択問題をその場で解いて、 どこで間違えたかまで解説付きで確かめられます。 わからないところはITパスポート専用のAIチューターに訊けます。
この単元をアプリで開く 登録は無料。メールアドレスだけで始められます。