CSC/ECE 517 Fall 2013/ch1 1w39 as: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 75: Line 75:
=='''How Rails supports Agile Methodologies'''==
=='''How Rails supports Agile Methodologies'''==
===''Generators and Scaffolds''===
===''Generators and Scaffolds''===
    * The command “rails generate” uses templates to create models, controllers, views, databases, etc which helps to setup a test application.
:* The command “rails generate” uses templates to create models, controllers, views, databases, etc which helps to setup a test application.
* The scaffolding can be easily done to deploy any basic web -application, and developers can extend them to implement their functionalities. This overcomes the initial hurdle.
:* The scaffolding can be easily done to deploy any basic web -application, and developers can extend them to implement their functionalities. This overcomes the initial hurdle.
===''Ready Setup for Multi-environment''===
===''Ready Setup for Multi-environment''===
* Rails application provides development, production and testing environments with built-in configurations setup and thus is a huge time saver for an application which is required to be deployed in multiple environments.
:* Rails application provides development, production and testing environments with built-in configurations setup and thus is a huge time saver for an application which is required to be deployed in multiple environments.
* The built-in rails web-server has the development environment as the default environment.  
:* The built-in rails web-server has the development environment as the default environment.  
* Simple deployment allows developers to have face-face client meetings and thus make instantaneous changes based on the client requirements.
:* Simple deployment allows developers to have face-face client meetings and thus make instantaneous changes based on the client requirements.
===''Test-Driven Development''===
===''Test-Driven Development''===
* Built in mocking and stubbing frameworks are available which assists “how to write code”. This follows a red, green and refactor which is an important aspect of agile development.
:* Built in mocking and stubbing frameworks are available which assists “how to write code”. This follows a red, green and refactor which is an important aspect of agile development.
* RSpec is one of the famous testing framework tools used with rails.  
:* RSpec is one of the famous testing framework tools used with rails.  
* Other testing tools can also be swapped in.
:* Other testing tools can also be swapped in.
===''Don’t Repeat Yourself (DRY)''===
===''Don’t Repeat Yourself (DRY)''===
* Repeated code is written in helpers and libraries, making a single destination and thus updations become simpler by updating at just one place.
:* Repeated code is written in helpers and libraries, making a single destination and thus updations become simpler by updating at just one place.
* Partials are a way of rendering repeated HTML code. Rails understand a file which starts with an underscore, say, _partial.html as a partial to be included in the shared html file which renders it.
:* Partials are a way of rendering repeated HTML code. Rails understand a file which starts with an underscore, say, _partial.html as a partial to be included in the shared html file which renders it.
===''Dependency Management''===
===''Dependency Management''===
* Rails acts more than a web framework by providing the necessary utility and support tools and adding dependencies to individual projects in a jiffy using the “bundler”.  
:* Rails acts more than a web framework by providing the necessary utility and support tools and adding dependencies to individual projects in a jiffy using the “bundler”.  
* This bundler installs all the relevant gem files and also can be updated when more dependencies are added. No need to search for packages or jars.
:* This bundler installs all the relevant gem files and also can be updated when more dependencies are added. No need to search for packages or jars.
===''Easy Migration''===
===''Easy Migration''===
* Rails helps you to keep easy track of database changes with the help of Migration Objects. It gives the flexibility to rollback and update.
:* Rails helps you to keep easy track of database changes with the help of Migration Objects. It gives the flexibility to rollback and update.
* It also allows you to maintain various versions of database for the multi-environment. On running rake db::migrate, the desired database is migrated and deployed with the working rails server.
:* It also allows you to maintain various versions of database for the multi-environment. On running rake db::migrate, the desired database is migrated and deployed with the working rails server.
* New technologies such as Coffeescript can also be easily embedded by installing the relevant gems thus adapting to the changing technology.
:* New technologies such as Coffeescript can also be easily embedded by installing the relevant gems thus adapting to the changing technology.
===''Assets Pipeline''===
===''Assets Pipeline''===
* The assets pipeline is a new feature embedded in rails ( which is now extracted into sprockets-rails gem), concatenates and compresses javascript and css files.
:* The assets pipeline is a new feature embedded in rails ( which is now extracted into sprockets-rails gem), concatenates and compresses javascript and css files.
* This renders a web page with reduced number of requests from the browser as files are grouped and whitespaces are trimmed.
:* This renders a web page with reduced number of requests from the browser as files are grouped and whitespaces are trimmed.
* Precompiled files can also be attached.
:* Precompiled files can also be attached.


=References=
=References=
<references/>
<references/>

Revision as of 02:16, 7 October 2013

This article focuses on how Rails enables ‘’’agile development practices’ and the characteristics of Rails that support specific agile methodologies.

Template:TOC limit

Agile development

What is Agile development?

Agile development is a methodology where requirements and solutions are developed based on iterative and incremental development<ref>http://en.wikipedia.org/wiki/Iterative_and_incremental_development</ref> through collaboration between self-organizing, cross-functional teams. Using agile development methodology, a high quality software can be developed by programmers in a minimal amount of time.

Some of the process under agile development includes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle.


Why do we need Agile development?

  • Visibility through active customer involvement
  • Flexibility/Agility - ability to accept changes
  • Quality - testing integrated throughout the lifecycle
  • Speedy delivery
  • Customer satisfaction - feeling of a right product
Puzzle globe logo
Fig 1:Agile development

Some well known agile development methods

Well-known agile software development methods include:

  • Acceptance Test Driven Development (ATDD)
  • Agile Modeling
  • Agile Unified Process (AUP)
  • Continuous integration (CI)
  • Crystal Clear
  • Crystal Methods
  • Dynamic Systems Development Method (DSDM)
  • Extreme Programming (XP)
  • Feature Driven Development (FDD)
  • Graphical System Design (GSD)
  • Kanban
  • Lean software development
  • Scrum
  • Scrumban
  • Story-driven modeling
  • Test-driven development (TDD)
  • Velocity tracking
  • Software Development Rhythm
















How Rails supports Agile Methodologies

Generators and Scaffolds

  • The command “rails generate” uses templates to create models, controllers, views, databases, etc which helps to setup a test application.
  • The scaffolding can be easily done to deploy any basic web -application, and developers can extend them to implement their functionalities. This overcomes the initial hurdle.

Ready Setup for Multi-environment

  • Rails application provides development, production and testing environments with built-in configurations setup and thus is a huge time saver for an application which is required to be deployed in multiple environments.
  • The built-in rails web-server has the development environment as the default environment.
  • Simple deployment allows developers to have face-face client meetings and thus make instantaneous changes based on the client requirements.

Test-Driven Development

  • Built in mocking and stubbing frameworks are available which assists “how to write code”. This follows a red, green and refactor which is an important aspect of agile development.
  • RSpec is one of the famous testing framework tools used with rails.
  • Other testing tools can also be swapped in.

Don’t Repeat Yourself (DRY)

  • Repeated code is written in helpers and libraries, making a single destination and thus updations become simpler by updating at just one place.
  • Partials are a way of rendering repeated HTML code. Rails understand a file which starts with an underscore, say, _partial.html as a partial to be included in the shared html file which renders it.

Dependency Management

  • Rails acts more than a web framework by providing the necessary utility and support tools and adding dependencies to individual projects in a jiffy using the “bundler”.
  • This bundler installs all the relevant gem files and also can be updated when more dependencies are added. No need to search for packages or jars.

Easy Migration

  • Rails helps you to keep easy track of database changes with the help of Migration Objects. It gives the flexibility to rollback and update.
  • It also allows you to maintain various versions of database for the multi-environment. On running rake db::migrate, the desired database is migrated and deployed with the working rails server.
  • New technologies such as Coffeescript can also be easily embedded by installing the relevant gems thus adapting to the changing technology.

Assets Pipeline

  • The assets pipeline is a new feature embedded in rails ( which is now extracted into sprockets-rails gem), concatenates and compresses javascript and css files.
  • This renders a web page with reduced number of requests from the browser as files are grouped and whitespaces are trimmed.
  • Precompiled files can also be attached.

References

<references/>