What is Agile methodology in Software Development?

Agile methodology is an alternative to traditional plan-driven Waterfall project management. Agile methodology promotes continuous iteration, typically used in software development. It is more of people oriented which helps in increasing productivity while reducing risks.  Simply put, it emphasis on adapting to change, as opposed to attempting to predict everything from the start.

 Agile model includes more client interactions as compared to normal testing models.
It means after completing one module you have to show it to client and get it approved.
If they like it start with next one otherwise redo the first.
It includes sprint teams and sprint masters who basically manage each team. All functionalities are divided into number of sprints which are determined by discussions with clients and after each sprint client approval is needed to start next one.
Agile is a young methodology used by software developers and nowadays in the field of marketing and well. Replacement of Waterfall techniques, Agile focuses on the value driven approaches.
With the advancement of software development, technologies and business requirements, the traditional models are not robust enough to cater the demands. As a result of this, the information technology community developed agile software development models.
KEY PRINCIPLES OF AGILE:
The Agile Manifesto is based on twelve principles:
  1. Customer satisfaction by early and continuous delivery of valuable software
  2. Welcome changing requirements, even in late development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly


Challenges for tester with Agile model:
  • There will be no client requirement document. All information is gathered by meetings with the concerned people.
  • Code is being tested many times in the whole process.
  • Regression testing will be in between of process.
Advantages of using Agile model:
  • With this model, you can easily save time for your project. Testing is done parallel with the development process.
  • Testing is iterative in nature so you can get assure of quality.
  • Every small change will be visible to client so client will not to worry much about quality.
Agile Process Models
What is agile - www.automationtalks.com
There are various Agile Models used in market, they are –
n  Extreme Programming (XP)
n  Adaptive Software Development (ASD)
n  Dynamic Systems Development Method (DSDM)
Scrum
n  Crystal
n  Feature Driven Development (FDD)
n  Agile Modeling (AM)
Let us Study about Scrum in details here

Suggestions & comments are welcome.

Next Topic: different software development life cycle models

What is Scrum in Agile methodology?

The Scrum approach is a general agile method but its focus is on managing iterative development rather than specific agile practices.

•      There are three phases in Scrum.
–     The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture.
–     This is followed by a series of sprint cycles, where each cycle develops an increment of the system.
–        The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.
The Sprint cycle –
•      Sprints are fixed length, normally 2–4 weeks. They correspond to the development of a release of the system in XP.
•      The starting point for planning is the product backlog, which is the list of work to be done on the project.
•      The selection phase involves all of the project team who work with the customer to select the features and functionality to be developed during the sprint.
•      Once these are agreed, the team organize themselves to develop the software. During this stage the team is isolated from the customer and the organization, with all communications channeled through the so-called ‘Scrum master’.
•      The role of the Scrum master is to protect the development team from external distractions.
•       At the end of the sprint, the work done is reviewed and presented to stakeholders. The next sprint cycle then begins.
Scrum benefits –
•      The product is broken down into a set of manageable and understandable chunks.
•      Unstable requirements do not hold up progress.
•      The whole team have visibility of everything and consequently team communication is improved.
•      Customers see on-time delivery of increments and gain feedback on how the product works.
•      Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed.
In Scrum, Team will have daily Stand-up meeting (Small meeting, not more than 15 min)
Here, Each participant answers 3 questions:
1.    What did you do yesterday?
2.    What will you do today?
3.    What will you do today?
These are not status sessions for the manager. They are team member commitments in front of the team

What is Continuous Integration (CI) ?

Continuous Integration –

           Continuous Integration is the process which “run your project’s Code after someone change the code to the repository”, It also notifies all involved team if the build fails.

continuous-integration-CI-www.automationtalks.com

          Every time when somebody from the team change the code into the repository, a server (can be a script) check those commits and does a build of your code.
          A broken build should always be fixed immediately. A good CI process will help the team to move fast, with cleaner code and with a high level of confidence in the work they are doing.
An example:
Suppose developer A and B are both working on new features concurrently in modules X and Y, and both these modules depend on a third module Z. In order to complete their features both developers must make changes to module Z.

         Now, earlier both the developers are working separately by not committing their changes to the source control. Over a time, each of them would have copy of module Z which has very different code from each other. Now integrating both developers code with existing one will be a tough challenge.

The practice of continuous integration attempts to alleviate the cost of this integration step by having both developers commit to the main line frequently instead of leaving their changes in isolation, and also having both developers pull recent changes from the main line just as frequently. The effect of this practice is that a divergence in their shared dependency is found as soon as possible. This is beneficial as the sum effort to fix the individual conflicts is less than the effort to fix all conflicts at a later point in the future.

          Various Continuous integration tools used in market are Jenkins, TeamCity, Bamboo, Buildbot, TravisCI, Strider etc.