"The problem for engineers is that change translates into chaos, especially when a single error can potentially bring down an entire system. But, change also translates into opportunity. It's as simple as this: if there is time to put a certain amount of functionality into the product easily, then there is time to put in more functionality at the price of a certain amount of disruption and risk. Thus does madness creep into our projects - we will tend to take on as much risk as we possibly can."
"工程師所面臨的問題是修改軟件會引起系統混亂,特別是一個微小的錯誤就能導致系統崩潰。但是,修改也能帶來機遇。簡而言之:如果很輕易地就能給系統增加一定功能,那么就會冒一定的風險增加更多的功能。從而使我們的計劃顯得有些瘋狂-我們將傾向于盡可能地冒風險。"
James Bach. October 1995. "American Programmer"
Copyright 1995 Advanced Development Methods All Rights Reserved
--------------------------------------------------------------------------------
Contents :
Introduction
簡介
Overview
概述
Current Development Situation
現在的發展狀況
Methodology
方法
Phases
進度
Controls
控制
Deliverables
可交付性
Project Team
項目組
Characteristics
特性
Advantages
優勢
Estimating
評估
Appendix 1 - System Development Methodologies : Defined or Empirical
附錄1-系統開發方法:定義或經驗
--------------------------------------------------------------------------------
Introduction
簡介
In this paper we introduce a development process, SCRUM, that treats major portions of systems development as a controlled black box. We relate this to complexity theory to show why this approach increases flexibility and ability to deal with complexity, and produces a system that is responsive to both initial and additionally occurring requirements.
在本章中,我們將介紹一種新的開發過程-SCRUM,它將系統開發的主要部分看成一個可控制的黑盒。我們將之與復雜性理論相聯系,來說明為什么這種方法改善了適應性和處理復雜問題的能力,并能建立一種適應初始的和額外的需求的系統。
Numerous approaches to improving the systems development process have been tried. Each has been touted as providing "significant productivity improvements." None has. As Grady Booch noted, "We often call this condition the software crisis, but frankly, a malady that has carried on this long must be called normal."
人們已經提出許多改進系統開發過程的方法。每一種方法都被吹捧為:"重大成果性突破。"其實沒有一種做到。正如Grady Booch所說的:"我們常稱這種情況為軟件危機,但坦率的說,長久以來我們一直把這種病態看作是正常的。
Concepts from industrial process control are applied to the field of systems development in this paper. Industrial process control defines processes as either "theoretical" (fully defined) or "empirical" (black box). When a black box process is treated as a fully defined process, unpredictable results occur. A further treatment of this is provided in Appendix 1.
在這篇文章中,工業過程控制的觀點應用到系統開發領域。工業過程控制定義過程或者是"理論的"(完全定義的)或者是"經驗的"(黑盒)。當將一個黑盒過程當作完全定義的過程處理時,會發生不可預測的結果。對這種情況進一步的處理將在附錄1中給出。
A significant number of systems development processes are not completely defined, but are treated as though they are. Unpredictability without control results. The SCRUM approach treats these systems development processes as a controlled black box.
許多大型的系統開發過程是非完全定義的,但卻當作完全定義的來處理。這就導致了無控制的不可預知性。SCRUM方法在處理系統開發過程時將其看作可控制的黑盒。
The SCRUM approach is used at leading edge software companies with significant success. We believe SCRUM may be appropriate for other software development organizations to realize the expected benefits from Object Oriented techniques and tools.
SCRUM方法現在被很多領先的軟件公司成功使用。我們相信SCRUM將會適用于其他的軟件開發機構以實現面向對象的技術與工具所期望帶來的利益。
--------------------------------------------------------------------------------
Overview
概述
Our new approach to systems development is based on both defined and black box process management. We call the approach the SCRUM methodology, after the SCRUM in rugby -- a group responsible for picking up the ball and moving it forward.
我們的系統開發的新方法是基于定義的和黑箱過程管理的。我們借用橄欖球中的SCRUM并稱這種方法為SCRUM方法論――一個團隊負責拿球向前沖。
SCRUM is a management, enhancement and maintenance methodology for an existing system. SCRUM will address new or re-engineered systems development efforts at a later date.
SCRUM是一種對已存在系統的管理,提高和維護的方法。在不久的將來,SCRUM將致力于新的或重組的系統開發。
Software product releases are planned based on the following variables :
軟件產品的發布是基于以下因素制定的:
Customer requirements - how the current system needs enhancing.
客戶需求-現在的系統需要那些改進。
Time pressure - what time frame is required to gain a competitive advantage.
時間壓力-需要什么樣的時間表以獲得競爭優勢。
Competition - what is the competition up to, and what is required to best them.
競爭-競爭的目標是什么,如何最好地實現目標
Quality - What is the required quality, given the above variables.
質量-有了以上的因素,那么需要什么樣的質量。
Vision - what changes are required at this stage to fulfill the system vision.
版本-當前需要什么樣的更改以完成系統版本。
Resource - what staff and funding are available.
資源-有多少可用的資金和員工。
These variables form the initial plan for a software enhancement project. However, these variables also change during the project. A successful development methodology must take these variables and their evolutionary nature into account.
這些因素形成了改進軟件項目的最初方案。然而,這些因素是隨著項目的進行而變化的。一個成功的開發方法應該將這些因素現在及其將來可能的變化都考慮進去。
--------------------------------------------------------------------------------
Current Development Situation
當前開發情況
Systems are developed in a highly complicated environment. The complexity is both within the development environment and the target environment. For example, when the air traffic control system development was initiated, three-tier client server systems and airline deregulation did not have to be considered. Yet, these environmental and technical changes occurred during the project and had to be taken into account within the system being built. Environmental variables include:
系統是在一個高度復雜的環境下開發的。復雜性同時存在于開發環境和目標環境。例如,當開始開發航空交通控制系統時,三層客戶-服務器系統及航線異常情況并沒有被考慮在內。然而,這些環境和技術變化通常會發生在項目進行過程中,你不得不在正在構建的系統中考慮到這些因素。環境因素包括:
Availability of skilled professionals - the newer the technology, tools, methods, and domain, the smaller the pool of skilled professionals.是否有足夠的熟練專業人員——技術、工具、方法、領域越新,相應的熟練專業人員就越少。
Stability of implementation technology - the newer the technology, the lower the stability and the greater the need to balance the technology with other technologies and manual procedures. 實現技術的穩定性——對于越新的技術,穩定性可能就越低,并且更需要去平衡該技術及其它技術和人工程序的關系。
Stability and power of tools - the newer and more powerful the development tool, the smaller the pool of skilled professionals and the more unstable the tool functionality. 穩定性和工具的性能——越是新的和功能強大的開發工具,就擁有更少的熟練開發人員,并且它的功能上的穩定性就越差。
Effectiveness of methods - what modeling, testing, version control, and design methods are going to be used, and how effective, efficient, and proven are they. 方法的有效性——將使用什么樣的建模、測試、版本控制及設計方法,他們的效率怎樣?是否有足夠的保證?
Domain expertise - are skilled professionals available in the various domains, including business and technology.行業知識和經驗——是否有不同行業(包括商業和技術方面)的專業人才?
New features - what entirely new features are going to be added, and to what degree will these fit with current functionality. 新特性——將添加什么樣的新特性,這些新特性將在什么樣的程度上符合當前的功能。
Methodology - does the overall approach to developing systems and using the selected methods promote flexibility, or is this a rigid, detailed approach that restricts flexibility. 方法學——用于開發系統的途徑和所選擇的方法是提升系統的適應性還是限制了系統的適應性?
Competition - what will the competition do during the project? What new functionality will be announced or released. 競爭性——在項目進行過程中,將怎樣提高競爭性?將宣布或發布什么新功能?
Time/Funding - how much time is available initially and as the project progresses? How much development funding is available.時間/資金——在項目啟動和進展過程中,有多少時間可用?有多少開發經費可支配?
Other variables - any other factors that must be responded to during the project to ensure the success of the resulting, delivered system, such as reorganizations. 其它因素——項目進行過程中,為確保成功,任何其它因素都必須考慮,如機構重組。
The overall complexity is a function of these variables :
整體的復雜性可以用這些因素的一個函數來表示:
complexity = f(development environment variables + target environment variables)
復雜度=f(開發環境因素+目標環境因素)
where these variables may and do change during the course of the project.
其中,這些因素可能而且確實會在項目過程中變化。
As the complexity of the project increases, the greater the need for controls, particularly the ongoing assessment and response to risk.
隨著項目的復雜度增加,就更需要控制,特別是資產評估和風險反應。
Attempts to model this development process have encountered the following problems:
對這類開發過程的建模嘗試已經遇到下列問題:
文章來源于領測軟件測試網 http://www.kjueaiud.com/