Continuous Integration

Total Page:16

File Type:pdf, Size:1020Kb

Continuous Integration Continuous Integration Improving Software Quality with Continuous Integration Continuous Integration In a nutshell Continuous Integration (CI) is: • Assembling software every time code changes CI is important because: • Integrating software often decreases the life-span of a defect Build Better Code Faster © 2007, Stelligent Incorporated 2 © 2007, Paul M. Duvall Continuous Integration in Practice Continuous Integration requirements: • A reliable build process – Ant, Maven, etc • An SCM system – Subversion, Perforce, CVS, etc • A Continuous Integration server – CruiseControl, Hudson, etc © 2007, Stelligent Incorporated 3 © 2007, Paul M. Duvall Life with Continuous Integration 1. Developer checks out working copy of code a. Makes modifications & runs local build i. Does an update 2. If build was successful, checks in modifications 3. Moves on to next task © 2007, Stelligent Incorporated 4 © 2007, Paul M. Duvall Life with Continuous Integration CI server is always listening 1. If SCM is modified a. CI server assembles software i. If assembly fails, CI server notifies interested parties b. CI server posts results and resumes listening © 2007, Stelligent Incorporated 5 © 2007, Paul M. Duvall Continuous Integration Implemented © 2007, Stelligent Incorporated 6 © 2007, Paul M. Duvall Successful CI Process Three prevailing principles: 1. Expand the definition of “software defect” 2. Ensure a short lifetime for defects introduced 3. Extend defect visibility for all stakeholders © 2007, Stelligent Incorporated 7 © 2007, Paul M. Duvall What is a Defect? Is it just not meeting the specification? • Yes, but specifications can be hard to nail down – Can’t validate them until later cycles Expand definition of defect • Create specific gates • Exercise gates earlier © 2007, Stelligent Incorporated 8 © 2007, Paul M. Duvall Expanding Defect Definition Finer grained: • Developer tests didn’t pass – Developer tests weren’t written • Code coverage dropped • Code complexity increased • Coverage dropped and complexity increased! © 2007, Stelligent Incorporated 9 © 2007, Paul M. Duvall Ensuring Short Defect Lifecycle Broaden the value of a build • No longer just a compilation process: 1. Compile 2. Test 3. Inspect 4. Deploy © 2007, Stelligent Incorporated 10 © 2007, Paul M. Duvall Broad Software Builds Broad software builds act as quality gates Inexpensive Continuous Rapid © 2007, Stelligent Incorporated 11 © 2007, Paul M. Duvall Broad Builds Increase Visibility Visibility is transparency • What code changed? • Who changed that code? • How well was the code tested? • How complex was the code? © 2007, Stelligent Incorporated 12 © 2007, Paul M. Duvall Broadening the Build Process Testing is obvious, right? • Does assume people author them! For every build, execute developer tests • Test failure is a build failure • Monitor test velocity as well © 2007, Stelligent Incorporated 13 © 2007, Paul M. Duvall Software Inspections Code reviews are excellent, but • Manual • Error prone • Disappear when schedules are tight Humans focus on high level details Machines focus on low level details © 2007, Stelligent Incorporated 14 © 2007, Paul M. Duvall Software Inspections Machines make code reviews more effective • Cheap to obtain and run – Many open source tools available – Need CPUs to parse files • Output is objective • Interpretation is subjective © 2007, Stelligent Incorporated 15 © 2007, Paul M. Duvall Software Inspection Categories Five primary groups: • Complexity • Duplication • Dependencies • Coding standards • Code coverage © 2007, Stelligent Incorporated 16 © 2007, Paul M. Duvall Code Complexity Complexity correlates to errors • Cyclomatic complexity – Measures paths through code – More paths increase cost to test • Decrease comprehensibility © 2007, Stelligent Incorporated 17 © 2007, Paul M. Duvall Code Complexity Tools Java • JavaNCSS • PMD © 2007, Stelligent Incorporated 18 © 2007, Paul M. Duvall Code Duplication Duplicate code can replicate: • Defects • Poor design & coding Unknown duplication will haunt you © 2007, Stelligent Incorporated 19 © 2007, Paul M. Duvall Code Duplication Tools Java • CDP • Simian © 2007, Stelligent Incorporated 20 © 2007, Paul M. Duvall Dependencies Understanding code dependencies • Facilitates understanding – LOE to change – Brittleness © 2007, Stelligent Incorporated 21 © 2007, Paul M. Duvall Dependency Tools Java • JDepend © 2007, Stelligent Incorporated 22 © 2007, Paul M. Duvall Coding Standards Standards can • Enforce consistency • Increase comprehensibility • Decrease defects via common defect patterns © 2007, Stelligent Incorporated 23 © 2007, Paul M. Duvall Coding Standards Tools Java • Check Style • PMD © 2007, Stelligent Incorporated 24 © 2007, Paul M. Duvall Code Coverage Measuring code coverage • Facilitates understanding what’s not tested • Promotes collaboration between development and QA © 2007, Stelligent Incorporated 25 © 2007, Paul M. Duvall Code Coverage Tools Java • Cobertura • Clover © 2007, Stelligent Incorporated 26 © 2007, Paul M. Duvall Extending Visibility Run inspections often & publish results • Cheap quality gates • Foster accountability • Cultivate collaboration You can’t improve what you can’t measure © 2007, Stelligent Incorporated 27 © 2007, Paul M. Duvall Thank you! Check out • www.testearly.com • www.thediscoblog.com “Continuous Integration: Improving Software Quality and Reducing Risk”, June 2007 © 2007, Stelligent Incorporated 28 © 2007, Paul M. Duvall Andrew Glover [email protected] Blogs: www.testearly.com www.integratebutton.com www.thediscoblog.com.
Recommended publications
  • Apache Ant Best Practices
    08_Lee_ch05.qxd 5/3/06 5:12 PM Page 81 C HAPTER 5 Apache Ant Best Practices This chapter looks in more detail at some best practices for using Ant on real projects. First I describe the use of property files to enable configuration of the build process depending on a user’s role and requirements. I then describe how best to integrate Ant with IBM Rational ClearCase. Finally, I look at some general best practices for supporting the build process on large projects. Aims of This Chapter Apache Ant is a powerful build tool with significant built-in capabilities. However, a few capabil- ities and best practices stand out; they are described here. After reading this chapter, you will be able to • Understand what Ant property files are and how they can be used to make build scripts more maintainable. • Understand how to use Ant’s capabilities to better integrate with IBM Rational ClearCase. • Implement Ant build files that support reuse and maintainability on large projects. This chapter assumes that you are familiar with the basic concepts of Apache Ant that were discussed in Chapter 4, “Defining Your Build and Release Scripts.” Property Files From the perspective of Chapter 4, an Ant build.xml file is a single centralized build file that defines a repeatable process for bringing together an application, usually producing some form of 81 08_Lee_ch05.qxd 5/3/06 5:12 PM Page 82 82 Chapter 5 Apache Ant Best Practices executable output. Although a single build.xml file can be enough to drive the build process, in practice it can quickly become large and unwieldy.
    [Show full text]
  • Installation Guide for Oracle Team Productivity Center Server 11G Release 2 (11.1.2.1.0)
    Oracle® Fusion Middleware Installation Guide for Oracle Team Productivity Center Server 11g Release 2 (11.1.2.1.0) E17075-02 September 2011 This document provides information on: ■ Section 1, "Oracle Team Productivity Center Server System Requirements" ■ Section 2, "Installing the Oracle Team Productivity Center Server" ■ Section 3, "Installing an Oracle Team Productivity Center Connector" ■ Section 4, "Installing Oracle Team Productivity Center Server on a Production Oracle WebLogic Server" ■ Section 5, "Installing and Running CruiseControl Test Collection" ■ Section 6, "Documentation Accessibility" 1 Oracle Team Productivity Center Server System Requirements For the most current system requirements, please refer to the Oracle Fusion Middleware Installation Guide for Oracle JDeveloper. 2 Installing the Oracle Team Productivity Center Server The installation software for Oracle Team Productivity Center Server is distributed as a platform-independent JAR file. Download the Oracle Team Productivity Center Server installation JAR file from the Oracle Technology Network (OTN) web site: http://www.oracle.com/technetwork/developer-tools/tpc/downloads/ index.html The following sections describe how to install the Oracle Team Productivity Center Server: ■ Section 2.1, "Before You Begin" ■ Section 2.2, "Prerequisites for Installation" ■ Section 2.4, "Installer Screens for Server Installation" ■ Section 2.5, "Upgrading Oracle Team Productivity Center Server with Apache Tomcat 6.0.20" You can choose to install the Oracle Team Productivity Center Server either as a new installation or as an update to an existing server. The installation software is the same, but there are slight differences in the procedure for installing the server depending on whether you are creating a new installation or upgrading an existing one.
    [Show full text]
  • Introduction to Cruisecontrol Agenda Benefits of Continuous Integration Success Factors
    Ø Introduction to CruiseControl * Change the marked fields if you are presenting these slides yourself. Refer to the overview and instructions for details. Joe Schmetzer* http://www.exubero.com/* This work is licensed under a Creative Commons Attribution-ShareAlike2.5 License. Resources YouTube clip as motivation: Every Build You Break Agenda Continuous Integration o Benefits of Continuous Integration o Success Factors o Successful Build Defined CruiseControl o What is CruiseControl? o How Does CruiseControl Work? o CruiseControl Demonstration Summary Questions Benefits of Continuous Integration Removes integration sessions Minimizes number of integration bugs o If you build and test your software once an hour, no problem is more than an hour old. Improves team work Delivers latest best build product Reduces the overall development cost by: o making it easier to find and fix problems o provides valuable and timely information, letting the development be managed more tightly. Resources Refer to the original article on CI by Martin Fowler and Matthew Foemmel: http://www.martinfowler.com/articles/continuousIntegration.html Mike Clark's "Dear Manager" articles at http://www.clarkware.com/cgi/blosxom/DearManager give further information about the return on investment. Success Factors Single source code repository Automated build scripts Automated tests Developers' discipline o Synchronise often o Don't break the build o When you break the build, fix it. Resources Refer to the original article on CI by Martin Fowler and Matthew
    [Show full text]
  • Rails for the “Enterprise”
    Beam me up, Scotty! Rails for the “Enterprise” Charles Johnson Rick Bradley Director, IS Applications Project Manager Centerstone Centerstone 1 What Enterprise? 2 What Enterprise? • Enterprise system? 2 What Enterprise? • Enterprise system? •Enterprise software? 2 What Enterprise? • Enterprise system? •Enterprise software? •Enterprise platform? 2 Centerstone Enterprise 3 Centerstone Enterprise • 25 Counties 3 Centerstone Enterprise • 25 Counties • 150 Locations 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients • 1,100 Staff 3 Centerstone Enterprise • 25 Counties • 150 Locations • 40,000 Clients • 1,100 Staff • Comprehensive Electronic Record 3 Centerstone Enterprise Requirements Dimension 4 Centerstone Enterprise Requirements Dimension Available & Reliable 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere Scalable 4 Centerstone Enterprise Requirements Dimension Available & Reliable • All the time Accessible • Everywhere Scalable • 300 to 9000 users 4 Centerstone Enterprise Requirements Dimension 5 Centerstone Enterprise Requirements Dimension Maintenance 5 Centerstone Enterprise Requirements Dimension Maintenance
    [Show full text]
  • Build Notifications in Agile Environments
    University of Calgary PRISM: University of Calgary's Digital Repository Science Science Research & Publications 2008-01-14 Build Notifications in Agile Environments Ablett, Ruth; Maurer, Frank; Sharlin, Ehud; Denzinger, Joerg; Schock, Craig http://hdl.handle.net/1880/45854 unknown Downloaded from PRISM: https://prism.ucalgary.ca Build Notifications in Agile Environments Abstract. In an agile software development environment, developers write code that should work together to fulfill the wishes of the customer. Continuous integration (CI) ensures that code from different individuals integrates properly. CI compiles the entire codebase, deploys and tests it with each change. CI alerts developers of any problems as errors can be fixed more easily if caught earlier in the process. This paper compares the effectiveness of different types of mechanisms for notifying developers to a successful or unsuccessful build. Two different quantitative and qualitative user studies were performed testing the effectiveness of three types of notification devices – one virtual e-mail based mechanism, one using ambient lava lamps, and one robotic device. The results show that most developers preferred an easily visible but unobtrusive ambient device combined with an e-mail describing the problem in more detail. Keywords: Agile methods, information awareness, ambient display, continuous integration 1 Introduction Agile methods [1] are becoming popular in the software industry. In agile software development projects, there may be anywhere from one to hundreds of developers working concurrently on the code base, so it is imperative that all software written by each developer integrates properly into the entire project. To this end, most agile teams adopt Continuous Integration (CI).
    [Show full text]
  • Continuous Integration (CI) Needs and Wishes for Developers of Proprietary Code
    Continuous Integration (CI) Needs and Wishes for Developers of Proprietary Code Michael Hilton, Nicholas Nelson, Danny Dig Timothy Tunnell, Darko Marinov School of EECS, Oregon State University CS Department, University of Illinois {hiltonm,nelsonni,digd}@oregonstate.edu {tunnell2,marinov}@illinois.edu Abstract—Continuous integration (CI) systems automate the Open-source projects are often considered fundamentally dif- compilation, building, and testing of software. Despite CI being ferent from proprietary-code projects [6]. Differences between one of the most widely used processes in software engineering, open-source and proprietary-code projects include that open- we do not know what motivates developers to use CI, and what barriers and unmet needs they face. Without such knowledge source projects foster more creativity [7], have fewer defects [7], developers make easily avoidable errors, managers reduce the and assign work differently [8]. However, similarities have also productivity of developers by making misinformed decisions, tool been found, including how GitHub is used [9], overall project builders invest in the wrong direction, and researchers miss many complexity [7], and amount of modularity [7]. opportunities for improving the software engineering practice. There are still many gaps in our knowledge about why Given the large fraction of proprietary code development, un- derstanding how proprietary developers are using CI is vital to developers use CI, and what barriers they face, especially for improving it. projects of proprietary code. What motivates developers to use We present the first study of how CI is used in the proprietary CI? What are the barriers that developers face when using development of software. We conduct 16 semi-structured inter- CI? What needs do developers have that are unmet by their views with developers from different industries and development current CI system(s)? Do proprietary developers have the same scale.
    [Show full text]
  • Continuous Integration, Delivery and Deployment: a Systematic Review on Approaches, Tools, Challenges and Practices”, IEEE Access, 2017
    M. Shahin, M. Ali Babar, and L. Zhu, ―Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices”, IEEE Access, 2017. Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices Mojtaba Shahina, Muhammad Ali Babara, Liming Zhub a CREST – The Centre for Research on Engineering Software Technologies, The University of Adelaide, Australia b Data61, Commonwealth Scientific and Industrial Research Organisation, Sydney, NSW 2015, Australia [email protected], [email protected], [email protected] Abstract—Context: Continuous practices, i.e., continuous integration, delivery, and deployment, are the software I. INTRODUCTION development industry practices that enable organizations to With increasing competition in software market, frequently and reliably release new features and products. organizations pay significant attention and allocate resources With the increasing interest in and literature on continuous to develop and deliver high-quality software at much practices, it is important to systematically review and accelerated pace [1]. Continuous Integration (CI), Continuous synthesize the approaches, tools, challenges, and practices DElivery (CDE), and Continuous Deployment (CD), called reported for adopting and implementing continuous practices. continuous practices for this study, are some of the practices aimed at helping organisations to accelerate their Objective: This research aimed at systematically reviewing development and delivery of software features without the state of the art of continuous practices to classify compromising quality [2]. Whilst CI advocates integrating approaches and tools, identify challenges and practices in this work-in-progress multiple times per day, CDE and CD are regard, and identify the gaps for future research.
    [Show full text]
  • Competitor Analysis an ETICS Study
    INFSO-RI-223782 Competitor Analysis An ETICS study Adriano Rippa and Isabel Matranga Engineering Ingegneria Informatica S.p.A. INFSO-RI-223782 Summary • Chosen competitors and motivations • Features: Comparing with the other tools • Summary 2 INFSO-RI-223782 Chosen competitors and motivations Similar Licenses (Free/OS) , more used, “more chatted” *** • CruiseControl • Hudson Features • Bamboo • AntHillPro (25% of the top 100 fortune companies use it) • Hudson + Sonar: it is developed as a Maven plug-in but it can be integrated into Hudson “Family” • Cruise (is the non free version of CruiseControl) *** http://www.developer.com/java/ent/article.php/10933_3803646_1 http://forums.whirlpool.net.au/forum-replies-archive.cfm/1086359.html 3 INFSO-RI-223782 Build Features Table Ant Hill Cruise Hudson ETICS Cruise Bamboo Pro Control + Sonar Support for any X build tool Dependencies (interproject) X X X N/A X X Management Historical data X X X X X X Distributed builds X X X X X X Split builds X X X Multiplatform X X X X X X Third party tools X DB Multilanguage X X X 4 INFSO-RI-223782 Build Features Summary Basic • Dependencies (interproject) Management • Historical data • Distributed builds • Multiplatform Advanced • Multilanguage Unique • Support for build tools • Split builds • Third party tools DB 5 INFSO-RI-223782 Security and Privacy Features Table Ant Hill Cruise Hudson ETICS Cruise Bamboo Pro Control + Sonar Role based X X X N/A X X Username and XXXXX password Certificate X Public availability of X artefacts and code 6 INFSO-RI-223782 Security
    [Show full text]
  • A Brief History of Devops by Alek Sharma Introduction: History in Progress
    A Brief History of DevOps by Alek Sharma Introduction: History in Progress Software engineers spend most of their waking hours wading George Santayana wrote that “those who cannot remember the through the mud of their predecessors. Only a few are lucky past are condemned to repeat it.” He was definitely not thinking enough to see green fields before conflict transforms the about software when he wrote this, but he’s dead now, which terrain; the rest are shipped to the front (end). There, they means he can be quoted out of context. Oh, the joys of public languish in trenches as shells of outages explode around them. domain! Progress is usually glacial, though ground can be covered This ebook will be about the history of software development through heroic sprints. methodologies — especially where they intersect with traditional best practices. Think of it as The Silmarillion of Silicon Valley, But veterans do emerge, scarred and battle-hardened. They except shorter and with more pictures. Before plunging into this revel in relating their most daring exploits and bug fixes to new rushing river of time, please note that the presented chronology recruits. And just as individuals have learned individual lessons is both theoretically complete and practically in progress. In other about writing code, our industry has learned collective lessons words, even though a term or process might have been coined, it about software development at scale. It’s not always easy to always takes more time for Best Practices to trickle down to Real see these larger trends when you’re on the ground — buried in Products.
    [Show full text]
  • ABTO Software Is Your Best Choice for Outsourcing Java Projects
    ABTO Software Java Software Development Overview ABTO Software Java Development ABTO Software is Your Best Choice for Outsourcing Java Projects ABTO Software is a world-class provider of high-end IT outsourcing services and excellent Java software development solutions to well-known companies across the USA and Europe. We are aimed at total customer satisfaction and strive to exceed our customers’ expectations. Services we offer are affordable yet of highest quality. Professional Java Developers Team: ABTO Software Java experts have excellent skills covering various Java application servers, frameworks, databases, libraries, components and technologies. 8 years of in-depth Java development experience World-class education level Highly motivated & committed team Deep Java development expertise Continuous integration systems We follow SCRUM & Agile Superior Quality Java Outsourcing Solutions We can develop Java applications of any scale and complexity running across different platforms. Our Java Development expertise includes: Java Enterprise Application Development (J2EE) Java Web Development Java Mobile Application Development (J2ME) Java Applications Migration, Enhancement and Integration Java Application Testing and Maintenance Java SaaS Application Development Our Competencies & Skills ABTO Software has a high level expertise in the Java platform, including Java ME, EE, SE, JDK, AWT, Swing, EJB, NetBeans, GlassFish, Junit, Spring, Struts, Hibernate, log4j, jpa, jsf, Corba, Tomcat, JBoss, JSP, Servlets, taglibs, Unified Expression Language, Envers and more. Our JAVA Development Expertise Java Frameworks: J2EE, J2ME, J2SE, Struts, Spring, Hibernate, JNDI, RMI/IIOP, JTA/JTS, JMS. Technologies: JSP, Servlets, JDBC, Swing, JUnit, AWT, AJAX, JSON, Web Services, applets, JSF, Flex, GWT. Platforms/Operating Systems: Linux, Unix, Windows, Mac, Android, Windows Mobile, Amazon Elastic Compute Cloud (Amazon EC2), IBM SmartCloud.
    [Show full text]
  • Continuous Integration in LATEX Marco Antonio Gómez-Martín and Pedro Pablo Gómez-Martín
    The PracTEX Journal, 2010, No. 1 Article revision 2010/01/01 Continuous Integration in LATEX Marco Antonio Gómez-Martín and Pedro Pablo Gómez-Martín Email [email protected], [email protected] Abstract Have you ever co-written a paper using LATEX together with some version control system such as SVN? Have you ever updated your local copy and the compilation has become broken due to a previous bad commit? Con- tinuous integration avoids this problem using an auxiliary server that constantly checks the sanity of the repository, compiling the LATEX doc- uments after each commit, and notifying authors of possible problems. This paper describes how to configure this environment. Although the configuration effort is detailed, it is done only once and provides many benefits. In addition to doing compilation tests, all authors can be auto- matically informed by e-mail when a new version is committed, and the current .pdf version can be made available to third parties on the Web. 1 Introduction Many of the documents that we write using LATEX are created not by just one author but two or more. In fact, our analysis performed over the database of the DBLP computer science bibliography1 reveals that the average number of authors of books, journal articles and articles in proceedings written until February, 2004 was 2.26 (see table1). This justifies the use of some kind of version control system, such as CVS (2) or Subversion (4) (also known as SVN) for collaborative writing of LATEX documents. As the use of SVN has spread over the LATEX community, different packages have appeared that allow documents to incorporate references to the properties of the last revision (10).
    [Show full text]
  • Automating Build, Test, and Release with Buildbot
    Automating Build, Test, and Release with Buildbot Dustin J. Mitchell Mozilla, Inc. Email: [email protected] Tom Prince Email: [email protected] Abstract—Buildbot is a mature framework for building con- to support a variety of deployments. Schedulers react to new tinuous integration systems which supports parallel execution of data from change sources, external events, or triggers based jobs across multiple platforms, flexible integration with version- on clock time (e.g., for a nightly build), and add new build control systems, extensive status reporting, and more. Beyond the capabilities it shares with similar tools, Buildbot has a number requests to the queue. of unique strengths and capabilities, some of them particu- Each build request comes with a set of source stamps larly geared toward release processes. This paper summarizes identifying the code from each codebase used for a build. A Buildbot’s structure, contrasts the framework with related tools, source stamp represents a particular revision and branch in a describes some advanced configurations, and highlights ongoing source code repository. Build requests also specify a builder improvements to the framework.1 that should perform the task and a set of properties, arbitrary I. INTRODUCTION key-value pairs giving further detail about the requested build. Buildbot is a continuous integration (CI) framework which Each builder defines the steps to take in executing a particular has been in use for well over 10 years[13]. While it began type of build. Once the request is selected for execution, the as a simple build-and-test tool, it has grown into an advanced steps are performed sequentially.
    [Show full text]