The emergence and wide adoption of Web Services standards and technologies represents a shift from component-based development that dominated enterprise computing over the last decade towards service-oriented architectures that are more suited to the highly distributed inter-enterprise applications. This trend towards service-oriented computing necessitates the re-evaluation of software development methodologies that are used in the construction of enterprise applications. With growing acceptance of service-oriented computing and increasing number of large-scale Web Services projects there is evidence that practitioners involved in implementing these solutions are paying only limited attention to how such applications should be designed. Frequently, the design of Web Services applications is driven by performance and scalability considerations, rather than sound software engineering principles. A comprehensive methodological framework is required to guide designers and developers of service-oriented applications through the various phases of software development life cycle with specific emphasis on producing stable, reusable and extendable services. In this paper we first describe the characteristics of the Service Oriented Architecture (SOA) and then consider the requirements for methodological support for the development of service-oriented applications. We identify the key differences between SOA and earlier software development approaches and comment on the suitability of existing analysis and design methods in the context of SOA. The main contribution of this paper is a clear analysis of the differences between component-based and service-oriented methodologies and the identification of key design objectives and guidelines for the development of service-oriented applications.