Service Oriented Architecture (SOA) is a hot topic. But with so much "buzz" around the subject, it's hard to separate the products that really deliver and the ones that just market an idea and wrap it in shiny paper. I was approached by TopCoder to test drive an SOA tool, TenFold SOA Personal Edition, to see what it promises and whether or not it actually delivers.
Before I started, I didn't know all that much about SOA and SOA tools. I knew the basic ideas behind it but had not had the chance (until now) to test a tool and to become more familiar with the concepts. In this article, I'll share what I learned with you.
What is SOA?
What is a Service?
What makes SOA work?
Why do we need SOA?
Who can use it?
There is surely more detailed information I could cover, but this should be a good starting point for understanding SOA and evaluating the tool in question - TenFold SOA Personal Edition.
Installing & first time running
I got the TenFold SOA Personal Edition from the Tenfold web site (http://www.tenfold.com/personaleditionwelcome.htm) after completing a registration form. The distribution is fare in size, about 170 MB, and with a good Internet connection it can be downloaded pretty quickly.
Installing was not much of a hassle but the minimal requirements are pretty high, so one has to have a pretty good machine to run it (the requirements can be checked at http://www.tenfold.com/personaleditionrequirements.htm). But I got into trouble from the first usage! I managed to freeze the app in the first ten minutes when I tried to import a database (partly it was my fault because I did not have enough space available on the disk at import time; the import of the database ate almost 3GB of extra space on my hard disk). I could not get the app up and running again until I uninstalled and reinstalled it twice.
Features and claims
After the rough start I relaxed a bit and turned to a more smoother approach by studying the advertised features (as well as what other people had to say about the product).
What does the tool promising? According to TenFold, "EnterpriseTenFold SOA is a complete development platform for building SOA-compliant applications and full-business-function services without programming." It "automatically produces high-quality, functionally rich web services, which are 100% compatible with J2EE, .NET, or any Enterprise Service Bus." It "uses a declarative, model-driven approach that automatically includes powerful applications features and functions in every service." It "includes Ajax so you can build Ajax-ready applications without Ajax-related development costs" and "facilitates the TenFold Way, full-lifecycle methodology for building enterprise-scale applications as a collection of rich, reusable services."
One of the claims that made me skeptical was that, by using TenFold SOA, one is able to achieve 10-times faster development times for sophisticated enterprise applications than with traditional development techniques. Also "EnterpriseTenFold SOA works with popular RDMSs like Oracle, DB2, SQL Server, Sybase, EnterpriseDB, and MySQL. EnterpriseTenFold SOA Personal Edition includes a fully configured EnterpriseDB installation to make your Personal Edition experience easy and not require that you install an RDBMS." I would say it's a pretty impressive list of features!
Getting the hang of it
With all these promises in mind, I just grabbed the Basic Concepts tutorial (PDF) from the TenFold site and got to work. The tutorial guided me through the features of an already built CRM (Customer Relationship Management) application, allowing and teaching me to make modifications to that application. This application, called SuperCRM, comes in two flavors: a Windows application and a Web-based application (all the apps that can be built using TenFold SOA can be generated to work as a "standalone" Windows app or as Web-based apps).
To generate the application (in both forms) I logged into the TenFold Personal Windows application and imported a .10F file (it's a proprietary format describing a TenFold app). Following the tutorial after a few clicks and just 15 minutes, I had a CRM app that looked like the one in the picture below, the database set up (EnterpriseDB) and all the database services up and running (I really appreciated that) and the TenFoldClient (tfcli), TenFold MessageServer, TenFold ServerManager (tfsrvmgr and tftskmst) ready to run.
TenFold SOA Personal edition comes also with built in application management features to some extent, with well-defined user roles. You have default user names and credentials for creating and building the application (User=Business, Pwd=Business), for creating and maintaining the database (User=IT, Pwd=IT) and for administrating the TenFold users and features.
I was pretty impressed, though of course the app was previously built and packed! But my enthusiasm scaled down as I opened the web app and found that it wasn't working due to an error that prevented me from signing on (check the below picture and look for the position of the "Sign on" button). In addition, it opened in Internet Explorer, although I have Firefox set as default on my PC, and I had no way to change the default browser from the TenFold SOA application builder (eventually I manually cut-and-pasted the URL to Firefox).
After all that I finally managed to sign on to the Web app. I found it more appealing than the standalone version -- it looked better from the UI perspective and did not have the odd menu bar the Windows version had. That menu is a little bit confusing at first glance because it's not the "File, Edit …" standard menu but it's something TenFold specific with things like "Opportunities, Accounts, Dashboard …" Still the Web app had a few things that did not make me very happy: an odd looking black label with a picture in it and the lack of any menu from my immediate visual perspective (see these in the picture below)
Following the tutorial I got to the queries section. I have to say I'm not a big fan of writing database SQL queries by hand and I was pretty happy to see that TenFold handles that pretty well (they call it "SmartSQL"). The tutorial presented me with a plethora of queries and I did all of them very quickly with minimal effort. That minimal effort could be transformed to almost zero effort as the queries could be saved and rerun later (they call them "PowerQueries"). The feature is really powerful and the results of the queries can be visualized in many forms (all the results in one place, one result at a time with its details, or details that can be added or subtracted from the results dynamically) and also exported to Excel sheets. Still, at some point the UI came to disappoint me again. As you can see in the image below, when I tried to view all the results the buttons where trimmed and rendered unusable. No matter how much I tried to bring them to the visible area, I could not!
Other notable features I could experience in that part of the tutorial were "AnyFile," which permits the addition of any files as attachments that can be saved in the database of the application, "TimeRelation," which automatically stores the applications-data changes, and "SecurityByValue," which allows data values to control data security allowing to protect fields from spurious edits.
Finally I got to the part I was waiting to try the most: application change. TenFold calls it XRAD (eXtremely Rapid Application Development) and it seems that it's one of the most important features advertised: "XRAD lets you build a working, tested, usable application in less time than it normally takes for traditional requirements gathering."
I got to work to see if the feature really works as advertised. Following the tutorial first I created a new transaction that read some data from a ContactAddress table. Then I edited it so that it would display a Google Map as a result of an address query. Here is where the tutorial got a little bit blurry and really mechanical (something I hate, as I like to know what I'm doing and not just follow some instructions like push that button, go to that tab, fill that textbox) and it took me 3 tries to get right. Still, it was pretty rapid and I was able to link to Google Maps in a matter of minutes without having any special knowledge about the API behind it. I also added a menu in the application for the transaction and a zoom from the contact address to cleverly invoke the transaction. The last thing was to modify the existing database by adding a column to an existing table. Those last steps of the tutorial convinced me that TenFold really has some powerful built-in features that can be delivered to mainstream apps with little to medium effort (considering both development resources and time).
In starting out, I was impressed by the features TenFold featured and was eager to test them. The biggest selling point for TenFold (and a pretty scary one from my perspective, I guess) is that no code has to be written, and anyone could build and deploy a powerful application in a matter of days or weeks.
It's not quite that easy, of course, and I don't think anyone without IT training or a technical background could do it that quickly. The concepts behind the tool are pretty complex and relatively new and a non-technical person (let's say someone in finance or accounting) would require serious training to be able to deliver a powerful application. Even with technical help, it takes a very good architect to describe the application and a very good database designer to support a more complex application. In theory, a tool could describe an application in a non-code form and use that description to generate code and invent semantics, but you need the right people for that kind of task as well.
Based on my initial review of the TenFold SOA Personal Edition, I think it has some serious horsepower under the hood, and makes use of very powerful technologies and concepts, but they did not reinvent the wheel. Giving the features fancy names does not do that. Those technologies are packed well together, though, (albeit in a proprietary format) and work fairly well. All in all, I would say the tool deserves a B- for functionality.
With such a visually focused application, what ultimately sticks in your mind is how it looks, how it behaves, and how easy it is to use, not the fancy technologies behind it. From that point of view, TenFold needs some work. I couldn't get the Web app to work in Internet Explorer, I found the "proprietary" menu bar really odd and hard to use - simply put, nothing felt like it was in the right place. The Windows app was really heavy, visually, with too many fields, tabs, and checkboxes. To make matters worse, it did not always behave correctly and froze on me many times . I would say the tool deserves a C for usability.
From the user support point of view, though, TenFold behaves almost admirably. The amount of user help is impressive, and they seem to really focus on that aspect of the tool. TenFold provides a FAQ, troubleshooting tips, good tutorials and even a forum where you can get your questions answered pretty quickly by staff or by other users of the tool. For advanced users TenFold provides a training program called TenFold University. I would say they deserve an A- for user support.
The problem with hot topics in technology, of course, is that products come to market in an effort to try to capitalize on the buzz before they're ready. While it's got a lot of promise, and some excellent features, in my opinion TenFold SOA Personal Edition does not quite deliver on its promises. The Enterprise edition may be more robust, of course, but with this (or any other tool that promises so much) I'd recommend you think twice, and do a lot of testing, before you commit.
References and notes:
 DDJ has a great series of articles about SOA and SaaS. Give them a look at www.ddj.com (search for SOA)