Body

Solving Methods | We make a complex ROR project simple

No Project is successful without defining a processes to ensure all information is available between the stake holders. Even though we believe in a process doesnot mean that our clients also believe in the same. Thats why our First Motto is to adhere to client's processes and implement them accordingly. However given a chance to utilize our processes and methodologies, the following are the best in industry methodologies that we use.

Project Management Methodology

This relates to how we handle the project life cycle and identification & implementation of the features in a Ruby on Rails application. We follow Agile and Scrum Methodology for the projects where our clients want us to use our methodologies.

Agile Methodology

Agile Software Development Methodology is based on iterative and incremental development. here the requirements and the solutions evolve through collaboration between self organizing and cross-functional Teams. In this methodology unlike the earlier Waterfall model. The whole projects are divided into small iterations. In each iteration a set of features are identified, analyzed, built and published. The advantages of agile methodology are

  • Client has a satisfaction that some work is being done and delivered time to time
  • People welcome changes even if it is at last minute
  • Client can see their software shaping up in weeks/months time rather than years
  • Delivering a Working software is always the goal
  • Sustainable development at a constant pace
  • Discussions at short terms helps in bringing the project on track.
  • Simplicity and Self organizing Teams. Every one knows what to do.

 

Scrum Methodology

Scrum Methodology is a type of Agile Project Management Methodology identified as the best in class when building Products and Ideas. Scrum runs on a skeleton that contains a set of practices and predefined roles. The main roles of scrum are

  • Scrum Master: One who maintains the processes i.e. like a project manager. Ensures project is in line with time and execution
  • Product Owner: One who represents the stake holders and the business. One who knows the complete project from Domain point of view
  • Team: A group of cross-functional group who do the actual work i.e. analysis, design, implementation, testing, etc.,

Scrum is divided into interative elements called "SPRINT" which is typicaly a two to four week period. During this period the team creates a potentially shippable product increment. The features that go into a sprint come from a "PRODUCT BACKLOG" which is a document that maintains all the features to be implemented in the product.

A Scrum typically starts with a sprint planning meeting and the outcome of the planning meeting is the "SPRINT BACKLOG" and the Sprints. Once the Sprint has started on a daily basis a SPRINT MEETING is held to identify the work done and to be done for that day. This will help the Scrum Master to understand the current status of the project and any potential issues that could occur.

 

Testing Driven Programming

If a project has to be completely successful, then one of the most important factors for them is the Testing. Testing doesnot mean just that the features are working or the GUI looks correct. But it involves identifying if all the options / flows are taken into consideration and if the system can sustain necessary hits and loads from the users. In Ruby on Rails 2 types of Developments are utilized, one is Test Driven Development and the other is Behavioral Driven Developmetn

Test Driven Development

Test Driven Development relies on the repitition of a very short development cycle. First the devleoper writes failing Tests for a particular feature, ensures they fail and then produces the code which will pass them. Once the test is passed, it is refactored to acceptable standards. A typical Test Driven Development Cycle is as follows

  • Add a Test
  • Run tests and see if they fail
  • Write Code
  • Run automated tests and see if they succeed
  • Run automated tests and see if they didnot break any other feature
  • Refactor Code
  • Repeat the process for other features
Ruby on Rails prescribes Test Driven Development as the mandatory exercise as it imparts code management, code cleanliness and ensures everything is working in order. In Ruby on Rails we use the basic in built Unit Tests or use plugins such as Shoulda

 

Behavioral Driven Development

Behavior Driven Development (BDD) is similar to Test Driven Development, however it encourages more interaction and collaboration between Developers, QA/Testers and Non-Technical or Business Stake Holders. BDD focusses on obtaining clear understanding of desired software behaviour through discussion with stake holders. It extends TDD as in BDD you write tests in simple language rather than a pseudo methodology

Ruby On Rails in its latest version have been promoting Behaviour Driven Development by means of RSpec, Cucumber, Webrat, Capybara, etc., tools. These tools make excellent support in writing clean and easy understandable tests which at times even the non programmer can write them.