A distributed system is a complex system. Developing complex systems is a demanding task when attempting to achieve functional and non-functional properties such as synchronization, communication, fault tolerance. These properties impose immense complexities on the design, development, and implementation of a distributed system that incur massive effort and cost a large amount of money. Therefore, it is vital to ensure that the system must satisfy the functional and non-functional properties once the system development process is finished. Once a distributed system is developed, it is very difficult, time consuming, and expensive to conduct any modification in its architecture. As a result, the quantitative analysis of a complex distributed system at the early stage of the development process is always an essential and intricate endeavor. To meet the challenge of conducting quantitative analysis at the early stage of the system development process, this thesis introduces an extensive framework for performance and performability evaluation of a distributed system. The goal of the performance modeling framework is the assessment of the non-functional properties of the distributed system at an early stage based on the system’s functional description and deployment mapping of service components over an execution environment. The performability framework is the extension of the performance modeling framework. The extended part of the performability modeling framework considers the behavioral change of the system components due to failures. This later reveals how such behavioral changes affect the system performance. The reusable specification of service components is the main specification unit of our framework. The specification of the reusable service component is realized through UML collaboration and activity. Activity diagrams are used to aid the illustration of the complete behavior of a system, which includes both local behavior of the service components and the necessary interactions among them. Reusable building blocks are collaborative in nature, which allows them to span across several participating components. The local behavior and interaction among the participating components are realized in an encapsulated way, which can be further reused to develop new applications. The assignment of service components that capture the system functional behavior of the physical components is recognized as deployment mapping. Deployment mapping has a significant impact on ensuring the non-functional properties provided by the system in a resource limited environment. This thesis also specifies the deployment mapping of service components using UML deployment diagrams. The focus of the deployment mapping is on considering the non-functional requirements such that the performance of a service or a system on a particular physical infrastructure can be assessed in a fully distributed manner and for large scale. In addition, a UML state machine diagram is utilized in our performability modeling framework to capture the dependability behavior of the system components. To conduct the performance and performability evaluation of a distributed system, the UML model is transformed into analytic models that provide performance and performability evaluation results. The significance of using an analytical model is because of its well-established mathematical formula and the availability of model evaluation tools. We have specified an automated transformation process that is performed in an efficient and scalable way through the use of model transformation rules to achieve model transformation. To analyze the correctness of the model transformation process, we have used temporal logic, specifically cTLA, to formalize the UML specification style. This, in turn, provides the opportunity for model validation. The motivation of applying cTLA is to take advantage of its well-established method to illustrate various forms of structures and actions by exploiting a variety of operators and techniques, which is wonderfully compatible with UML collaborations, activities, deployment, and state machine diagram. The framework is applied to artificial and real case studies to generate performance and performability results at the early stage of the system development process. The modeling process is supported by a set of tools, including Arctis and SHARPE with the incremental model checking facility. Arctis is used for specifying the system functional behavior. The evaluation of the performance and performability models generated by the framework is achieved using SHARPE.