In this blog I write posts and more posts about SOA, ESBs, RIA… …all these subjects and terms are related to Software Architecture. But, what is software architecture? Besides definition that you can find at Wikipedia, there is an excellent source of many definitions at SEI.CMU website. SEI is the Software Engineering Institute at Carnegie Mellon University.
Below some examples:
- First, architecture defines elements. The architecture embodies information about how the elements relate to each other. This means that architecture specifically omits certain information about elements that does not pertain to their interaction. Thus, an architecture is foremost an abstraction of a system that suppresses details of elements that do not affect how they use, are used by, relate to, or interact with other elements. In nearly all modern systems, elements interact with each other by means of interfaces that partition details about an element into public and private parts. Architecture is concerned with the public side of this division; private details of elements—details having to do solely with internal implementation—are not architectural
- Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution (note from Davi: this is my best definition ever)
- A software system architecture comprises
- A collection of software and system components, connections, and constraints.
- A collection of system stakeholders’ need statements.
- A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders’ need statements.
- [Crispen 94]: An Architecture, as we intend to use the term, consists of (a) a partitioning strategy and (b) a coordination strategy. The partitioning strategy leads to dividing the entire system in discrete, non-overlapping parts or components. The coordination strategy leads to explicitly defined interfaces between those parts.
To be correct, the article’s tittle is “RIA renaissance versus JSF dark ages?“, from SearchWebServices.com. In this post I just want to write some excerpts:
- “Developers have a choice of tools and technologies for RIA, including Flash from Adobe Systems Inc. and the more generic Ajax, and they can even mix and match as best suits individual projects, he said during a Burton telebriefing on Tuesday. But they need to beware of tools and technologies that are inflexible. The theme of the briefing, “Build for Today, Architect for Tomorrow,” was that architects and developers should select technologies and approaches to today’s projects that are flexible, agile and not too complex, so that today’s application can be modified to fit future needs.”
- “Our confidence is pretty weak in JSF in general because we continue to get feedback from customers saying that the platform’s too complicated…”
- “…Using Web frameworks like Shale and JSF and Struts to do RIA works, but it’s inflexible. Because your interface is being generated rather than being coded, you don’t have as much flexibility on how it’s presented…”
- “What we’re talking about is not Java in general, but a particular aspect of Java, which is the Java enterprise edition and that we do believe is overly complex to the point where it actually hinders productivity.”
- “You can use them in combination. Many times we find that Ajax is the most powerful solution especially for enhancing existing Web apps, taking existing Web sites and adding some graphical capabilities to them. But sometimes it falls short and Flash or Java applets might be a better choice.”
I completely agree.
JBossESB 4.0 was just released. According to this news the next version (4.x?, 5.0?…) will be ready later year (2007). Below some features in this release:
- support for general notification framework. Transports supported include JMS (JBossMQ, JBoss Messaging and MQSeries), email, database or file system.
- trailblazer example.
- many quickstart examples to get you going.
- support for data transformations using Smooks or XSLT.
- listeners and action model to support loose-coupling of interaction steps.
- content based routing using JBoss Rules or XPath.
- support for registries, using JAX-R and jUDDI out-of-the-box.
- gateways to allow non-ESB aware traffic to flow into the ESB.
- high performance and reliability (in use by a large insurance company for 3 years).(*)
* probably it refers to the second-largest insurance company in Canada, where this ESB handles data from 3,000 employers and more that 2,0 million customers.
See an abstract view of ESB/SOA infrastructure:
Times from times I have read about standards like SCA and SDO in a SOA environment. This article was written by three IBM guys and it presents an overview of SDA and SDO.
Apache Tuscany project aims to create a infrastructure that simplifies the development of SOA-based systems. This project uses independent technology and standard that together provide:
- SCA: Service Component Architecture (SCA) enables composition of service networks through assembly of existing and new services;
- SDO: Service Data Object (SDO) provides a uniform interface for handling different forms of data, including XML documents, that can exist in a network of services and provides the mechanism for tracking changes;
- DAS: Data Access Service (DAS) provides a simple SDO interface to relational databases.
(image from Apache Tuscany website)
These specifications can be found at OSOA web site and Apache Tuscany provides input for them.
Here the SCA and SDO definitions from Tucany Project:
- SCA: “SCA provides developers with a simple, business-oriented, model for creating systems based on a service oriented architecture. It manages infrastructure complexities such as transactions, security and reliable messaging and frees the developer to focus on providing business function. The solutions developed using SCA can be changed declaratively to alter infrastructure capabilities or application configuration properties to meet changing business requirements. For example, infrastructure capabilities such as security policies may change from one environment to another and can be changed without the need for re-implementation. Application configuration may also be changed in this way, for example, the currency quoted by a stock quote feed may be changed though the SCA configuration mechanism.”
- SDO: “Service Data Objects simplify and unify SOA data access architecture and code in a heterogeneous environment. SDO is programming language neutral. Within Tuscany it is being implemented in Java and in C++.”