martinfowler.com Archives - 19 June 2013, Wednesday

  • Photo 22

    martinfowler.com 17 Apr '12, 8pm

    f/4.5 at 1/100, ISO 500, Canon S90, 85mm TEFL

  • AnemicDomainModel

    martinfowler.com 17 Apr '12, 7pm

    bad things · domain driven design · application architecture tags: This is one of those anti-patterns that's been around for quite a long time, yet seems to be having a particular spurt at the moment. I was chatting with Eric Evans on this, and we've both noticed they seem to be getti...

  • TestCoverage

    martinfowler.com 17 Apr '12, 3pm

    From time to time I hear people asking what value of test coverage (also called code coverage) they should aim for, or stating their coverage levels with pride. Such statements miss the point. Test coverage is a useful tool for finding untested parts of a codebase. Test coverage is of...

  • Progress on NoSQL Distilled

    martinfowler.com 17 Apr '12, 2pm

    Time for a progress report on NoSQL Distilled . We’ve done a round of technical review and are now pretty happy with the text, happy enough to move it into production. Production for a book these days is both more complicated and more responsive than it used to be. The next step on th...

  • DiversityImbalance

    martinfowler.com 16 Apr '12, 4pm

    Although it's easy to become accustomed to it, it's pretty obvious the software development world has some serious issues in diversity. By this I mean that we have some notable differences in proportions of people compared to the general population. One of the most obvious differences...

  • @petermichaux Fowler describes this use case well in his Presentation Model — selected album in a list.

    Presentation Model

    martinfowler.com 15 Apr '12, 5pm

    When someone clicks the classical check box the check box changes its state and then calls the appropriate event handler in the view. This event handler saves the state of the view to Presentation Model and then updates itself from the Presentation Model (I'm assuming a coarse-grained...

  • Continuous Integration

    martinfowler.com 15 Apr '12, 10am

    Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect in...

  • BlueGreenDeployment

    martinfowler.com 14 Apr '12, 5am

    One of the goals that my colleagues and I urge on our clients is that of a completely automated deployment process. Automating your deployment helps reduce the frictions and delays that crop up in between getting the software "done" and getting it to realize its value. Dave Farley and...

  • ObjectMother

    martinfowler.com 13 Apr '12, 10am

    An object mother is a kind of class used in testing to help create example objects that you use for testing. When you write tests in a reasonably sized system, you find you have to create a lot of example data. If I want to test a sick pay calculation on an employee, I need an employe...

  • @SchemaCzar duvall's is the only book I know. The continuous delivery book may also be useful. See for other resources

    Delivery Guide

    martinfowler.com 12 Apr '12, 12pm

    Continuous Delivery is the key philosophy, but its foundation is the better-known Continuous Integration (CI). Continuous Integration is the first step of the Continuous Delivery pipeline, it means that every developer keeps their work-in-progress continually integrated with every oth...

  • @markdrew

    FeatureBranch

    martinfowler.com 11 Apr '12, 10am

    version control · continuous integration tags: With the rise of Distributed Version Control Systems (DVCS) such as git and Mercurial, I've seen more conversations about strategies for branching and merging and how they fit in with Continuous Integration (CI). There's a bit of confusio...

  • GUI Architectures

    martinfowler.com 10 Apr '12, 12pm

    To some extent you can see this essay as a kind of intellectual history that traces ideas in UI design through multiple architectures over the years. However I must issue a caution about this. Understanding architectures isn't easy, especially when many of them change and die. Tracing...

  • PreferDesignSkills

    martinfowler.com 10 Apr '12, 7am

    team organization · recruiting · technical leadership · thoughtworks tags: Imagine a hiring situation. There's two candidates both with a few years of experience. In the blue corner we have someone with good broad design skills in the style of design that you favor (in my case that wo...

  • CannotMeasureProductivity

    martinfowler.com 07 Apr '12, 1am

    productivity · metrics · project planning tags: We see so much emotional discussion about software process, design practices and the like. Many of these arguments are impossible to resolve because the software industry lacks the ability to measure some of the basic elements of the eff...

  • @FransBouma Yes - some of those commits are to the "about us" page. What do you think of feature toggles?

    FeatureToggle

    martinfowler.com 05 Apr '12, 2pm

    One of the most common arguments in favor of FeatureBranch is that it provides a mechanism for pending features that take longer than a single release cycle. Imagine you are releasing into production every two weeks, but need to build a feature that's going to take three months to com...

  • SoftwarePatent

    martinfowler.com 05 Apr '12, 8am

    I think almost everyone I know in the software development field has a deep hatred for patents and the way they've been used in our field. I've had a post on my todo list for ages about this and have finally been moved to write about it after a particularly good piece of investigative...

  • AnemicDomainModel

    martinfowler.com 04 Apr '12, 1pm

    bad things · domain driven design · application architecture tags: This is one of those anti-patterns that's been around for quite a long time, yet seems to be having a particular spurt at the moment. I was chatting with Eric Evans on this, and we've both noticed they seem to be getti...

  • @sippndipp np. Also, @beingagile linked me to this, which is interesting:

    Consumer-Driven Contracts: A Service Evolution Pattern

    martinfowler.com 03 Apr '12, 6am

    Document schemas We've already discussed document schemas in some detail. Next to interfaces, document schemas are the parts of a provider contract most likely to change as the service evolves; but perhaps because of this, they're also the parts we have most experience of imbuing with...

  • Mocks Aren't Stubs

    martinfowler.com 02 Apr '12, 3pm

    Once you have your first test running, the expectations on the mocks provide a specification for the next step and a starting point for the tests. You turn each expectation into a test on a collaborator and repeat the process working your way into the system one SUT at a time. This st...

  • Mocks Aren't Stubs

    martinfowler.com 31 Mar '12, 12pm

    Once you have your first test running, the expectations on the mocks provide a specification for the next step and a starting point for the tests. You turn each expectation into a test on a collaborator and repeat the process working your way into the system one SUT at a time. This st...

  • Closure

    martinfowler.com 31 Mar '12, 5am

    As there is a growing interest in dynamic languages, more people are running into a programming concept called Closures or Blocks. People from a C/C++/Java/C# language background don't have closures and as a result aren't sure what they are. Here's a brief explanation, those who have ...

  • MovingToNokogiri

    martinfowler.com 25 Mar '12, 5pm

    Most of this site, including this bliki, is built using an XML to HTML transformation process. I write the articles and bliki entries in my own XML vocabulary and then transform these sources to the HTML you read. When I stated back in 2000 I did it in XSLT. While I got pretty good at...

  • Alpha list of refactorings

    martinfowler.com 25 Mar '12, 12am

    This is a simple list of refactorings both from the original book and some later sources. Sadly I haven't had enough time and energy to keep this material up to date. Refactorings marked with with have some extra material to what's in the Refactoring book. Refactorings marked with are...

  • CollectionClosureMethod

    martinfowler.com 22 Mar '12, 11am

    When I first started programming in Smalltalk one of the things I liked right from the start were the collection classes. They allowed you to simply do a bunch of common and powerful operations on collection classes. When Java appeared, I missed these kinds of methods - the Java (and ...

  • P of EAA: Data Transfer Object

    martinfowler.com 21 Mar '12, 11pm

    An object that carries data between processes in order to reduce the number of method calls. For a full description see P of EAA page 401 When you're working with a remote interface, such as Remote Facade (388), each call to it is expensive. As a result you need to reduce the number o...

  • GUI ArchitecturesGUI Architectures

    martinfowler.com 21 Mar '12, 3pm

    To some extent you can see this essay as a kind of intellectual history that traces ideas in UI design through multiple architectures over the years. However I must issue a caution about this. Understanding architectures isn't easy, especially when many of them change and die. Tracing...

  • Martin Fowler website

    Agile Guide

    martinfowler.com 20 Mar '12, 5pm

    My introductory article on agile methods, focusing on the two key criteria that sets them apart from the traditional view of software process: adaptive planning and a people-centered approach. The original version of this article appeared in 2000 where it influenced the growing intere...

  • Eradicating Non-Determinism in Tests

    martinfowler.com 19 Mar '12, 7am

    An automated regression suite can play a vital role on a software project, valuable both for reducing defects in production and essential for evolutionary design. In talking with development teams I've often heard about the problem of non-deterministic tests - tests that sometimes pas...

  • Evolutionary Database Design

    martinfowler.com 17 Mar '12, 10am

    In order to make this work, you need a different attitude to design. Instead of thinking of design as a phase, which is mostly completed before you begin construction, you look at design as an on-going process that is interleaved with construction, testing, and even delivery. This is ...

  • StranglerApplication

    martinfowler.com 17 Mar '12, 9am

    application architecture · legacy rehab tags: When Cindy and I went to Australia, we spent some time in the rain forests on the Queensland coast. One of the natural wonders of this area are the huge strangler vines. They seed in the upper branches of a fig tree and gradually work thei...