Simplified V-model

The picture below depicts the V life-cycle model, the different phases in which development happens and the corresponding test activities.

Verification and Validation

The terms verification and validation are often used in the context of Software Testing practice. Here's a brief look at these terms.

Verification involves evaluating a system or component to determine whether the output of a given life cycle phase satisfies the conditions imposed at the start of the phase. The process of verification attempts to answer the question - are we building the system or component right ? Examples of verification activities include, reviews, inspections, static analysis, walk throughs, etc.

Validation involves evaluating a system or component to determine whether it meets specified requirements. The process of validation attempts to answer the question - are we building the right system or component ? Validation generally takes place after verification is performed.

In simple terms, it would be fair to equate the preventive Quality Assurance activities to Verification and the reactive Quality Control / Testing activities to Validation.

Verification testing when done thoroughly, helps eliminate defects earlier and facilitates validation activities such as unit, integration, system and acceptance testing to focus better on determining whether the system or component being built meets the real needs of the user.

Project Management in an Agile World

This is from an article that i put together and was published in the September '09 issue of the Project Management Institute's magazine - available online at http://www.pmi.org.in/

Managing projects in the agile word requires the ability to balance stability with flexibility, order with chaos, planning with execution, optimization with exploration and control with speed while dealing with project unpredictability and dynamism by recognizing and constantly adapting to change.

In their whitepaper, "The New Product Development Game", Takeuchi and Nonaka, suggests that "the rules of the game in product development are changing.” Under the traditional approach, a product development process moved like a relay race, sequentially from one phase to the next: requirements, design, development and so on. Problems could occur at the points where one group passes the project to the next. A bottleneck in one phase can slow the development process.

Takeuchi and Nonaka discuss the "rugby approach" of dedicated, self-organizing teams, the members of which, like actual rugby scrum teams who work together to gain control of a ball and move it up the field, all work together to deliver product.” The new approach has characteristics such as – built-in instability, self-organizing project teams and overlapping development phases. These self-controlled & self-organizing teams require little direct project management as we know it.

Agile projects value working software, which is a profoundly different emphasis from traditional, projects. Traditionally, one would measure a project's progress by the percent complete of the functional milestones (analysis complete, documentation complete, code complete ...). In agile projects, however, working software is the ultimate quantification of project status. At the end of each short iteration, a working product is delivered and available for review.

While agile methodologies have gained popularity, the role of the project manager (PM) in many groups remains unclear. Traditionally, the project manager is typically “the outsider” who controls the teams progress and makes assignments. In the agile world, PMs are expected to - be part of the team and function from within the team's boundary itself while acting as a facilitator who collaborates with the team.

Being more specific, in the case of Scrum (a popular agile methodology which we follow in our group), it would be safe to state that the responsibilities of a traditional project manager have been distributed among the Scrum Master, the product owner and the team. In Scrum, the project team meets at a sprint planning meeting where the team itself plans and schedules its own work using a sprint backlog. The sprint backlog is a list of tasks to be tackled during the duration of a sprint (~4 weeks). The project manager generally plays the role of the scrum master who facilitates daily meetings of the team, understands any impediments and works to remove them. Skills needed for the role include – influencing, negotiation and facilitation, which are needed when dealing with the team that comprises representatives from various functional areas and in working across organizational hierarchies and divisions to resolve any impediments that the team is facing. The role of the scrum master can be viewed as a servant-leader who works to help the team become productive. The team decides what tasks to take up and estimates the time needed to complete the same. Team members derive metrics based on their daily activities and reports the same. Some of the responsibilities of the project manager in the agile world include the following.

Remove impediments: These could be administrative, requirements or technology challenges. Impediments are reported during the daily meetings by the team members. The project manager (acting as the scrum master) takes note of the issues, tries to remove them and reports back on status.

Facilitate sprint planning meetings: Before starting a sprint (iteration), the PM facilitates the planning meeting to get the team to decide & commit to tasks they will perform. Any dependencies between requirements could also be considered and a plan for the sprint is prepared.

Facilitate sprint retrospective meetings: Unlike the “lessons learnt” meetings that used to happen at the end of a project, retrospectives happen after each iteration and is facilitated by the project manager.

Facilitate, track and monitor estimation: The agile team makes the estimates while the project manager captures and tracks the estimates. The project manager's job focus is on leading the project rather than micro-manage the team's activities.

Handle reporting: The team generates most of the data in the course of their normal work. The project manager can take this input and present it in a way thats appropriate for different entities interested in this information.

Facilitating daily meetings: Running the daily meeting as per the rules and timelines, keeping the team focussed, facilitating status reporting by all members, capturing action items are part of the PM's profile.

The project manager in the agile world is called to lead. The PM has to keep the team on track, help resolve issues, have good inter-personal skills to handle any people issues within the team, communicate & negotiate with stakeholders and report on project status. The project manager represents the team to the world outside and is responsible for protecting the team from external influence and distractions.