SCRUM — Development Model
KTwo uses Scrum model for process facilitation and wrap it around several agile development techniques for projects undertaken.
SCRUM is a management, enhancement and maintenance methodology for an existing system or production prototype. It assumes existing design and code which is virtually always the case in object–oriented development due to the presence of class libraries. SCRUM will address totally new or re–engineered legacy systems development efforts at a later date.
Software product releases are planned based on the following variables:
| ||•||Customer requirements – how the current system needs enhancing.|
| ||•||Time pressure – what time frame is required to gain a competitive advantage.|
| ||•||Competition – what is the competition up to, and what is required to best them?|
| ||•||Quality – What is the required quality, given the above variables.|
| ||•||Vision – what changes are required at this stage to fulfill the system vision.|
| ||•||Resource – what staff and funding are available.|
These variables form the initial plan for a software enhancement project. However, these variables also change during the project. A successful development methodology must take these variables and their evolutionary nature into account.
The Product Backlog is a list of features, frequently shifting in priority, needed in the product. The Product Owner and Team select a set of features to which they commit the Sprint Backlog for the next iteration. During that iteration, the Team meets every day to identify:
| ||•||What they accomplished yesterday|
| ||•||What they intend to accomplish today|
| ||•||What obstacles might impede this work|
The 'Scrum Master' ensures that identified obstacles are removed. At the end of the Sprint the process begins again. Bugs become backlog items, prioritized along with new function.
Agile Development Practices
At KTwo we use two core agile development practices to quickly deliver incremental business value.
| ||•||We test continuously.|
| ||•||We build early and often.|
The combination produces very low–defect code. And we all know that finding and fixing a bug early is exponentially less expensive than the 'code and fix' technique.
KTwo uses a coding technique called test–driven development (TDD) within a unit testing framework . In TDD a developer writes a failing test and then writes and re factors code until it passes the test. TDD does not replace traditional testing; rather, it defines a proven way to perform effective unit testing and, as a bonus, the tests form much of the design of the product. Though it may sound more time–consuming, it has been proven to be extremely cost–effective.
We include QA in any Scrum team and also perform functional testing.
Building Early and Often:
KTwo builds your complete product daily or even more frequently. This is supported by state of the art version control and continuous integration. End result–you get clean code to test and use early and often.
There are a many repository and integration tools available. Generally we use Subversion and Perforce but are comfortable with most of the other choices. Depending on how our relationship is structured, we can host development on our US–based servers or you can choose to make your own hosting arrangements.