Thank you for the great book on new release of Flex. I have a couple of questions related to architecture of large (say 250+ screens) Flex enterprise applications. I am not sure if your book contains architectural topics but it would be good to have something about Flex application architecture.
Here are some of my questions:
1. How Flex application should be structured? Which design pattern is good fit for Flex? MVC, MVP, MVA, MVVM? At which level these patterns should be used (components level, individual screen level, application level that manages navigation between these screens)?
2. What building blocks can be distinguished when implementing Flex application and what should be reusable? Components, widgets, screens? Which design pattern should be used for building each of these components?
3. How to decouple screens so that one screen knows nothing about the other but at the same time they can "talk" to each other? For example one screen requests other screen and wants that other screen to have some fields to be defaulted, enabled/disabled, preloaded etc.?
4 How would you implement field level security in Flex? Some buttons/actions/fields etc. are visible/enabled only when user has a permission to see that button/control and only when certain business conditions are met?
5. How Flex application should be designed for modules or pluggable architecture? Loading modules based on permission, communication between screens packaged in modules?
6. Would you recommend TDD for Flex application? If so what should be tested - "C" and "M" when using MVC but not "V"? Which design pattern should be applied when building Flex application in order for them to be easily unit-testable? Or unit-testing doesn't make sense for Flex applications only functional testing with tools like QTP, FlexMonkey etc.?
7. Large applications quickly become spagetti code and event bus in Flex easily helps with that (especially bubbling option). Do you have some best practice recommendations to use events or just passing reference or some other recommendations when building Flex applications?