第9章ソフトウェア工学
Spiral Modelスパイラルモデル
The spiral model is a combination of the waterfall model with an iterative model approach and a focus on reducing risk within a project. As with the waterfall model, the spiral model starts with requirements gathering except that it starts with a small set of requirements and then cycles through planning, design, implementation, and testing for those requirements. After the initial set of requirements is addressed, the process iterates back to the beginning, where additional requirements are applied to the project, and then it continues cycling, as illustrated in Figure 9.12, until the software solution is ready for deployment. This model differs from the waterfall method in that it includes a risk analysis as part of the planning step. The risks associated with the project are also assessed during the review and testing of the system.
英語のヒント
スパイラルモデルは、ウォーターフォールに反復型のアプローチを組み合わせ、プロジェクトのリスク軽減を重視する。ウォーターフォールと同様に要求収集から始めるが、最初は少数の要求だけを扱い、それについて計画、設計、実装、テストを一巡させる。最初の要求を処理したら、工程を最初へ戻して追加の要求を取り込む。図9.12のように、配備の準備が整うまで、このサイクルを続ける。計画段階にリスク分析を含む点が、ウォーターフォールとは異なる。また、レビューやテストの際にも、プロジェクトに関わるリスクを評価する。

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典
Figure 9.12 The spiral model prioritizes risk analysis by combining elements of the waterfall method with an iterative approach. Each spiral addresses a small set of requirements, but cycles through planning, design, implementation, and testing stages for those requirements. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.12 スパイラルモデルは、ウォーターフォールの要素と反復的なアプローチを組み合わせ、リスク分析を優先する。螺旋の各一巡で少数の要求を扱い、それについて計画、設計、実装、テストを行う。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
The spiral model is often used on larger projects or when frequent releases are expected. It is also used when risks are considered high for a project and need to be monitored closely. Such risks can include cost, unclear requirements, complex requirements, or having requirements that could change. The advantage is that because of the spiraling, iterative nature of the model, changes can be added later in the project. Additionally, the model allows for better estimation of costs for individual iterations because a limited number of requirements are being addressed during each spiral. Because each iteration allows for the system to build upon itself, there is also the benefit of being able to adapt to user feedback and changing requirements.
英語のヒント
スパイラルモデルは、大規模なプロジェクトや、頻繁なリリースが見込まれる場合によく使われる。また、リスクが高く、注意深い監視が必要な場合にも使う。費用、要求の不明確さや複雑さ、要求が変化する可能性などがリスクとなる。螺旋状に反復するため、プロジェクトの後半にも変更を加えられる点が利点である。また、各一巡で扱う要求が限られるので、各反復の費用を見積もりやすい。反復ごとに既存のシステムの上へ積み上げていけるため、利用者の意見や要求の変化に対応できる利点もある。
The spiral model does have its disadvantages. Because there is an added focus on risk, it requires expertise in risk management. Additionally, the iterations not only add new features, but can build upon existing features, which can lead to added costs. If applied to smaller projects, the cost can outweigh the benefits of some of the other approaches. Because there are multiple iterations composed of several steps/phases, it is also important to follow the processes more strictly than in the case of other models, and keep good documentation to know what has been done and what is expected.
英語のヒント
スパイラルにも欠点はある。リスクを特に重視するため、その管理の専門知識が必要になる。反復では新機能の追加だけでなく既存の機能の拡張も行うため、費用が増えることがある。小規模なプロジェクトへ適用すると、その費用が、ほかの方法によって得られる利点を上回る場合もある。複数の段階からなる反復を繰り返すため、ほかのモデル以上に工程を厳密に守り、実施済みのことと今後期待することが分かるよう、十分な文書を残すことも重要である。
Unified Process Model統一プロセスモデル
In the Unified Process (UP) model, the development of a software system is divided into four primary phases (inception, elaboration, construction, and transition), each of which involves multiple iterations that include the standard software development processes, as shown in Figure 9.13. Like the framework activity/phase in our generic process framework, the UP model differentiates phases from software engineering actions. The UP model still relies on a continuous prescriptive process, but it supports incremental iterative development. The UP model uses the word discipline or process to refer to the software engineering action defined in our process framework. The names of the phases are almost the same as the names of the phases in our process framework, although the transition phase is equivalent to deployment in our process framework.
英語のヒント
統一プロセス(UP)では、開発を立ち上げ、推敲、構築、移行という四つの主要フェーズに分ける。図9.13のように、それぞれが標準的な開発工程を含む複数の反復で構成される。本書の汎用的な枠組みと同様、UPもフェーズとソフトウェア工学のアクションを区別する。UPは引き続き連続的で規定的な工程に基づくが、増分的・反復的な開発を支援する。本書の枠組みでいうアクションには、「ディシプリン」または「プロセス」という語を用いる。フェーズ名は本書とほぼ同じだが、移行フェーズが、本書の配備に相当する。

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典
Figure 9.13 The Unified Process model is very similar to the generic process framework as it includes phases in the form of processes (or disciplines). It also features iterations, and the relative size of the colored area for a given discipline indicates how much of the discipline is performed in each iteration. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.13 統一プロセスは、プロセスまたはディシプリンという形のフェーズを含む点で、汎用的な枠組みによく似ている。反復も特徴であり、特定のディシプリンの色付き領域の相対的な大きさは、各反復でどれだけその作業を行うかを示す。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
Each phase or process of the Unified Process model has its own goal. In the inception phase, the goal is to get the users to buy into the solution being presented, document the requirements, and create an initial plan for the project. The elaboration phase focuses on the solution design and firming up the project plan. The construction phase focuses on implementing and testing the software. Finally, the transition phase focuses on the deployment of the solution. As in other traditional process models and in contrast to the Agile models, each phase of the UP model results in a set of deliverables. In the inception phase, this might include documents like a scope statement, initial risk assessment, or preliminary project plan; in the elaboration phase, a software development plan, revised business case, or executable architecture baseline; in the construction phase, individual iteration plans, release description document, or user documentation; and in the transition phase, final product release and lessons learned analysis, among others.
英語のヒント
UPの各フェーズやプロセスには、固有の目標がある。立ち上げでは、提示する仕組みに利用者の賛同を得て、要求を文書化し、初期のプロジェクト計画を作る。推敲では、設計と計画の確定に重点を置く。構築では実装とテスト、最後の移行では配備を重視する。アジャイルと異なり、ほかの従来型モデルと同様、UPの各フェーズには一連の成果物がある。立ち上げなら、対象範囲の記述、初期リスク評価、暫定計画などが考えられる。推敲なら、開発計画、改訂された事業の根拠、実行可能なアーキテクチャの基準版などである。構築では、個々の反復の計画、リリース説明書、利用者向け文書などがあり、移行では、最終製品のリリースや、得られた教訓の分析などがある。
Note that the amount of time spent in each discipline changes over time so that as the project evolves, less time is spent on requirements and design and more time is spent on testing and deploying. The expectation is that the model adjusts the extent of software engineering actions on an ongoing basis depending on what is needed to develop the software solution at a given time.
各ディシプリンに費やす時間は、時間とともに変化する。プロジェクトが進むにつれ、要求と設計にかける時間が減り、テストと配備の時間が増える。その時点の開発に何が必要かに応じて、各アクションをどの程度行うかを、継続的に調整することが想定されている。
The expectation when using the UP model is that software will be delivered early and regularly throughout the process. Additionally, the model allows users to see what is coming and provide feedback, which, in turn, allows the software to be adapted to any changing needs. This requires open communication throughout the process and keeping the users as active participants in the project. Another practice with this model is to focus on reusing existing code as well as on using modeling and other tools. Tools such as UML are almost always used as part of UP. Additionally, UP lowers risk through the iterative nature of the development. Because the iterations are timeboxed, there is better control of the overall process. This helps make risk easier to manage.
英語のヒント
UPでは、早い段階から工程全体を通して定期的にソフトウェアを提供することが期待される。利用者は今後の製品の姿を見て意見を出せるため、それを受けて、変化するニーズへ適応させられる。工程全体で開かれた意思疎通を行い、利用者が積極的な参加者であり続けるようにする必要がある。既存コードの再利用、モデリングやその他のツールの活用も、このモデルの実践に含まれる。UMLなどはほぼ常に使われる。また、反復的な開発によってリスクを下げる。反復には時間の上限が設けられるため、工程全体を管理しやすくなり、リスクにも対処しやすくなる。
The disadvantage is that the phases are combined with the disciplines and time and boxed into a set of iterations, which can result in a model that is complex to follow. To be effective, the disciplines need to be managed, and communication needs to be clear. It generally requires good management of the process.
欠点は、フェーズをディシプリンや時間と組み合わせ、一連の反復に区切るため、従うのが複雑なモデルになり得ることである。有効に機能させるには、ディシプリンを管理し、明確な意思疎通を行う必要がある。一般に、工程を適切に管理することが求められる。
It is worth noting that UP was the first model that distinguished phases from disciplines, which made it possible to introduce iterations and integrate them with increments. While incremental development had existed before, the separation of phases from disciplines made it newly possible to plan iteration as part of a project increment and thus to create solutions more effectively, as software process actions were no longer associated to a specific framework activity/phase. During each iteration, partial functionality could be created, and the results could be integrated with the rest of the system.
UPは、フェーズとディシプリンを初めて区別したモデルである。この区別により、反復を導入して増分と組み合わせることができた。増分開発は以前から存在していたが、両者を分けたことで、プロジェクトの一つの増分のなかに反復を計画できるようになった。工学的なアクションが特定の基本活動・フェーズに固定されなくなり、より効果的な開発が可能になったのである。各反復で一部の機能を作り、その成果をシステムの残りの部分と統合できる。