140 likes | 306 Views
Model-Driven Development for Non-functional Properties: Refinement through Model Transformation. Simone Röttger and Steffen Zschaler Dresden University of Technology, Dresden, Germany October 14, 2004 7 th UML conference, Lisbon, Portugal. Motivation.
E N D
Model-Driven Development for Non-functional Properties:Refinement through Model Transformation Simone Röttger and Steffen Zschaler Dresden University of Technology, Dresden, Germany October 14, 2004 7th UML conference, Lisbon, Portugal
Motivation • Non-functional properties need to be considered throughout software development • We need to model and analyse non-functional properties • We need to refine non-functional properties along with the functional model • Both adds complexity to the task of designing an application • Problem addressed in this talk: • How to • Integrate non-functional properties into development process • While • Minimizing complexity for application designer
<<comp spec>> :UserManager ILogin IUserMgt IUserMgt <<comp spec>> :VideoServer [for login] [for checkPassWd] [for checkPassWd] <<nfp>> response_time value < 470 <<nfp>> response_time value < 500 <<nfp>>response_time value < 400 compatible! An Example: A Simple Client–Server Scenario
<<comp spec>> :UserManager ILogin IUserMgt IUserMgt <<comp spec>> :VideoServer [for checkPassWd] [for checkPassWd] [for login] [for checkPassWd] [for checkPassWd] <<nfp>> client_response_time value < 470 <<nfp>> response_time value < 470 <<nfp>> response_time value < 500 ?? <<nfp>>response_time value < 400 <<nfp>>server_response_time value < 400 :client :server request server_response_time client_response_time response An Example: Refining the Specification <<distributed>>
Aim of This Work • Benefits • Early consideration of non-functional properties • Low-overhead integration into development process To provide support for such refinements of non-functional properties, while shielding the application developer as much as possible from the added complexity.
Outline • Core idea: Library of non-functional aspects • Provided independently of application development • Including refinement relationships • Process and Role Model • Measurement and Application Designer • Technical Background: • The Work of the Measurement Designer • Refinement of Measurement Definitions • Conclusions
<<attribute>> performingRole:Role Measurement Designer Application Designer Requirements Analysis Definition of Measurements Measurement Specifications Application Design Constraints for Components Specification of Refinements Refinement Refinement Specifications Implementation Process and Role Model
Context Model static +used_operation +caller 0..n 0..n 0..n 0..n dynamic +callee +provided_operation Component Operation 0..n 1..n 1..n 1 1 1 1 {ordered} 0..n 0..n +invocations +instances 0..n 0..n OperationCall +callee ComponentInstance + start : Instant 1 1 + end : Instant 1 +caller Defining the Measurements CQML+Specification quality_characteristic response_time (op: Operation) { domain: numeric milliseconds; values: op.invocations->last().end - op.invocations->last().start; }
+caller 0..n +used_operation 0..n +callee +provided_operation Component Operation 0..n 1..n static {ordered} dynamic 0..n +invocations +instances 0..n OperationCall +callee ComponentInstance sndCall: Instant rcvCall: Instant sndResult: Instant rcvResult: Instant 1 1 +caller Another Context Model • Refinement: • start and end replaced by more detailed description 1 1 1 1
Classifier Transformation: Translates Types between context models Feature Transformation: Derives values of abstract features in the concrete context model Describing the Refinement <refinementxform from="coarse.xmi" to="fine.xmi"> <transform classifier="OperationCall"> <targetclassifier="OperationCall"/> </transform> <transform feature="OperationCall::start" ownerRef="owner"> <targetexpression> owner.sndCall </targetexpression> <targetexpression> owner.rcvCall </targetexpression> </transform> </refinementxform>
quality_characteristic client_response_time (op: Operation) { domain: numeric milliseconds; values: op.invocations->last().rcvResult - op.invocations->last().sndCall; } quality_characteristic server_response_time (op: Operation) { domain: numeric milliseconds; values: op.invocations->last().sndResult - op.invocations->last().rcvCall; } Application to the Measurement Definition quality_characteristic response_time (op: Operation) { domain: numeric milliseconds; values: op.invocations->last().end - op.invocations->last().start; }
<<comp spec>> :UserManager ILogin IUserMgt IUserMgt <<comp spec>> :VideoServer [for checkPassWd] [for checkPassWd] [for login] [for checkPassWd] [for checkPassWd] <<nfp>> client_response_time value < 470 <<nfp>> response_time value < 470 <<nfp>> response_time value < 500 <<nfp>>response_time value < 400 <<nfp>>server_response_time value < 400 Back to the Example <<distributed>>
Conclusions • Starting Point • Non-functional specifications need refinement just as functional specifications • Application developer should be shielded from the additional complexity • Solutions • Measurement Designer provides pre-specified library of measurements • Measurements are specified relative to context models • Different levels of abstraction represented by different context models • Mapping between context models can be used to generate measurement definitions at more detailed levels
Future Work • Integration of analysis capabilities • Component match analysis • Connectors to model component interactions • Appropriate management of context models • Structural non-functional refinement • Decomposition, reassignment of non-functional properties