1 介绍
1.1 目的
这本指导书讲述了如何识别和定义软件度量来支持你们自己组织的商业目标。我们要讲解的这个过程会提供深入对于你们来说最重要的管理的洞察力。这些度量能够追溯到你们的商业目标,因此你们的数据收集活动会更好地集中在他们既定的目标上。
我们把这个过程称之为"目标驱动度量"。在目标驱动度量中,首要的问题不是"我应当运用什么指标?",而是"什么是我想要知道的或要学习的?"[引自R ombach 89]
2 基础
2.1 为什么度量
度量软件过程,产品和资源有四个理由:
为了提取特征 to characterize
为了评价 to evaluate
为了预测 to predict
为了提高 to improve
我们提取特征,来获得对过程,产品,资源和环境的理解;来建立可供未来评估作比较的基线。
2.2 度量元素
通过度量这个过程,数值或象征信号被分配到现实中的实体的属性上,按照清淅定义的规则得到这些属性的特征[Fenton95]。度量要求:
实体(所关心的对象)
属性(实体的特征)
标识属性值的尺度(和计量单位)
总之,属性的分类或数量是我们要度量的东西。
这意味着,在我们开展度量之前,我们必须清淅地识别实体,下文要讲述属性和我们用于标识属性值的计量单位。
Figures 2-1 through 2-3 显示了软件企业产生、使用或管理的实体的例子。
2.3 客观和主观的度量
在一些圈子中有这样一种趋势,认为所有的度量都应当是客观的。我们强烈表示不同意。坚持客观会遗失这一点,就是客观和主观度量经常表述基本的不同需要。而且,实际情况是不客观的,而是主观的,一致,可重复的,最小化度量的错误和噪声。
3 一个识别和定义软件度量的过程模型
本章提供了目标驱动度量模型的概况和实施路径,详细的说明会在第四章。在目标驱动的度量中要强调的是,当收集有助于达到商业目标的信息时,和当保持度量与商业目标一致的跟踪能力时,度量本身的工作量是不能够不清不楚的。
This chapter provides an overview and roadmap for the goal-driven measurement process
that we describe in Chapter 4. The emphasis throughout goal-driven measurement is on
gathering information that helps you achieve your business goals-and on maintaining
traceability from measures back to business goals, so that measurement efforts do not
wander astray.
目标驱动度量过程的结构来自于由Victor Basili and Dieter Rombach [Basili 88, Basili 89, Rombach 89].报告的想法和经验。
这个过程的动力学和几个图解来源于由ami ESPRIT project [ami 92, Pulford 96]开发的度量过程指南。
The structure of the goal-driven measurement process draws extensively on ideas and
experience reported by Victor Basili and Dieter Rombach [Basili 88, Basili 89, Rombach 89].
The process dynamics and several of the illustrations that we use have their origins in
measurement process guidelines developed by the ami ESPRIT project [ami 92, Pulford 96].
The goal-driven measurement process also incorporates experience that we have gained at
the Software Engineering Institute in designing and using checklist-based frameworks for
defining software measures and communicating measurement results [Florac 92, Goethert
92, Park 92, SEI 96].
3.1 总览:概念和过程步骤Overview: The Precepts and the Process Steps
CMU/SEI-96-HB-002 15
目标驱动的度过程基于三个概念,包括10个步骤。
这三个概念是
度量目标是来自于商业目标
由模型来获得度量的环境和焦点
GQ(I)M把非正式的目标变成可操作的度量结构。
GQ(I)M是目标(Goal)问题(Question)(指标)(Indicator)-度量(Measure)的首字母缩写。这个插入的"I"使得这与相近的GQM区别开来。
The goal-driven measurement process is based on 3 precepts, and it consists of 10 steps.
The three precepts are
o Measurement goals are derived from business goals.
o Evolving mental models provide context and focus.
o GQ(I)M1 translates informal goals into executable measurement structures.
十个步骤是:
1, 识别商业目标
2, 识别你要学习或知道的东西
3, 识别你的子目标
4, 识别与子目标相关的实体和属性
5, 公式化你的度量目标
6, 识别量化的问题和相关的指标,这些会用于实现你的度量目标
7, 识别用于获得指标的要收集的数据元素,这些个指标是可以帮助你回答上述问题
8, 定义度量的使用,使得这些定义具有可操作性
9, 识别你使用度量的行动
10, 准备一个计划来实施度量
The 10 steps are
1. Identify your business goals.
1 GQ(I)M is an acronym for goal-question-(indicator)-measure. The "I" in parentheses distinguishes
this from the closely related GQM methodology introduced and described by Basili and Rombach
[Basili 88, Basili 89, Rombach 89]. Our use of GQ(I)M is described in Sections 4.5-4.8.
2. Identify what you want to know or learn.
3. Identify your subgoals.
4. Identify the entities and attributes related to your subgoals.
5. Formalize your measurement goals.
6. Identify quantifiable questions and the related indicators that you will use to
help you achieve your measurement goals.
7. Identify the data elements that you will collect to construct the indicators
that help answer your questions.
8. Define the measures to be used, and make these definitions operational.
9. Identify the actions that you will take to implement the measures.
10. Prepare a plan for implementing the measures.
4 实施目标驱动过程
4.1 识别你们的商业目标
4.2 识别你要学习或知道的东西
A prudent question is one-half of wisdom.
- Francis Bacon
一个明确的问题就是一半的智慧
-------培根
识别了商业目标之后,下一步就是开始识别你为了理解,评估,预测或提高与你目标相关的活动,想知道什么。通过提出类似这样的问题:"什么活动我要管理或执行?","我要实现什么,提高什么",并完成这样的描述"为了做这个,我需要做…"。
With your business goals identified, the next step is to begin identifying what you would like
to know in order to understand, assess, predict, or improve the activities related to achieving
your goals. By asking questions such as
"What activities do I manage or execute?"
and
"What do I want to achieve or improve?"
and by completing statements such as
"To do this, I will need to…",
你能够开发识别你可能需要的量化的信息。你应当几次重复这些问题,把顶级的目标分解到具体的事情和条目上,这些事情是你想要完成的,这些条目是你要表达阐述的。
you can begin identifying the quantitative information that you would like to have. You
should repeat these questions several times as you break top-level goals down into specific
things that you want to accomplish and issues that you will need to address. The ellipse in
Figure 4-4 highlights this part of the process and shows how it draws upon your mental
model of the processes you manage.
Scenario
4.2.1 场景
我们在这份材料中使用几个例子,来显示给你实体,属情和涉及的概念模型是如何来帮助指导和关注目标驱动的过程。为了后续的例子,我们提供了如下的场景:
你的组织刚刚完成了一次软件过程评估。
其中的一个发现是你们的项目能够准时的发布软件功能和文档,但是客户并不象你想象中的那样满意。
相关的行动是提高客户满意度。
你的过程改进小组已经识别了这个行动为它们首要的目标。
你是一个项目经理,你需要一系列的度量来帮助你的项目向这个目标前进。
We use several examples in the materials that follow to show you how entities, attributes,
and evolving mental models help guide and focus the goal-driven process. To give
substance to these examples, we offer the scenario shown in Figure 4-5.
Scenario
o Your organization has just completed a software process
assessment.
o One of the findings was that your projects are delivering
software functions and documentation on time, but
customers are not as satisfied as you would like them to be.
o The related action item is: Improve customer satisfaction.
o Your process improvement team has identified this action
item as one of its primary goals.
o You are a project manager, and you need a set of measures
that will help your project make progress toward this goal.
Figure 4-5: Scenario
4.2.2 实体问题列表
我们推荐的用于识别和构勒问题的工具被称为"一个实体问题列表"
使用这个工具的一个例子就在ami Handbook中有相似的阐述。任务排列如下:
1. 从一个在第一步中发现顶级目标开始
2. 识别你的小组要涉及的人或小组,这可能是你或你的组织的领导。这个定义了你的处景以及你和你的小组所扮演的角色,这会在任务3到任务6中以及下面的目标驱动过程步骤中用到。
3. 建立一个你这个角色的相关过程草图(概念模型),当你做这个,应当由你想要实现的,和你要表达的条目来指导你。
28 CMU/SEI-96-HB-002
The Entity-Question List-A Template for Framing Questions
The tool we recommend to help identify and frame questions is called an entity-question list.
Our example of the use of this tool is patterned after a similar illustration in the ami
handbook [ami 92]. The sequence of tasks is as follows:
1. Start with one of the top-level goals that your team identified in Step 1.
2. Identify the persons or groups whose concerns your team will address.
(This may be you or the organization you lead.) This defines your
perspective and the roles that you and the team will assume in Tasks 3
through 6 here and in the remaining steps of the goal-driven measurement
process.
3. Create rough sketches (mental models) of the relevant processes that you,
in your role, manage or affect. As you do this, be guided by what you want
to achieve and the issues you will have to address to achieve it.
4. 列出受你或你的角色管理或影响的重要的事物(实体),确认你对每个事物表述了下列过程实体的四个方面:
输入和资源
产品和副产品
中间工件,例如过程目录和工作
活动和流程
5. 对每个实体,列出问题,如果回答了,这些问题会帮助你或你的角色向着你的目标来计划和管理过程。例如:
它有多大?
多少?
有多个个组件?
它有多快?
它持续多久?
它值多少钱?
4. List the important things (entities) in your processes that you, in your role,
manage or influence. Make sure that you address each of the four kinds of
process entities below:
- inputs and resources
- products and by-products
- internal artifacts such as inventory and work in process
- activities and flowpaths
You may also want to list some of the environmental entities outside your
processes that affect your work.
5. For each entity, list questions that, if answered, would help you, in your
role, plan and manage progress toward your goals. For example:
- How big is it?
- How much is there?
- How many components?
- How fast is it?
- How long does it take?
- How much does it cost?
6. 然后回顾一下,总体看看你的过程是否你遗漏了什么,通过询问如下问题:
这个过程稳定吗?
运行的如何?
什么限制了我们的能力?
什么决定了我们的能力?
什么是决定性的成功因素?
什么东西我们能够控制?
我们的客户想要什么?
什么限制了我们的性能?
什么可能引起错误?
什么可能是早期的警告信号?
我们的订货有多少?
订货在哪里发生?
最重要的
我们要如何才能知道?
你可能发现其它的实体,它的属性也值得度量。
6. Then step back and look at your process as a whole to see if you have
missed anything. By asking questions such as
- Is the process stable?
- How is it performing now?
- What limits our capability?
- What determines quality?
- What determines success?
- What things can we control?
- What do our customers want?
- What limits our performance?
- What could go wrong?
- What might signal early warnings?
- How big is our backlog?
- Where is backlog occurring?
and most importantly
- How will we know?
you may discover additional entities whose properties may be worth
measuring.
7. 为了你的其它的目标,重复1~6
7. Repeat Tasks 1-6 for your other goals.
当把与实体相关的问题列出,不必花费更多的时间来试图寻找构勒出完美的问题,进行问题构勒是下一步的事。这时的问题应是很通用的或描述性的。
When listing questions related to entities (Task 5 above), do not spend excessive time trying
to frame the perfect question. Precise framing of questions will come later-you are still early in the goal-driven process. Your questions at this point can be either very general or quite specific.
最重要的是把你所关心的放到这张表中去,你可以利用它们来提练你的模型,因此他们能够形成这个阶段,为了第三步--识别和明确子目标。注意第二步中任务7并没有在任务5,6后立即执行。
The important thing is to get your concerns on the table so that you can use
them to help elaborate your mental model, and so that they can set the stage for identifying
and articulating subgoals in Step 3 of the goal-driven process (Figure 3-1).
Note that Task 7 of Step 2 does not have to be performed immediately after Tasks 5 and 6.
Usually it is best to continue on through Step 7 of the goal-driven measurement process, to
the point where you have clearly identified the data elements that address one or two of your
business goals, before branching off on additional goals. This helps keep the goal-driven
process manageable. Ultimately, though, you will want to give priority to measures that
address more than one goal. This is especially true when you begin to reduce the large set
of potential measures to the ones that are most valuable to you. There are no universal
guidelines for when to address additional goals-it all depends on the situation. You and
your team will have to judge this for yourselves.
Examples
例子
4-6到4-9是场景例子所关心的实体和问题列表。
Figures 4-6 through 4-9 on the following pages list some of the entities and questions that
might concern the project manager in our example scenario when he or she is trying to
improve customer satisfaction. Your lists for your own organizations or projects will likely be
more encompassing.
4.3 识别你的子目标
4.3.1 把相关问题放在一组中,有利于识别子目标
第三步就是把你的顶级目标分解为子目标,这个子目标与你管理或执行的活动有关系。
问题会提升,当考虑你的操作过程的模型,无论是明确的还是不明确的,与实体和属性结合,来达到2你的目标。你现在要识别与实体相关的问题,然后给他们分组,你能够把结果转化成可管理的子目标。
Grouping Related Questions Helps Identify Subgoals
The third step in the goal-driven process is to translate your top-level goals into subgoals
that relate specifically to activities that you manage or perform. You can use the entityquestion
lists from Exercise 2 to help you do this.
The ellipse in Figure 4-11 shows where we are in the process. The questions that were
prompted by the evolving mental model of your operational process(es) point, either
implicitly or explicitly, to entities and attributes associated with achieving your goals. You
now need to identify the questions that you have about the entities, then group them and
identify the issues they address. You will then be able to translate the results into
manageable subgoals. (If you are familiar with team-based problem-solving processes, you
will recognize this as a convergent step that organizes and structures the results of the
divergent process we used to generate the entity-question lists.)
Examples
Figure 4-12 shows some results for our example scenario. Here, the groupings are easily
identified. For example, the first four questions listed for products and by-products address
documentation. This issue is grouped already, since we generated the questions by
focusing on the document entities we produce.
As we scan down the entity-question list, we see that the next five questions relate to the
quality and performance of the software product. This concern continues in Figures 4-13
and 4-14. Since this seems to be a consistent theme, we elect to collect these questions as
group #2.
As we continue identifying principal themes or issues, we collect the questions related to
each issue and transfer them to a new list, sorted by issue. Figure 4-15 shows the results
for our scenario. Keep in mind that the groupings will always be somewhat arbitrary, since
they are based on the team's perceptions of central themes. Moreover, it is perfectly
appropriate for a question to be repeated in more than one grouping.
CMU/SEI-96-HB-002 37
The groupings of issues and questions then translate naturally into candidate subgoals,
which can be prioritized. The results for our scenario are illustrated in Figure 4-16. In the
real world, you would want to validate these subgoals with your customer(s) to ensure that
you are addressing their true concerns. This would also help you assign priorities to your
subgoals.
Derived Subgoals
Subgoal #1 Improve readability and traceability of documents.
Subgoal #2 Improve reliability and performance of released code.
Subgoal #3 Improve monitoring of plans and budgets.
Subgoal #4 Improve performance of the change management process.
Subgoal #5 Improve communications with the customer.
Figure 4-16: Derived Subgoals-A Project Manager's Perspective of the Goal "Improve Customer Satisfaction"
The issues in the training scenario we have been using have mapped nicely, one-to-one,
into subgoals. This will not always happen in real life. In your work, you may find several
issues mapping into a single subgoal, or single issues mapping into several subgoals.
There is nothing wrong with this-formal decomposition of business goals is not what we are
after. The point is simply to arrive at rational subgoals that
o can be addressed by managerial or technical actions
o point us toward focused measurement goals
If your list of groupings is long and you perceive it leading to many measures, your teams
may want to assign priorities to the issues and sort them into rough priority order. This will
help them focus on first things first in the steps that follow.
4.4 识别与子目标相关的实体和属性
4.5 公式化你的度量目标
4.6 识别量化的问题和相关的指标,这些会用于实现你的度量目标
4.7 识别用于获得指标的要收集的数据元素,这些个指标是可以帮助你回答上述问题
4.8 定义度量的使用,使得这些定义具有可操作性
4.9 识别你使用度量的行动
4.10 准备一个计划来实施度量