SoftwareGR

West Michigan's premier trade association for software professionals.

  • BlogWhat’s happening
  • About UsSoftware Craftsmen
  • MeetingsCome on by
  • SponsorsThey make it happen

November 23, 2005
Posted by swietonm

Notes on Karlin's and Matt's Talks

Carl Erickson, Atomic Object

Karlin’s “Systir Test Framework”

Karlin Fox, Atomic Object software journeyman, talked about the domain specific language approach to system testing and the Atomic Object Systir framework during the second half of the November meeting.

This is a talk Karlin gave recently at the Ruby Developers Conference.

Karlin started with a demo of Systir. A website for ordering pizza was run through its paces with a system test in the Systir framework using Watir as the driver.

TDD is for developers. SDD (story driven development) is for customers. Expressing stories as system tests lets you use them as acceptance tests, and it requires you get good definition on your specification (stories) since you automate their execution. In other words, SDD keeps your requirements and your code synchronized.

Systir encourages writing acceptance tests incrementally, as you develop. It’s lightweight and easy to get going in (assuming you learn a little Ruby first) and can be extended as the need arises.

Typical vendorscript (as Bret Pettichord has called it) is specific to a vendor and may be a poor general puprose language. Systir scripts are DSLs in Ruby, so the full power of Ruby is available as needed.

Matt Heusser pointed out that Systir scripts are executable English, hence not as ambiguous as human language requirement specs.

Systir DSL == Application ideas + User domain language + Testing/programming skills

A Systir DSL grows from an ongoing collaboration between a customer and a toolsmith.

David Crosby pointed out that redundancy can be added to the DSL to make the customer’s test writing/reading easier. For example, the DSL for checking out in a shopping cart could be either “check out as” or “check out by”. It’s easy to define and allow both phrases.

Systir tests can be data-driven or imperative. The best approach depends on the application and the customer defining the tests.

Fit (Ward Cunningham) is another test automation tool for doing SDD. Compared to Systir, Fit supports only a data-driven approach to system tests. Fit’s great for this, but sometimes the imperative approach is more powerful and expressive.

Systir’s been used for a variety of web apps, for a complex Java server, and for a large C#/.NET GUI application.

Karlin wound up with a dive into the famous Mondo pizza website, the system tests for it, and the Ruby driver suporting the Mondo DSL.

Matt’s “Magic Pixie Dust”

Innovation is about redefining a task, or the way a task is done – Gerald Weinberg

Programmers that innovate are going to disrupt things a bit. How do you encourage that and not let it sidetrack the organization?

Is innovation at odds with high levels of process maturity? [Perhaps the self reflective, feed-improvement-back-into-the-system aspects of higher CMM levels would cover process and technology innovation?]

Status meetings are 20 people in a room, sequentially reporting for 5 minutes each. So for 20 person hours of human resource you get a couple hours of knowledge sharing. [Makes our standups look highly efficient.]

An ambiguous spec is one that is written in English – James Bach.

Efficiency is a false god. Without an infinite length work queue there will always be some downtime for developers. So to be efficient, companies size their development groups to always have work to do. So imagine when a call comes in from a customer, reporting a bug. Help desk person enters the bug. A few weeks later the QA person has time to check out the bug. Now the trail is cold, so it’s harder to repeat and understand, and the customer isn’t available. Finally the developer finds and fixes the bug, submits it to the QA person for change control. They’re busy, so it takes a while before they can check out the fix and submit it to the next release build. Sometime much later the customer may get the bug fix. So the efficient organization can have rather bad responsiveness. “Slack”, by Tom DeMarco advises organizations keep 10% idle time to improve performance.

Multitasking results in higher average completion time for projects. And that doesn’t count task switching overhead. [Simple results from OS class – shortest job first scheduling results in lowest average completion time.]

Johana Rothman – at 2 tasks, people are only 40% effective. At 5 tasks they are not effective at all.

Kevin Hykin cited data that said 2 concurrent projects is good, but going over that results in inefficiency.

Lesson from parenting: forcing your will on another human isn’t as effective as communicating choice and consequences.

Every large, painful, deadfish project has a series of lively, effective, fun projects just dieing to get out.

Developers do have power. Bosses don’t control everything. Offer choices to customers, encourage them to prioritize. Use five magic words: “I’ll get back to you” when pressed for detailed time estimates in meetings. If you can’t do something, don’t commit to it.

Comments Off

Posted Under Uncategorized

No Comments Yet

You can be the first to comment!

Sorry, comments for this entry are closed at this time.

  • Next Meeting

    May 25th, 6:00 pm – 8:00 pm

    Atomic Object, 941 Wealthy St, Grand Rapids, MI 49506

    Please join us for a talk from Ryan Montgomery on Google AppEngine::DataStore

    More Upcoming in Meetings

  • Email

    Announcements of upcoming speakers, schedule changes, and other important announcements. We promise to respect your email.

    Subscribe Now

    Connect on LinkedIn

  • Platinum Sponsors

    Atomic Object Logo   Dorner Works Logo

  • Blog Archive

    • May 2010
    • March 2010
    • February 2010
    • January 2010
    • October 2009
    • September 2009
    • August 2009
    • July 2009
    • June 2009
    • May 2009
    • April 2009
    • March 2009
    • February 2009
    • January 2009
    • November 2008
    • September 2008
    • May 2008
    • April 2008
    • March 2008
    • January 2008
    • November 2007
    • October 2007
    • September 2007
    • June 2007
    • May 2007
    • April 2007
    • March 2007
    • February 2007
    • January 2007
    • November 2006
    • October 2006
    • September 2006
    • May 2006
    • April 2006
    • March 2006
    • February 2006
    • January 2006
    • November 2005
    • October 2005
    • September 2005
    • May 2005
    • April 2005
    • March 2005
    • February 2005
    • January 2005
    • November 2004
    • October 2004
    • September 2004
    • April 2004
    • March 2004
    • February 2004
    • January 2004

Subscribe via RSS