Raise your level of abstraction
This is my first blog post, but one I hope to update regularly. I want to share my experiences with model driven development, code generation, and the entire development life cycle from a practical implementation perspective - getting things to work together on actual implementation projects, helping projects be successful, automating the lifecycle including code generation.
A little about myself and the tools I use...
I work at Walt Disney World, Orlando FL in Information Technology (Application Architecture). We have about a thousand developers and consultants involved in all parts of the Theme Parks and Resorts business segment (WDPR): park operations, ticketing, sales offers, reservations, integrations with travel companies and airlines, resort availability/booking, retail (point of sale), dining, Disney vacation club, cruise line, etc. Plus a project that I can't talk about (google NGE: Next Generation Experience, for more information). We are a lot more than just theme parks. We have used every development platform imaginable over the years: dotNet, Java, C++, PHP. My main focus has been on Java development using Eclipse/Rational tools. See linkedIn for additional details.
My main passion as an architect is in finding ways to improve the software development process through automation. I have championed the adoption of Apache Maven at WDPR, but much work remains before we have full adoption and integration over all phases of the lifecycle. I am the main internal support person for the Rational Development tools (Application Developer and Modeler) and the Eclipse-based tools. I am a strong supporter and advocate for open source tools and frameworks.
I led the effort to adopt an MDA tool several years ago. After investigating a number of alternatives (two no longer exist: OptimalJ and ArcStyler), we settled on the open source tool AndroMDA because of the maven implementation plus the mature output capabilities using velocity templates: Java, Spring, Hibernate, EJB, EJB3/JPA, Struts, JSF, WebServices, jBPM/Drools, dotNet NSpring/NHibernate/ASP. Other tools we considered included Rational Software Architect and openArchitectureWare (now part of Eclipse XText). The Rational Tools were very difficult to use, seemed like a lot of work to get a very little bit of code, and required low-level coding to populate and use the templates. openArchitectureWare was OK but there was very little out-of-the-box outputs available unlike AndroMDA, and it was not easy to integrate into an overall development lifecycle. Since then, they have joined the Eclipse foundation and gained a lot of traction, and a number of standard outputs have been developed by the fornax group. I still believe we made the right decision then, and would probably make the same decision today, though.
AndroMDA did about 80% of what we needed, but I had to add some missing functionality: Support for UML2 2.x, and support for CXF JAX-WS webservices. They already had support for UML2 1.x and Axis webservices, so we could modify what was there. I offered to contribute the new functionality back to the AndroMDA project, and was eventually accepted as a committer on the project. I have since contributed a large number of fixes and improvements to the project, but a large number of things remain to be done. My main focus in writing this blog is to get more people to use AndroMDA.
Topics I plan to blog about in the future include:
- How to promote both internal and external adoption of the tools and processes.
- What are the most useful ways to create and structure useful documentation. This is probably our biggest impediment to adoption right now, besides visibility under a large organization.
- How to automate the software testing process through code generation
- Specific implementation patterns, focused mainly on Spring, CXF, and JPA
- Code quality best practices: metrics, adoption, and enforcement.
- Experiences (both good and bad) with Maven
- Experiences with various UML modeling tools such as Rational Software Architect, MagicDraw, and Eclipse-based tools such as Papyrus. Validations and interoperability.- Experiences with various development tools (i.e. Eclipse) and frameworks (CXF, Hibernate, Spring) maven/eclipse plugins
Let me know what topics you want to hear about. As always, comments, dialog, and encouragement are most welcome.
Add a Comment