270 likes | 282 Views
This workshop explores the responsibility-based approach for transforming feature models into software architectures. It discusses the challenges and proposes a systematic method to decouple the relationship between features and components. The goal is to leverage feature models in the design stage to improve software development.
E N D
Responsibility-based Transformation from Feature Model to Software Architecture Haiyan Zhao (Joint work with Wei Zhang, Hong Mei) 1st workshop on bi-trans on ABC Dec. 7, 2007, PKU, Beijing
Why Transformation? Feature Oriented Requirements Analysis Architecture Based Component Composition Design of Software Architecture Architecture Based Application Deployment • Requirement Analysis model design model • Feature Model software architecture FMTool (Feature Modeling Tool) FDDItool (Feature driven domain Implementation Tool) 1st Workshop on Bi-Trans in ABC
Relationship Classifier Relationship Classifier Invoke DirectExplicitInteraction +requirer Entity Require 1 * Meta - LevelConfigure DirectExplicitInteraction 1..2 1 * name 0..1 Constraint +requiree requirements * * 2.. 1.. +trigger Exclude specification Constraint Interaction ResourceConfigure 2 1 * * optionality 1..2 1 * Interaction IndirectExplicitInteraction binding - time +triggee ComplexConstraint binding - state Influence * IndirectExplicitInteraction * 2.. ComplexConstraint Decomposition Decomposition Feature ResourceContainer Notify DirectImplicitInteraction Detailization ResourceContainer DirectImplicitInteraction Detailization Flow +parent Specialization Refinement 1 * IndirectImplicitInteraction 1 0..1 Specialization Refinement +child Mutex IndirectImplicitInteraction 0..1 Source :Feature Model 1st Workshop on Bi-Trans in ABC
Target : component model 1st Workshop on Bi-Trans in ABC
How transformation? • Depends heavily on designers’ personal creativity and experience • Two fundamental problems to address: • How to address the m-n relationship between features and components; • How to construct the software architecture based on the feature model • Responsibility-based approach • Just a disciplined way • Not fully automated 1st Workshop on Bi-Trans in ABC
A cluster of specifications Responsibility Operationalized into Assigned to Features Interactions between Features Components Interactions between Components GAP (THE PROBLEM SPACE) (THE SOLUTION SPACE) Responsibility-based Transformation • Take advantage of the information in feature models in the design stage 1st Workshop on Bi-Trans in ABC
N-to-N 1-to-N N-to-1 What is Responsibility? • In intension, a responsibility is a cohesive set of program specifications. • In extension, a responsibility is a basic unit for work assignment to software developers. 7/45 1st Workshop on Bi-Trans in ABC
<<Feature>> A <<Feature>> B <<Feature>> C Decouple the relationship between Features and Components • A feature is decomposed into a set of responsibilities R1 decomposed R2 R3 R6 R4 R7 R5 1st Workshop on Bi-Trans in ABC
R1 R3 R2 R6 R4 R7 R5 Decouple the relationship between Features and Components A component can implemented a set of responsibilities <<Comp>> D R1 R3 Clustered <<Comp>> E R2 R4 R6 <<Comp>> F R7 R5 1st Workshop on Bi-Trans in ABC
Relations between components • Identified from • Interaction between responsibilities • Responsibilities from same feature assigned to different component • Constraints on features <<Comp>> D R1 <<Comp>> E R1 1st Workshop on Bi-Trans in ABC R2 R2
Special responsibility • Resource container is • to structure resources related to features • to be assigned responsibilities of passively accepting requests from environment for resource storing, querying and retrieving • To be identified by • analyzing the description of features • analyzing constraints on features 1st Workshop on Bi-Trans in ABC
From Feature Model to Software Architecture: responsibility centric 1st Workshop on Bi-Trans in ABC
<<Feature>> Edit <<Feature>> <<Feature>> <<Feature>> Copy Cut Paste <<Feature>> <<Feature>> Save Un/re - do <<Feature>> <<Feature>> Undo Redo Example: document editor • Feature1: Save • Save a document into a disk. • Feature2: Copy • Copy the selected text to the clipboard. • Feature3: Cut • Cut the selected text to the clipboard. • Feature4: Paste • Paste text from the clipboard to the current position in the document. • Feature5: Un/Re-do • Redo or undo unsaved edit operations (i.e. copy, cut, paste) according to users’ requests. 1st Workshop on Bi-Trans in ABC
Example: document editor <<Feature Component>> Save <<Feature Component>> Copy 1 2 <<Feature Component>> Cut <<Feature Component>> Un/Re-do 3 <<Feature Component>> Paste 5 4 1st Workshop on Bi-Trans in ABC
Example: document editor <<Resource Container>> Clipboard <<Feature Component>> Save 6 <<Feature Component>> Copy Save 1 Copy 2 <<Feature Component>> Cut <<Feature Component>> Un/Re-do Cut 3 <<Feature Component>> Paste 5 Paste 4 : Core Responsibility : Added Responsibility 1st Workshop on Bi-Trans in ABC
Example: document editor <<Resource Container>> Clipboard <<Feature Component>> Save 6 <<Feature Component>> Copy Save 1 write Copy 2 <<Feature Component>> Un/Re-do <<Feature Component>> Cut write Cut 3 <<Feature Component>> Paste 5 read Paste : Core Responsibility : Added Responsibility 4 1st Workshop on Bi-Trans in ABC
Example: document editor <<Resource Container>> Clipboard <<Feature Component>> Save 6 <<Feature Component>> Copy Inform Saved Save 1 write Record URI Copy 2 <<Feature Component>> Un/Re-do <<Feature Component>> Cut <<Resource Container>> Un/Re-do Info (URI) Redo Undo write Record URI Cut 7 3 Clear URI <<Feature Component>> Paste 5 Record URI read Paste : Core Responsibility : Added Responsibility 4 1st Workshop on Bi-Trans in ABC
Example: document editor <<Resource Container>> Clipboard <<Feature Component>> Save 6 <<Feature Component>> Copy Inform Saved Save 1 write Record URI Copy write 2 inform <<Feature Component>> Un/Re-do <<Feature Component>> Cut <<Resource Container>> Un/Re-do Info (URI) consume Redo consume Undo write Record URI Cut write 7 3 Clear URI clear <<Feature Component>> Paste 5 Record URI read Paste : Core Responsibility : Added Responsibility write 4 1st Workshop on Bi-Trans in ABC
Example: document editor <<Feature Component>> Save <<Resource Container>> Clipboard 6 Inform Saved Save 1 <<Feature Component>> Copy write inform Record URI Copy write 2 <<Feature Component>> Un/Re-do <<Feature Component>> Cut consume Redo consume Undo <<Resource Container>> Un/Re-do Info (URI) write Record URI Cut write 3 Clear URI clear 7 <<Feature Component>> Paste 5 Record URI read Paste : Core Responsibility : Added Responsibility write 4 1st Workshop on Bi-Trans in ABC
Example: document editor <<Conceptual Component>> Clipboard <<Conceptual Component>> Save <<Resource Container>> Clipboard << Feature Component>> Save <<Conceptual Component>> URI <<Conceptual Component>> Edit <<Resource Container>> URI <<Feature Component>> Copy <<Conceptual Component>> Un/Re-do <<Feature Component>> Cut <<Feature Component>> Un/Re-do <<Feature Component>> Paste 1st Workshop on Bi-Trans in ABC
Example: document editor <<Resource Container>> Clipboard <<Feature Component>> Save 6 Inform Saved Save <<Feature Component>> Copy 1 write Record URI Copy write 2 inform <<Feature Component>> Cut <<Feature Component>> Un/Re-do <<Resource Container>> Un/Re-do Info (URI) consume write Record URI Cut write Redo consume Undo 3 7 <<Feature Component>> Paste Clear URI clear 5 Record URI read Paste write 1st Workshop on Bi-Trans in ABC 4 : Core Responsibility : Added Responsibility
Example: document editor <<Conceptual Component>> Clipboard <<Conceptual Component>> Save <<Resource Container>> Clipboard << Feature Component>> Save <<Conceptual Component>> Edit <<Conceptual Component>> Un/Re-do <<Feature Component>> Clipboard <<Feature Component>> Clipboard <<Feature Component>> Un/Re-do <<Resource Container>> URI <<Feature Component>> Clipboard 1st Workshop on Bi-Trans in ABC
<<Conceptual Component>> Save <<Conceptual Component>> Clipboard << Feature Component>> Save <<Conceptual Component>> URI <<Resource Container>> Clipboard <<Resource Container>> URI Example: document editor Depend-on <<Infrastructure Component>> Stack Component (Provided by API) Depend-on Depend-on <<Infrastructure Component>> Clipboard Component (Provided by OS) <<Infrastructure Component>> I/O Component (Provided by OS) 1st Workshop on Bi-Trans in ABC
Supporting tool • Provide • Import the feature model • Operationalize feature into responsibilities • Construct the component model • Cluster responsibilities into component • Identify the interaction between components 1st Workshop on Bi-Trans in ABC
Traceability between FM and SA • Responsibility centric • Xml files to trace relation • between feature and responsibilities • between responsibilities and components 1st Workshop on Bi-Trans in ABC
To investigate • How to take advantage of the bi-Trans results • Rule to decompose feature into responsibilities is case by case • Rule to cluster responsibilities into component is case by case • Bi-Trans for documents ? 1st Workshop on Bi-Trans in ABC