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 MethodologyThis 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 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
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 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 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
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.