<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SDLC Blog &#187; Tools</title>
	<atom:link href="http://www.rodenas.org/blog/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rodenas.org/blog</link>
	<description>Software Development Life Cycle: Methodologies and Tools for the Enterprise</description>
	<lastBuildDate>Fri, 09 Sep 2011 12:02:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>From the Eclipse Platform to the IBM Rational Jazz Platform</title>
		<link>http://www.rodenas.org/blog/2009/04/20/from-the-eclipse-platform-to-the-ibm-rational-jazz-platform/</link>
		<comments>http://www.rodenas.org/blog/2009/04/20/from-the-eclipse-platform-to-the-ibm-rational-jazz-platform/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 23:05:18 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Jazz Project]]></category>
		<category><![CDATA[Rational]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/?p=571</guid>
		<description><![CDATA[TweetTweetSeveral months ago, I promised to write about the IBM Rational Jazz platform and IBM Rational Team Concert. As you may have noticed, I have not yet write about them, but in my defense I can say that I have not had much time to devote to this nor other posts in this blog. As [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2009/04/20/from-the-eclipse-platform-to-the-ibm-rational-jazz-platform/&via=ferdy&text=From the Eclipse Platform to the IBM Rational Jazz Platform&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2009/04/20/from-the-eclipse-platform-to-the-ibm-rational-jazz-platform/&via=ferdy&text=From the Eclipse Platform to the IBM Rational Jazz Platform&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Several months ago, I promised to write about the <a href="https://jazz.net/">IBM Rational Jazz platform</a> and <a href="http://www-01.ibm.com/software/awdtools/rtc/">IBM Rational Team Concert</a>. As you may have noticed, I have not yet write about them, but in my defense I can say that I have not had much time to devote to this nor other posts in this blog. As I mentioned in some others posts, lately I have been leading a major renovation of our entire suite of custom development tools, and these last 3 months I have been fairly busy managing all this change. Taking advantage of Easter holidays, I finally found the right time to get to write about the Jazz platform.</p>
<p>But before proceeding, a disclaimer. What I am going to write about Jazz is just a personal opinion,  may or may not be wise, may or may not have something to do with reality, but I want to make clear that this is an entirely personal opinion, and do not mean any endorsement from my current employer.</p>
<h4>The Eclipse vision</h4>
<p>To describe the Jazz platform, I think we should go back to the past, because in my opinion, Jazz is trying to evolve the vision/mission/wildest dream that <a href="http://www.nackman.com/lee-s-resume">Lee Nackman</a> had in 1998: to create a single technology platform on which to build the various IBM&#8217;s application development tools. The objectives Lee had at that time were:</p>
<ol>
<li>to solve one of the most customer complaints: instead of having tools with their own &#8220;personality&#8221;, customers demanded a common look and feel;</li>
<li>to be able to integrate different tools, especially from IBM, but also from external <acronym title="Independent Software Vendor">ISV</acronym> in order to complement IBM&#8217;s product line;</li>
<li>all reducing the development costs, as at that time each IBM tooling group used its own specific platform.</li>
</ol>
<p>With the help from the autonomous <a href="http://en.wikipedia.org/wiki/Object_Technology_International">OTI</a> subsidiary (acquired by IBM in 1996), and overcoming an enormous amount of skepticism within IBM, Lee and his team delivered a technology platform that became what today is known as the <a href="http://www.eclipse.org/platform/">Eclipse platform</a>. Looking at the success of this platform, especially in terms of IBM adoption across the different brands and tools, it seems that the main objectives were reached. Not to mention also that open sourcing the platform and several projects (as the <a href="http://www.eclipse.org/jdt/">JDT</a>), they killed lots of competitors, <a href="http://www.infoworld.com/d/developer-world/shrinking-java-tools-market-855">shrinking the Java tools market</a>, and created a great ecosystem around it.</p>
<h4>The Eclipse vision revisited</h4>
<p>But the knowledge and tool set that IBM acquired when they bought <a href="http://en.wikipedia.org/wiki/Rational_Software">Rational Software</a> in 2002, mixed with a retrospective analysis they did based on the experience they gained in the Eclipse development, helped them to figure out which were the new challenges for the software delivery process. I&#8217;ll try to summarize, <acronym title="in My Humble Opinion">IMHO</acronym>, some of the improvements they realize:</p>
<ul>
<li>When IBM built Eclipse, their focus was on the developer productivity. But the software development process usually involves some more skills, specialists, roles, levels, &#8230; and they need to work together, they need to share information, and when all members of the team work in a <a href="http://en.wikipedia.org/wiki/Virtual_team">geographically dispersed</a> manner, the conflicts inevitably appears. So there is a need to involve all the team in all the phases of the software lifecycle regardless of their location and role, and instead of improving the productivity of the developer, we need tools to improve the productivity of the entire team, and directly or indirectly, the productivity of the whole organization.</li>
<li>When talking about covering the overall development cycle, we usually find that we need several tools, and sometimes these tools are outside of the scope of Eclipse. And we also find that there are lots of barriers to share resources between these heterogeneous tools, as they use private vocabularies, formats and stores. So the integration between these external tools are usually built on bridges, and lots of times, highly cobbled (so they require updates with every interface change). There is a need to raise the level of integration. We need to be able to integrate and share cross-repository information using open interfaces and a loosely coupled approach.</li>
<li>When thinking about non coding activities, we realize that not each role or tool needs a heavy desktop client. There are some situations where a web <acronym title="User Interface">UI</acronym> (or another type of client) is more suitable. Despite some incubators (<a href="http://wiki.eclipse.org/E4/Bespin">e4 Bespin</a> or <a href="http://www.alphaworks.ibm.com/tech/eclifox">Eclifox</a>), Eclipse nowadays only supports its desktop client. It&#8217;s true that using <a href="http://www.eclipse.org/equinox/">Equinox</a> and its underlying <a href="http://en.wikipedia.org/wiki/OSGi">OSGi</a> services, you can deploy Eclipse plugins into the server-side, but there isn&#8217;t any &#8220;standard&#8221; way to share user interfaces or a framework for the web UI. Which will be the problem? the same Lee discovered in 1998: tools with their own &#8220;personality&#8221;, tools without a common behavior.</li>
<li>Process, process and process. How much we love them and how much we hate them also? Why is so hard to try to follow a process? Why the only Eclipse tools available (<a href="http://www-01.ibm.com/software/awdtools/rmc/">RMC</a> or <a href="http://www.eclipse.org/epf/">EPF</a>) only try to author and then publish a static document? Why tools doesn&#8217;t live the process?</li>
<li>Creating a new Eclipse environment with all of the required plugins, configuring the project, setting-up the build process and all the other little pieces that come into play to give code life could be a mess for a new team member. This kind of manual tasks are tedious and error-prone, and they are perceived by developers as a waste time. So it is not strange that tools like <a href="http://maven.apache.org/index.html">Maven</a> had a great adoption.</li>
</ul>
<p>So in my opinion, and as I told previously, the Jazz platform is the evolution of the original Eclipse vision, keeping in mind the above and some more other concerns, with an special focus on teams and collaboration. But its aim is not to replace Eclipse, they are distinct platforms with different goals, although Jazz seems to be the perfect complement to Eclipse. This new vision is well summarized at the <a href="https://jazz.net/learn/about-jazz-objectives.jsp">About Jazz</a> page:</p>
<blockquote><p>
Our goal is to provide a frictionless work environment that helps teams collaborate, innovate, and create great software. To that end, <strong>we are focusing on driving fundamental improvements in team collaboration, automation, and reporting across the software lifecycle</strong>.
</p></blockquote>
<h4>The Jazz Platform</h4>
<p>When trying to describe what compose the Jazz platform, albeit IBM have split the original Jazz project in several projects at the <a href="https://jazz.net/">jazz.net</a> site, I still have some problems trying to draw the line between the platform and the applications, to see which components are part of the Jazz platform and which are part of the different products based on it. So I will try to use the below picture, that I have borrowed from the IBM Rational guys, in order to clarify my ideas:</p>
<p><center><img src="http://www.rodenas.org/blog/wp-content/files/2009/04/jazz-platform.jpg" alt="The Jazz platform" title="The Jazz platform" width="600" height="351" class="aligncenter size-full wp-image-691" /></center></p>
<p>To enable a seamless and higher level of integration between tools, IBM has defined a reference architecture, <acronym title="Application Programming Interface">API</acronym> specifications, and a set of common services and tool building blocks, that together are called the <a href="https://jazz.net/development/DevelopmentItem.jsp?href=content/project/plans/jia-overview/index.html">Jazz Integration Architecture</a> (JIA). At the center of this integration architecture we found the Jazz Team Server (that may consist of one or more physical servers that act together as a single logical server), which provides foundational services (<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful web services</a>) to enable groups of tools to work together. Let&#8217;s summarize each of these foundational services:</p>
<ul>
<li><b>Presentation</b>: in a multi-tool integration scenario we usually found lots of linked resources that may not be familiar to a particular client tool or this tool may not be able to provide a user interface for theses resources. The services provided by the presentation foundational services enables a client tool to find and invoke a suitable user interface for any resource URL in order to present the relevant data. There are also two main components (I believe, but I am not sure, they belong to the presentation services) that allow tools developers to implement specific user interfaces: the web dashboards component, that provides the infrastructure and UI for creating and presenting dashboards in a web browser, and the web UI component, that provides a framework for rich web user interfaces (based on the <a href="http://www.dojotoolkit.org/">Dojo toolkit</a>).</li>
<li><b>Process enactment</b>: these are the services that allows to define and implement a wide range of processes. It is focused on agile processes, but it can also be used in highly-structured processes, as it provides the essential components of a development work flow, such as operations, roles, permissions, preconditions or follow-up actions. By default, it is packaged with several process, as <a href="http://en.wikipedia.org/wiki/Scrum_(development)">Scrum</a>, <a href="http://en.wikipedia.org/wiki/OpenUP">OpenUp</a> or the <a href="http://www.eclipsecon.org/2005/presentations/econ2005-eclipse-way.pdf">Eclipse Way</a> (PDF), and it has an editor to be able to modify the process configuration. Each time you create a project you must assign a process, but you can have several projects and each project can follow a different process. It governs all activities, artifacts, artifact relationships, and operations that are pursued within the context of the process area, and it works in a seamless and unobtrusive way, as it manifests itself through artifacts types, operations manipulating the artifacts, and artifact change events.</li>
<li><b>Administration, users, projects, teams</b>: For dealing with users, projects, security, and licenses, each server hosts a set of core administration services. For example, these services can provide a common user identity in order to support authentication (establishes user identity) and authorization (a particular operation can be performed) based on the team membership or role in a project.</li>
<li><b>Collaboration</b>: Collaboration between the team members of a project can be performed in real-time, but also asynchronously (especially important for teams working across time zones). It also occurs at different contexts: around tools, process, tasks or data elements. The collaboration services in the Jazz platform supports and enables some of these core functions, for example, instant messaging, sending email and SMS, maintaining subscriptions, etc. It is something like a mix of the Eclipse <a href="http://www.eclipse.org/ecf/">ECF</a> and <a href="http://www.eclipse.org/corona/">Corona</a> projects (and I wonder why they did not use these projects).</li>
<li><b>Storage, data warehouse and search</b>: You may have noticed that I have deliberately grouped 3 core foundation services in only one. The reason is  because the Jazz repository model is composed by three logical DB in one, working together in order to provide the above 3 services. I am going to use another &#8220;stolen&#8221; picture to describe it:<br />
<br /><center><img src="http://www.rodenas.org/blog/wp-content/files/2009/04/jazz-repository.jpg" alt="Jazz Platform Repository" title="Jazz Platform Repository" width="500" height="199" class="aligncenter size-full wp-image-833" /></center></p>
<ul>
<li>Instead of having a fixed schema (that make integration hard) or a very generic schema (that makes writing tools tough), the Jazz repository allows tools to store their data their way. So content resources are created in a particular representation by the client, and can only be retrieved in that representation. The server doesn&#8217;t know enough about the content to transform it into an alternate representation. The storage services provides a completely RESTful framework for <acronym title="Create, Read, Update and Delete">CRUD</acronym> operations on resources stored in the Jazz private DB.</li>
<li>For every resource stored in the private DB, there are a set of “indexed properties” that are stored automatically in another DB using <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a>. The indexing process is able to extract <a href="http://www.robertprice.co.uk/robblog/archive/2004/10/What_Is_An_RDF_Triple_.shtml">RDF triples</a> from some resource representations and able to extract text streams from some resource representations as well. This process extracts asynchronously each tool&#8217;s data into searchable indexes, consolidates them, and provides centralized query services for searching across the consolidated index. In this way, the search foundation services are able to provide common queries, both structured queries (based on <a href="http://en.wikipedia.org/wiki/SPARQL">SPARQL</a>) and full text search (based on <a href="http://lucene.apache.org/">Apache Lucene</a>).</li>
<li>And finally, we find the data warehouse DB, a periodically snapshot of all the information, used for public reporting. The data warehouse services relies on the Eclipse <a href="http://www.eclipse.org/birt/phoenix/">BIRT</a> project for its reporting system.</li>
</ul>
</li>
</ul>
<p>Anyway, the Jazz platform is still in its early stages, and it is constantly evolving to meet additional challenges. What I have summarized previously is what it is know as the Jazz Platform 0.6, but a new version is expected to be delivered on June with a new name, the <a href="https://jazz.net/development/DevelopmentItem.jsp?href=content/project/plans/jf-plan-1.0.html">Jazz Foundation</a>. So if you are interested in more deep details about the above or new services that are going to be delivered, I recommend that you go through the development team <a href="https://jazz.net/wiki/bin/view">wiki</a> (registration required).</p>
<h4>The killer-application</h4>
<p>There is also an interesting parallelism between how Eclipse and Jazz has been developed. In order to convince other IBM&#8217;s development tools product managers to adopt the Eclipse platform, Lee and his team decided to build a Java IDE. There were two reasons behind that decision: 1) to provide a real example (a killer-application) of a tool developed on the platform, proving in that way its benefits; 2) to help the Eclipse development team to better understand the needs of future consumers of the platform and to discover areas that required further development. This strategy was a success and the Eclipse platform and the Java IDE were quickly adopted inside IBM.</p>
<p>The Jazz project seems to use the same kind of strategy. They are developing a real tool using the Jazz platform. This killer-application is called <a href="http://www-01.ibm.com/software/awdtools/rtc/">Rational Team Concert</a> and as far as I know it is also rapidly adopted inside IBM. I hope to write about this product in the near future.</p>
<h4>Adoption</h4>
<p>Looking at the <a href="https://jazz.net/">jazz.net</a> site the increasing number of IBM tools that are adopting the Jazz platform, I have no doubt that it will be another success in terms of IBM adoption. But &#8230;</p>
<ul>
<li>Will it be a success outside IBM as was the Eclipse platform? IBM has not contributed the Jazz platform to the open source world (in terms of a <a href="http://en.wikipedia.org/wiki/Free_software_license">free software license</a>), and nor it is licensing it in any way (as far as I know). The only way to get this platform is licensing some of the Jazz based products. I am sure they are going to attract some more new customers looking for a complete lifecycle solution, but I believe it will not be a great success as Eclipse was. Anyway, I think the current goal for the Jazz platform is different from the Eclipse platform goal.</li>
<li>Are ISVs going to adopt this platform for their own products? There are the usual <a href="https://jazz.net/community/ensemble/index.jsp">business partners</a> that are complementing/extending the IBM&#8217;s Jazz based products with some new features, but it does not seem that they are going to adopt the Jazz platform for their own products. And it does not seem that IBM is trying to convince them to adopt the platform, as they did with Eclipse, or licensing it on an <acronym title="Original Equipment Manufacturer">OEMs</acronym> basis.</li>
<li>Will this platform attract external developers? IBM is not encouraging them to contribute in terms of code (the rights of what you contribute are transfered to IBM). They are only encouraging people to influence the direction of products through direct, early, and continuous conversations at the <a href="https://jazz.net/">jazz.net</a> website. So it will be very strange to see any non-customer developer.</li>
</ul>
<p>So in terms of external adoption/extension, it seems that IBM is focusing only in the interface as a way to integrate non-IBM tools, encouraging developers, customers and ISVs to participate in the development of the <a href="https://jazz.net/open-services/">Open Services for Lifecycle Collaboration</a> initiative, something like an open standards consortium.</p>
<h4>Conclusion</h4>
<p>Starting looking at the original Eclipse vision and how IBM revisited it after the Rational Software acquisition and the Eclipse success, I have attempted in this post to describe what it is the Jazz platform. I am sure some of you have realized that some of the improvements that I have described previously can be easily or are already implemented through Eclipse plugins, but I think these are the minor ones. There are three main conceptual differences between Eclipse and Jazz:</p>
<ul>
<li>a server centric approach instead of a local workbench in order to leverage the team concept;</li>
<li>a persistent storage using a federated cross-linked repository to store resources;</li>
<li>a seamless integration between tools using standard loosely coupled open interfaces and web protocols.</li>
</ul>
<p>And in my opinion, these conceptual differences can only be implemented through the creation of a new platform. Instead of solving some particular problems in an isolated way, Jazz is trying to attack the essence of the software development process. Does it means that we must convert to a new religion, drop the Eclipse platform and adopt the Jazz platform? No, Jazz is not going to replace Eclipse. There will be a strong relationship between the Jazz and Eclipse environments, yet the<br />
two are distinct and can run independently. Jazz is going to complement Eclipse in some particular scenarios:</p>
<blockquote><p>
Eclipse for Individuals, Jazz for Teams
</p></blockquote>
<p>We have also seen that IBM&#8217;s decision is not to open source this new platform, but to create a community around the <a href="https://jazz.net/">jazz.net</a> and <a href="http://open-services.net/">OSLC</a> websites. However, it will need to attract a broad and active participation from a wide external community in order to be a great success outside IBM, as it was Eclipse, something that I believe it is not a current IBM goal.</p>
<p>What will happen in the future? Sincerely, I don&#8217;t know, time will decide. From my particular point of view, this new vision match up what we have been doing for a long time and that has lead us to extend the Eclipse platform in order to create a <a href="http://wiki.eclipse.org/EclipseBankingDayLondon/SessionAbstracts#Repository_Based_Application_Development_Environment_for_Banking_Systems">custom collaborative tool set</a>. So, as we are already an IBM Rational customer and we have licensed some of the Jazz products, I will be very happy if we can integrate, in an easy way, our custom tools with the IBM Rational tool set.</p>
<h4>If you reached this point, please, participate in the conversation <img src='http://www.rodenas.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </h4>
<p>Before concluding this long post, I would like to ask you:</p>
<ul>
<li>To the IBM/Rational guys: As I assume that I could make mistakes (history, goals, &#8230;) , if you want to add or point out something wrong, please write me, better as a comment in this post although I will also accept private emails, and I will correct it.</li>
<li>To the non IBM/Rational guys:
<ul>
<li>How much of you have heard about Jazz? How much of you have experimented with it? Which is your (technological) opinion?</li>
<li>Must IBM open source the Jazz platform? Do you think it will be interesting and wide adopted? Why?</li>
</ul>
</li>
</ul>
<h4>Additional information</h4>
<p><small>PS: One of the latest tasks Lee Nackman did before his retirement at IBM, was to help spur the development of the Jazz platform.</small></p>
<p><small>PS: Most of the people actually involved in the development of the Jazz project were part of the Eclipse platform development team, so it is not strange to see that they are applying the same strategy, but also adopting the best practices they learned during the Eclipse development process.</small></p>
<p><small>PS: There is an excellent case study on IBM’s strategy and process for creating Eclipse at the <a href="http://harvardbusinessonline.hbsp.harvard.edu/b02/en/common/item_detail.jhtml?id=906007">Harvard Business School</a>. It&#8217;s a worth read.</small></p>
<p><small>PS: Another interesting read is a paper on <a href="http://www.booch.com/architecture/blog/artifacts/CDE.pdf">Collaborative Development Environments</a> (PDF) by <a href="http://en.wikipedia.org/wiki/Grady_Booch">Grady Booch</a> and <a href="http://www.alanbrown.net/">Alan W. Brown</a>, which seems to be the &#8220;spark&#8221; that started the new vision.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2009/04/20/from-the-eclipse-platform-to-the-ibm-rational-jazz-platform/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Behind the firewall experiencies</title>
		<link>http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/</link>
		<comments>http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 01:59:16 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Case]]></category>
		<category><![CDATA[MDA]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/</guid>
		<description><![CDATA[TweetTweetWell, I just finished the work I have been involved during the last month. The task consisted mainly to assemble a RFP document to renew all of our modeling and automatic code generation toolset. Next Monday, we will introduce to some selected providers which are the project objectives and which are the requirements. Advancing some [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/&via=ferdy&text=Behind the firewall experiencies&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/&via=ferdy&text=Behind the firewall experiencies&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Well, I just finished the work I have been involved during the last month. The task consisted mainly to assemble a <a href="http://en.wikipedia.org/wiki/RFP">RFP</a> document to renew all of our modeling and automatic code generation toolset. Next Monday, we will introduce to some selected providers which are the project objectives and which are the requirements.</p>
<p>Advancing some details, I will tell you that in a first stage we will start designing and developing an infrastructure where all the development tools will rely on. We will also ask to design and develop a tool to model the business logic flow and to automatically generate the code that will execute on a <a href="http://en.wikipedia.org/wiki/Information_Management_System">IMS</a>/<a href="http://en.wikipedia.org/wiki/PL/I">PL/I</a>/<a href="http://en.wikipedia.org/wiki/IBM_DB2">DB2</a> mainframe environment under a property framework (we call this framework “<i>Application Services Integration</i>”).</p>
<p>The architecture of this framework could be compared to a <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">service oriented architecture</a> (<acronym title="Service Oriented Architecture">SOA</acronym>), thought in this case services are coupled, mainly because performance (we have constant peaks of 1.500 tx/s and one requirement is that the response time must be lower than 1 second).</p>
<p>This RFP is our second attempt to renew our development toolset. First attempt, developed under something similar to the <a href="http://en.wikipedia.org/wiki/Model-driven_architecture">MDA</a> paradigm (or should I say <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">DSL</a> as we didn’t use <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a>?) and based on <a href="http://www.eclipse.org/pde/">Eclipse PDE</a> framework plus a <a href="http://en.wikipedia.org/wiki/Meta-modeling">metamodel</a> that relies on a central repository database, was a complete failure. I will explain the reasons (a forensic analysis) in another post, although it’s about performance and scalability in a geographically disperse environment.</p>
<p>Why I’m telling you this? Well, because I want to share with you similar experiences. Unfortunately, this kind of experiences are usually hidden “<i>behind the firewall</i>”, and, in my opinion, it’s positive to share these details with others as we can learn about success and failures (as my manager usually says to me, “<i>you always must assume that the rest of the people are cleverer than you</i>”).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2007/02/10/behind-the-firewall-experiencies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverse engineer the WordPress database with RDA</title>
		<link>http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/</link>
		<comments>http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/#comments</comments>
		<pubDate>Mon, 22 Jan 2007 00:39:49 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Data modelling]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/</guid>
		<description><![CDATA[TweetTweetI was evaluating some enterprise data modelling tools when I realized that one of them, the new version 7.01 of Rational Data Architect (RDA), now supports MySQL. Simultaneous, I was working on a personal project trying to analyse the WordPress database, that relies on MySQL, in order to understand how does it works. So I [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/&via=ferdy&text=Reverse engineer the WordPress database with RDA&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/&via=ferdy&text=Reverse engineer the WordPress database with RDA&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>I was evaluating some enterprise data modelling tools when I realized that one of them, the new version 7.01 of <a href="http://www-306.ibm.com/software/data/integration/rda/">Rational Data Architect</a> (RDA), now supports <a href="http://www.mysql.com">MySQL</a>. Simultaneous, I was working on a personal project trying to analyse the <a href="http://wordpress.org">WordPress</a> database, that relies on MySQL, in order to understand how does it works. So I decided to combine both projects and try to reverse engineer the MySQL WordPress database with RDA to obtain the WordPress data model.</p>
<p>Based on this experience, I wrote a short tutorial for beginners that explains how you can reverse engineer a MySQL database with RDA. I didn&#8217;t intend to cover all aspects of the product, that is the job of the reference manuals. And if you want to go deeper in the Rational Data Architect functionalities, at the bottom of this article you can also find some <a href="#references">references</a>.</p>
<p>So, here it is the tutorial as well as my conclusion. Hope you find it useful.</p>
<p><span id="more-77"></span></p>
<h3>Prerequisites</h3>
<ol>
<li>A <a href="http://wordpress.org/download/">WordPress</a> installation configured and running (so I assume that you have also a <a href="http://dev.mysql.com/downloads/mysql/5.0.html">MySQL</a> instance running). In this tutorial we are going to use a wordpress 2.07 database and MySQL 5.0 (despite RDA only supports up to version 4.1).</li>
<li>Rational Data Architect V7.01. If you don&#8217;t have a license and you are just evaluating the product, you can download a <a href="http://www.ibm.com/developerworks/downloads/r/rda/?S_TACT=105AGX28&#038;S_CMP=TRIALS">trial</a>. RDA can be installed on top of an existing <a href="http://www.eclipse.org/downloads/">Eclipse 3.2</a> environment or will install its own Eclipse 3.2 instance.</li>
<li>A MySQL jdbc driver. You can use the official <a href="http://www.mysql.com/products/connector/j/">MySQL Connector/J</a>.</li>
</ol>
<h3>Creating a new data design project</h3>
<p>A data design project is primarily used to store modelling objects, including logical and physical data models, <acronym title="Data Definition Language">DDL</acronym> scripts, mapping models, and more. To create a data design project:</p>
<ol>
<li>On the main menu bar, select <b>File &gt; New &gt; Project</b>. Or, you could right-click in any blank space in the Package Explorer (if you are using the RDA plugin on Eclipse) or in the Data Project Explorer (if you are using RDA with the Eclipse bundled on it) and select <b>New &gt; Project</b>. The New Project wizard opens.</li>
<li>Select <b>Data Design Project</b>, under the Data folder.</li>
<li>Name the Project <b>WordPress</b> and select <b>Finish</b>.</li>
</ol>
<h3>Creating a new physical data model:</h3>
<p>A physical data model (PDM) is a database-specific model that represents relational data objects, such as tables, columns, primary and foreign keys. A PDM can be used to generate DDL statements that can then be deployed to a database server.</p>
<p>You can use the New Physical Data Model wizard to create a physical data model:</p>
<ol>
<li>Select <b>File &gt; New &gt; Physical Data Model</b> from the main menu file. The New Physical Data Model wizard opens.</li>
<li>On the first page of the wizard, change the file name of the model to <b>WordPress PDM</b>, the selected database to <b>MySQL</b>, the selected version to <b>4.1</b>, and check the <b>Create from reverse engineering</b> check box. Then select <b>Next</b>.</li>
<p><center><a class="imagelink" href="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-1.jpg" title="Creating a new physical data model"><img id="image84" src="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-1.thumbnail.jpg" alt="Creating a new physical data model" /></a></center><br />
</p>
<li>On the second page, note the <b>Create a new connection</b> is checked. Leave that as it is and select <b>Next</b>.</li>
<li>On the third panel, specify:</li>
<ul>
<li>Database: The name of the WordPress database, in this case <b>wordpress</b></li>
<li>JDBC driver class: <b>com.mysql.jdbc.Driver</b></li>
<li>Class location: Browse to the location of the MySQL jdbc driver file <b>mysql-connector-java-5.0.4-bin.jar</b></li>
<li>Connection url: <b>jdbc:mysql://<i>host</i>:<i>port/</i></b>, where <b><i>host</i></b> is the name of the system where MySQL is installed, in this case <b>localhost</b>, and <b><i>port</i></b> is the database server port that the MySQL instance is using to listen to communications from remote clients, in this case <b>3306</b></li>
<li>User and Password: type your <b>user ID</b> and <b>password</b></li>
</ul>
<p><center><a class="imagelink" href="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-2.jpg" title="Connection Parameters"><img id="image85" src="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-2.thumbnail.jpg" alt="Connection Parameters" /></a></center><br />
</p>
<li>Select <b>Test Connection</b> and if the connection is successful then select <b>Next</b>.</li>
<li>On the fourth panel, select the wordpress schema to reverse engineer and then select <b>Next</b>.</li>
<li>On the fifth, select the database elements to reverse engineer and then select <b>Next</b>.</li>
<li>On the sixth panel, check the <b>Generate Overview diagram</b> option and then select <b>Next</b>.</li>
<li>Select <b>Finish</b>.</li>
</ol>
<p>The PDM is created and displayed in the Data Models folder under the WordPress data design project (this model has a .dbm extension to represent physical data model).</p>
<p>If you expand WordPress PDM.dbm and wordpress schema, you will see the database elements we have reverse engineer. Double-click the wordpress diagram, in the Diagrams folder under the wordpress schema, to see the new generated diagram. In the properties tab, you can change the elements that must appear in the diagram.<br />
<center><a class="imagelink" href="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-3.jpg" title="Using the diagram, palette, and properties view to design a PDM"><img id="image86" src="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-3.thumbnail.jpg" alt="Using the diagram, palette, and properties view to design a PDM" /></a></center>
</p>
<h3>Creating the foreign key relationships</h3>
<p>As wordpress database doesn&#8217;t use foreign keys, we must create them manually in order to see relationships between tables. To create a foreign key relationship from a parent table to a child parent table in a physical data model diagram:</p>
<ol>
<li>Select a type of relationship in the palette.</li>
<li>Select the parent table that has the primary key</li>
<li>Drag to the child table. Depending on the type of relationship you are creating, a pop up window might open asking you to specify relationship options.</li>
</li>
</ol>
<p>Be aware that the key from the parent table is migrated to the child table. As wordpress doesn&#8217;t use a similar name on the child table, we must delete this new field at the child table and assign manually the relation between the primary key at the parent table and the foreign key at the child table.</p>
<ol>
<li>In the Data Project Explorer view, select the <b>WordPress PDM</b> model and then the <b>wordpress</b> schema.</li>
<li>Select the <b>child table</b> to modify.</li>
<li>Select the <b>Foreign key relation</b> to modify.</li>
<li>Select <b>Details</b> under the <b>Properties</b> tab.</li>
<li>Select the appropriate <b>column</b> in the child table.</li>
<li>Delete the generated column in the child table.</li>
</ol>
<p><center><a class="imagelink" href="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-5.jpg" title="Foreign keys details"><img id="image87" src="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-5.thumbnail.jpg" alt="Foreign keys details" /></a></center><br />
</p>
<p>So in order to establish all relations, we must create manually the following relationships:</p>
<ul>
<li>wp_linkcategories[cat_id] -&gt; wp_links[link_category]</li>
<li>wp_categories[cat_ID] -&gt; wp_post2cat[category_id]</li>
<li>wp_categories[cat_ID] -&gt; wp_categories[category_parent]</li>
<li>wp_posts[ID] -&gt; wp_post2cat[post_id]</li>
<li>wp_posts[ID] -&gt; wp_comments[comment_post_ID]</li>
<li>wp_posts[ID] -&gt; wp_posts[post_parent]</li>
<li>wp_posts[ID] -&gt; wp_postmeta[post_id]</li>
<li>wp_comments[comment_ID] -&gt; wp_comments[comment_parent]</li>
<li>wp_users[ID] -&gt; wp_links[link_owner]</li>
<li>wp_users[ID] -&gt; wp_posts[post_author]</li>
<li>wp_users[ID] -&gt; wp_comments[user_id]</li>
<li>wp_users[ID] -&gt; wp_usermeta[user_id]</li>
</ul>
<p></p>
<p>And you will get this final diagram:<br />
<center><a class="imagelink" href="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-6.jpg" title="Wordpress Physical Data Model"><img id="image88" src="http://www.rodenas.org/blog/wp-content/files/2007/01/figure-6.thumbnail.jpg" alt="Wordpress Physical Data Model" /></a></center>
</p>
<p></p>
<p>You can also define the referential integrity constrains, but this is not the object of this tutorial.</p>
<h3>Publishing the data model</h3>
<p>Finally, you can publish the data model outside of the modelling tool, as an HTML page or as a PDF file. To create a PDF report:</p>
<ol>
<li>In the Data Project Explorer view, select the <b>WordPress PDM</b> model to on which to create a report.</li>
<li>On the main menu bar, select <b>Data &gt; Publish &gt; Report</b>.</li>
<li>In the Generate Report window, select the <b>Diagram Report for Physical Data Model</b>. Each row contains information on the type of file to be generated, the name of the report, and a description.</li>
<li>Type an <b>output file name</b> in the Select the file name for the generated report field.</li>
<li>Select <b>OK</b> to publish the model report.</li>
</ol>
<h3>Summary</h3>
<p>In this tutorial you learned how to create a new physical data model and reverse engineer an existing MySQL database. You created a foreign key relationship from a parent table to a child parent table, and you modified the columns involved in the relationship. Finally, you published the data model outside of the modelling tool, as a PDF file.</p>
<h3>My opinion</h3>
<p>Rational Data Architect supports lots of relational data sources (<a href="http://www-306.ibm.com/software/data/cloudscape/">Cloudscape</a>, <a href="http://www-306.ibm.com/software/data/db2/">DB2 Universal Database (UDB)</a>, <a href="http://www-03.ibm.com/servers/eserver/iseries/db2/">DB2 UDB iSeries</a>, <a href="http://www-306.ibm.com/software/data/db2/zos/">DB2 UDB zSeries</a>, <a href="http://db.apache.org/derby/">Derby</a>, <a href="http://www-306.ibm.com/software/data/informix/">Informix</a>, <a href="http://www.mysql.com"> MySql</a>, <a href="http://www.oracle.com/database/index.html">Oracle</a>, <a href="http://www.microsoft.com/sql/default.mspx">Microsoft® SQL Server</a> and <a href="http://www.sybase.com/">Sybase</a>), and that it&#8217;s great.</p>
<p>You can work in the Logical model or in the Physical model separately, and you have the ability to transform a Logical model to a Physical model or vice versa. This sounds good, as you can differentiate roles but reusing the previous work: analysts designs the application, the logical model, and developers could implement the physical model based on the target <acronym title="Database Management System">DBMS</acronym> reusing the work done by the analyst. The only problem is that both models are not synchronized, so if the analyst changes an entity in the logical model, it is not propagated to the physical model, and this could be a mess.</p>
<p>It&#8217;s very easy to reverse engineer a database, as I have show you in this tutorial. The biggest concern about obtaining a data model through reverse engineering is discovering relationships. This is a hard work, as many apps database designs doesn&#8217;t use foreign keys (as WordPress) and they don&#8217;t tend to normalize column names. RDA has a discover function that can help you find the matching elements automatically so that you don&#8217;t have to specify them manually. I need to check deeper this functionality, but I don&#8217;t have a hope that it will succeed completely, as there are lots of relations that rely on the code, not in the database.</p>
<p>It will be very useful that when you create a new relation between two entities/tables, you could also specify the child column. In the tutorial example, I had to delete the new field created automatically at the child table and to assign manually the relation between the primary key at the parent table and the foreign key at the child table. In my opinion, this steps can be avoided if you let specify which is the target child column.</p>
<p>RDA can be installed on top of an existing Eclipse 3.2 environment or will install its own Eclipse 3.2 instance. I didn&#8217;t find any list of plug-in dependencies in the installation guide, so I tried to install RDA on top of my existing Eclipse 3.2 (Birt, CDT, DTP, PHP, TPTP and WTP). The plug-in worked fine, except some few functionalities as the report generation and the XML Schema Validator. This is a problem that I have had with lots of Eclipse plug-ins. If you don&#8217;t want to deal with plug-in dependencies problems, my recommendation is to install RDA with its own Eclipse instance.</p>
<p>I have also found some bugs:</p>
<ul>
<li>You can not specify a precision for the BIGINT numerical type, despite you can specify it in MySQL.</li>
<li>RDA doesn&#8217;t support the MySQL <b>ENUM</b> type. Enum is not a SQL standard (you must create a separate table that maps different values or use a check restriction), but if the RDA brochure says it supports MySQL then it must support the ENUM type.</li>
<li>With the previous problem in the physical model, RDA doesn&#8217;t generate DDL, despite there isn&#8217;t any error in the Problems tabs and no message appeared in the Generate DDL wizard. This problem drives me crazy, until I found the problem. It will be very useful to have a validation utility.</li>
</ul>
<p>Despite these bugs, Rational Data Architect made a very good impression on me.</p>
<h3><a id="references">References</a></h3>
<ul>
<li>&#8220;<a href="http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0701liu/">Use Rational Data Architect to define and enforce data object naming standards</a>&#8221; (developerWorks, Jan. 2007) examines the features of IBM Rational Data Architect that enable users to define and implement object naming standards, and then demonstrates with a real-world example.</li>
<li>RDA skills series at <a href="http://www-128.ibm.com/developerworks">developerWorks</a>:</li>
<ul>
<li>&#8220;<a href="http://www-128.ibm.com/developerworks/edu/ar-dw-ar-rdamap.html">Rational Data Architect skills series, Part 3: Discover schema relationships with Rational Data Architect</a>&#8221; (developerWorks, Dec. 2006) describes how to create schema mappings semi-automatically.</li>
<li>&#8220;<a href="http://www-128.ibm.com/developerworks/edu/dm-dw-dm-0609bittner-i.html">Rational Data Architect skills series, Part 2: Generate SQL/XML queries with Rational Data Architect</a>&#8221; (developerWorks, Sep. 2006) describes how to transform data from relational data sources into XML format.</li>
<li>&#8220;<a href="http://www-128.ibm.com/developerworks/edu/ar-dw-ar-wbirda.html">Rational Data Architect skills series, Part 1: Access and integrate enterprise metadata with Rational Data Architect</a>&#8221; (developerWorks, Jul. 2006) describes how to create a unified view across heterogeneous data sources.</li>
</ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2007/01/22/reverse-engineer-the-wordpress-database-with-rda/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Worried about the trend of your project?</title>
		<link>http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/</link>
		<comments>http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/#comments</comments>
		<pubDate>Tue, 28 Nov 2006 00:57:31 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/</guid>
		<description><![CDATA[TweetTweetTrying to determinate the best way to implement Continuous integration at our shop, and specifically, which information we must generate after nightly builds, I’ve discovered QALab, an opensource project that “collects and consolidates data from several QA tools and keeps track of them overtime, allowing developers, architects and project managers alike to be presented with [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/&via=ferdy&text=Worried about the trend of your project?&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/&via=ferdy&text=Worried about the trend of your project?&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Trying to determinate the best way to implement <a href="http://en.wikipedia.org/wiki/Continuous_Integration">Continuous integration</a> at our shop, and specifically, which information we must generate after nightly builds, I’ve discovered <a href="http://qalab.sourceforge.net/">QALab</a>, an opensource project that “<i>collects and consolidates data from several QA tools and keeps track of them overtime, allowing developers, architects and project managers alike to be presented with a trend of the QA statistics of their project</i>”</p>
<p>It collects data from the following tools:</p>
<ul>
<li><a href="http://checkstyle.sourceforge.net/">Checkstyle</a>: code style validation and design checks. QALab keeps track of number of violations per file and overall.</li>
<li><a href="http://pmd.sourceforge.net/">PMD</a>: Code checks (possible bugs, dead code, sub-optimal code, etc). QALab keeps track of number of violations per file and overall.</li>
<li><a href="http://pmd.sourceforge.net/cpd.html">PMD CPD</a>: Duplicate code (always a bad idea) detection. QALab keeps track of number of the overall number of duplicated lines.</li>
<li><a href="http://findbugs.sourceforge.net/">FindBugs</a>: fantastic tool to detect potential bugs (really!). QALab keeps track of number of violations per file and overall.</li>
<li><a href="http://cobertura.sourceforge.net/">Cobertura</a>: Coverage tool. QALab keeps track of percentage of branch and line coverage.</li>
<li><a href="http://www.redhillconsulting.com.au/products/simian/">Simian</a>: excellent duplicate code detection (non-open source). QALab keeps track of number of the overall number of duplicated lines.</li>
</ul>
<p>(Via <a href="http://www.theserverside.com/news/thread.tss?thread_id=43248">The Server Side</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2006/11/28/worried-about-the-trend-of-your-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Borland Spins Off Its Tools Unit</title>
		<link>http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/</link>
		<comments>http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/#comments</comments>
		<pubDate>Sat, 18 Nov 2006 23:27:32 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Borland]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/</guid>
		<description><![CDATA[TweetTweetBorland Software announced that it will spin its developer tools group off into a wholly owned subsidiary known as CodeGear, a new organization that will be 100% dedicated to the developer tools market. The reason is they did not believe any of the prospective suitors would be able to &#8220;reflect the core value of the [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/&via=ferdy&text=Borland Spins Off Its Tools Unit&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/&via=ferdy&text=Borland Spins Off Its Tools Unit&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Borland Software <a href="http://bdn.borland.com/article/33818">announced</a> that it will spin its developer tools group off into a wholly owned subsidiary known as <a href="http://www.codegear.com/">CodeGear</a>, a new organization that will be 100% dedicated to the developer tools market. The reason is they did not believe any of the prospective suitors would be able to &#8220;reflect the core value of the asset.&#8221;</p>
<p><a href="http://www.borland.com/">Borland</a> has produced great tools. Hope this new company will continue the saga.</p>
<p>(Via <a href="http://www.eweek.com/article2/0,1895,2059052,00.asp">eWeek</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2006/11/19/borland-spins-off-its-tools-unit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acceleo: MDA generator</title>
		<link>http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/</link>
		<comments>http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 00:47:04 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[MDA]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/</guid>
		<description><![CDATA[TweetTweetJust discovered an opensource MDA code generator tool from Obeo called Acceleo. Features includes integration within Eclipse, native use of EMF, development environment (template editor with syntax highlighting, reflective editor, real time error detection, &#8230;), the ability to target any technology as it is based on the use of templates, and compatibility with XMI/UML 2.0 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/&via=ferdy&text=Acceleo: MDA generator&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/&via=ferdy&text=Acceleo: MDA generator&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Just discovered an opensource <a href="http://en.wikipedia.org/wiki/Model-driven_architecture">MDA</a> code generator tool from <a href="http://www.obeo.fr/">Obeo</a> called <a href="http://www.acceleo.org/">Acceleo</a>.</p>
<p>Features includes integration within <a href="http://www.eclipse.org/">Eclipse</a>, native use of <a href="http://www.eclipse.org/emf/">EMF</a>, development environment (template editor with syntax highlighting, reflective editor, real time error detection, &#8230;), the ability to target any technology as it is based on the use of templates, and compatibility with XMI/UML 2.0 or 1.4, so you could integrate it with <a href="http://www-306.ibm.com/software/awdtools/modeler/swmodeler/">Rational Software Modeler</a>, <a href="http://gentleware.com/">Poseidon</a> or <a href="http://www.topcased.org/">Topcased</a> among others.</p>
<p>In the documentation page, you will find a <a href="http://www.acceleo.org/pages/quickstart/en">quickstart guide</a> if you want to catch up with it.</p>
<p>(Via <a href="http://thinkarchitecture.blogspot.com/2006/11/practical-mda-with-acceleo.html">Software architecture and design thoughts</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2006/11/08/acceleo-mda-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Oriented CASE Tools: Lost Opportunities and Future Directions</title>
		<link>http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/</link>
		<comments>http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/#comments</comments>
		<pubDate>Tue, 07 Nov 2006 00:13:22 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[Case]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/</guid>
		<description><![CDATA[TweetTweetI have enjoyed reading the &#8220;Object Oriented CASE Tools: Lost Opportunities and Future Directions&#8221; article at developer.* I have spent more than 15 years designing and developing in-house case tools for our legacy systems (more than 1.000 developers). I have implemented almost all of the “Traditional CASE tools” features described in the article, and they [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/&via=ferdy&text=Object Oriented CASE Tools: Lost Opportunities and Future Directions&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/&via=ferdy&text=Object Oriented CASE Tools: Lost Opportunities and Future Directions&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>I have enjoyed reading the &#8220;<a href="http://www.developerdotstar.com/mag/articles/oo_case.html">Object Oriented CASE Tools: Lost Opportunities and Future Directions</a>&#8221; article at <a href="http://www.developerdotstar.com/">developer.*</a></p>
<p>I have spent more than 15 years designing and developing in-house case tools for our legacy systems (more than 1.000 developers). I have implemented almost all of the “Traditional CASE tools” features described in the article, and they have proved that they are necessary to archive a very productive development environment.</p>
<p>Now, we are focusing our efforts on distributed systems, and specifically, in OO environments. We have a current discussion about which is the best strategy towards our toolset in these environments. On one side, there is the opinion that we must use OO <a href="http://en.wikipedia.org/wiki/Commercial_off-the-shelf">COTS</a> tools; and on the other side, that we must developed our own tools following the guidelines of the traditional case tools. The absence of some of the features stated in the article is inclining the balance towards the second option (the traditional one). Some features, as the central repository relying on databases, are essentials in environments focused in the reusability of the artifacts, and with OO COTS tools you can’t implement them, with or without “frameworks”. They seem designed for individual developers or small teams and not for a big enterprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2006/11/07/object-oriented-case-tools-lost-opportunities-and-future-directions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AnthillPro 3: Build Management and Application Lifecycle Automation Server</title>
		<link>http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/</link>
		<comments>http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 22:44:09 +0000</pubDate>
		<dc:creator>ferdy</dc:creator>
				<category><![CDATA[CI]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/</guid>
		<description><![CDATA[TweetTweetUrbancode has announced the release of AnthillPro 3, a build management and application lifecycle automation server. Supporting a distributed server/agent architecture, AnthillPro3 allows for distributed and multi-platform builds, automated unit, functional, and performance tests, as well as deployments to multiple environments. An embedded workflow engine provides the ability to define consistent and automated processes that [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/&via=ferdy&text=AnthillPro 3: Build Management and Application Lifecycle Automation Server&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/&via=ferdy&text=AnthillPro 3: Build Management and Application Lifecycle Automation Server&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://www.urbancode.com/">Urbancode</a> has announced the release of <a href="http://www.anthillpro.com/html/products/anthillpro/default.html">AnthillPro 3</a>, a build management and application lifecycle automation server.</p>
<p>Supporting a distributed server/agent architecture, AnthillPro3 allows for distributed and multi-platform builds, automated unit, functional, and performance tests, as well as deployments to multiple environments. An embedded workflow engine provides the ability to define consistent and automated processes that integrate with existing Change Management Systems as CVS, ClearCase, Harvest, PVCS, Perforce, Starteam, Subversion and VSS. Roles based security guarantees separation of responsibility and together with guaranteed traceability and built-in audit reports provides a compliance solution out of the box.</p>
<p>Usage scenarios includes Automated Build, Multi-platform Build, <a href="http://en.wikipedia.org/wiki/Continuous_Integration">Continuous Integration</a>, Distributed Performance Tests, Dependency Management or Promotion and Deployment through QA, UAT, and PROD.</p>
<p>(Via <a href="http://www.theserverside.com/news/thread.tss?thread_id=42801">TheServerSide</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodenas.org/blog/2006/10/27/anthillpro-3-build-management-and-application-lifecycle-automation-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

