Abstract-- Leveraging service oriented programming paradigm would significantly affect the way people build software systems. However, to achieve this goal a solid software design methodology should be grounded on proper mathematical foundations, specific service-oriented principles, concepts and patterns. This paper contributes to the above goal proposing a lightweight, but complete, mathematical framework capable of capturing the essential components of service-oriented programming paradigm. To this end, we propose mathematical definitions for individual service, service-oriented environment and service-oriented application. Analysis of the properties and the functionalities of these components with respect to data processing mechanisms enables us to introduce a service-oriented application classification schema. For each application class we first identify specific properties and then discuss their use in a service-oriented design methodology.