Sam Supakkul Titat Software LLC ssupakkul@ieee
description
Transcript of Sam Supakkul Titat Software LLC ssupakkul@ieee
Representing, Organizing and Reusing Knowledge
about
Functional and Non-Functional Concerns
during Software Development
Sam SupakkulTitat Software [email protected]
Lawrence ChungThe University of Texas at
Decisions during software development (implementation)
Student Course
class StudentCourse { A a_objs [] ; B b_objs [];}
class Student { Course courses[];}class Course { Student students[];}
class StudentCourse { List a_objs ; List b_objs;}
class Student { Map courses;}
class Course { Map students;}
many more alternatives
…
associationclass
objects on both sides
linked list hash table
Decisions during software development (design)
DeviceInterface AlarmManager
send-alarm
DeviceInterface
sendAlarm
AlarmManager
DeviceInterface PCQ
deposit
AlarmManager
remove
DeviceInterface MOM
send
AlarmManager
push
direct method invocation
PCQ (Producer-Consumer-Queue)intermediate asynchronous buffer
MOM Messaging middle-ware)
But, alternatives and the decision rationale not usually captured
So what? What’s the problem?
Evidence/justifications for Why certain solutions were chosen? What else were considered? Why they were chosen over other alternatives?
Ok, what do we do then?
represent and capture knowledge→ to record alternatives & justify decisions
Once knowledge can be captured organize knowledge reuse knowledge
Representing knowledgeA goal-oriented technique
+
_
X
Goal
Solution 1 Solution 2
Criteria
+
X
Goal
Solution 1 Solution 2
Criteria
++ +
_
X
Goal
Solution 1 Solution 2
Criteria 1
+
X
Solution 3 Solution 4
Criteria 2
++
+_
X
Goal
Solution 1 Solution 2
Criteria
Argument AGAINST
Argument FOR
Counter-argument
+ _ _
How do we represent knowledge in this example
Student Course
class StudentCourse { A a_objs [] ; B b_objs [];}
class Student { Course courses[];}class Course { Student students[];}
class StudentCourse { List a_objs ; List b_objs;}
class Student { Map courses;}
class Course { Map students;}
many more alternatives
…
Alternatives and decision rationale
Student Course* *
Implementation[Association]
Association Class [Association]
ObjectOnOneEnd [Association]
ObjectOnBoth Ends [Association]
Time Performance
Linkedlist [Association] HashTable
[Association]
SOME-
++
X X
Array [Association]
X X
++
Claim[“ Not good for update performance”]
Claim[“Not good for access from opposite end objects”]
Claim[“Not good for update as arrays need to be resized”]
Claim[“Not good for access as objects in hash table may not be readily traversable and in a desirable order”]
++ +
SOME- SOME-
CodeRefinement
Apply to other phases
EquipmentCost
Password
Biometrics
+_
AvailabilityIntegrity
Confidentiality
SecurityPresentationTier
BusinessLogicTier
DataTier
System
UserInterface
DataAccess
UserRequest
sd ViewSearchProducts
opt
Visitor
PresentationTier
search(criteria)
BusinesLogicTier
DataTier
search(criteria)query(criteria)
resultresult
result
[Visitor selected product]
select getProductDetails getProduct
Details
productDetails
productDetailsdisplayProduct
Visitor
Customer
ViewSearch Books
BuyBooks
OnlineBookstore
«extend»(BuySelected)
GetRecommendations
«include»
Login
«depend»
Performance [LargeActorVolume]
Time [LargeActorVolume]
Space [LargeActorVolume]
ResponseTime [LargeActorVolume]
Throughput [LargeActorVolume]
RespTime [LargeConnVol]
RespTime [LargeRequestVol]
RespTime [LargeDataVol]
+
3-TierImplicit
Invocation(messaging)
_
2-Tier
_
Scalability[LargeActorVolume]
eql
Relevance
Confidentiality[Information]
Confidentiality[Activity]
Authentication
Encryption
PKI
Usability
_
Claim[“Transparent for its integrated with most browsers”]
++ ++
++
++
++
++
SSL
SSL{system,interface}
LoginUsecase {include}
X
X
... ...
...
...
X X
... ...
_
+
Organizing knowledgeobject-oriented organization
Method
Simple Method
Pattern
Functional Operationalization
Method
Model Refinement
Method
Model Mapping Method
RefinementMethod
Operationalization Method
Argumentation Method
*
CorrelationRule
Meta Method
Method
Method Instance
Instantiate
Instantiate
generalization/specialization
aggregation/decomposition
classification/instantiation
Organization example
Goal
Solution 2
_
Criteria
+
Criteria
+
_
X
Goal
Solution 1 Solution 2
Criteria
Goal
Solution 1
K-graph pattern
Operationalizationmethod
Operationalizationmethod
Correlationrule
Correlationrule
Organization example (larger scale)
Visitor GetRecommendations
pat OnlineBookstore
pat e-Commerce
pat OnlineBookstoreFRs
e-CommerceSystem
Visitor
ViewSearchProducts
BuyProducts
Customer
BuyProductsInf
pat e-CommerceFRs
pat e-CommerceNFRs
e-CommerceSystem
Service
User
Scalability!
Security!
ServiceInterface
Relevance
pat OnlineBookstoreNFRs
User Service
pat ConfidentialitySolutions
Password
Biometrics
+_
security.Confidentiality[Information]
security.Confidentiality
[Activity]
Authentication
Encryption
SSL{system,interface}
PKI
Usability
_
Claim[“Transparent for its integrated with most browsers”]
++ ++
++
++
++
++
LoginUsecase {include}
pat SecurityNFR
Availability IntegrityConfidentiality
Security
Confidentiality[Information]
Confidentiality[Activity]
eql
pat Scalability
Time [LargeActorVolume]
Space [LargeActorVolume]
ResponseTime [LargeActorVolume]
Throughput [LargeActorVolume]
RespTime [LargeConnVol]
RespTime [LargeRequestVol]
RespTime [LargeDataVol]
Performance [LargeActorVolume]
Scalability[LargeActorVolume]
pat RespTime-ReqSolutions
+
3-TierImplicit
Invocation(messaging)
_
2-Tier
_
scalability.RespTime[LargetRequestVol}
/BuyProductsInf{redefines ServiceInterface}/Customer{redefines User}
/etRecommendations{redefines Service}/Customer{redefines User}
scalability
security
Composing patterns to form larger grain patterns …. to application level
e-Commerce pattern
OnlineBookstore pattern
Reusing knowledge
Student Course* *
TimePerformance!!
methods/patterns catalog
Process
manual or model-driven
Product
class StudentCourse { java.util.List studentByCourse; java.util.List courseByStudent;}
Code
Method Application
Source Model
NFRs
Method Knowledge Base
Conclusion A goal-oriented technique to explicitly
record alternatives decision rationale
Object-oriented technique to organize by generalization aggregation classification
For manual or model-driven reuse
Future work formalization and integration with UML tool support case studies
Thank you !
Representing, Organizing and Reusing Knowledge
about
Functional and Non-Functional Concerns
during Software Development Sam Supakkul
Titat Software [email protected]
Lawrence ChungThe University of Texas at