软件软件软件

面向对象软件开发主要有哪些过程?[技术前沿]SCRUM软件开发过程(转载)

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。 如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。SCRUM软件开发过程
  
  编写最好的软件
  
  
  审校 林燕锋 [AKA]
  译者 littledwarf 林燕锋 Allan bianh
  sunshinezhou 胡庆培 [AKA]
  
  "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,面向对象软件开发主要有哪些过程?[技术前沿]SCRUM软件开发过程(转载)(图1) 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:
  对这类开发过程的建模尝试已经遇到下列问题:
  
  Many of the development processes are uncontrolled. The inputs and outputs are either unknown or loosely defined, the transformation process lacks necessary precision, and quality control is not defined. Testing processes are an example.
  许多开发过程是未加以控制的。输入输出都是未知的或仅仅初略定义的,过程转换缺少必要的精确性,并且质量控制也是未定义的。测试过程就是一个样例。
  An unknown number of development processes that bridge known but uncontrolled processes are unidentified. Detailed processes to ensure that a logical model contains adequate content to lead to a successful physical model is one such process.
  那些在已知的但未经控制的过程之间尚有未知数量的开发过程未被确认。用于确保包含足够内容的逻辑模型过渡到成功的物理模型的分过程就是这样一种过程。
  Environmental input (requirements) can only be taken into consideration at the beginning of the process. Complex change management procedures are required thereafter.
  环境输入(需求)只能在过程的初始考虑。之后就需要复杂的变化管理程序。
  Attempts to impose a micro, or detailed, methodology model on the development process have not worked because the development process is still not completely defined. Acting as though the development p

未经允许不得转载:软件 » 面向对象软件开发主要有哪些过程?[技术前沿]SCRUM软件开发过程(转载)