In Service Oriented Architecture (SOA), each application is designed with a set of reusable services and a business process. To retain the reusability of services, non-functional properties of applications must be separated from their functional properties. This paper investigates a model-driven development framework that separates non-functional properties from functional properties and manages them. This framework proposes two components: (1) a programming language, called BALLAD, for a new per-process strategy to specify non-functional properties for business processes, and (2) a graphical modeling method, called FM-SNFPs, to define a series of constraints among non-functional properties. BALLAD leverages aspects in aspect oriented programming/modeling. Each aspect is used to specify a set of non-functional properties that crosscut multiple services in a business process. FM-SNFPs leverage the notion of feature modeling to define constraints among non-functional properties like dependency and mutual exclusion constraints. BALLAD and FM-SNFPs free application developers from manually specifying, maintaining and validating non-functional properties and constraints for services one by one, reducing the burdens/costs in development and maintenance of service-oriented applications. This paper describes the design details of BALLAD and FM-SNFPs, and demonstrates how they are used in developing service-oriented applications. BALLAD significantly reduces the costs to implement and maintain non-functional properties in service-oriented applications.