Monday, March 23, 2009

Leveraging the Power of Software Process Models - A Mechanism for Improvement

What is a process model?

Software process models are essentially synonymous with that of a traditional process model; defining a series of events or outcomes as a set process. The process, defines the steps involved and the model pieces these steps or processes together, usually bringing some global benefit to the process as a whole.

Generally speaking, process modeling is either descriptive; describes what actually happens during a process, prescriptive; defines processes and how they should/could or might otherwise be performed, or explanatory; provides explanations about the rationale of processes and attempts to establish links between processes and the requirements that they are to fulfill.

The benefit of a process model

The secret to improving anything is to understand what it is you are trying to improve. Sounds simple but how often do you try and improve something without really knowing what it does. Similar to the notion that you can’t really know where you are going until you know where you coming from, going back to your grass roots can often bring focus, clarity and meaning. With respect to process models, it means looking at a process model or set of tasks/actions (endeavoring to create a process model) in order to fully understand its hidden and embedded intricacies.

Understanding how the processes flow from one to another or how they otherwise interrelate is paramount to understanding where and what processes can be improved upon.

Where do they come from and to what do they apply?

There are many different software process models that define, capture and structure a series of individual tasks or processes. Just look at typical software development life cycle models. Many of them have similar process in them, ranging from requirements requisition/analysis, solution designing, implementing, testing, deploying and maintaining.

What I’m looking at though is not necessarily life cycle models themselves, but rather the process of applying and using process models. Almost any process can be improved by defining it formally, performing it, analyzing it and improving it.

Maybe you want to look at individual practices of testing, deploying, documenting or some other process. If you are not working it as a process than chances are there is room for improvement. Why? You probably are not aware of every little action that happens because you have never purposefully looked at all the tasks that take place during the process execution.

Recognise and formalise

Whatever it is you do, recognise and formalise the practices that are commonly undertaken as part of performing the desired process. Assuming you have a process model in place that allows you to analyse the result of each and every task or process in your model, you need to first start by performing the process. At this stage you are not looking to optimize or improve anything, you are just looking to carry out every step in your process model as it would normally be done. This then gives you a baseline to compare your results to on future runs.

Analyze each and every process

Analyze each and every process or sub process (processes within the process that make up the process as a whole) within the model, taking notes, metrics and other relevant information where possible. Notice how the process is performed, what information it relies on. Who does it interact with? Are there a lot of steps involved? How many outcomes can be produced at the end?

The more pieces of information you gain here the easier you will find it later on when you are looking at the bigger picture, trying to assess how the processes inter connect and how much they rely upon each other, if at all.

Factor out the difference

Upon future runs or execution of the process, factor out or pay special attention to tasks or results that differ. These can either have little or no result on the process as a whole (after all, they don’t occur all the time) or they may be able to be defined more clearly so that they are a member or expected part of the process. When you begin to notice what differs you begin to notice what matters.

A Process of improvement

Process models are a good tool or mechanism for improving the result or outcome of a process by defining, capturing and analyzing the results it produces. Anything that can be defined, captured and analyzed can be improved. We tend to look for process models for large tasks that involve many smaller complicated tasks. Why? The three step process, to some point (depending on the processes involved), helps remove a level of uncertainty (by clearly defining and formalizing the underlying process undertaken), organises and brings structure to a set of routines (by defining process flow).

The key to take away from this is where you want to improve a set of tasks or routines consider formalizing it into a measurable process. Create flow charts, mind maps, whatever helps the process.

Try REad Software

0 comments:

Post a Comment