With any project, we always try to identify areas of risk and attack them. A simple step for attacking risks is following an iterative approach, addressing the highest risk items in early iterations. No one likes to get to the end of a project to find that the riskiest items are yet to be addressed. Leaving the riskiest items to the end of the project leads to a loss of predictability and the ability to deliver.
All of which begs the question “How do you identify risk?” What good is a strategy for addressing risk management through project planning if we are not finding the right risks? A few tips for identifying risks when creating SOA solutions:
- Understand and evaluate the complexity of the business processes you are implementing. Evaluate your business processes and rank them according to their level of complexity. At a minimum, the most complex processes are analyzed and drive design in early project iterations. Ideally, we refactor such processes to make them less complex.
- Use models to understand the problem domain and to work through the solution. Don’t rush to code the solution. Domain Specific languages are especially helpful as they reduce the need for mapping between generic terms and domain specific terms. Such mappings increase risk by allowing for details to be overlooked or misunderstood.
- Service Litmus Tests should be conducted to ensure that before an investment is made in a service. We need to understand whether the service is business aligned, is technically feasible, is reusable and can be composed into processes. Results should be recorded, shared, and reviewed.
- Sometimes risk sneaks into the project due to poor adherence to best practices and standards. An approach where we provide the team with best practices is insufficient.
- We need to understand where best practices have been used and that they have been applied correctly.
- Design reviews are proven to be as effective as QA efforts in finding defects. Use these reviews to identify and address hidden risks.
- Risk identification is a task that is revisited throughout a project. It is not a one-time effort that only occurs at the beginning of the project. Use tools and techniques that allow you to evaluate and share status quickly and easily.
What things do you do to identify risks in your SOA projects?
VP Products & CTO
The Emphasys Group