In software design, a service-oriented architecture is a set of principles and methodologies used for designing and developing software in the form of interoperable services. Each service encapsulates well-defined business functionality and it is built as a reusable component. Thereafter, new services can be generated as a coordinated aggregate of pre-existing functionality by means of service composition. Common practice in the Information and Communication Technology domain (ICT) is the usage of standardized workflow languages in order to describe the interaction between such services. Examples of such languages are the Web Services Business Process and Execution Language (WS-BPEL) and the Business Process Modeling Language (BPMN). At runtime, a framework interprets the workflow and performs the actions mandated by the semantics of its constructs. Even though, a workflow language contains a sufficient amount of constructs to qualify as Turing complete, the usage of existing workflow languages along with their corresponding frameworks renders them cumbersome for rapid application development where one needs to combine services from heterogeneous domains and in particular when re-using pre-existing services originating from the telecommunications domain. More specifically, the limitations in the state of the art for workflow languages are encountered in aspects such as tight-technological coupling; interaction is limited to particular technologies, usage of static type systems - that hinder experimentation and finally yet importantly in terms of parallelism and concurrency, where the designer of a workflow is forced to manually define execution order in an attempt to utilize multiple cores which are commonly found in most computer systems nowadays. This dissertation introduces a novel language for service composition and a technology agnostic composition framework suitable for developing and executing service compositions of heterogeneous services. The proposed service composition language is concurrent by default; parallel execution of actions is determined by their corresponding data dependencies. The proposed framework allows for an optional type system permitting both typed and un-typed variables. Un-typed variables can be used while designing and experimenting with the composition in a trial and error fashion; while typed can be used once the model of the service composition matures and becomes production-ready. Moreover, the proposed composition framework employs a fine level of granularity while interpreting the constructs of the proposed language. Our qualitative evaluation of the proposed language has shown that it is capable of expressing a wide set of workflow patterns, making it as expressive as rival workflow languages. Empirical evaluations of the proposed fine-grained composition framework have shown that is scalable; limited only by the amount of available memory and not by the number of available processing threads.