As both Agile and Waterfall methodologies have shortcomings, we use a hybrid approach which is stable, time tested, retains the best features of Waterfall while reaping the benefits of Agile. Further, we have applied Continuous Delivery and Integration Practices to our software development and operating process. Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.This approach reduces errors, increases developer’s efficiency and bring down costs of daily operations. Through reliable, low-risk releases, Continuous Delivery makes it possible to continuously adapt software in line with user feedback, shifts in the market and changes to business strategy.
These methodologies are customized for various types of project requirements, and are enhanced to support onsite-offshore delivery models. The development life-cycle varies based on the type of project – for example, methodologies for development projects will be different than methodologies for conversion or maintenance projects.
We also deliver projects using organic and transformational DevOps environments. DevOps is a new discipline that complements the Agile Delivery models for software engineering by bringing in Automation and Monitoring on the IT infrastructure and leverages Cloud computing concepts.
Management Layer Initiate the project and understand client’s culture, operating processes, challenges and business goals. Business Analyst elicit and convey high level requirements using a Industry Standard Requirement Analysis Framework. Solutions Architect confirms design documents and divide the application and requirements into complete functional components sprints. Scrum Master and Developers execute the build and test process through each sprint.
Deliverables are prioritized by business value, which is determined by the customer. Each sprint has a defined duration (usually in weeks) with a running list of deliverables, planned one sprint in advance. If all planned work for the sprint cannot be completed, work is reprioritized and the information is used for future sprint planning. The customer has frequent and early opportunities to see the work being delivered, and to make decisions and changes throughout the development project. Management Layer understands client’s business goals, challenges and manage day to day activities of developers, they fill the gap if customers have less time for participation .
|Infrastructure Automation||Chef, Puppet, CFEngine, Salt, Ansible, Fabric and Func, Rundeck, Capsitrano, ControlTier|
|Continuous Integration Services||Jenkins, Hudson, Bamboo, Travis, Cruise Control, Maven, Ant, Nant, buildr, Grunt, Continuum|
|Provisioning||Crowbar, Razor, Cobbler, Kickstart, Pellet, JUJU|
|Code Quality Analysis||Sonar, Coverity, Fortify, PMD, FindBug, Checkstyle|
|Source Code Management||Git, Gerrit, Subversion, Perforce, CVS, Rational Clear Case, MS TFS|
|Testing Frameworks||Junit, Cucumber, Selenium, Sauce, Watir, CubicTest, Maveryx, Apache JMeter, Jasmine, Mocha, Chai, Karma, Should.js|
|Behavior Testing Frameworks||Specflow, Behave, Opencafe, Thucydides, easyb, JBehave5|
|Monitoring||Zenoss, Nagios, Hyperic, Pingdom, New Relic, Datadog|
|Libraries, Connectors and Tools||fog, jcloud, libcloud|
|Deployment and Management Tools||Vagrant, Rightscale, Scalr, Enstratius|
|Packaging systems||DEB, RPM, YUM, ISO|