Download presentation
Presentation is loading. Please wait.
Published byGaven Henn Modified over 10 years ago
1
Addressing Non-Functional Properties in Software Architecture using ADL Christopher Van Eenoo Osama Hylooz Khaled Khan University of Western Sydney ASWEC 2005 Brisbane
2
Contents Motivation Current state of ADL Proposed approach Wright ADL Major issues Proposed constructs Limitations.
3
Motivation Software architecture reveals the aspects related to systems functionality, their collaboration, and structure Non functional aspects are rarely addressed at the architecture level Lack of integration between functional and non- functional aspects in the architecture Most ADLs do not incorporate quality attributes Software architecture needs to describe non- functional properties as well as behavioural attributes.
4
Current state Architectural Definition Language (ADL) specifies the structural composition Limitations of current ADL features Non-functional properties are often too abstract and stated informally Separation of the non-functional requirements from the functional ones is not simple Non-functional issues are often considered as an ‘after thought’ of the development process.
5
Proposed approach We propose some ADL constructs using a combination of Wright and CSP notations ADLs incorporate the non-functional properties We explore how non-functional issues could be addressed at the ADL level Not formal yet.
6
ADL Wright Designed around three basic software architectural elements: Components Interface Ports: interactions with the environment in terms of events Computation What actually a component does in terms of events specified in ports Connectors Role: behaviour of the participants in an interaction Glue: how the participants work together to create a composition Configurations Instances Attachment: put together instances Heavily based on CSP.
7
An example of Wright Configuration XYZ Component X-Type Port Out = ā → Out § Computation = Out.a → Computation § Component Y-Type Port In = c → In ٱ § Computation = In.c → b → Computation ٱ § Connector Z-type Role Get = ā → Get § Role Set = c → Set ٱ § Glue = Get.a → Set.c → Glue ٱ § Instances x:X-type y:Y-Type z:Z-Type Attachments x.Out as z.Get y.In as z.Set End XYZ a connector specification a component specification The configuration between two components x and y via the connector z a component specification Systems name
8
Issues addressed Specification of non-functional properties Differentiate between the required properties from the ensured properties Handling of multiple number of properties in one interface element.
9
Base construct Base construct Non-functional Prop = (REQUIRES {provider.rrqmt}, ENSURES {port/role.erqmt}) Is read as “The non-functional property Prop requires rrqmt from provider and ensures erqmt on port/role.” Non-functional, REQUIRES, and ENSURES are Wright reserved words Prop is a variable to be replaced with a non-functional property REQUIRES indicates that the component or connector must receive from its environment ENSURES indicates that component or connector must provide to its environment a CSP notation for ‘contains’
10
Furthering the construct Multiple Unrelated Requirements Non-functional Prop = (REQUIRES {provider a.rrqmt a }, REQUIRES {provider b.rrqmt b }, ENSURES {port/role.erqmt}) Multiple Related Requirements Non-functional Prop = (REQUIRES {provider a.rrqmt a ; provider a.rrqmt b ; provider a.rrqmt c }, ENSURES {port/role.erqmt})
11
Furthering the construct – cont’d Empty Set & Mathematical Notation Non-functional Prop = (REQUIRES {}, ENSURES {port/role.erqmt > x}) “All” operator Non-functional Prop = (REQUIRES {all.rrqmt}; ENSURES {all.erqmt})
12
Example Fictional e-healthcare system 3 components, 3 connectors
13
Example – cont’d Components - Existing Component GP Port authenticate = authenticate?x authenticate Port write = start accept!x write Computation authenticate.authenticate?x write.start computation Component SP Port patient_test_data = data?x patient_test_data Port compute_diagnosis = start data!x compute_diagnosis Computation=patient_test_data.data?x compute_diagnosis.start computation Component PH Port diagnosis = diagnosis?x diagnosis Port prescription=start diagnosis!x prescription Computation = diagnosis.diagnosis?x prescription.start computation
14
Example – cont’d Components with Construct Component GP Port auth = authenticate?x auth Port write = start accept!x write Computation auth.authenticate?x write.start computation Non-functional Security = (REQUIRES {Remote_Procedure_Call.encryption}, ENSURES {auth.authentication}) Component SP Port patient_test_data = data?x patient_test_data Port compute_diagnosis = start data!x compute_diagnosis Computation = patient_test_data.data?x compute_diagnosis.start computation Non-functional Performance = (REQUIRES {Pipe.BufferSize ≥ 50KB; Pipe.ReadSpeed ≥ 1MB/sec}, ENSURES {}) Component PH Port diagnosis = diagnosis?x diagnosis Port prescription = start prescription!x prescription Computation = diagnosis.diagnosis?x prescription.start computation Non-functional Security = (REQUIRES {}, ENSURES {Prescription.encryption})
15
Exmaple – cont’d Connectors - Existing Connector Shared_Variable Role GetTestData = accept?x GetTestData Role GiveTestData = data!x GiveTestData Glue = GetTestData.accept?x GiveTestData.data!x Glue Connector Pipe Role GetDiagnosis = data?x GetDiagnosis Role GiveDiagnosis = diagnosis!x GiveDiagnosis Glue = Getdiagnosis.data?x GiveDiagnosis.diagnosis!x Glue Connector Remote_Procedure_Call Role GetDiagnosis = diagnosis?x GetDiagnosis Role GivePrescription = prescription!x GivePrescription Glue = GetDiagnosis.diagnosis?x GivePrescription.prescription!x Glue
16
Example – cont’d Connectors with Construct Connector Shared_Variable Role GetTestData = accept?x GetTestData Role GiveTestData = data!x GiveTestData Glue = GetTestData.accept?x GiveTestData.data!x Glue Non-functional Security = (REQUIRES {GP.authentication}, ENSURES {}) Availability = (REQUIRES {}, ENSURES {GetTestData.WhenRead != GiveTestData.Write; GiveTestData.WhenWrite != GetTestData.Read}) Connector Pipe Role GetDiagnosis = data?x GetDiagnosis Role GiveDiagnosis = diagnosis!x GiveDiagnosis Glue = Getdiagnosis.data?x GiveDiagnosis.diagnosis!x Glue Non-functional Performance = (REQUIRES {}, ENSURES {GiveDiagnosis.BufferSize ≥ 50KB; GiveDiagnosis.ReadSpeed ≥ 1MB/sec}) Connector Remote_Procedure_Call Role GetDiagnosis = diagnosis?x GetDiagnosis Role GivePrescription = prescription!x GivePrescription Glue = GetDiagnosis.diagnosis?x GivePrescription.prescription!?x Glue Non-functional Security = (REQUIRES {}, ENSURES {.encryption })
17
Limitations Lacks formal rigidity String-like representation of non-functional properties Possibility for redundancy when one requirement pertains to more than one non-functional attribute Difficulty in defining and quantifying the non- functional properties in terms of a continuos scale.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.