Continuous Integration: Improving Software Quality and Reducing Risk (Martin Fowler Signature Books)

Continuous Integration: Improving Software Quality and Reducing Risk (Martin Fowler Signature Books) by Andrew Glover, Paul M. Duvall and Steve Matyas

Continuous Integration: Improving Software Quality and Reducing Risk (Martin Fowler Signature Books)

Binding:
Paperback
Number of Pages:
336
ISBN:
0321336380
Product Group:
book
Publisher:
Addison Wesley
Publication Date:
July 12, 2007
BooksForGeeks.com ID:
51

Reviews for Continuous Integration: Improving Software Quality and Reducing Risk (Martin Fowler Signature Books)

  1. Okay introduction if you've never done CI, doesn't add miuch if you have.

    Rated 3 out of 5 stars, April 12th, 2010

    It's short and reasonably readable so you can bomb through it quite quickly. If you haven't done anything to do with CI and don't know what it is or what it can do then it's a reasonable introduction. If you've done much then it's a bit basic and shallow. From our point of view it is a little naive in that there's an implicit assumption of being early in the project lifecycle, with no discussion on fitting this onto existing projects either from the point of view of technical challenges applying tests or political challenges persuading people it's worthwhile. It is also rather naively optimistic about the benefits of static analysis and code metrics (doesn't seem to believe there's such a thing as a false positive).
  2. Covers all the major deployment and automation issues

    Rated 5 out of 5 stars, August 12th, 2007

    Continuous Integration refers to the practice of automating the build, testing and deployment of your software, so that producing a finished executable (and the related artifacts) can be done at the touch of a button, and is ideally carried out several times a day.

    If this seems like a nice to have feature of your own development, but less of a core practice when compared to version control and comprehensive tests (both of which are requirements for doing CI), this book does a pretty good job of advocating CI as being just as important.

    First, the book introduces the core practices of CI (regular builds, tests, and deployment), then goes on to demonstrate how it facilitates other, more advanced practices, which gain value when automated, such as enforcing code style, and recording code metrics.

    It does not assume any particular platform, although most of the code uses Java and C# (and associated XML configuration). As a result, it will appeal most to those who want general guidance about why CI is a good idea, what to put under CI, how often to integrate, how long to allow the build to take, what to do if builds are too slow, etc. There's clearly no one-size-fits-all answer to this and this not a step-by-step tutorial book, so you'll need to adapt the code samples given in this book for your own ends.

    Therefore, if you're completely new to the idea of CI, then maybe you might want to check out Mike Clark's Pragmatic Project Automation first, which covers a lot of the same ground as the first part of this book, but goes into a lot more detail about the mechanics of using Ant and JUnit with Cruise Control.

    Apart from being more language agnostic, what takes this book beyond the Pragmatic tome is the second part, which demonstrates the more advanced processes that CI makes possible: including a chapter on how to integrate databases into CI, which touches on some cultural issues (e.g. the DBA being separate from the rest of the coding team) and providing sandboxes for each developer. Additionally, there's material on how to include reporting and analysis, e.g. code duplication, code coverage and static analysis tools such as Java's FindBugs.

    It's also a quick and easy read (less than 300 pages), while still having a pretty wide purview. I don't think this is a subject that would benefit from an enormous tome, and you'll still come away with a much clearer idea of your project's automation and scheduling needs, although you might have to do a bit of digging in online documentation of the various tools mentioned in the book to find your exact solution.

    The only bad thing I have to say about this book is that there are some very brief developer dialogues sprinkled throughout, used as examples to highlight suboptimal practices. As ever, these are cringe-inducing and artificial.

    Out of the core agile practices of unit testing, version control, and project automation, the latter has the least amount of material available to read. Fortunately, this is a readable, persuasive and helpful book for curing the big bang integration blues.

Our Network

BooksForGeeks.com is a participant in the Amazon Europe S.à r.l. Associates Programme, an affiliate advertising programme designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.co.uk