Modeling software behavior : a craftsman's approach /: a craftsman's approach. (2009)