GGA Agile Software Development
GGA has successfully completed over 50 projects using Agile (primarily Scrum and XP) methodology and currently more than half of our projects are conducted using Agile. This excellent track record helps GGA to defy one of the enduring myths about Agile software development: that it's only applicable for small, co-located teams.
Depending on the clients' needs, preferences, and involvement level, and project specifics, GGA is able to adjust the Agile development process in order to optimize it for the project at hand and best align with client's internal methodology and objectives. In some cases GGA has been responsible for the entire development effort, and its Agile team interacted with end-users on the client side. In other cases, GGA's efficient, self-organized Agile teams have been integrated with the client teams. However, in any situation the key to success for Agile development has been reach communication with the client and among team members.
GGA employs modern approaches, tools and technologies to support the Agile development process
- Who applied the changes to the code, and when? -> Version control system: Subversion, GIT.
- What changes were applied to address the issue? -> Traceability from JIRA to version control system via FishEye (bi-directional).
- What changes are included in the release? -> Jenkins/Hudson plugins for JIRA and Fisheye – traceability from build information (in Jenkins) to code changes in version control system (Subversion, GIT) and JIRA issues in the build.
- How do we ensure that builds are reproducible? -> Automated build procedure using build tools (Ant, MSBuild, Maven, Gradle) scheduled for periodic execution if there are changes in the source code version control system, run by continuous integration server (Jenkins/Hudson). Every successful build is tagged in the version control system. Build artifacts are versioned – to make sure we can easily find out which version is installed and trace it back to source code.
- Did we break anything in this build? -> Automated functional tests are executed by continuous integration server (Jenkins). Tests are implemented using such tools as Selenium (for Web) and TestComplete (for desktop). Unit tests (jUnit, NUnit) are also executed for every build.
- How do we ensure that we fix critical bugs fast and provide service release? -> Branches in version control system, dedicated build job on Jenkins for Production branch.
- Which parts of code are tested? -> Code coverage tools (EMMA, Cobertura, dotCover).
- Are there any issues with the code? -> Static code analysis tools (FxCop, CheckStyle, FindBugs, JSLint, PMD) executed as part of the build procedure and reported for a build by Jenkins, regular code reviews (Crucible) linked to particular code revision.
- What are the dependencies of particular project? How do I manage cross-project dependencies / shared components? -> Dependency management tools are used to define which version of the components is required for build/runtime: Maven, Ivy, Gradle. Artifactory repository is used to manage 3rd parties and shared components in a central place.
- Why/Who/When changed this line of code? -> Fisheye to facilitate code repository browsing / searching. Linking between JIRA and Fisheye based on comments in SVN (issue identifier as commit comment).
- When/Who reviewed the code? What were the review results? -> Record in Crucible linked to particular code revision.
GGA's Agile Values:
- Product-Centric Development Model:
GGA delivers high-value software applications consistently every 2-4 weeks, providing a distinct competitive advantage for our clients.
- Culture of Business Involvement:
Client-driven iterative development lets the client steer projects, iteration by iteration, addressing what they determine to be of the highest value to them. Clients adapt and plan the choice for the next iteration based on their latest insight, rather than speculatively at the start of the project. The customer has ongoing control and choice, as fresh information arises. This approach helps foster stronger client relationships by acknowledging missteps early, correcting them immediately, and building and sharing business knowledge through teamwork.
- Team Experience and Performance
GGA has 20+ Certified SCRUM Masters and over 100 Agile Practitioners who are actively involve our Agile methods. Agile emphasizes minimal hierarchy and administrative overhead. Teams own the process and work collaboratively in a culture of regular and open communications and continuous performance improvements via mandatory retrospections and process experiments.
GGA Agile Key Benefits
- Business Value Driven Prioritization – With Agile development, software functionality is prioritized and delivered according to the business value outlined by the company, enabling a faster realization of benefits and results.
- Addressing Project Delivery Risks Quickly – Shorter delivery cycles and reduced batch complexity associated with Agile enable project risks to be easily revealed and quickly eliminated to meet the rapidly changing demand of the market.
- Full Client Control of the Project – Operational transparency, combined with early and frequent progress updates, keep Agile practitioners in full control of the project, including adjustments to the project scope as needed and delivery milestones while maintaining flexibility to finish the project early if market conditions allow.