CSC/ECE 517 Fall 2013/ch1 1w39 as: Difference between revisions
No edit summary |
No edit summary |
||
Line 23: | Line 23: | ||
===Principles of agile development=== | ===Principles of agile development=== | ||
:*Iterative Development: Iterative development allows the clients to direct the development process in order to get the software features they want. Working software is delivered to the client at regular, short intervals. Client feedback is used to make changes to the software specifications at any stage in the development. | :*Iterative Development: Iterative development allows the clients to direct the development process in order to get the software features they want. Working software is delivered to the client at regular, short intervals. Client feedback is used to make changes to the software specifications at any stage in the development. | ||
:*Open Collaboration: | |||
:*Adaptability: | :*Open Collaboration: Open, unrestricted communication between programmers and clients are driving force behind agile development. The programming team must work closely with the customer and also communicate freely with each other. Face to face communication is preferred over specification documents, so working in an open office with no cubicles is ideal. | ||
:*Adaptability: In agile development, changes to the software specifications are welcome even in late stages of development. Principles like Don't Repeat Yourself (DRY) are used to facilitate this. Customers gets hands-on experience with the development of the product, hence they will be able to better communicate their needs. Hence, changes in the market or company structure can be accomodated in the software at any time of the development cycle. | |||
===Some well known agile development methods=== | ===Some well known agile development methods=== |
Revision as of 02:38, 7 October 2013
This article focuses on how Rails enables ‘’’agile development practices’ and the characteristics of Rails that support specific agile methodologies.
Agile development
What is Agile development?
Agile development<ref> http://en.wikipedia.org/wiki/Agile_software_development </ref> 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
Principles of agile development
- Iterative Development: Iterative development allows the clients to direct the development process in order to get the software features they want. Working software is delivered to the client at regular, short intervals. Client feedback is used to make changes to the software specifications at any stage in the development.
- Open Collaboration: Open, unrestricted communication between programmers and clients are driving force behind agile development. The programming team must work closely with the customer and also communicate freely with each other. Face to face communication is preferred over specification documents, so working in an open office with no cubicles is ideal.
- Adaptability: In agile development, changes to the software specifications are welcome even in late stages of development. Principles like Don't Repeat Yourself (DRY) are used to facilitate this. Customers gets hands-on experience with the development of the product, hence they will be able to better communicate their needs. Hence, changes in the market or company structure can be accomodated in the software at any time of the development cycle.
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/>