Friday, December 2, 2011

Requirement Engineering: Ten Principles

1. Quality is the top priority and it is possible to deliver high-quality software. In order to make this happen, business analysts need to focus on delivering high-quality requirements. Obviously, both the form and the substance of specifications are equally important.

2. Understand the problem before specifying requirements. When business analysts understand the problem accurately, it is highly probable that they are going to create specifications that are very close to what the user wants.

3. Use appropriate tools, models and practices. It is necessary to understand the organizational culture of customers and be aware of what tools, models and practices have worked for them. Tools, models and practices that provided results in collocated teams may not work well in case of distributed teams.

4. Awareness, skills, techniques, and discipline are more important that tools. The outcome of any practice is not determined just by the tools that you use. For example, a plumber who is in-charge of your facility requires awareness of your facility. He needs to be skilled. He has to follow certain discipline and understand relevant techniques. Without these qualities, if he claims his strength because of a powerful tool set he has, he is a dangerous plumber. This applies to team members who participate in requirement engineering activities too.

5. Establish appropriate measurement criteria. How do you measure the progress of requirement engineering activities? It is necessary to have appropriate measurement criteria. Document exchange or data collection is not requirement engineering.

6. Establish an appropriate verification and validation criteria. How do you verify requirements? How do you validate them? It is essential to have appropriate criteria for V&V activities. Doing it right is more important that making it faster.

7. Good team and good management are vital to success. Technology comes next. Start-ups succeed when they have a good team that captures product requirements and a good management that fosters product development. Technology is essential. More than technology, a good team and good management are important.

8. Understanding of customer’s priorities is paramount. This is what helps the team understand priority requirements at early stages and find ways to deliver working software early. The more the customers see, the more they will need. Understanding customer’s priority is a way to deliver valuable features early. Delivering early is the way to understand what else the customer wants.

9. Use the most efficient communication tools. Information exchange over documents can lead to misinterpretation or inadequate grasp. White board sessions, walkthroughs, using face-to-face meetings or video conferencing sessions are the effective ways of information exchange.

10. Ask questions. While this is applicable for all areas of software engineering areas, it is very appropriate for requirement engineering. Questions based on various aspects such as business need, functionality, scalability, performance, usability, test data, data volume, geography of users, compliance, etc. help business analyst understand requirements in detail. Asking context-free questions are equally important to make a positive impact.

No comments: