Micro And Macro Software Architectures, Why You Need Both