Test Driven Developer
You got a TEST for that?
Home
|
Syndication
|
Sign In
Thursday, October 30, 2008
Test-Driven Process Improvement with Refactoring, Value Stream Mapping, and Windows Workflow
Value Stream Mapping [VSM] is a lean concept that helps us improve our processes by focusing on the whole process and making stepwise refinements on smaller parts of the process, to gain improvement for the whole. It is in a sense, "Refactoring" a process.
In an ideal case, a process can be thought of as a workflow, and perhaps we might be able to represent it using the WF Windows Workflow Foundation code delivered in .NET 3.5. It would be nice to show a code example here of how we can represent a process with workflow steps, but I didn't have time to write up an example as of yet.
With VSM, we are trying to improve a process by mapping it into parts, each of which we can study. We can gather metrics on each of the process steps, and metrics on how long things wait between steps. The waiting between steps is usually far more significant time-wise than any of the steps themselves. WF can be instrumental in providing an automated framework for collecting and reporting these metrics.
Indeed there are also other workflow alternatives of course. BizTalk Server 2006 R2 is a fine candidate for workflow representation as well, when adapters are available for systems that interoperate. I have a specific Microsoft focus in my career, but I have used CapeClear as a Java-based workflow system, and there are others in the ESB space which have features that would allow us to collect metrics on an automated representation of our processes.
Automation is key to refactoring, as in any development mechanism. We can't fix what we don't know is broken. With VSM, we focus on the entire process as a whole, so we need to collect measurements on where it is today, and then we can see total improvement on the whole as we make small changes (refactoring the process).
Many enterprises today use Service-Oriented Architecture [SOA] as a design pattern for the construction of enterprise systems. This architecture lends itself well to the use of WF or BizTalk (substiitute your favorite flavor here) workflow components. SOA helps us to map the entire process to blocks of functionality that we can measure and monitor easily, contributing to our VSM overall picture.
My theory is that like with software development, process improvement can also have a test-driven, scientific approach. VSM is a tool that helps us change the right things to improve our overall process, but it typically has measurements in large units - days, even weeks. With the right automation framework contributing to very rapid feedback with the metrics collected on processes, we can write tests that indicate Red or Green for not only each component being analyzed, but for the entire process as well.
Tests don't have to be in the form of an NUnit DLL or test fixture. We can use simple reports actually to give us the feedback we need to make decisions on how we refactor. Think of it as moving test-driven concepts a couple elevations higher in the plan view. From the 500 foot view to the 5000 foot view if you will. It's the exact same concept, just applied at a somewhat higher level of abstraction.
For each of our services we monitor the time taken in the process and the time between processes, and compare them to our initial baseline. We might even be able to get real-time data on a visible dashboard in the best of cirumstances. When we are better than our initial baseline, we are Green, if not, then we're Red. There is no yellow - same result means we haven't improved so it's still red. This concept is brutally simple, but it can be very effective, especially if the Red/Green report is made visible on a web-based report.
Mapping the workflow using WF, BizTalk, or other tools gives us a way to take automated measurements and compare them to our baseline to render a decision on whether our process has improved or not, and whether we are reaching our overall goal of total improvement. Individual portions of the whole can still be red as long as we achieve green for the overall process.
A business process really is a workflow, we just need to map it as such using software and automation. In this way we can apply the fine concepts of test-driven and refactoring to process improvement, once again using automation and measurement as our top key tools for leveraging our own technologies to help us improve them.
Code examples here would be good of course... Stay tuned for future posts with WF code examples of a process flow that has metrics and baseline comparisons for Red/Green.
Automation
|
Refactoring
|
TDD
|
Tools
Thursday, October 30, 2008 12:47:03 PM (Pacific Standard Time, UTC-08:00)
Comments [1]
|
Tuesday, November 11, 2008 3:11:44 PM (Pacific Standard Time, UTC-08:00)
I really like your analogy that a VSM points to potential "refactoring" of a business process. Not all processes can be measured using automated tools and are measured manually. This is ok as the point of VSM is to identify opportunities for improvement, quantify those improvements, execute upon steps (or a project) to make the improvements and validate we achieved the improvement targets (to spread the analogy, think of those improvement targets as "acceptance tests"). So that is VSM - like a visual portfolio of potential process improvement projects.
There are a few business process management (BPM) tools out there and to that extent one may map business process inside the tool to cover steps both inside and outside technology systems (inside a technology system may take advantage of "services" for instance and the BPM tool would interface with that service) These tools can include "Red/Green" states, business rules and reporting on the workflow (like dashboards).
So I think we have two things here: One - a tool to assist in the management of visualizing and improving upon business processes = VSM; Two - tools and an SOA approach to implement those processes and an opportunity to automate not only the processes but a means to recognize a "defect" in the process and alert someone who in turn may correct the underlying process that caused the problem and continue - in Lean terms that is called Jidoka - using automation to indicate a problem where the human element may then step in to not only correct the problem, but the underlying cause of the problem.
To bring this full circle, that is what we are talking about with a TDD or ATDD approach; putting a system in place that we may rely upon to inform us of a problem, allow us the opportunity to correct the problem and the underlying cause, and move on to the next code change (refactor).
Phillip
Comments are closed.
© Copyright 2009, John E. Boal
Calendar
<
January 2009
>
Sun
Mon
Tue
Wed
Thu
Fri
Sat
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
Total Posts: 32
This Year: 0
This Month: 0
This Week: 0
Comments: 19
Archives
December, 2008 (2)
November, 2008 (2)
October, 2008 (2)
September, 2008 (4)
August, 2008 (3)
July, 2008 (5)
June, 2008 (4)
May, 2008 (1)
April, 2008 (2)
March, 2008 (4)
February, 2008 (2)
January, 2008 (1)
On this page
categories
ABN
Acceptance Criteria
ATDD
Automation
C#
Mocks
MSTest
Python
Refactoring
Selenium
SQL
TDD
Testing
Tools
Unit Tests
WatiN
Links
Home
Test Driven Development, Defined (Wikipedia)
Test Driven Design
Test-Driven.com - Agile development tools
NUnit
Book: Test-Driven Development in Microsoft .NET
CodeProject - Advanced Unit Testing: Unit Test Patterns
John Boal's Personal Blog
John Boal's Agile Development Blog
Blogroll
OPML
Lazy Coder
Scott Koon's Blog
#2782
Ade Miller's Tech Blog
Agile Development
Mitch Lacey's Agile Development Blog
Espresso Fueled Agile Development
Mike Puleio's Blog
Geek Noise
Noise de Peter Provost
Sneal's Blog
Shawn Neal's Blog
Search
About
© Copyright 2009, John E. Boal
Sign In