1 / 27

Analysis of the Trade-Offs and Benefits of Using the Publisher-Subscriber Design Pattern

Analysis of the Trade-Offs and Benefits of Using the Publisher-Subscriber Design Pattern. TECHNICAL PAPER PRESENTATION By: Srihitha Yerabaka Advisor: Prof. Ivan Marsic. Introduction. Design patterns Describe a successful proven solution to problems that occur repeatedly

jwight
Download Presentation

Analysis of the Trade-Offs and Benefits of Using the Publisher-Subscriber Design Pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Analysis of the Trade-Offs and Benefits of Using the Publisher-Subscriber Design Pattern TECHNICAL PAPER PRESENTATION By: Srihitha Yerabaka Advisor: Prof. Ivan Marsic

  2. Introduction • Design patterns • Describe a successful proven solution to problems that occur repeatedly • Using them promotes reuse of code • Assists programmers in reaching the solution quickly • We attempt to prove that • Programs written with design patterns are more well structured and more efficient compared to code written without design patterns

  3. Introduction • We implement a home access control system • One version without any design patterns • Second version with the publisher-subscriber pattern • Both have the same exact functionality • To analyze the benefits and tradeoffs, we apply: • Cohesion metrics • Coupling metrics • Structural Complexity using Structure101

  4. Outline • Introduction • Design & Implementation • Without Design Patterns • With Publisher-Subscriber Pattern • Evaluation & Results • Coupling • Cohesion • Structural Complexity • Conclusion

  5. Outline • Introduction • Design & Implementation • Without Design Patterns • With Publisher-Subscriber Pattern • Evaluation & Results • Coupling • Cohesion • Structural Complexity • Conclusion

  6. Home Access Control System

  7. Without Design Patterns

  8. Publisher-Subscriber • We implement the second version with the Publisher-Subscriber (Pub-Sub) Pattern • Behavioral Pattern • Identifies common communication patterns between objects and realize them • Increases flexibility in carrying out communication • Publisher: • Knows event source and list of subscribers • Registers and unregisters subscribers and notifies them about events • Subscriber: • Knows publisher • Processes received event notifications

  9. With Design Patterns

  10. Outline • Introduction • Design & Implementation • Without Design Patterns • With Publisher-Subscriber Pattern • Evaluation & Results • Coupling • Cohesion • Structural Complexity • Conclusion

  11. Coupling Metrics • Measure of how interdependent different modules are on each other • High coupling: • occurs when one module modifies or relies on the internal workings of another module. • Low coupling: • occurs when there is no communication at all between different modules in a program. • Coupling is contrasted with cohesion. • Both are ordinal measurements and are defined as "high" or "low". • It is most desirable to achieve low coupling and high cohesion.

  12. Coupling • Observing the code tell us that the version with the Publisher-Subscriber pattern has lower coupling compared to the original • Original version: • Controller instantiates all the other classes and invokes their methods. • This increases the dependency between these modules and thus increases coupling. • With the Publisher-Subscriber: • The dependency with the Controller is avoided since the modules all subscribe to the KeyChecker • The Controller no longer needs or has access to the internal methods of the other modules. This reduces coupling.

  13. Dependency Trees from Coupling Analyzer

  14. Cohesion Metric • Measure of relatedness or consistency in the functionality of a software component • In an object-oriented paradigm, a class can be a component, the data can be attributes and the methods can be parts. • High cohesion: • All attributes and parts work together and are inter-related • Modules are really robust, reliable, reusable, and easy to understand • Low cohesion: • Not all attributes and parts work together • Associated with undesirable traits such as being difficult to maintain, test, reuse and understand

  15. SCOM • Many formulas exist for cohesion metrics • However, many of them define classes as “cohesive” or “not cohesive” • Do not make a comparative analysis of the degree of cohesiveness • Makes it hard to compare two cohesive, or two non cohesive classes • Quality Analysis of Object Oriented Cohesion Metrics • P. Joshi, R. K. Joshi • Conf. Quality of Information and Communications Technology, 2010 • A sensitive metric of class cohesion • L. Fernández and R. Pena • International Journal of Information Theories and Applications, 2006

  16. Formulas for SCOM metric • {A1,…,Aa} and {M1….Mm} are the set of attributes and methods of the class • Ci,j is the connection intensity • αi,j is the weight factor • Ik is the subset of attributes used by a given method Mk • cardis the cardinality: measure of the number of elements of the set. • ais the total number of instance attributes

  17. Cohesion metric results with SCOM

  18. With Design Patterns

  19. Cohesion • Based on the Cohesion Metric numbers calculated • Since the original design was already highly cohesive, they wasn’t much scope to increase it further. • Reduced cohesion in Publisher-Subscriber version of ‘KeyChecker’ is a result of including the implemented publisher interface methods. • Methods of this type in general either have no attributes or only have attributes that do not interact much with the other local methods • understandable that the cohesion was slightly lower than the original. • ‘AlarmCtrl’, ‘LockCtrl’, ‘LightCtrl’ are also affected in a similar way. • Controller is not affected because it does not use any attributes when implemented in the controller. • SCOM requires that such methods and attributes not be counted in Cohesion measurements.

  20. Structural Complexity • Structure101: excessive structural complexity, XS • Provides a comprehensive view of structural complexity of a software system. • XS = (degree of tangle violations) * (degree of fat violations) • Degree of violation due to tangles • Tangles are cyclic dependencies between packages • Calculated by identifying the minimal feedback set (MFS) which is the minimum set of edges that must be removed from a dependency graph of a software system to eliminate cyclic dependencies. • Degree of violation due to fat • Computed by counting the total number of dependencies between packages.

  21. Structure101 Results

  22. Structure101 Results

  23. Structure101 • Based on the dependency graphs and the Tangles and Fat calculated, we can conclude that • Introducing the Publisher-Subscriber design pattern does not introduce any unnecessary complexity into the code • The Tangles and Fat metrics are exactly the same for both versions • Since this was a fairly small application compared to most real world applications, we cannot be entirely sure how structure 101 would rate a much bigger application • Looking at the current results though, since the Publisher-Subscriber pattern in itself did not result in any increased complexity, we could assume that the results will be similar regardless of the complexity of the original code. • Introducing the Publisher-Subscriber interface into an application could possibly reduce structural complexity if it was originally present

  24. Outline • Introduction • Design & Implementation • Without Design Patterns • With Publisher-Subscriber Pattern • Evaluation & Results • Coupling • Cohesion • Structural Complexity • Conclusion

  25. Conclusion • Based on the results, we see that • using the Publisher-Subscriber design pattern does result in low coupling making it a desirable choice • However, the cohesion metric results are not very encouraging • classes implementing the publisher and the subscriber interfaces have to account for the interface methods • This brings the cohesion down, since they rarely interact with other methods or attributes in the class • The results from Structure101 however are more encouraging • There were no Tangles at all and the only fat present in both versions was in the HomeAccessControlSystem “main()” method • Thisshows us that the code is not unnecessarily complex even with the introduction of the Design Pattern.

  26. Conclusion & Future Work • The overhead and trade-offs created by implementing a Publisher-Subscriber interface are outweighed by the benefits it provides. • According to the Structure101 results, there are no major trade-offs in terms of code complexity and the coupling and dependency go down • In a bigger real world application, introducing the publisher-subscriber interface could have more of an impact • Improving coupling • Reducing fat according to the Structure101 framework • By reducing dependencies between classes • In future, more patterns could be tested to make a more thorough analysis and to see if this result is universal for all design patterns.

  27. **The End**Thank You!

More Related