"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:
对这类开发过程的建模尝试已经遇到下列问题:
文章来源于领测软件测试网 https://www.ltesting.net/