Creating a Domain Model - both developer and designer should synthesize with the domain model in mind. otherwise they are key things that are missed in the handoff
Aim so that domain reflects the language and when the model changes so should the code
Layered Architecture - a good pattern is that data only flows down. you need a different mechanism to send message up.
Smart UI are an antipattern and introduces coupling. Although it introduces fast turn around in a the long run it is unmanageable