THE SOFTWARE PROCESS

1. Software Process Structure

当开发产品或构建系统时,遵循一系列可预测的步骤(即路线图)是非常重要的,它有助于及时交付高质量的产品。软件开发过程中所遵循的路线图就称为“软件过程”。

1.1 A Generic Process Model

a generic process framework for software engineering defines five framework:

  1. communication
  2. planning
  3. modeling
  4. construction
  5. deployment

1.2 Process Patterns

Amber has proposed a template for describing a process pattern:

1. Pattern Name
2. Forces
3. Type
  1. Stage pattern
  2. Task pattern
  3. Phase pattern

2. Process Models

过程模型为软件工程提供了一个具体的路线图。它定义了所有活动、动作和任务的流程,迭代的程度,工作产品,必须要完成的工作的组织。

2.1 Prescriptive Process Models

2.1.1 The Waterfall Model

THE SOFTWARE PROCESS
It can serve as a useful process model in situations where requirements are fixed and work is to proceed to completion in a linear manner.

THE SOFTWARE PROCESS

2.1.2 Incremental Process Models

THE SOFTWARE PROCESS

2.1.3 Evolutionary Process Models

Evolutionary models are iterative.

THE SOFTWARE PROCESS
THE SOFTWARE PROCESS

2.1.4 Concurrent Models

THE SOFTWARE PROCESS

2.2 The Unified Process

THE SOFTWARE PROCESS

2.3 Personal And Team Process Models

2.3.1 Personal Software Process

The PSP model defines five framework activities:
  1. planning
  2. High-level design
  3. High-level design review
  4. development
  5. postmortem

2.3.2 Team Software Process

The TSP model defines the following framework activities:
  1. project launch
  2. high-level design
  3. implementation
  4. integration and test
  5. postmortem

3. Agile Development

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

3.1 Agility And The Cost Of CHANGE

THE SOFTWARE PROCESS

3.2 Extreme Programming

极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的。KentBeck在九十年代初期与WardCunningham共事时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效。Kent仔细地观察和分析了各种简化软件开发的前提条件、可能性以及面临的困难。1996年三月,Kent终于在为DaimlerChrysler所做的一个项目中引入了新的软件开发观念——XP。适用于小团队开发。

3.2.1 The XP Process

THE SOFTWARE PROCESS

3.2.2 Pair Programming

结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。

3.3 Other Agile Process Models

3.3.1 Scrum

THE SOFTWARE PROCESS

3.3.2 Dynamic Systems Development Method

DSDM defines three different iterative cycles:
  1. Functional model iteration
  2. Design and build iteration
  3. Implementation

3.3.3 Agile Modeling

those that make AM unique are:
  1. Model with a purpose
  2. Use multiple models
  3. Travel light
  4. Content is more important that representation
  5. Know the models and the tools you use to create them
  6. Adapt locally

3.3.4 Agile Unified Process

Each AUP iteration address the following activities:
  1. Modeling
  2. Implementation
  3. Testing
  4. Deployment
  5. Configuration and project management
  6. Environment management

4. Human Aspects Of Software Engineering

我们往往会陷入最新的程序设计语言,新的最佳设计方法,最流行的敏捷过程,或刚刚公布的一个出色的软件工具。但归根到底,还是要靠人来开发计算机软件。因为这个原因,软件工程的人员方面的因素与采用最新和最成功的技术对于一个项目的成功同等重要。

4.1 Characteristics Of A Software Engineer

THE SOFTWARE PROCESS

4.2 Global Teams

GSD (global software development)

THE SOFTWARE PROCESS