Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases now! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Learning Continuous Integration with Jenkins

You're reading from   Learning Continuous Integration with Jenkins A beginner's guide to implementing Continuous Integration and Continuous Delivery using Jenkins 2

Arrow left icon
Product type Paperback
Published in Dec 2017
Publisher Packt
ISBN-13 9781788479356
Length 362 pages
Edition 2nd Edition
Tools
Arrow right icon
Author (1):
Arrow left icon
Nikhil Pathania Nikhil Pathania
Author Profile Icon Nikhil Pathania
Nikhil Pathania
Arrow right icon
View More author details
Toc

Table of Contents (11) Chapters Close

Preface 1. Concepts of Continuous Integration FREE CHAPTER 2. Installing Jenkins 3. The New Jenkins 4. Configuring Jenkins 5. Distributed Builds 6. Installing SonarQube and Artifactory 7. Continuous Integration Using Jenkins 8. Continuous Delivery Using Jenkins 9. Continuous Deployment Using Jenkins 10. Supporting Tools and Installation Guide

Agile to the rescue

The name Agile rightly suggests quick and easy. Agile is a collection of methods where software is developed through collaboration among self-organized teams. The principles behind agile are incremental, quick, flexible software development, and it promotes adaptive planning.

The Agile software development process is an alternative to the traditional software development processes discussed earlier.

The twelve agile principles

The following are the twelve principles of the agile model:

  • Customer satisfaction through early and continuous delivery of useful software.
  • Welcome changing requirements, even late in development.
  • Working software is frequently delivered (in weeks, rather than months).
  • Close daily cooperation between businesses, people, and developers.
  • Projects are built around motivated individuals, who should be trusted.
  • Face-to-face conversation is the best form of communication (co-location).
  • Working software is the principal measure of progress.
  • Sustainable development—able to maintain a constant pace.
  • Continuous attention to technical excellence and good design.
  • Simplicity—the art of maximizing the amount of work not done—is essential.
  • Self-organizing teams.
  • Regular adaptation to changing circumstances.
To know more about the Agile principles visit the link: http://www.agilemanifesto.org.

The twelve principles of Agile software development indicate the expectations of the current software industry and its advantages over the Waterfall model.

How does the Agile software development process work?

In the Agile software development process, the whole software application is split into multiple features or modules. These features are delivered in iterations. Each iteration lasts for three weeks, and involves cross-functional teams that work simultaneously in various areas, such as planning, requirement analysis, designing, coding, unit testing, and acceptance testing.

As a result, no person sits idle at any given point in time. This is quite different from the Waterfall model wherein while the development team is busy developing the software, the testing team, the production team, and everyone else is idle or underutilized. The following diagram illustrates the Agile model of software development:

Agile methodology

From the preceding diagram, we can see that there is no time spent on requirement analysis or design. Instead, a very high-level plan is prepared, just enough to outline the scope of the project.

The team then goes through a series of iterations. Iteration can be classified as time frames, each lasting for a month or even a week in some mature projects. In this duration, a project team develops and tests features. The goal is to develop, test, and release a feature in a single iteration. At the end of the iteration, the feature goes for a demo. If the clients like it, then the feature goes live. But, if it gets rejected, the feature is taken as a backlog, re-prioritized, and again worked upon in the consecutive iteration.

There is also a possibility of parallel development and testing. In a single iteration, one can develop and test more than one feature in parallel.

Advantages of Agile software development process

Let us see some of the advantages of the Agile software development process:

  • Functionality can be developed and demonstrated rapidly: In an agile process, the software project is divided by features, and each feature is called as a backlog. The idea is to develop either a single or a set of features right from its conceptualization till its deployment, in a week or a month. This puts at least a feature or two on the customer's plate, which they can then start using.
  • Resource requirement is less: In Agile, there are no separate development and testing teams. Neither is there a build or release team, or a deployment team. In Agile, a single project team contains around eight members. Each member of the team is capable of doing everything.
  • Promotes teamwork and cross-training: Since there is a small team of about eight members, the team members switch their roles in turns and learn from each other's experience.
  • Suitable for projects where requirements frequently change: In an Agile model of software development, the complete software is divided into features, and each feature is developed and delivered in a short time span. Hence, changing the feature, or even completely discarding it, doesn't affect the whole project.
  • Minimalistic documentation: This methodology focuses primarily on delivering working software quickly, rather than creating huge documents. Documentation exists, but it's limited to the overall functionality.
  • Little or no planning required: Since features are developed one after the other in a short period, there is no need for extensive planning.
  • Parallel development: Iteration consists of one or more features developed in sequence, or even in parallel.
You have been reading a chapter from
Learning Continuous Integration with Jenkins - Second Edition
Published in: Dec 2017
Publisher: Packt
ISBN-13: 9781788479356
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime