第9章ソフトウェア工学
Agile Process Modelsアジャイル型プロセスモデル
Several popular software process models in use today align with the Agile guidelines. While the phases used within Agile process models are similar to that of other models, the difference is that some disciplines in various phases may overlap. For example, in the Agile process model, all the requirements do not need to be defined in the inception phase prior to starting the design or to coding disciplines in the elaboration and construction phases. New requirements or changes in requirements can be considered as part of subsequent phases. Additionally, an incremental, iterative approach is applied, so that it is not necessary for all the functionality in one increment to be dealt with at once. It is worth noting that the incremental model that was presented earlier may be agile for a similar reason. The benefits of Agile process models are they are flexible (i.e., allow for changes along the way) and emphasize collaboration. They also allow for continuous improvement, which is advantageous if requirements are likely to change or needs are likely to evolve. The drawbacks are that Agile models can be difficult to scale.
英語のヒント
現在よく使われるモデルのいくつかは、アジャイルの指針に沿っている。使用するフェーズはほかのモデルに似ているが、異なるフェーズの一部のディシプリンが重なり合う場合がある点が違う。たとえば、推敲での設計や構築でのコーディングを始める前に、立ち上げですべての要求を定義し終える必要はない。後のフェーズでも、新しい要求や要求の変更を検討できる。また、増分的・反復的に進めるため、一つの増分に含まれる全機能を一度に扱う必要もない。先に示した増分型モデルも、同じような理由でアジャイルになり得る。アジャイル型の利点は、途中の変更を認める柔軟性と、協働を重視することにある。継続的に改善できるため、要求やニーズが変化しそうな場合には有利である。一方で、規模を拡大しにくいことが欠点となる。
Agile Principles
アジャイルの原則
Agile principles were formulated in the Agile Manifesto that was a response to the unsatisfying number of projects that were delayed, overrun their budget, and did not meet customers’ expectations. Agility refers to the ability to create and respond to change in order to profit in a turbulent business environment. Some Agile principles are as follows:
英語のヒント
アジャイルの原則は、アジャイル宣言でまとめられた。遅延、予算超過、顧客の期待を満たさないといった問題のあるプロジェクトが、看過できないほど多かったことへの対応である。俊敏性とは、激しく変わる事業環境で利益を得るため、自ら変化を生み出し、変化へ対応する能力を指す。アジャイルの原則には、次のようなものがある。
• Satisfy the customer through early and continuous delivery of software.
• 早期から継続的にソフトウェアを届け、顧客を満足させる。
• Welcome changing requirements, even late in development.
• 開発の後半であっても、要求の変更を歓迎する。
• Deliver working software frequently, such as each couple of weeks.
• 数週間ごとなど、動くソフトウェアを頻繁に届ける。
• The most effective way of communication within a development team is face-to-face (via collaboration tools).
• 開発チーム内で最も効果的な意思疎通の方法は、協働ツールを通じた対面のやり取りである。
• Working software is the primary measure of progress.
英語のヒント
• 動作するソフトウェアが、進捗を測る第一の尺度である。
• Maintain a sustainable working pace.
英語のヒント
• 持続できる作業のペースを保つ。
• Continuous attention to technical excellence and good design enhances agility.
英語のヒント
• 技術的な卓越性と優れた設計に絶えず注意を払うことで、俊敏さが高まる。
• Simplicity—the art of maximizing the amount of work not done—is essential.
英語のヒント
• 単純さ、すなわち行わずに済む作業の量を最大にする技術が不可欠である。
• The best architectures, requirements, and designs emerge from self-organizing teams.
英語のヒント
• 最良のアーキテクチャ、要求、設計は、自律的に組織されるチームから生まれる。
The approaches that complement Agile software development are Scrum, DevOps, and Site Reliability Engineering.
英語のヒント
アジャイルソフトウェア開発を補完する手法として、Scrum、DevOps、サイト信頼性エンジニアリングがある。
LINK TO LEARNING学習へのリンク
To learn more about Agile, you can visit the Agile Alliance to learn the core principles of Agile development from the experts. The Agile Alliance is a global nonprofit organization that is focused on applying and expanding Agile values, principles, and practices. You can view its tutorial What is Agile? (https://openstax.org/r/76Agile) online, which provides more details on Agile and its use.
英語のヒント
アジャイルについてさらに学ぶには、Agile Allianceを訪れ、アジャイル開発の中核となる原則を専門家から学ぶことができる。Agile Allianceは、アジャイルの価値観、原則、実践方法の適用と普及に力を入れる、世界規模の非営利組織である。オンラインでチュートリアル「アジャイルとは何か」(https://openstax.org/r/76Agile)を閲覧でき、アジャイルとその利用についてさらに詳しく知ることができる。
Scrum
Scrum
Scrum is a type of Agile software development model. The fundamental unit of Scrum is a Scrum team, which is typically ten or fewer people. It consists of one Scrum master, one product owner, and several developers. The Scrum master is responsible for running Scrum and for helping everyone understand its theory and practice. The product owner is responsible for product backlog management, which includes product goals and product backlog items. The product goal describes future desired features of the product, and the product backlog item defines what is required to be added to the product.
英語のヒント
Scrumはアジャイルソフトウェア開発モデルの一種である。Scrumの基本単位はScrumチームであり、通常は10人以下で構成される。チームには、Scrumマスター1人、プロダクトオーナー1人、数人の開発者がいる。ScrumマスターはScrumの運営に責任を持ち、全員がその理論と実践を理解できるよう支援する。プロダクトオーナーは、プロダクトゴールとプロダクトバックログ項目を含むプロダクトバックログの管理に責任を持つ。プロダクトゴールは、製品に将来備わっていてほしい機能を記述する。プロダクトバックログ項目は、製品に追加する必要があるものを定める。
The product is developed in iterations called a sprint, which is a fixed-length event typically of one to four weeks. Each sprint starts with sprint planning, in which the team selects the product goals and product backlog items that will be implemented in that sprint. The selected product goals and product backlog items are moved to the sprint backlog, which is a plan for the current sprint. During the sprint, developers have a daily scrum, which is a 15-minute event for the developers that is held every day at the same time and the same place. During the daily scrum, the developers inspect the progress and, if needed, they adapt the objectives of the sprint. At the end of sprint, there is a sprint review, during which the Scrum team and stakeholders review a demonstration of what was achieved as part of the sprint increment, and the Scrum team gets feedback. After that, in the sprint retrospective, the Scrum team discusses what worked well and what worked poorly process-wise during the last sprint to produce the product increment and proposes changes to increase effectiveness. Figure 9.14 depicts the Scrum process.
英語のヒント
製品は、スプリントと呼ばれる反復を通して開発する。スプリントは期間が固定されたイベントであり、通常は1〜4週間である。各スプリントはスプリントプランニングから始まる。ここでチームは、そのスプリントで実装するプロダクトゴールとプロダクトバックログ項目を選ぶ。選んだゴールと項目は、現在のスプリントの計画であるスプリントバックログへ移される。スプリントの期間中、開発者はデイリースクラムを行う。これは毎日、同じ時刻に同じ場所で開く、開発者のための15分間のイベントである。デイリースクラムでは進捗を確認し、必要があればスプリントの目標を調整する。スプリントの終わりにはスプリントレビューを行う。この場では、Scrumチームと利害関係者が、スプリントの増分として達成した内容の実演を確認し、Scrumチームがフィードバックを受ける。その後、スプリントレトロスペクティブで、直前のスプリントにおいて製品の増分を生み出す過程の何がうまくいき、何がうまくいかなかったかをScrumチームが話し合い、有効性を高める変更を提案する。図9.14はScrumのプロセスを示している。

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典
Figure 9.14 The Scrum framework is organized around sprints, workflow events that involve intensive planning, daily collaboration, review, and retrospection. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.14 Scrumの枠組みはスプリントを軸に構成される。スプリントは、集中的な計画、日々の協力、レビュー、振り返りを伴う作業の流れのイベントである。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
The benefits of the Scrum framework include better quality of the product, decreased time to market, higher customer satisfaction, and increased collaboration within the development team. The drawbacks are that the approach requires training; it is not suitable for large teams; and it requires daily meetings.
英語のヒント
Scrumの枠組みの利点には、製品の品質向上、市場投入までの時間の短縮、顧客満足度の向上、開発チーム内の協力の促進がある。欠点は、この手法を使うには研修が必要なこと、大規模なチームには適さないこと、毎日のミーティングが必要なことである。