This article will demonstrate a simple technique, "A Two-Way Requirements verification process", which reinforces the most critical connection point of any methodology: the transition between functional design or requirement sign off and the beginning of the technical design by the technical team.
Software bugs and defects, the primary reason for delay of many projects, can be caused by many factors. Some of the factors include misunderstanding of requirements, incorrect analysis of functional design and mismanaged scope creep. These conditions can happen even with the adoption of a proven methodology.
Several methodologies such as Rational Unified Process (RUP), Extreme Programming (XP) or any agile development do their best to mitigate the risk at each phase of the development but still the problem does not go away completely. In fact, if poorly implemented, these methodologies even will contribute to the failure of a project.
Any Project Methodology is typically a one way process, though sometimes iterative, moves from one phase to the next when project's stake holders, at each phase of the project, sign off on required deliverables.
This article will demonstrate a simple technique, "A Two- Way Requirements verification process", which reinforces the most critical connection point of any methodology: the transition between functional design or requirement sign off and the beginning of the technical design by the technical team. It is also a concept, which enhances the communication between business users and technical team.
Any agile methodology expects the organization to employ the right resources that are trained in the specific areas such as business analysis. Yet, many projects suffer from too many defects in the Q&A stage due to coding errors or misunderstood requirements, which often result in more work. The latter sometimes can even kill the project as this process can be caught in a vicious loop. One of the primary reasons for such failures is often due to lack of proper communication between the two most important groups of resources of any project; business users who would use the software product for their day-to-day business processes and the development resources who produce such product. The tips suggested in this article will help architects, business analysts or other senior resources, who act as the bridge between these two groups, to improve and enrich the process at each phase.
Figure 1, shown below, depicts a typical process with deliverables at each phase of the methodology and the required resources to produce the artifacts. The improved process is depicted shaded in green. This example is demonstrated using the Rational Unified Process (RUP). Any agile methodology or home-grown SDLC can utilize the concept demonstrated here.
Development Phases and Processes:
Click here for larger image
- 2a - Detail Requirement or Functional Design: Verify the
functional design by using Activity Diagrams, which will be
derived from Use Case Flows. The review needs to be done not
only with business analysts but also with the business
users. The discussion can be facilitated by Business
- a. The purpose is to review with the business from
technical perspective without technical language.
- 2b - Candidate Architecture and Technical Design: This
is the key area where critical 2-way requirements
verification needs to happen in an iterative way.
- a. Using the Activity Diagrams developed in the previous
phase, review the functional flow for the following
conditions. Hint: Technical team needs to ask questions as
if they are writing code.
- i. Error Conditions for functional or business logic
failures, technical failures and the relevant user
experience expected under such conditions.
- ii. Try to get the severe defects that occurred in all
the business areas in production and use them to shape the
questions. It also, forces business users to bring similar
information to the table.
Example: While designing a
retail banking site or any transaction site for credit card
payments, try to see what kind of problems other functional
areas of the bank had faced and what other banks are doing.
This type of forum can also present an opportunity to quiz
or offer suggestions to business users about different or
better options from ever changing compliance, regulations
and/or from security perspective.
- iii. Repeat the process while doing the technical
- iv. Make sure Business Analysts and Business Users will
review final artifacts and sign off.
- b. Technical team needs to lead the discussion. The best
results can be obtained if this is done as a Joint
Application Development (JAD) process.
- 2c - Detail Technical Design: While finishing up the
technical design, complete the Unit Tests with some business
scenarios as much as possible. Review them with business
analysts and business users.
3- Construction: Code Development and Unit Testing:
Since it is common to do a mini Elaboration Phase at the
beginning of the construction phase, make sure the above
points are discussed at each of these mini elaboration
- a. Take advantage of QA groups and involve QA resource
at this stage to develop the unit tests.
This is a simple yet powerful technique if used properly.
This is not a silver bullet for all the problems but would
certainly help to minimize the risk and defects and puts the
focus on key aspects of any software solution