Presentation is loading. Please wait.

Presentation is loading. Please wait.

Addressing Non-Functional Properties in Software Architecture using ADL Christopher Van Eenoo Osama Hylooz Khaled Khan University of Western Sydney ASWEC.

Similar presentations


Presentation on theme: "Addressing Non-Functional Properties in Software Architecture using ADL Christopher Van Eenoo Osama Hylooz Khaled Khan University of Western Sydney ASWEC."— Presentation transcript:

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.


Download ppt "Addressing Non-Functional Properties in Software Architecture using ADL Christopher Van Eenoo Osama Hylooz Khaled Khan University of Western Sydney ASWEC."

Similar presentations


Ads by Google