软件开发的四个要素:人员、项目、产品和过程
- 人员:实际的人
- 项目:管理软件开发的组织和元素。
- 产品:在项目的生命周期内创建的制品。
- 过程:软件过程将用户需求转化为产品所需要的完整活动集合的定义。
- 工具:用于使过程中定义的活动自动化的软件。
项目的最终结果是产品。人员参与项目。过程作为项目的模板。过程可以通过工具自动完成。

人员至关重要
人员参与软件产品的开发。他们:
- 或对产品提供资金
- 或进行规划、开发、管理、测试、使用
- 或从中受益 因此,过程必须是面向人员的,也就是说,要便于人们运用。
开发过程影响人员
组织和管理软件项目的方式会极大地影响参与项目的人员:
- 项目可行性:大多数人都不愿意接受确信为不可行的项目。迭代的开发方法允许在早期对项目的可行性进行评估,不可行的项目可以在较早阶段种植,从而缓解精神压力。
- 风险管理:当人们决定没有对风险进行透彻分析和参与缓解措施时,会变得心神不宁。在早期阶段探查主要的风险可以缓解该问题。
- 开发组织结构:人员在6~8人的项目组里工作效率最高。在子系统和构件之间具有明确定义接口的良好构件,使这种划分工作的方法称为可能。
- 项目进度表:当人们相信项目进度表不实际时,士气会十分低落-因为人们不愿意去做明治无论如何努力都不能获得预期结构的工作。在初始阶段和细化阶段所用的技术,使开发人员对项目的最终结果应该使什么,即发布的产品应该完成什么功能,能产生一个好的项目。因为对应该完成什么功能有了一种良好的感觉,所以对于为了实现目标所选哟的工作流和时间,能够提出一个切实可行的项目计划。
- 项目易理解性:人员希望知道他们要做什么,希望有了解整个项目规划。架构描述为参与项目的每个人能提供了一个盖帽。
- 成就感:在迭代的生命周期中,快速的工作步伐和频繁的完成工作增加了人们的成就感。
角色会发生变化
因为软件开发的关键活动是由人员来完成的,因此需要由工具和UML来支持统一开发过程,以便使人员效率更高。这样一个过程可使开发人员咋兼顾投放市场时间、质量和成本的基础上构造出更好的软件;能够帮助他们详细说明更好满足用户需要的需求;能帮助他们选择一个架构,使所建立的系统具有投资效益且可及时修改。
一个好的软件过程还有助于构造更复杂的系统。为了理解和支持更复杂的业务过程,并在软件中付诸实现,开发人员将会与很多其他类型的开发人员一起工作。为了使越来越大的群组工作更有成效,限定开发人员努力为客户增加由价值的东西。
- 建立用况模型,使我们将经理集中在用户需要做什么上。
- 建立构架以允许系统随着时间的tuition而持续进化。
- 尽可能多购买或宠用软件。只要按照一致的方式将可宠用的构架和新开发的元素集成起来,就可以最终建成系统。
大多数软件人员的工作与他们所支持的任务会更加密切,并且由于有了自动化和可重用构件,能开发出更复杂的软件。人员对软件开发将至关重要。最终要靠合适的人员才能使我们成功。这个问题归结为使人员更为高效,允许他们做只有人才能做的工作:具有创造性、发现新的机会、运用判断能力、与客户或用户进行交流以及了解快速变化的世界。
将“资源”转化为“工作人员”
在软件开发组织中,人员担任着很多不同的职务。工作人员代表可能赋予人员的和他们所接受的职务。每个工作人员负责一个完整的活动集合。
一个工作人员可以由一组协同工作的个体来充当。一个人可以作为多种不同的工作人员。
项目创造产品
在项目的整个生命周期中,项目组在项目实施的过程中必须综合考虑变化、迭代和组织模式这三方面的因素:
- 一系列变化:系统开发项目产生产品,但沿着这一路径的过程是一系列的变化。
- 一系列迭代:在一个周期的每个阶段,工作人员通过一些列的迭代完成该阶段的活动。
- 组织模式:一个项目包括一组人员,他们被指派在业务约束(时间、成本和质量)的范围内实现某种结果
产品不仅仅是代码
在统一过程的语境中,所开发的产品是一个软件系统。这里的术语产品不是单指所交付的代码,而是指整个系统。
什么是软件系统?
系统是以机器形式或人们可读形式给机器、工作人员和其项目相关人员提供表示的素偶又制品。
制品
制品是一个通用的术语,表示在系统开发过程中由工作人员创建、生产、修改或使用的各种信息。主要存在两类制品:工程制品和管理制品。
系统包含一组模型
用在统一过程中的最引人关重的制品是模型。
每个工作人员都需要有一个独特的系统视角。当设计统一过程时,要表示出所欲工作人员以及他们可能需要的各种视角。所收集的全部工作人员的视角构成一个更大的单位,也就是模型;按照这种方法,一个工作人员可以从模型中得到任何特定的视角。
因此,构造系统就是一个构造模型额过程,即采用不同的模型来描述系统所有不同的视角的过程。
模型集合向所有工作人员阐明该系统。
什么是模型?
模型是对系统的一种抽象,从某个时点、在某种抽象层次上详细说明被建模的系统。
模型是对构架师和开发人员构造的系统的抽象。
每个模型是系统自包含的视图
模型是系统的语义闭合的抽象。它是一个自包含的视图,即用户不需要其他信息(即从其他模型)就可解释该系统
除了从系统的角度考虑之外,模型还要描述系统与周围缓解间的交互。
大多数工程模型是由精心选择的UML子集定义的。
模型的内部
模型总是用来标识被模型化的系统。这种系统元素就是其他元素的容器。高曾子系统表示所构造的系统。
模型间的关系
一个系统包含了不同模型中模型元素之间的所有关系和约束。因此,一个系统不尽是其模型的集合,也是模型间关系的集合。
过程指导项目
在统一过程语境中,过程是指软件开发业务中的关键“业务”过程,即开发和支持软件的组织中的关键“业务”过程。
过程:一个模板
过程实例是项目的同义词。
软件开发过程定义了一个完整的活动集合,这些活动将用户需求转化成一组前后一致的、表示一种软件产品的制品集合,并将以后的需求变更转换成新的一组前后一致的制品集合。
相关活动组成工作流
工作流的设计过程:
- 首先确定参与该过程的各种工作人员
- 然后表示在过程中选哟每种工作人员创建的制品。
- 描述过程如何在不同的工作人员间流动以及工作人员如何建立、生产和使用彼此的制品。
过程具体化
可以将统一过程具体化以适应不同应用和不同组织的需要。同时,至少在一个组织的内部,过程应该是相对一致的。
造成过程间差别的主要因素有:
- 组织因素
- 领域因素
- 生命周期因素
- 技术因素
过程的价值
在开发组内部或开发组之间公用一个过程具有很多益处:
- 开发组中的每个人能都能理解在开发产品时应该做的工作
- 开发人员可以更好地了解其他开人员正在做的工作
- 主管和精力,都能根据构架图了解开发人员正在做的工作
- 开发人员、主管和精力步熙学习一个新的过程就可在项目或部门间进行调用
- 公司内部的培训可以标准化
- 软件开发的过程时可重复的,就是说可以足够准确地设定工作进度和估算成本以满足预期的要求。
工具对于过程不可或缺
工具支持现代的软件开发过程。
工具对过程的影响
工具适于将重复的任务自动化,使事情有条理,管理阿亮的信息,并指导你沿着一条特定的开发路径前进。
开发支持工具是为了使活动全部或部分自动化,以调高效率和质量,缩短交付时间。在引入支持工具时,我们便会得到一个不同的、更为形式化的过程,进而可以引进没有工具无法进行的新的活动。
过程驱动工具
过程确定了工具的功能。
平衡过程和工具
过程驱动工具的开发;工具指导过程的开发。
支持UML的可视化建模
支持整个生命周期的工具
工具可以支持软件生命周期的每一个方面:
- 需求管理
- 可视化建模
- 程序设计工具
- 质量保证。 处理这些面向功能的工具,还有其他跨越生命周期的工具:版本控制、配置管理、缺陷跟踪、文件编织、项目管理和过程自动化。