Service Oriented Architectures and web services using model driven development is great but there is a major hidden piece, namely to create the web services for legacy transactions or applications. If you have a large number of legacy or external functionalities to expose, the costs of web service enabling them can be prohibitive and a total rewrite from scratch may be the only option instead of developing SOA over Web services.
For example, how much does it cost to expose 500 SAP R/3, IMS / CICS, MTS or PL/SQL business transactions – which slices should be exposed, how many slices per transaction ?