プリンキピア

第9章ソフトウェア工学

Agile Process Modelsアジャイル型プロセスモデル

The Agile Manifesto sets forth the Agile philosophy and emphasizes the fact that software engineering processes should not be constrained to be continuous. It advocates that it is fine to skip and accelerate framework activities to deliver a project solution faster and, therefore, it is fine for the software process to be viewed as a discrete set of meaningful activities to reduce the cost of change. In this context, agility refers to the ability to create and respond to change in order to profit in a turbulent business environment. Proponents of Agile process models question whether prescriptive process models that strive for a structured and ordered approach to software engineering are appropriate for a world that thrives on change. In general, Agile processes have very short product cycles and constantly solicit customer feedback to focus development on customers’ current needs. Agile software processes promise strong productivity improvements, increased software quality, higher customer satisfaction, and reduced developer turnover. Agile development techniques empower teams to overcome time-to-market pressures and volatile requirements. However, replacing traditional process models with something less structured may make it difficult to achieve coordination and coherence in software work.
英語のヒント
アジャイル宣言はアジャイルの考え方を示し、ソフトウェア工学の工程を連続的でなければならないと制約すべきではない、と強調する。成果を速く届けるためなら基本的な活動を省略したり加速したりしてもよく、変更費用を減らすため、工程を意味のある離散的な活動の集まりとして捉えてよい、という立場である。ここでいう俊敏性とは、激しく変化する事業環境で利益を得るために、自ら変化を生み出し、変化へ対応する能力を指す。アジャイルモデルの支持者は、体系的で秩序だったアプローチを目指す規定的モデルが、変化によって発展する世界に適しているのかを問い直す。アジャイルの工程では一般に、製品の開発サイクルを非常に短くし、顧客の意見を絶えず求め、現在のニーズへ開発の焦点を合わせる。生産性の大幅な向上、品質の改善、顧客満足度の上昇、開発者の離職の減少を目指す。アジャイルの技法は、製品を市場へ出すまでの時間を短くせよという圧力や、変わりやすい要求を乗り越える力をチームへ与える。ただし、従来型のモデルを構造化の弱いものへ置き換えると、作業の連携や一貫性を確保することが難しくなる場合がある。
In general, the mere existence of a software process, whether it be strongly prescriptive or Agile, is no guarantee that software will be delivered on time, or meet the customer’s needs, or that it will exhibit long-term quality characteristics. Everyone wants a process that can respond to change; the only debates are over how to design one and which level of discipline should be incorporated into such process models.
英語のヒント
工程が存在するというだけでは、強く規定的なものであってもアジャイル型であっても、期限内の納品、顧客のニーズへの適合、長期的な品質特性のいずれも保証されない。誰もが変化に対応できる工程を望んでいる。議論となるのは、それをどう設計し、どの程度の規律をプロセスモデルへ組み込むべきかという点だけである。
Agility requires that customers and developers act as collaborators within development teams. The goal should be to build software products that can be quickly adapted to meet the requirements of a rapidly changing marketplace. This is typically achieved via incremental development of operational prototypes that are improved over time. As a result, Agile software engineering is a way of working and it leverages iterative development, incremental delivery, and ongoing reassessment of products. It is based on a clear idea of the product’s concept and its market. It also focuses on high-value features first and on producing tangible, working results after each iteration. Agility principles are summarized as follows:
英語のヒント
俊敏性を実現するには、顧客と開発者が開発チームの協力者として行動する必要がある。目標は、急速に変化する市場の要求へ素早く適応できる製品を作ることである。通常は、実際に動く試作品を少しずつ開発し、時間とともに改良することで、この目標を達成する。したがって、アジャイルソフトウェア工学は一つの働き方であり、反復的な開発、段階的な提供、製品の継続的な再評価を用いる。製品のコンセプトと市場についての明確な考えを基礎とし、価値の高い機能を先に扱い、各反復の後に具体的に動く成果を生み出すことを重視する。俊敏性の原則をまとめると、次のようになる。
• Ensure customer satisfaction by delivering software to customers as quickly as possible.
• できるだけ早くソフトウェアを顧客へ届け、顧客満足を確保する。
• Accept the fact that requirements may change and work accordingly.
• 要求が変わり得ることを受け入れ、それに応じて仕事を進める。
• Deliver software incrementally to stakeholders as often as possible (e.g., every week rather than every month as it is in the case of traditional process models) and use their feedback to improve subsequent increments.
• 関係者へできるだけ頻繁に、段階的にソフトウェアを提供する。たとえば従来型モデルのような月単位ではなく週単位で届け、得られた意見を次の追加分の改善に使う。
• Minimize the creation documentation to what is absolutely necessary and relevant.
• 作成する文書は、絶対に必要で、目的に関係するものに絞る。
• Build an Agile team that includes motivated participants and facilitate frequent meetings among team members to improve communication and information sharing.
• 意欲ある参加者を含むアジャイルチームを作り、頻繁に話し合う機会を設けて、意思疎通と情報共有を改善する。
• Create team processes that encourage technical excellence, good design, and simplicity while avoiding unnecessary work.
• 不必要な作業を避けつつ、技術的な卓越性、優れた設計、単純さを促すチームの工程を作る。
• Focus on the primary goal of delivering software that meets customer needs.
• 顧客のニーズを満たすソフトウェアを届ける、という第一の目標に集中する。
• Ensure that teamwork is not overwhelming so that team members can be effective over a long period of time.
• 長期間にわたって有効に働けるよう、チームの作業がメンバーに過大な負担をかけないようにする。
• Consider the fact that Agile teams need to become self-organizing in order to meet the primary goal of developing solutions that are well designed and implemented to meet customers’ needs.
• 顧客のニーズを満たす、よく設計・実装された仕組みを開発するという第一の目標を達成するには、チームが自己組織化する必要があることを考慮する。
• Instill a team culture that requires all team members to work together with one focus in mind, which is ensuring customer satisfaction.
英語のヒント
• 顧客満足の確保という一つの重点を全員が意識し、協力して働くことを求める文化を、チームに根づかせる。
The Agile philosophy is seductive, but it must be tempered by the demands of real systems in the real world. In general, Agile process models are not suitable for large, high-risk, or mission-critical projects. There is a spectrum of agility that one should consider that addresses these demands as illustrated in Figure 9.4.
英語のヒント
アジャイルの考え方は魅力的だが、現実の世界で動く実際のシステムの要求によって、調整されなければならない。一般に、アジャイル型モデルは、大規模でリスクが高い、あるいは使命上極めて重要なプロジェクトには向かない。図9.4に示すように、こうした要求へ対応するために検討すべき、俊敏性の連続的な幅がある。
Figure 9.4

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 9.4 The spectrum of agility depicts traditional prescriptive process models such as waterfall on one end, and Agile processes on the other. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.4 俊敏性の幅。一方の端にウォーターフォールなどの従来型の規定的モデルを、もう一方の端にアジャイル型の工程を示している。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
When an Agile Software Development Ecosystem (ASDE), which encompasses the whole category of Agile SDLC frameworks and methods, is compared with traditional (prescriptive) SDLC methodologies, the ASDE emphasizes the difficulty of predicting future needs. Thus, Agile approaches avoid creating long-term plans and fixed processes so developers can instead collaborate with customers and adjust to their current needs.
英語のヒント
アジャイル型SDLCの枠組みや手法の分類全体を含む、アジャイルソフトウェア開発エコシステム(ASDE)を従来型の規定的なSDLC方法論と比べると、ASDEは将来のニーズの予測の難しさを強調している。そのため、アジャイルのアプローチは長期計画や固定的な工程を作ることを避け、開発者が顧客と協力し、その時点のニーズへ対応できるようにする。
Many of the ideas related to the Agile approach are worth considering regardless of the process model a team adopts. Agile processes manage unpredictable changes that take place during software development projects. The focus of Agile processes is on the delivery of software increments in relatively short time frames and using feedback on those increments to drive development. There are trade-offs when selecting an Agile Software Development Ecosystem (ASDE). While ASDEs correctly identify the product as the most important outcome of a project, it can be difficult to scale up rapid product cycles to develop enterprise-wide software applications. In general, trade-offs are important for making things work. In particular, the potential problems caused by dysfunctional teams can be significant. The impact of human aspects of process model adaptation should be considered, and all the human factors and group dynamics of Agile teams, including collaboration and self-organizing teams, are important improvements to traditional approaches and are used repeatedly when Agile development is performed.
英語のヒント
アジャイルのアプローチに関わる考え方の多くは、チームが採用するモデルにかかわらず、検討する価値がある。アジャイルの工程は、開発プロジェクトで生じる予測できない変化を扱う。比較的短い期間でソフトウェアを少しずつ提供し、追加分に対する意見を使って開発を進めることを重視する。アジャイルソフトウェア開発エコシステム(ASDE)の選択にはトレードオフがある。ASDEが製品をプロジェクトの最も重要な成果と位置づけるのは正しいが、企業全体にわたるアプリケーションを開発するために、短い製品サイクルを大規模に展開するのは難しい場合がある。物事を機能させるには、一般にトレードオフを考慮することが重要である。特に、機能不全に陥ったチームが引き起こす問題は大きくなり得る。プロセスモデルを適応させる際には、人に関わる側面の影響を考慮すべきである。協働や自己組織化するチームを含め、アジャイルチームの人的要因や集団の力学は、従来型のアプローチに対する重要な改善点であり、アジャイル開発の実践で繰り返し使われる。
In conclusion, a software process, regardless of its process centricity, simply must adhere to a set of software process model criteria that are essential to ensure successful engineering of software solutions. To that extent, it is necessary to assess processes and their related activities using actual numeric measures or by applying metrics as part of analytics methods uses to monitor the performance of software process models.
英語のヒント
結論として、工程をどれほど重視するにせよ、ソフトウェアの開発工程は、仕組みの開発を成功させるために不可欠な、一連のプロセスモデルの基準に従わなければならない。そのため、工程と関連する活動を、実際の数値を使って評価するか、プロセスモデルの実績を監視する分析手法の一環として、指標を適用して評価する必要がある。