Current trends & other topics TDDD05: Component-based software fredag 21 mars 14 Agenda • Current trends • Dependency management • Loose coupling and component software • Enterprise Integration Patterns & Messaging Systems fredag 21 mars 14 Simplicity 2000 Now CORBA Java EE/ICE/Thrift/Protocol Buffers Enterprise Java Beans (EJB) Spring/Tapestry SOAP REST AspectJ Ruby/Python/Reflection Components Systems fredag 21 mars 14 CBSE over time Submissions Citations 800 600 400 200 0 1998 2000 2002 2004 2006 2008 2010 2012 ”This can be a sign that CBSE as a research area becomes less interesting either as it has been integrated as a standard approach in software engineering practice, or that the approach did not succeed to realize its promises.” J. Maras, L. Lednicki, and I. Crnkovic. 15 years of CBSE symposium: Impact on the research community. In Proceedings of the 15th ACM SIGSOFT Symposium on Component Based Software Engineering, CBSE ’12, pages 61–70, New York, NY, USA, 2012. ACM. fredag 21 mars 14 40%! Not$presented$ 0%! Academic$case$study$ Simple$examples$ Experiments$ Industrial$case$study$ Formal$specifica@on$ 39%$ Literature$comparision$ Europe' N.America' Asia' Australia' S.'America' USA' France' Germany' Sweden' Australia' Italy' Canada' Spain' China' 20%! 16%$ Figure 8. Paper distribution by continents and countries In addition to these statistics, we also though that it would be beneficiary to note the top ten research centers contributing in CBSE events – shown in Figure 9. of validation CBSE 2004-2011 STATISTICS l statistics related to the CBSE events y that was built around these events: s, authors’ geographical distributions, h centers. istic ors’ affiliation in three categories: !) d !!!) Private Company, see Figure 7. ge of industrial contribution could be ws that there are strong connections munity and the industry. No'of'publica?ons' 20! 15! 10! 5! 0! ä Figure 9. Top Ten Contributors Research Centers in CBSE From J. Maras, L. Lednicki, and I. Crnkovic. 15 years of CBSE symposium: Impact on the research community. In Proceedings of the 15th ACM SIGSOFT Symposium on Component Based Software Engineering, CBSE ’12, pages 61–70, New York, NY, USA, 2012. ACM. 69 fredag 21 mars 14 40%! Not$presented$ 0%! Academic$case$study$ Simple$examples$ Experiments$ Industrial$case$study$ Formal$specifica@on$ 39%$ Literature$comparision$ Europe' N.America' Asia' Australia' S.'America' USA' France' Germany' Sweden' Australia' Italy' Canada' Spain' China' 20%! 16%$ Figure 8. Paper distribution by continents and countries In addition to these statistics, we also though that it would be beneficiary to note the top ten research centers contributing in CBSE events – shown in Figure 9. of validation CBSE 2004-2011 STATISTICS l statistics related to the CBSE events y that was built around these events: s, authors’ geographical distributions, h centers. istic ors’ affiliation in three categories: !) d !!!) Private Company, see Figure 7. ge of industrial contribution could be ws that there are strong connections munity and the industry. No'of'publica?ons' 20! 15! 10! 5! 0! ä Figure 9. Top Ten Contributors Research Centers in CBSE From J. Maras, L. Lednicki, and I. Crnkovic. 15 years of CBSE symposium: Impact on the research community. In Proceedings of the 15th ACM SIGSOFT Symposium on Component Based Software Engineering, CBSE ’12, pages 61–70, New York, NY, USA, 2012. ACM. 69 fredag 21 mars 14 Dependency management fredag 21 mars 14 fredag 21 mars 14 fredag 21 mars 14 Dependency management • Nodes are concrete or abstract components (abstract nodes have several candidate implementations) • Edges denote relationships such as dependencies, replacements & conflicts fredag 21 mars 14 Dependency management issues • Is a request to modify the current software component graph satisfiable? • Are additions compatible with other components? • Are deletions safe with respect to other dependencies? • Given a component, determine versions of other components we can safely rely on fredag 21 mars 14 Dependency management as satisfiability fredag 21 mars 14 Dependency management as satisfiability (a | b | c) & (d | e | f) ... = TRUE fredag 21 mars 14 Dependency management as satisfiability (a | b | c) & (d | e | f) ... = TRUE (a | b | c) & (-c) & (-b | -a) ... = TRUE fredag 21 mars 14 Dependency management as satisfiability (a | b | c) & (d | e | f) ... = TRUE (a | b | c) & (-c) & (-b | -a) ... = TRUE A requires B provided by B1, B2, B3 Rule: (-A | B1 | B2 | B3) fredag 21 mars 14 Dependency management as satisfiability (a | b | c) & (d | e | f) ... = TRUE (a | b | c) & (-c) & (-b | -a) ... = TRUE A requires B provided by B1, B2, B3 Rule: (-A | B1 | B2 | B3) A conflicts with B provided by B1, B2, B3 3 Rules: (-A | -B1), (-A | -B2), (-A | -B3) fredag 21 mars 14 Dependency management as satisfiability (a | b | c) & (d | e | f) ... = TRUE (a | b | c) & (-c) & (-b | -a) ... = TRUE Rules A requires B provided by B1, B2, B3 Rule: (-A | B1 | B2 | B3) A conflicts with B provided by B1, B2, B3 3 Rules: (-A | -B1), (-A | -B2), (-A | -B3) fredag 21 mars 14 Dependency management issues • Y depends on X >= 1.8. X makes binary incompatible changes from v. 1.9 to v. 2.0... • Can components be installed from local sources as well as from remote? • Should OS-specific dependency management or language-specific be used? fredag 21 mars 14 Software package management systems Name NuGet Environment .Net CLR Format XML Gradle JVM XML dpkg/APT Linux Ar archive Rubygems Ruby Ruby MSI Windows In-file DB BSD Ports OS X/Linux/BSD Makefile ... fredag 21 mars 14 Coupling Loose coupling = weak assumptions fredag 21 mars 14 Coupling Technique Assumptions OO Frameworks •Base classes are stable •Same architectural design (layered/blackboard/...) •No entity overlap occurs •No semantic differences between properties in similar classes •No responsibility conflicts (server/client) Remote Method Invocation •All calls should be synchronous •All types can be converted transparently •Object management is transparent •All method signatures match exactly Loose coupling = weak assumptions fredag 21 mars 14 Coupling Technique Assumptions OO Frameworks •Base classes are stable •Same architectural design (layered/blackboard/...) •No entity overlap occurs •No semantic differences between properties in similar classes •No responsibility conflicts (server/client) Remote Method Invocation •All calls should be synchronous •All types can be converted transparently •Object management is transparent •All method signatures match exactly Loose coupling = weak assumptions fredag 21 mars 14 Coupling Technique Assumptions OO Frameworks •Base classes are stable •Same architectural design (layered/blackboard/...) •No entity overlap occurs •No semantic differences between properties in similar classes •No responsibility conflicts (server/client) Remote Method Invocation •All calls should be synchronous •All types can be converted transparently •Object management is transparent •All method signatures match exactly Loose coupling = weak assumptions fredag 21 mars 14 Enterprise Integration Patterns fredag 21 mars 14 Messaging system Sender Application Message Channel fredag 21 mars 14 Receiver Application Aspects of Messaging Systems Aspect Header Body Security x x Routing x Metadata x Subscription Policy fredag 21 mars 14 x x x x Messaging systems fredag 21 mars 14 Messaging systems Formats fredag 21 mars 14 XML JSON Messaging systems Protocols Formats fredag 21 mars 14 XMPP DDS XML STOMP AMQP JSON Messaging systems Services Routing Protocols XMPP Formats fredag 21 mars 14 Queueing DDS XML Transformation STOMP AMQP JSON Messaging systems Implementations Services Routing Protocols XMPP Formats fredag 21 mars 14 Queueing DDS XML Transformation STOMP AMQP JSON Messaging systems Implementations JMS Services Routing Protocols XMPP Formats fredag 21 mars 14 Queueing DDS XML Transformation STOMP AMQP JSON Messaging systems Implementations Windows Azure Service Bus JMS Services Routing Protocols XMPP Formats fredag 21 mars 14 Queueing DDS XML Transformation STOMP AMQP JSON Messaging systems Just some examples Implementations JMS ActiveMQ Services Routing Protocols XMPP Formats fredag 21 mars 14 Queueing DDS XML Windows Azure Service Bus Transformation STOMP AMQP JSON AMQP: Advanced Message Queueing Protocol Publisher publishes Exchange routes Queue consumes Consumer AMQP Broker https://www.rabbitmq.com/tutorials/amqp-concepts.html fredag 21 mars 14 Publisher publishes Exchange routes AMQP Broker fredag 21 mars 14 Queue consumes Consumer Publisher publishes Exchange routes AMQP Broker fredag 21 mars 14 Queue consumes Consumer fredag 21 mars 14 fredag 21 mars 14 Publisher publishes Exchange routes Queue consumes AQMP ~ UDP Unicast fredag 21 mars 14 Consumer Exchange Publisher publishes Exchange routes AQMP Queue consumes Consumer Exchange (2) ~ UDP Broadcast fredag 21 mars 14 Publisher publishes Exchange routes AMQP Broker fredag 21 mars 14 Queue consumes Consumer Publisher publishes Exchange routes AMQP Broker fredag 21 mars 14 Queue consumes Consumer fredag 21 mars 14 fredag 21 mars 14 Publisher publishes Exchange routes Queue consumes Consumer Queue AQMP Name Durability Auto-deleted Exclusive Extra arguments fredag 21 mars 14 identifier Should it survive a broker restart? Deleted if no consumer subscribes? Shared between connections? Broker-specific features AMQP Connections fredag 21 mars 14 AMQP Connections TCP Connection fredag 21 mars 14 AMQP Connections SSL Connection TCP Connection fredag 21 mars 14 AMQP Connections n 1 fredag 21 mars 14 AMQP AMQP AMQP Connection Connection Connection SSL Connection TCP Connection AMQP Summary • Extensible • Standardized (by OASIS) • Fairly mature • Requires asynchronous processing • A new type of infrastructure fredag 21 mars 14