From time to time when I review system architecture or discuss systems architecture I found myself criticize architecture mainly due to the fact that the chosen architect build on the latest technology trend and not with strong attitude to enterprise needs. It looks to me that we as architects tend to use the latest hot words that just come out from the oven instead of matching the right technology for given enterprise needs. I even heard that given architecture selected just because development speed reason. While the chosen architecture could work for given system it could be hell to integrate that system with other systems (which is basic need for his customer).
Integration is one of the words that I never forget when dealing with architecture. I think that in today world there isn’t any system that stands for itself, especially in enterprise context. Even if you create simple system that looks like no one will need to integrate to right now. Someone sometimes in the feature will need to integrate into your system. Integration seems to more and more essential as consolidation take the role in today business world. More then once I made my money from consulting to firm about integration of systems after merging or acquisition.
Integration between systems can be made at the data, logic and view layers of systems. System can acquire data for internal use from other application, use logic of other application and embed view of other application in application view. Nowadays sophisticated views (such as link analysis) can help user significantly to come into conclusion. Such views might be integrated in other system as added value to users.
The last trend that I hear (at least from Microsoft Israel) is smart client. Yes, smart clients are cool and they actually reduce complexity from code thus reducing developing time. But smart clients don’t feet when you want to integrate your visualization layer into other system. You might achieve some level of visualization integration but you need to work for it and anyway your visualization can't be use from application writing by other development tools and/or running on other operation system. In the data and logic levels integration we move from DCOM to web service / SOAP and talk a lot about SOA. We do it because we can't ignore other operating systems and developing tools. We found solution that build on standard that widely use in every OS and development tool. We need to think about visualization integration in the same way, and today the common visualization protocol is HTML. I don’t say that HTML rocks and smart clients sucks. I just say that I can't see why to suggest smart client architecture to client that integration is core aspect of client business. I just think that architecture should fit the enterprise business needs and not just follow the current technology trend.