第9章ソフトウェア工学
Crosscutting/Umbrella Activities横断的活動/アンブレラ活動
In addition to the core process framework activities, namely, inception, elaboration, construction, and deployment, there are many activities that can take place at any point during the creation of a solution and throughout the entire software process—in other words, they crosscut the process. To understand the importance of such activities, consider this analogy. In addition to completing the main stages of building a house (e.g., constructing the foundation, walls, roof), there are other important activities that happen throughout the project (e.g., choosing the colors of wall paint). These are like the umbrella you would use on a rainy day—they support the entire process but aren’t part of the main building steps themselves. In software development, a crosscutting activity, or an umbrella activity, is an activity that crosscuts the entire software development process but is not part of the main building steps themselves. They can include communication and training, risk management and planning, software configuration content management, quality management, architecture management, and software security engineering.
英語のヒント
立ち上げ、推敲、構築、配備という中心的な活動に加え、仕組みの作成中のどの時点でも、工程全体にわたって行うことができる活動が数多くある。つまり、工程を横断する活動である。家を建てるたとえで考えてみよう。基礎、壁、屋根を作る主要な段階のほかに、壁の塗料の色を選ぶなど、プロジェクト全体を通して行う重要な活動もある。これらは雨の日の傘のように、工程全体を支えるが、建設の主要な段階そのものではない。ソフトウェア開発でも、工程全体にまたがる一方で主要な構築段階自体には属さない活動を、横断的活動、またはアンブレラ活動という。意思疎通と研修、リスク管理と計画、ソフトウェア構成・コンテンツの管理、品質管理、アーキテクチャ管理、ソフトウェアセキュリティ工学などが含まれる。
Communication and Training
意思疎通と研修
Establishing communication involves scheduling regular meetings between developers and customers and also meeting with developers to train them on new technologies. It is necessary to communicate with stakeholders and customers at various points in the software development process. For example, collecting project requirements during the inception phase involves communication and coordination between project managers and stakeholders. Release notes serve as another form of communication, and they are written for software users to make them aware of the features that are included in a new release. More generally, the status of a project needs to be communicated with management at regular intervals to make sure that satisfactory milestones are reached according to plan.
英語のヒント
意思疎通の仕組みを作るには、開発者と顧客の定期的な会合を予定し、開発者に新技術を教えるための会合も開く。開発工程のさまざまな時点で、利害関係者や顧客とのやり取りが必要になる。たとえば立ち上げで要求を集める際には、プロジェクトマネージャーと利害関係者の意思疎通や調整が必要である。リリースノートも情報を伝える形式の一つで、新しいリリースにどの機能が含まれるかを利用者へ知らせるために書く。さらに一般的には、計画どおりに節目となる成果へ到達しているかを確かめるため、プロジェクトの状況を一定の間隔で管理者へ報告しなければならない。
Regular communication also happens within software development teams. For example, design reviews encourage communication to help finalize designs. Code reviews focus on communicating how the system is changing, and how to solve problems and improve code. Daily stand-ups in Agile software processes are about concise verbal communication.
英語のヒント
開発チーム内でも、定期的に意思疎通を行う。たとえば設計レビューでは、設計を確定させるための話し合いを促す。コードレビューでは、システムがどう変わるか、問題をどう解決してコードを改善するかを伝え合う。アジャイルの工程で毎日行うスタンドアップは、簡潔な口頭でのやり取りを重視する。
Software engineering team members must undergo training on a regular basis to acquire or maintain certain skills. To support this, software development teams typically put in place organizational change transformation methodologies and frameworks (e.g., Prosci 3-Phase process) to manage their ability to successfully conduct projects given the changing nature of software engineering.
英語のヒント
チームのメンバーは、特定の技能を習得・維持するために、定期的な研修を受けなければならない。これを支えるため、チームは通常、Prosciの3段階プロセスなど、組織変革の方法論や枠組みを導入する。変化し続けるソフトウェア工学の状況を踏まえ、プロジェクトを成功させる能力を管理するのである。
Risk Management and Planning
リスク管理と計画
Risk management and planning focuses on identifying potential risks like project delays and having a plan for how to address them. Software development is a complex activity that involves many people working over a long period of time, and it turns out that not every project succeeds. Some projects are delayed, some of them overrun the budget, and some are never finished. The high percentage of unsuccessful projects creates a need for risk management and mitigation. Minimizing risk is typically the main task of a manager, but software engineers can also take on management tasks. For example, to help managers, they might provide updates that allow managers to refine their risk assessments. Ideally, these updates would address the different components of risk, including:
英語のヒント
リスク管理と計画では、プロジェクトの遅延などの潜在的なリスクを洗い出し、対処方法を計画する。ソフトウェア開発は、多くの人が長期間にわたって働く複雑な活動であり、すべてのプロジェクトが成功するわけではない。遅れるもの、予算を超えるもの、完成しないものもある。失敗するプロジェクトの割合が高いため、リスクの管理と軽減が必要になる。リスクを最小化するのは通常、管理者の主要な仕事だが、エンジニアも管理の仕事を担える。たとえば、リスク評価を改善できるように、最新の状況を管理者へ知らせることが考えられる。理想的には、次のようなリスクの各要素を報告で扱う。
• Performance risk: considers whether the product will not fit its intended use
• 性能のリスク:製品が意図した用途に合わなくなる可能性を考える。
• Cost risk: determines if the budget constraints can be maintained
• 費用のリスク:予算の制限を守れるかを判断する。
• Support risk: assesses how easy the product will be to maintain and update once it is completed
• 支援のリスク:完成後に製品をどれほど容易に保守・更新できるかを評価する。
• Schedule risk: considers whether the project will meet expected deadlines
• 日程のリスク:想定した期限を守れるかを考える。
Risk projection attempts to associate with each risk the likelihood of its occurrence and the consequences of the resulting problems if a risk should occur. One of the software process models you will learn more about later in this chapter is called the Unified Process. In this process, risks are mitigated by selecting risky requirements for early iterations. For example, a use case that requires a new technology is typically considered risky, as well as a use case that assumes integration with legacy code. We select such use cases for an early iteration because if their implementation happens to fail, it is better to fail in the beginning of the project rather than in the end.
英語のヒント
リスク予測では、それぞれのリスクについて、発生する可能性と、発生した場合に起こる問題の影響を対応づけようとする。本章の後半で学ぶモデルの一つに、統一プロセスがある。この工程では、リスクの高い要求を初期の反復で扱うことにより、リスクを軽減する。たとえば、新しい技術を必要とするユースケースや、レガシーコードとの統合を前提とするユースケースは、一般にリスクが高いと考えられる。こうしたユースケースを初期に選ぶのは、実装が失敗するなら、プロジェクトの最後より初めに失敗したほうがよいからである。
As the project continues, managers focus on minimizing risk across the four Ps: the people involved, the product being developed, the process being followed, and the project work being completed. While the Agile and traditional software processes use different approaches, the goals for each are the same: controlling risk by providing people with a well-defined product and clear processes to follow. These goals allow software engineers to estimate the work required and track the product through development. Managers compare the product completed against those estimates and use those results to make any needed adjustments.
英語のヒント
プロジェクトが進むと、管理者は四つのP、すなわち関わる人々、開発中の製品、従っている工程、完了させるプロジェクトの仕事について、リスクの最小化に取り組む。アジャイル型と従来型ではアプローチは違うが、人々に明確な製品像と従うべき明瞭な工程を示してリスクを抑える、という目標は同じである。これらの目標によって、エンジニアは必要な作業量を見積もり、開発中の製品を追跡できる。管理者は完成した製品を見積もりと比較し、その結果に基づいて必要な調整を行う。