Welcome!

Agile Computing Authors: ManageEngine IT Matters, Liz McMillan, Pat Romanski, Elizabeth White, Xenia von Wedel

Related Topics: Java IoT, SYS-CON MEDIA

Java IoT: Article

i-Technology Viewpoint: Is Model Driven Architecture Coming Into Its Own?

MDA has been with us for years; will the arrival of meta-data bring it closer to the mainstream?

JDJ's Bill Dudney (pictured) writes: With the popularity of Object Relational Mapping tools like Hibernate and Cayenne, developers are more often than other giving control of some of their code to models. Will this help raise MDA into the mainstream? Will MDA take its hoped-for place as the next level of abstraction for developers?

What about MDA

Model Driven Architecture, also known as MDA, started in late 2000 with a white paper. Basically the idea is that we define the software we want to build in sophisticated models that capture the detail of the application. Then from these abstract models a series of transformations is applied to turn that abstract model into a running application. The highest-level model is referred to as a Platform Independent Model (PIM). There is an even more abstract model called a Computational Independent Model but we won't discuss that model. The PIM is, as the name suggests, independent of the deployment platform (i.e. .NET Java EE 5 etc.) In this model the business is specified, classes that make up the domain are fleshed out and specified. This model is then transformed into one or more Platform Specific Models (PSM) that can be elaborated with more detail specific to the platform. From the PSM a running application can be generated.

Now of course there is a need to put in your own business logic. Most tools today provide a way for you to edit the 'business logic' apart from the fully generated code. For example AndroMDA (an open source MDA tool) will generate some files only once (where your business logic is written). Other tools like OptimalJ take a different approach giving you code you can edit and 'protected blocks' that are part of the generated code. I'm sure there are other approaches as well that are taken by other tools.

The Promise

  • Productivity - the ability to raise the level of abstraction so that developers can become more productive is one of the greatest promises of MDA. Just as Java raised the level of abstraction from C/C++ so MDA raises the level abstraction for Java EE / .NET.
  • Portability - greater ease of migration between various technologies (such as .NET to Java EE) or between different versions of the same technology (i.e. EJB 2.1 to EJB 3.0). Once developed your PIM is the repository of knowledge about your application, so moving to another underlying technology is 'easy'.
  • Consistency - greater consistency of application architectural principals. This feature is hard to ignore. Many enterprise level projects have divergent architectures on the same project. Maintenance is very difficult in these projects to be sure.

The Problems

At its core MDA is about using meta-data to drive program creation. The idea is that if we can develop a sophisticated enough model to express software then we can fully generate the actual running program from the model (or even create a virtual machine that could execute the model). The problem with taking this idea too far of course is that we end up with just another platform. Probably even worse though is that it's 'programming with pictures' which was already tried at least once in the late 80s and failed miserably. Few are willing to try programming with pictures again.

Many proponents of the MDA approach like to say that given a PIM with sufficient detail one would be free to move between .NET, Java EE or to something like Hibernate & Spring assuming that you had the proper set of transformations for these other PSMs. While this is a great marketing pitch for MDA and the PIM it is just not that straightforward. A PSM has too much platform-specific knowledge buried in it to simply move between different technologies. After all the PSM is where the business logic that makes the application unique actually resides. In order to make this move all that logic must be changed to fit into the new target technology.

Finally, and probably most significantly, MDA must overcome the grass roots resistance to the idea. Developers like to develop. They don't like to have control taken from them. There is a fundamental distrust of code generation and a resistance to this type of abstraction.

Sea-Change?

There are a couple of moves afoot that make me think we might be on the verge of a change in perception about MDA. The first is a more pragmatic approach being taken by vendors. Instead of expecting developers to program in pictures, many vendors are taking a more pragmatic approach. Developers are expected to build more familiar UML class diagrams and annotate them. Few are expecting a full blown executable model.

Second and more significantly is the emergence of meta-data as a normal part of every day life for Java developers. Several years ago the XDoclet project started bringing meta-data into the mainstream. The 'killer-app' for XDoclet was that EJBs only needed the bean class, the rest of the required files (remote/local interfaces, deployment descriptor entries, value objects etc.) were updated/generated automatically by XDoclet. Many developers embraced this approach because of the reduced tedious work that had to be done. With XDoclet, developers no longer have to mess with keeping the remote and local interfaces in-sync with the implementation methods. Instead XDoclet automatically generates the remote and local interfaces.

At this point many MDA vendors and proponents should be saying to themselves, hey that is exactly what we have been doing for years! And it is, the difference is no visual model. The developers write the meta-data that would normally be in stereotypes and/or tagged values right into their code. For many this bridges a semantic gap that is missing in the visual modeling paradigm.

Back to the meta-data being more 'normal'. The other major change that has recently happened that brings meta-data front and center is the addition of Annotations to the Java SE 5 platform and especially the use of this meta-data in Java EE 5. Developers will be using meta-data on a daily basis.

Another thing that developers typically don't like about the MDA approach is the feeling of lack of control over what is generated. I have often heard the assertion that the developer could do better than the code generator and other such comments. While it is probably true that a hand-crafted piece of code would be 'better' in many respects, it is also true that the generated code can be done in a fraction of the time and is 'good enough'.

An area where developers have been resistant to adopt a meta-data driven approach in the past has been persistence. The same argument of 'I could do better' was used quite often. More recently though it seems that Object Relational Mapping frameworks like Hibernate and/or Cayenne have been gaining momentum. On the surface you might be thinking that I'm nuts to draw a comparison between R/O Mapping and MDA but the comparison is not that far off. Most MDA tools rely on code generation instead of a framework but basically it's the same kind of thing. Hibernate has a framework but could just as well generate code at run time (or imagine aspects being attached to your POJOs). Either way (framework or code generation) meta-data is driving the way objects are mapped to rows in tables.

With the current set of R/O mapping tools a lot of control is removed from the developer; what exact SQL is executed is no longer in the developers direct control. However many are willing to give up this control for the increased productivity gain allowed by using something like Hibernate. Who really wants to write all that JDBC code anyway?

So where does this leave us? Will MDA take its hoped -for place as the next level of abstraction for developers? Will MDA become the next best thing that is relegated to the dustbin of history? Hard to say for sure, one thing is for certain though, meta-data is becoming more a part of developers everyday lives.

More Stories By Bill Dudney

Bill Dudney is Editor-in-Chief of Eclipse Developer's Journal and serves too as JDJ's Eclipse editor. He is a Practice Leader with Virtuas Solutions and has been doing Java development since late 1996 after he downloaded his first copy of the JDK. Prior to Virtuas, Bill worked for InLine Software on the UML bridge that tied UML Models in Rational Rose and later XMI to the InLine suite of tools. Prior to getting hooked on Java he built software on NeXTStep (precursor to Apple's OSX). He has roughly 15 years of distributed software development experience starting at NASA building software to manage the mass properties of the Space Shuttle.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Joe Gaber 10/15/05 07:27:38 PM EDT

Here are comments related to snippets of your article:

1. "Developers like to develop" - this is true; however, developers have developed using a wide variety of programming languages and OCL (instrumental to the fulfillment of MDA) is another programming language (in fact its similar to the much aclaimed language smalltalk), and in the same way that Java didn't become a big deal until Java 2, OCL and UML (now at 2.0) are likely to now gain the same acceptance. Also, see my blog for a way for developers and architects to work in pairs in a version of Agile Modeling that I am professing is the missing link between modeling and programming collaboration.

2. "There is a fundamental distrust of code generation and a resistance to this type of abstraction" - isn't any 3rd GL (i.e., Java) an abstraction, or two, from 0s and 1s?? And, doesn't the entire J2EE array of APIs provide even more abstraction from code writting?? And, doesn't every IDE on the market today provide all types of functionality that helps write and refactor code?? Conclusion: If it wasn't for increasing abstractions from the 0s and 1s a CPU uses, we would be producing the same amount of 0s and 1s today as 30 years ago. The fact that we (developers) produce vastly greater amounts of machine code through the "abstract" languages and tools of today then we did before is what produces "productivity". At the point productivity ceases to increase, programming (wirtting code) becomes a commodity given to the lowest bidder.

3. "The developers write the meta-data that would normally be in stereotypes and/or tagged values right into their code. For many this bridges a semantic gap that is missing in the visual modeling paradigm" - whether you write meta-data in the code or in a model it only matters from a business standpoint not an engineering standpoint. What I mean by this is that business models far outlive the applications that fulfill the business's objective. Modeling the business domain, its processes, and transforming that into code provides the business with a much longer lived artifact than code. You can use XDoclet, Java 5 annotation, or an external transformation/mapping file (as with MDA), it doesn't matter, the fact is you are still using the meta-data to generate specific code. Also, as far as the idea of a "visual modeling paradigm", once you add the rich semantics into the visual elements of the model, you know have much more than pictures. You have a programmically rich artifact with much more power than just written code.

4. "Another thing that developers typically don't like about the MDA approach is the feeling of lack of control over what is generated" - in the case of a MDA tool like the open-source Andromda, what is generated is exactly what you specify in the templates, metafades, and specific cartridge descripter files used. All of which is under the complete control of whoever the busines decides, including developers. I am currently writting a cartridge for Andromda to generate specific applications using the Sprng Framework, including Spring's MVC implementation as well as to include DWR(AJAX) integrated with Spring. There is no restrictions to the way I decide for the code to be generated as I am the one creating the templates that produce the code.

The arguements about how MDA, CASE tools, CORBA, Meta-data, etc have not been embraced in the past is an indication of the future of MDA is, IMO, absurd. In order for MDA to succeed, there has had to be, and continues to be, numerous different technologies and methodologies to converge. MDA is in its infancy in terms of being a practical approach to software development. The fact is that MDA is highly dependent upon tools, and quite frankly, no tool of the past has had the power, functionality, vision, etc to truly meet the needs of MDA. That is changing as we speak, with virtually every major tool vendor, and the two leading OS IDEs (Eclipse and Netbeans), introducing new products, or projects, which include UML modeling, OCL, BPM, and MDA functionality all wrapped up into a compete high productivity tool.

Best regards,

@ThingsExpo Stories
Businesses and business units of all sizes can benefit from cloud computing, but many don't want the cost, performance and security concerns of public cloud nor the complexity of building their own private clouds. Today, some cloud vendors are using artificial intelligence (AI) to simplify cloud deployment and management. In his session at 20th Cloud Expo, Ajay Gulati, Co-founder and CEO of ZeroStack, will discuss how AI can simplify cloud operations. He will cover the following topics: why clou...
The Internet of Things (IoT) promises to simplify and streamline our lives by automating routine tasks that distract us from our goals. This promise is based on the ubiquitous deployment of smart, connected devices that link everything from industrial control systems to automobiles to refrigerators. Unfortunately, comparatively few of the devices currently deployed have been developed with an eye toward security, and as the DDoS attacks of late October 2016 have demonstrated, this oversight can ...
DevOps is being widely accepted (if not fully adopted) as essential in enterprise IT. But as Enterprise DevOps gains maturity, expands scope, and increases velocity, the need for data-driven decisions across teams becomes more acute. DevOps teams in any modern business must wrangle the ‘digital exhaust’ from the delivery toolchain, "pervasive" and "cognitive" computing, APIs and services, mobile devices and applications, the Internet of Things, and now even blockchain. In this power panel at @...
Internet-of-Things discussions can end up either going down the consumer gadget rabbit hole or focused on the sort of data logging that industrial manufacturers have been doing forever. However, in fact, companies today are already using IoT data both to optimize their operational technology and to improve the experience of customer interactions in novel ways. In his session at @ThingsExpo, Gordon Haff, Red Hat Technology Evangelist, will share examples from a wide range of industries – includin...
"We build IoT infrastructure products - when you have to integrate different devices, different systems and cloud you have to build an application to do that but we eliminate the need to build an application. Our products can integrate any device, any system, any cloud regardless of protocol," explained Peter Jung, Chief Product Officer at Pulzze Systems, in this SYS-CON.tv interview at @ThingsExpo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo 2016 in New York. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place June 6-8, 2017, at the Javits Center in New York City, New York, is co-located with 20th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry p...
"We're a cybersecurity firm that specializes in engineering security solutions both at the software and hardware level. Security cannot be an after-the-fact afterthought, which is what it's become," stated Richard Blech, Chief Executive Officer at Secure Channels, in this SYS-CON.tv interview at @ThingsExpo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
The IoT is changing the way enterprises conduct business. In his session at @ThingsExpo, Eric Hoffman, Vice President at EastBanc Technologies, discussed how businesses can gain an edge over competitors by empowering consumers to take control through IoT. He cited examples such as a Washington, D.C.-based sports club that leveraged IoT and the cloud to develop a comprehensive booking system. He also highlighted how IoT can revitalize and restore outdated business models, making them profitable ...
According to Forrester Research, every business will become either a digital predator or digital prey by 2020. To avoid demise, organizations must rapidly create new sources of value in their end-to-end customer experiences. True digital predators also must break down information and process silos and extend digital transformation initiatives to empower employees with the digital resources needed to win, serve, and retain customers.
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
"Once customers get a year into their IoT deployments, they start to realize that they may have been shortsighted in the ways they built out their deployment and the key thing I see a lot of people looking at is - how can I take equipment data, pull it back in an IoT solution and show it in a dashboard," stated Dave McCarthy, Director of Products at Bsquare Corporation, in this SYS-CON.tv interview at @ThingsExpo, held November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
The Internet of Things will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform and how we integrate our thinking to solve complicated problems. In his session at 19th Cloud Expo, Craig Sproule, CEO of Metavine, demonstrated how to move beyond today's coding paradigm and sh...
@GonzalezCarmen has been ranked the Number One Influencer and @ThingsExpo has been named the Number One Brand in the “M2M 2016: Top 100 Influencers and Brands” by Onalytica. Onalytica analyzed tweets over the last 6 months mentioning the keywords M2M OR “Machine to Machine.” They then identified the top 100 most influential brands and individuals leading the discussion on Twitter.
Today we can collect lots and lots of performance data. We build beautiful dashboards and even have fancy query languages to access and transform the data. Still performance data is a secret language only a couple of people understand. The more business becomes digital the more stakeholders are interested in this data including how it relates to business. Some of these people have never used a monitoring tool before. They have a question on their mind like “How is my application doing” but no id...
IoT is rapidly changing the way enterprises are using data to improve business decision-making. In order to derive business value, organizations must unlock insights from the data gathered and then act on these. In their session at @ThingsExpo, Eric Hoffman, Vice President at EastBanc Technologies, and Peter Shashkin, Head of Development Department at EastBanc Technologies, discussed how one organization leveraged IoT, cloud technology and data analysis to improve customer experiences and effici...
As data explodes in quantity, importance and from new sources, the need for managing and protecting data residing across physical, virtual, and cloud environments grow with it. Managing data includes protecting it, indexing and classifying it for true, long-term management, compliance and E-Discovery. Commvault can ensure this with a single pane of glass solution – whether in a private cloud, a Service Provider delivered public cloud or a hybrid cloud environment – across the heterogeneous enter...
Data is the fuel that drives the machine learning algorithmic engines and ultimately provides the business value. In his session at Cloud Expo, Ed Featherston, a director and senior enterprise architect at Collaborative Consulting, discussed the key considerations around quality, volume, timeliness, and pedigree that must be dealt with in order to properly fuel that engine.
Successful digital transformation requires new organizational competencies and capabilities. Research tells us that the biggest impediment to successful transformation is human; consequently, the biggest enabler is a properly skilled and empowered workforce. In the digital age, new individual and collective competencies are required. In his session at 19th Cloud Expo, Bob Newhouse, CEO and founder of Agilitiv, drew together recent research and lessons learned from emerging and established compa...
Whether your IoT service is connecting cars, homes, appliances, wearable, cameras or other devices, one question hangs in the balance – how do you actually make money from this service? The ability to turn your IoT service into profit requires the ability to create a monetization strategy that is flexible, scalable and working for you in real-time. It must be a transparent, smoothly implemented strategy that all stakeholders – from customers to the board – will be able to understand and comprehe...
"IoT is going to be a huge industry with a lot of value for end users, for industries, for consumers, for manufacturers. How can we use cloud to effectively manage IoT applications," stated Ian Khan, Innovation & Marketing Manager at Solgeniakhela, in this SYS-CON.tv interview at @ThingsExpo, held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA.