Manali Bhole and Therapon Skotiniotis* Problem: Loss of Use Case Modularity from Analysis and Design phase: well-defined structure involving Actors and Use Cases. to Implementation phase: use cases get dissolved.

Download Report

Transcript Manali Bhole and Therapon Skotiniotis* Problem: Loss of Use Case Modularity from Analysis and Design phase: well-defined structure involving Actors and Use Cases. to Implementation phase: use cases get dissolved.

Manali Bhole and Therapon Skotiniotis*
Problem:
Loss of Use Case
Modularity
from
Analysis and Design phase:
well-defined structure involving
Actors and Use Cases.
to
Implementation phase:
use cases get dissolved into multiple,
overlapping software modules.
Results:
Use Cases to Code
mapping allows for:
Northeastern University, Boston, USA.
{manali, skotthe}@ccs.neu.edu
• Easier traceability of
stakeholders requirements.
UML Use Case
• Iterative approach to development
and future evolution.
Class Transformations
<<actor>>
Class Analyzer
Check Equivalence
_________________
ObjectEquivalence
<<includes>>
Find Part Clusters
__________________
checkPartClusters
• Easier validation of implementation
against requirements.
<<extends>>
<<extends>>
Use Cases
Software Modules
WeakExtension and
Extension
___________________________
extends
weakExtends
• Increase understandability of design
through inspection of implementation.
<<extends>>
• Easier to show that implementation
covers all use cases (scenarios).
<<extends>>
Optional Parts
Implementation
phase
Extension, Weak Extension
Base
Optional Parts
Implementation
Tangling & Scattering of use cases
in software modules.
Oriented Software The Demeter Method
with propagation patterns”. PWS
Publishing Company, Boston, 1996.
[3] Bashar Nuseibeh and Steve
Easterbrook . “Requirements
Engineering: A roadmap”.
ICSE 2000.
Base Program
Extension Points
Join Points
Extended Use Case
Aspect Advice
ObjectEquivalence
+objectEquivalence(in pc1, in pc2) : bool
References:
[2] Karl J. Lieberherr, “Adaptive Object
Base Use Case
Mapping «extends» from Use Cases to AOP
1
1
Future Work:
PartClusters
[1] Ivar Jacobson, “Use cases and
Aspects -- Working together”. Invited Talk
at AOSD 2003, Boston, USA.
Design Space
Implementation Space
(AOP)
+get_partClusters(in Cd_graph)
Extension
<<Aspect>>
pointcut checkExtensions(Map pc1, Map pc2):
call(* Main.objectEquivalent(Map, Map))
&& args(pc1,pc2);
//Advice
after(Map pc1, Map pc2) returning(boolean
flag): checkExtensions(pc1,pc2){
}
boolean weakExtension(Map pc1,Map pc2){... }
boolean extensionRelation(Map pc1, Map
pc2){...}
OptionalParts
<<Aspect>>
pointcut checkObjectEquivalent(Map pc1, Map pc2):
execution(* Main.objectEquivalent(Map, Map))
&& args(pc1, pc2);
pointcut checkWeakExtension(Map pc1, Map pc2):
execution(* weakExtension(Map, Map))
&& args(pc1, pc2);
pointcut checkExtensionRelation(Map pc1, Map pc2):
execution(* extensionRelation(Map,Map))
&& args(pc1,pc2);
pointcut opPartClusters(Cd_graph cdg):
execution(*PartClusters.get_partClusters(Cd_graph)
&& args(cdg);
//Advice
boolean around(Map pc1, Map pc2):
checkObjectEquivalent(pc1, pc2){ … }
boolean around(Map pc1, Map pc2):
checkWeakExtension(pc1, pc2){ … }
boolean around(Map pc1, Map pc2):
checkExtensionRelation(pc1, pc2){ … }
Map around(Cd_graph cdg):checkParts(cdg) { … }
* Part of this work has been funded by ABB Switzerland.
• Pointcut expressiveness vs. use case
extensions needed.
• Attempt more complicated
scenario flows and re-assess
results.
• Add non-functional
requirements.