Methodology Approach

Object Partners’ development methodology is a customized blend of industry accepted Agile practices along with our own experience of how best to utilize Agile with our clients. We believe that any methodology utilized must be considered a guideline rather than a set of strictly adhered to steps. We believe this because every client is unique in their approach to software development. This approach allows us the flexibility to work within our clients’ development environment, but still benefit from all of the documented positives of the Agile approach.

When we begin to analyze the Agile Software Methodology, we first must boil “Agile” down to its essence, which is, according to the Manifesto for Agile Software Development:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

While there is value in the items on the right, we value the items on the left more.

Release & Iteration Approach

In the absence of a client development methodology, OPI will propose the following agile methodology to ensure quality and timeliness. Object Partners’ project delivery method combines an incrementally phased development of the primary functionality of the system with an iterative process. Each increment starts with iteration planning and ends with a point release (end of an increment that contains completed and demonstrable functionality) that will be shown to the end users.

iterative-incremental

The milestones at the end of each phase (vision, objects, architecture and operational) serve as integration points between OPI’s delivery method and our clients’ internal project management processes and milestones. At the end of each Increment the system is tangible and can be used for on-going testing, demonstration, and requirements validation.

Release Planning

At the start of an increment the entire team sits with the client to determine the focus for the next 6 weeks with the ultimate goal of completing a portion of the application’s functionality. This functionality is built into a point release used to gather feedback from end users.

increment-approach

Iteration Planning

During each 6 week increment the work is divided into iterations fixed at 2 weeks in length. On the last day of the iteration the full team executes the regression test and then reviews goals and tasks for the next iteration.

iteration-approach

Daily Morning Scrums

Every day a brief stand up scrum is held to ensure that all team members are aware of other team member’s work, assess current status and dependencies between tasks, and ensure that dependencies are identified early and duplication of work is minimized. Scrums are as short as possible! 15 minutes or less is the goal. Working around the Scrum circle, each team member states what they are working on and what, if anything, is getting in their way. When issues, dependencies, design questions, etc. arise, they are noted and worked offline.

End of Iteration Expectations

At the end of each iteration it is expected that all artifacts are under revision management, the build is functional and able to be demonstrated (for engineering, not management), junit tests pass, each task shows progress, regression test has been performed, and schedule risks have been identified and communicated.

QA Portfolio

Quality begins at the start of the project. Quality is not just one individual or QA group, but rather, quality is embodied in every team member. How do we achieve this overall quality? Each team member is held accountable to the project quality goals identified at the beginning of every project. It begins with the discovery phase, making sure that clear and concise business stories are identified to correctly scope the project. Multiple sets of eyes and ears participate in this phase including BA’s, QA specialists and members of the development team. Because everyone shares ownership on the project, everyone feels responsible to ensure the highest level of quality on all project deliverables. The added benefit of group participation at this level is that the project vision is cemented early on the project.

As the level of scope precision increases, QA begins to formulate test plans at a high-level, which will be refined as the iterative development begins. User stories and use cases are reviewed by business owners, BA, QA and development team members for completeness. The development team adopts a test-driven approach on every iteration and ensures a continuous build. At the close of each iteration a range of tests are performed including unit testing, regression testing, session based testing, user acceptance testing and at the end of each increment a User Session where users exercise the working system to date. Feedback is collected from the user sessions, prioritized and fed into the project backlog list for future iteration planning. When bugs are discovered all attempts will be made to fix them immediately and continue on with the test. When this is not possible bugs will be noted as tasks for the next iteration.