Qiang:
By the example you've used, you may be trying to put too much into your model. A report would be a view of the model, so you wouldn't use MyApp::Backend::Report. The model should concern itself with ensuring that the data remain in a consistent state WRT business rules, etc. I know that was a one-off example and it may not be what you meant, but I thought I'd mention it. In general, I try to keep a model as simple as possible. So when I'm adding a method, I ask myself ... "Is this necessary? At the right level of abstraction? etc.".
...
roboticus