Theory of Constraints in Software Engineering

From apppm
(Difference between revisions)
Jump to: navigation, search
(Theory of Constraints)
Line 7: Line 7:
  
 
== Theory of Constraints ==
 
== Theory of Constraints ==
Before improving a system or any part of it, one must define system’s global goal and the measurements that will enable him to judge the effect of any subsystem and any local decision on the goal. When measurements have been defined, the factor that limits the system to reach its goal can be found; constraint [5, page 5].  
+
Before improving a system or any part of it, one must define system’s global goal and the measurements that will enable him to judge the effect of any subsystem and any local decision on the goal. When measurements have been defined, the constraint that limits the system to reach its goal can be found <span style="color:red">[5, page 5]</span>.  
  
 
Theory of Constraints (TOC) is a methodology that is used to identify the most important constraints in a system and then improving the constraint until it is no longer the limiting one. According to TOC every complex system consists of multiple linked activities and one of these activities is a constraint upon the whole system.  
 
Theory of Constraints (TOC) is a methodology that is used to identify the most important constraints in a system and then improving the constraint until it is no longer the limiting one. According to TOC every complex system consists of multiple linked activities and one of these activities is a constraint upon the whole system.  
  
Theory of Constraints provides powerful set of tools to achieve the ultimate goal of companies: Make profit.
+
Theory of Constraints provides powerful set of tools to achieve the ultimate goal of companies: '''Make profit '''
 
=== The Five Focusing Steps ===
 
=== The Five Focusing Steps ===
 
TOC provides the Five Focusing Steps to identify and eliminate the constraints, the steps are described in the table below:  
 
TOC provides the Five Focusing Steps to identify and eliminate the constraints, the steps are described in the table below:  
Line 37: Line 37:
 
This step is a reminder to never become complacent – aggressively improve the current constraint…
 
This step is a reminder to never become complacent – aggressively improve the current constraint…
 
and then immediately move on to the next constraint.
 
and then immediately move on to the next constraint.
   
+
  <span style="color:red">HEIMILD FYRIR TOFLU</span>
 
|}
 
|}
  
  
 
=== The Thinking processes  ===
 
=== The Thinking processes  ===
The thinking processes are composed of cause-effect tools along with necessary condition thinking tools and a set of logic rules. Three of the diagrams that are going to be introduced use cause-and-effect logic which strives to first identify the root causes of undesirable effects and then remove the undesirable effects without creating new ones. The other two, that will be introduced, use necessary condition thinking, in order to achieve one condition the other one has to occur [6].
+
The thinking processes are composed of cause-effect tools along with necessary condition thinking tools and a set of logic rules. Similar to the ‘’Five Focusing Steps’’ the Thinking Processes try to identify and manage the constraints.  According to <span style="color:red">Kim, Mabin and Davies </span> the original suite of Thinking Processes comprises five logic diagrams and a set of logic rules but in recent years’ development of variant Thinking Processes tools has created a need for clarity about the nature and use of such tools among academics, practitioners and particularly newcomers <span style="color:red">[p.156]</span>.  Therefore, the original five diagrams will be focused on in this article. 
 +
 
 +
Three of the diagrams that are going to be introduced use cause-and-effect logic which strives to first identify the root causes of undesirable effects and then remove the undesirable effects without creating new ones. The other two tools use necessary condition thinking: in order to achieve target A we must have B <span style="color:red">[6]</span>.
  
 
When using the thinking processes the following three questions are answered:  
 
When using the thinking processes the following three questions are answered:  
Line 50: Line 52:
  
 
Examples of tools that have been formalized as a part of the Thinking Processes are described below:  
 
Examples of tools that have been formalized as a part of the Thinking Processes are described below:  
*'''Current Reality Trees (CRT):''' The CRT is constructed from top-down, where undesirable effects are identified and traced back to their root cause. Dettmer (1997) states that the CRT is designed to achieve the following objectives:  
+
*'''Current Reality Trees (CRT):''' The CRT is constructed from top-down, where undesirable effects are identified and traced back to their root cause. <span style="color:red"> Dettmer (1997) </span>states that the CRT is designed to achieve the following objectives:  
 
::- Provide the basis for understanding complex systems
 
::- Provide the basis for understanding complex systems
 
::- Identify undesirable effects exhibited by a system  
 
::- Identify undesirable effects exhibited by a system  
Line 57: Line 59:
 
::- Determine at what points the root causes and/or core problem lie beyond one's span of control or sphere of influence  
 
::- Determine at what points the root causes and/or core problem lie beyond one's span of control or sphere of influence  
 
::- Isolate those few causative constraints)that must be addressed in order to realize the maximum improvement of the system
 
::- Isolate those few causative constraints)that must be addressed in order to realize the maximum improvement of the system
::- Identify the one simplest change to make that will have the greatest positive impact on the system. (P.64)
+
::- Identify the one simplest change to make that will have the greatest positive impact on the system.<span style="color:red"> (P.64) </span>
  
 
*'''Evaporating Clouds (EC):''' When the CRT has been used to identify what to change, the EC is used to identify a solution to what should be changed to, to eliminate undesirable effects.  The following purposes are sought to be achieved:  
 
*'''Evaporating Clouds (EC):''' When the CRT has been used to identify what to change, the EC is used to identify a solution to what should be changed to, to eliminate undesirable effects.  The following purposes are sought to be achieved:  
Line 95: Line 97:
  
 
=== Throughput Accounting ===
 
=== Throughput Accounting ===
 +
Throughput Accounting is TOC´s approach to accounting, a decision tool designed to ensure decisions that might have financial impact take a holistic perspective and do not optimize on metric or area of the business at the expense of the whole. Throughput accounting takes a decision regarding the constraint and values it according to financial terms because it acknowledges that the constraint determines capacity, hence profit potential of the company <span style="color:red"> [7]</span> . Cost accounting is known to perform gross margin analysis at the product level while Throughput Accounting determines profitability at the system level and looks at the production process to be a single system that must be optimized. Irrespective of the number of units created, Throughput Accounting assumes most production costs are required to maintain a system of production along with assuming most production costs do not vary directly with incremental production of a single product.
  
 +
== Constraints ==
 +
Constraints are like said before, anything that prevents the organization from making progress towards its goal. Constraints can take many forms other that equipment and there are differing opinions how to categorize them, one approach is shown in the table below:
 +
 +
{| class="wikitable" style="width: 400px;"
 +
|-
 +
! scope="row"| Constraint
 +
! Description
 +
|-
 +
! scope="row"|Physical
 +
|Typically equipment, but can also be other tangible items, such as material shortages, lack of people, or lack of space.
 +
|-
 +
! scope="row"|Policy
 +
|Required or recommended ways of working. May be informal (e.g. described to new employees as “how things are done here”). Examples include company procedures (e.g. how lot sizes are calculated, bonus plans, overtime policy), union contracts (e.g. a contract that prohibits cross-training), or government regulations (e.g. mandated breaks).
 +
|-
 +
! scope="row"|Paradigm
 +
|Deeply ingrained beliefs or habits. For example, the belief that “we must always keep our equipment running to lower the manufacturing cost per piece”. A close relative of the policy constraint.
 +
|-
 +
! scope="row"|Market
 +
|Occurs when production capacity exceeds sales (the external marketplace is constraining throughput). If there is an effective ongoing application of the Theory of Constraints, eventually the constraint is likely to move to the marketplace.
 +
<span style="color:red">HEIMILD FYRIR TOFLU</span>
 +
|}
  
 
== Theory of Constraints in Software Engineering ==
 
== Theory of Constraints in Software Engineering ==

Revision as of 09:54, 16 September 2016

Theory of Constraints (TOC) is a methodology invented by Dr. Eliyahu M. Goldratt, a scientist, physicist, author, educator and consultant [3]. With the methodology the most important limiting factor, that hinders a goal to be achieved, is identified and then that factor (i.e. constraint) is improved until it is no longer the limiting factor. Since Goldratt introduced the Theory of Constraints in his bestselling 1984 novel, “The Goal”, the methodology has continued to evolve and develop into many different fields including Software Engineering.[2]

The goals of Software Engineering is the creation of software systems that meet the needs of customers and are efficient, maintainable and reliable in addition the systems should meet project schedules and budgets along with being produced in an economical way [1, p21]. Applying analogous set of approaches to the development of software, one can expect the production of software that meets the goals of Software Engineering [1, p22].

This article will introduce how Theory of Constraints can be used in Software Engineering along with guidance to apply the methodology.


Contents

Theory of Constraints

Before improving a system or any part of it, one must define system’s global goal and the measurements that will enable him to judge the effect of any subsystem and any local decision on the goal. When measurements have been defined, the constraint that limits the system to reach its goal can be found [5, page 5].

Theory of Constraints (TOC) is a methodology that is used to identify the most important constraints in a system and then improving the constraint until it is no longer the limiting one. According to TOC every complex system consists of multiple linked activities and one of these activities is a constraint upon the whole system.

Theory of Constraints provides powerful set of tools to achieve the ultimate goal of companies: Make profit

The Five Focusing Steps

TOC provides the Five Focusing Steps to identify and eliminate the constraints, the steps are described in the table below:


The Five Focusing Steps
Identify Identify the current constraint (the single part of the process that limits the rate at which the goal is achieved).
Exploit Make quick improvements to the throughput of the constraint using existing resources (i.e. make the most of what you have).
Subordinate Review all other activities in the process to ensure that they are aligned with and truly support the needs of the constraint.
Elevate If the constraint still exists (i.e. it has not moved), consider what further actions can be taken to eliminate it from being the constraint.

Normally, actions are continued at this step until the constraint has been “broken” (until it has moved somewhere else). In some cases, capital investment may be required.

Repeat The Five Focusing Steps are a continuous improvement cycle. Therefore, once a constraint is resolved the next constraint should immediately be addressed.

This step is a reminder to never become complacent – aggressively improve the current constraint… and then immediately move on to the next constraint.

HEIMILD FYRIR TOFLU


The Thinking processes

The thinking processes are composed of cause-effect tools along with necessary condition thinking tools and a set of logic rules. Similar to the ‘’Five Focusing Steps’’ the Thinking Processes try to identify and manage the constraints. According to Kim, Mabin and Davies the original suite of Thinking Processes comprises five logic diagrams and a set of logic rules but in recent years’ development of variant Thinking Processes tools has created a need for clarity about the nature and use of such tools among academics, practitioners and particularly newcomers [p.156]. Therefore, the original five diagrams will be focused on in this article.

Three of the diagrams that are going to be introduced use cause-and-effect logic which strives to first identify the root causes of undesirable effects and then remove the undesirable effects without creating new ones. The other two tools use necessary condition thinking: in order to achieve target A we must have B [6].

When using the thinking processes the following three questions are answered:

  1. What needs to be changed?
  2. What should it be changed to?
  3. What actions will cause the change?

Examples of tools that have been formalized as a part of the Thinking Processes are described below:

  • Current Reality Trees (CRT): The CRT is constructed from top-down, where undesirable effects are identified and traced back to their root cause. Dettmer (1997) states that the CRT is designed to achieve the following objectives:
- Provide the basis for understanding complex systems
- Identify undesirable effects exhibited by a system
- Relate undesirable effects through a logical chain of cause and effect to root causes
- Identify, where possible, a core problem that eventually produces 70% or more of the system’s undesirable effects.
- Determine at what points the root causes and/or core problem lie beyond one's span of control or sphere of influence
- Isolate those few causative constraints)that must be addressed in order to realize the maximum improvement of the system
- Identify the one simplest change to make that will have the greatest positive impact on the system. (P.64)
  • Evaporating Clouds (EC): When the CRT has been used to identify what to change, the EC is used to identify a solution to what should be changed to, to eliminate undesirable effects. The following purposes are sought to be achieved:
- Confirm that the conflict exists
- Identify the conflict perpetuating a major problem
- Resolve conflict
- Avoid compromise
- Create solutions in which both sides win
- Create new ‘breakthrough’ solutions to problems
- Explain in depth why a problem exists
- Identify all assumptions underlying problems and conflicting relationships. (Dettmer, 1997, p.122)
  • Future Reality Trees (FRT): Once a solution has been identified with the EC method next step is to start building the Future Reality Tree (FRT). The diagram shows the future state and identifies what to change along with its impact on the future of the organization. FRT is designed and considered to test the solution, using the effect-cause-effect method. The FRT is intended to achieve the following purposes:
- Enables effectiveness testing of new ideas before committing resources to implementation
- Determines whether proposed system changes will produce the desired effects without creating negative side effects
- Reveals through negative branches, whether (and where) proposed changes will create new or collateral problems as they solve old problems, and what additional actions are necessary to prevent any such negative side effects from occurring
- Provides a means of making beneficial effects self-sustaining through deliberate incorporation of positive reinforcing loops
- Provides a means of assessing the impacts of localized decisions on the entire system
- Provides an effective tool for persuading decision makers to support a desired course of action
- Serves as an initial planning tool.
  • Prerequisite Trees (PRT): When identification of what to change and what to change to has been done, the implementation of the solution is next. Prerequisite Trees are used to identify obstacles that prevent the solution from the EC to be implemented. The goal is to identify the critical elements, or obstacles, standing in the way of reaching the objective. PRT serves the following purposes:
- To identify obstacles preventing achievement of a desired course of action, objective, or injection (solution idea arising from the Evaporating Cloud)
- To identify the remedies or conditions necessary to overcome or otherwise neutralise obstacles to a desired course of action, objective or injection
- To identify the required sequence of actions needed to realise a desired course of action
- To identify and depict unknown steps to a desired end when one does not know precisely how to achieve them
  • Transition Trees: The transition trees help to determine the actions necessary to implement the solution. The Transitions Tree has nine basic purposes:
- Provide a step by step method for action implementation
- Enable effective navigation through a change process
- Detect deviation in progress toward a limited objective
- Adapt or redirect effort, should plans change
- Communicate the reasons for action to others
- Execute the injections developed in the EC or FRT
- Attain the intermediate objectives identified in a PRT
- Develop tactical action plans for conceptual or strategic plans
- Preclude undesirable effects from arising out of implementation. (P. 284)


Throughput Accounting

Throughput Accounting is TOC´s approach to accounting, a decision tool designed to ensure decisions that might have financial impact take a holistic perspective and do not optimize on metric or area of the business at the expense of the whole. Throughput accounting takes a decision regarding the constraint and values it according to financial terms because it acknowledges that the constraint determines capacity, hence profit potential of the company [7] . Cost accounting is known to perform gross margin analysis at the product level while Throughput Accounting determines profitability at the system level and looks at the production process to be a single system that must be optimized. Irrespective of the number of units created, Throughput Accounting assumes most production costs are required to maintain a system of production along with assuming most production costs do not vary directly with incremental production of a single product.

Constraints

Constraints are like said before, anything that prevents the organization from making progress towards its goal. Constraints can take many forms other that equipment and there are differing opinions how to categorize them, one approach is shown in the table below:

Constraint Description
Physical Typically equipment, but can also be other tangible items, such as material shortages, lack of people, or lack of space.
Policy Required or recommended ways of working. May be informal (e.g. described to new employees as “how things are done here”). Examples include company procedures (e.g. how lot sizes are calculated, bonus plans, overtime policy), union contracts (e.g. a contract that prohibits cross-training), or government regulations (e.g. mandated breaks).
Paradigm Deeply ingrained beliefs or habits. For example, the belief that “we must always keep our equipment running to lower the manufacturing cost per piece”. A close relative of the policy constraint.
Market Occurs when production capacity exceeds sales (the external marketplace is constraining throughput). If there is an effective ongoing application of the Theory of Constraints, eventually the constraint is likely to move to the marketplace.
HEIMILD FYRIR TOFLU

Theory of Constraints in Software Engineering

  • The methodology is connected to Software Engineering and explained how it can be used in Software Engineering


(Extra) When applying TOC the constraints that cause inventory or buffer have to be identified and managed. Inventory in Software Engineering can be expressed in different ways, depending on the software methodology used. A unit of inventory could be, for instance:

  • A Use Case in UDP [a.k.a. RUP].
  • A Story Point in XP (eXtreme Programming).
  • A Feature in FDD (Feature-Driven Development).
  • A Backlog Item in Scrum.
  • A Function Point in traditional SDLC structured methods.

[4]


Applying TOC in Software Engineering

  • The steps in applying TOC are explained and connected to Software Engineering

1. Identify

2. Exploit

3. Subordinate

4. Elevate

5. Repeat

Limitations and advantage

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox