第9章ソフトウェア工学
9.2 Software Engineering Process9.2 ソフトウェア工学の工程
Learning Objectives学習目標
By the end of this section, you will be able to:
この節を終えると、次のことができるようになる。
• Describe the phases of a software development process and their purposes
• ソフトウェア開発の工程を構成するフェーズと、その目的を説明する。
• Study the popular traditional prescriptive and Agile software process models
• よく使われる従来型の規定的なモデルと、アジャイル型のソフトウェアプロセスモデルを学ぶ。
• Suggest an effective software process
• 効果的なソフトウェア開発の工程を提案する。
Imagine a recipe for building software. There are different ways to cook the same dish, but most recipes follow a basic structure with steps like gathering ingredients, preparing them, cooking, and serving. Software engineering processes are similar. They provide a structured approach to creating software applications. Various software engineering process models are typically used to support the software development life cycle (SDLC). After years of research and refinements, software engineering researchers and practitioners have converged on defining a generic software engineering process model, or process framework, that can be used as a template. That process framework includes a set of process elements (e.g., framework activities, software engineering actions, task sets, work products, quality assurance, and change control mechanisms) that may differ for each process model and for each project.
英語のヒント
ソフトウェアを作るためのレシピを想像してみよう。同じ料理にもさまざまな調理法があるが、大半のレシピは、材料をそろえ、下ごしらえをし、調理して盛り付けるという基本的な構成に従う。ソフトウェア工学の工程も同様で、アプリケーションを作るための体系的な取り組み方を示す。ソフトウェア開発ライフサイクル(SDLC)を支えるために、通常はさまざまなプロセスモデルを用いる。長年の研究と改善を経て、研究者や実務者は、ひな型として利用できる汎用的なプロセスモデル、すなわちプロセスの枠組みの定義について共通の考えに至っている。この枠組みには、枠組み上の活動、ソフトウェア工学のアクション、タスクの集合、作業成果物、品質保証、変更管理の仕組みなどが含まれる。それぞれの要素は、モデルやプロジェクトによって異なる場合がある。
Traditional Process Models従来型のプロセスモデル
One common category of process models is known as the traditional process model. This process framework, as you learned earlier in the chapter, encompasses four framework (i.e., generic) activities that are also known as phases: inception, elaboration, construction, and deployment:
よく使われるプロセスモデルの分類の一つに、従来型プロセスモデルがある。本章の前半で学んだように、この枠組みには、立ち上げ、推敲、構築、配備という四つの基本的な活動が含まれる。これらはフェーズとも呼ばれる。
• Inception covers planning activities where you define the project goals and identify the overall scope.
• 立ち上げは、プロジェクトの目標を定義し、全体の範囲を明らかにする計画の活動である。
• Elaboration involves analyzing requirements and designing a detailed architecture model for the software.
• 推敲では、要求を分析し、ソフトウェアの詳細なアーキテクチャモデルを設計する。
• Construction is where the coding happens! The software is built based on the design created earlier.
• 構築では、いよいよコードを書く。先に作成した設計に基づいて、ソフトウェアを作り上げる。
• Deployment is the activity that focuses on releasing the software in a usable form and making it accessible to end users.
• 配備は、ソフトウェアを利用可能な形で公開し、最終利用者が使えるようにすることを中心とした活動である。
These (generic) framework activities or phases are applicable regardless of the specific software engineering process model chosen for a project and may be elaborated differently depending on the organization and the problem area and project being developed. There are also umbrella activities that are important but tangential to framework activities. Returning to the recipe analogy, if generic framework activities represent cooking, then you can think of these activities as the things you would do alongside your cooking, like making sure you have the right pots and pans or keeping your kitchen clean. As you’ll learn later in the chapter, in software development, such activities are known as umbrella activities, and they include:
英語のヒント
これらの基本的な活動、すなわちフェーズは、プロジェクトでどのソフトウェア工学のプロセスモデルを選ぶかにかかわらず適用できる。ただし、組織、問題の領域、開発するプロジェクトによって、具体化の仕方は異なることがある。また、基本的な活動そのものからは外れるものの、重要な横断的活動もある。料理のたとえに戻れば、基本的な活動が調理だとすると、横断的活動は、適切な鍋やフライパンを用意したり、台所を清潔に保ったりするなど、調理と並行して行うことだと考えられる。本章の後半で学ぶように、ソフトウェア開発ではこれらをアンブレラ活動と呼び、次のものが含まれる。
• training and communication (e.g., work product preparation and production)
• 研修と意思疎通(作業成果物の準備や作成など)。
• risk management and planning (e.g., software project tracking and control)
• リスクの管理と計画(ソフトウェアプロジェクトの追跡や管理など)。
• configuration management
• 構成管理。
• quality management (e.g., technical reviews, estimations, metrics/measurements, testing)
• 品質管理(技術レビュー、見積もり、指標・測定、テストなど)。
• architecture management (e.g., reusability management)
• アーキテクチャ管理(再利用性の管理など)。
• security management
• セキュリティ管理。
Various software engineering actions are typically performed as part of the generic framework and umbrella activities. For example, the inception phase may call for requirements engineering actions such as requirements definition and requirements management; the elaboration phase may involve high-level and detail design actions. Each type of software engineering action corresponds to a process that may be represented as a workflow or a task set, and each task results in work products that are subject to specific quality assurance and change control mechanisms. Basically, a task set (or workflow) encompasses all the tasks that are required to accomplish a specific software engineering action within a framework activity. Task sets vary depending on the characteristics of a project, and activities within a given process model usually overlap instead of being performed independently.
英語のヒント
基本的な活動やアンブレラ活動の一環として、通常はさまざまなソフトウェア工学のアクションを実施する。たとえば、立ち上げのフェーズでは要求定義や要求管理などの要求工学のアクションが必要になり、推敲のフェーズでは高水準の設計や詳細設計を行うことがある。各種のアクションは、それぞれワークフローやタスクの集合で表せる工程に対応する。各タスクから生まれる成果物には、特定の品質保証と変更管理の仕組みを適用する。つまり、タスクの集合、またはワークフローは、枠組み上の一つの活動のなかで、特定のソフトウェア工学のアクションを果たすために必要な、すべてのタスクを含む。タスクの集合はプロジェクトの特性によって変わり、同じプロセスモデルに含まれる活動は、通常は独立に実行されるのではなく、互いに重なり合う。
Software process models that adhere to the generic framework mentioned precedingly are sometimes referred to as SDLC methodologies. In general, software engineering process models are structured in this fashion to facilitate efficient development of quality software, reduce risk of failure, increase predictability, and capture best practices in software development. The software framework provides a template that allows software engineers to tailor their process model based on the specific project(s) on which they are working. The (generic) framework activities mentioned precedingly are applicable to all projects and all application domains, and they are a template for every process model. Actual process models action/methods may, however, use various approaches. Furthermore, software engineering tools may be used to (semi-)automate the various methods that perform activities.
英語のヒント
前述の汎用的な枠組みに従うソフトウェアプロセスモデルは、SDLC方法論と呼ばれることもある。このような構造を取る目的は一般に、高品質なソフトウェアを効率よく開発し、失敗のリスクを減らし、予測のしやすさを高め、開発の優れた実践を取り込むことにある。枠組みは、エンジニアが担当する個々のプロジェクトに合わせてプロセスモデルを調整するためのひな型を提供する。前述の基本的な活動は、すべてのプロジェクトと応用領域に適用でき、あらゆるプロセスモデルのひな型となる。ただし、実際のモデルで使うアクションや手法は、さまざまなアプローチを取ることがある。また、それぞれの活動を実施する手法を、自動化または半自動化するために、ソフトウェア工学のツールを使うこともできる。
The activities involved in developing software might vary depending on the organization and the type of software being developed. There is no single right way to create a software solution, but experience typically tells us what works well and what works poorly in a given context. Therefore, process frameworks are elaborated differently depending on the four Ps—problem, project, people, and product—they tackle.
英語のヒント
開発で行う活動は、組織や、開発するソフトウェアの種類によって変わり得る。仕組みを作る唯一の正しい方法があるわけではないが、ある状況で何がうまくいき、何がうまくいかないかは、経験から分かることが多い。そのため、プロセスの枠組みは、扱う四つのP、すなわちproblem(問題)、project(プロジェクト)、people(人々)、product(製品)に応じて、異なる形で具体化される。
In the past, this led to the use of various traditional prescriptive process models such as the waterfall, prototyping, spiral, and rational unified processes. A prescriptive process model advocates an orderly approach to software engineering that involves following a prescribed set of activities in a continuous manner. These traditional process models provide a structured approach to software development and may help with the following objectives:
英語のヒント
かつて、この考えから、ウォーターフォール、プロトタイピング、スパイラル、Rational Unified Processなど、さまざまな従来型の規定的プロセスモデルが使われるようになった。規定的プロセスモデルは、あらかじめ定められた一連の活動を継続的に進める、秩序だったアプローチを提唱する。これらのモデルは体系的な開発の進め方を提供し、次の目標の達成に役立つことがある。
• Improve efficiency: By following a clear plan, teams can work more efficiently and avoid rework.
• 効率を高める:明確な計画に従うことで、より効率よく作業し、やり直しを避けられる。
• Reduce risk: Identifying and addressing potential issues early on can help to prevent project failures.
• リスクを減らす:起こり得る問題を早い段階で見つけて対処すれば、プロジェクトの失敗を防ぎやすくなる。
• Increase predictability: A structured process can help to estimate timelines and costs more accurately.
• 予測のしやすさを高める:体系的な工程によって、日程や費用をより正確に見積もれる。
• Capture best practices: Traditional models often incorporate tried-and-true methods for software development.
英語のヒント
• 優れた実践を取り込む:従来型のモデルには、開発で実績を積み、信頼できると分かった手法が組み込まれていることが多い。
These days, however, traditional prescriptive process models are perceived by some as “old-school” (i.e., ponderous, bureaucratic document-producing machines). Note that prescriptive simply means that the process model identifies a set of process elements (e.g., framework activities, software engineering actions, tasks, work products, quality assurance, and change control mechanisms) for each project. Traditional models are generally criticized for being too rigid and inflexible. They may not be suitable for all projects, especially those with rapidly changing requirements.
英語のヒント
しかし今日では、従来型の規定的モデルを「旧式」、つまり、動きが鈍く官僚的で文書ばかり作る仕組みだと見る人もいる。ここで、規定的とは単に、プロジェクトごとに、枠組み上の活動、アクション、タスク、成果物、品質保証、変更管理の仕組みなどを特定するという意味だと確認しておこう。従来型のモデルは、硬直的で柔軟性に欠けると批判されることが多い。すべてのプロジェクトに適しているとは限らず、要求が急速に変化するものには、特に合わない場合がある。
In general, the various process models may have features in common with each other, and there may be some overlap among the activities conducted within each given process. In the next section, we’ll explore an alternative approach called Agile software development.
一般に、さまざまなプロセスモデルには共通の特徴があり、個々の工程のなかで行う活動も、ある程度重なり合う場合がある。次では、アジャイルソフトウェア開発という、別のアプローチを見ていく。