Network Function Virtualization (NFV) is a new paradigm in Network Service (NS) provisioning. European Telecommunications Standards Institute (ETSI) proposed and standardized an architectural framework for NFV. By leveraging virtualization and Software-Defined Networking (SDN) technologies, NFV decouples network functionality from hardware infrastructure. This enables the automated provisioning of NSs and reduces the capital and operational costs for service operators. NFV Management and Orchestration (NFV-MANO) is a functional block in the NFV framework, and it is responsible for the deployment and life-cycle management of NSs. With NFV, the telecommunication industry is moving towards zero-touch, i.e. automation of all the processes. In order to orchestrate and manage an NS, NFV-MANO requires the NS’s deployment template. This template is referred to as NS Descriptor (NSD) and contains all the details for deployment and orchestration of the NS. De-signing such a descriptor requires the design of the NS, which is actually out of the NFV scope. Traditionally, service operators’ experts design NSs and NSDs. However, this design activity is time-consuming and error-prone; moreover, it is not fitting the Telecom’s vision of zero-touch. In this thesis, we will propose an approach to automate the process of NS and NSD design. The approach starts from a set of requirements provided as Network Service Requirements (NSReq). The NSReq describes the required network service at a high level of abstraction and focuses on the functional, architectural, and non-functional characteristics. With the help of an ontology representing the knowledge from Telecom standards and previous successful experiences, we decompose the NSReq. We select the set of Virtual Network Functions (VNF) from a catalog to design the NS. Considering all the levels of decomposition and the VNF’s dependencies captured from the ontology, we design all the possible for-warding graphs that can form an NS. We design each forwarding graph through different steps at different abstraction levels, i.e. functional, architectural, and VNF levels. According to each forwarding graph, we design an NSD along with the traffic flows in the NS. We re-fine each NSD by dimensioning its VNFs using the non-functional requirements in the NSReq. Accordingly, we refine the deployment flavor of each NSD. We have developed a prototype tool as a proof of concept for our proposed approach which we will discuss later in this thesis.