Sunday, March 1, 2009

Architecture Enforcement and Governance Using Aspects - ITARC Conference Presentation

I was at IT Architect Confrence (ITARC) 2009 in Atlanta last week. The conference was a great event. It offered a great opportunity to talk to other architects (of all specializations, Information, Solutions, Data, and Enterprise) about their architecture experience and frameworks and technologies they are currently using in their projects.

Here are some of the highlights of the conference:

  • It was a non-vendor driven event organized by IASA (a non-profit organization focused on the Architecture profession). Paul Preiss and his team at IASA are helping the architecture community through education, consulting, and conference events such as ITARC.
  • Conference main focus was on Architecture and Architecture only, so there were no different tracks on Java, Ruby, SOA, and Agile topics to attract as many people to attend the conference as possible.
  • It was also more than just one kind of Architecture conference. The key-notes, technical sessions and round-table discussions included other architecture specializations like Data, Information, Infrastructure, and Enterprise Architecture which helped the attendees to put these specializations in perspective and see architecture as a whole solution for the enterprise business and IT needs.
  • There was a dedicated Architecture Career Mentoring track which I thought is an innovative idea and real help to the architecture professionals who are looking for some guidance from the experienced architects. Architecture is an art, not a science, so the advice from a senior architect is of a great value to the new architects.
  • And finally the Open Spaces track, hosted by Steven "Doc" List included two 1-hour open spaces sessions. This was a conference in itself and very informative; I learned a lot of new "open spaces patterns" in attending this event. I will be blogging more about those patterns in the future blog entries.
At the conference, I gave a presentation on "Architecture Enforcement using Aspects" topic. The presentation was very well received. There were both JEE and .NET IT professionals in the room and there was good interest on the topic of using Aspects and AOP to enforce the architecture and design policies.

I have uploaded to SlideShare web site. If you want to check out the presentation slides, here is the link. Let me know if you have any suggestions and feedback for improvement of the presentation.

This presentation has also been accepted for the upcoming No Fluff Just Stuff (NFJS) New England Software Symposium. Check out the symposium schedule.

Let me know if any of you will be attending the NFJS symposium.

Domain Driven Design and Development with Spring Portfolio

I gave a presentation at Ann Arbor Java User Group (AAJUG) last Tuesday on "Domain Driven Design and Development with Spring Portfolio". The presentation went very well with great discussion and feedback from the attendees.

David at AAJUG has been leading the user group meetings, speakers, and presentation. AAJUG has been an active Java user group for last several years. I want to thank David and the group members for the opportunity to speak at JUG meeting.

In the presentation, I focused on the Domain-Driven Design (DDD) implementation aspects using Spring projects like Spring IoC, Spring AOP and Spring Security. I also talked about enforcing architecture rules in DDD applications. I briefly talked about the role of code generation in a DDD application which included a quick demo using tools like Eclipse EMF and openArchitectureWare (oAW).

Here are some of the items I talked about:

  • Domain Driven Design & Development
  • Spring Portfolio
  • Dependency Injection (DI)
  • Aspect-Oriented Programming (AOP)
  • Role of Custom Annotations in DDD
  • Spring Security
  • Architecture Enforcement (Demo)
  • Code Generation (Demo)

I have uploaded to SlideShare web site. You can view the presentation slides on the site. Let me know if you have any suggestions or feedback for improvement of the presentation.

Friday, February 6, 2009

I will be speaking at ITARC Architect Conference

I will be speaking at the upcoming IT Architect Regional Conference in Atlanta later this month. My presentation is in the Enterprise Architecture track of the conference schedule.

Topic:
Architecture Enforcement and Governance Using Aspects and SonarJ

Abstract:
In this presentation, I will talk about the significance of enforcing the architecture rules and standards and how to actually enforce them in software development projects. Architecture governance ensures that the Implementation (Code) does match the Requirements (Reference Architecture). It can help with clear and cycle free dependency structures as well as improve testability and reusability of code.

Enforcing Reference Architecture guidelines promotes consistency and modularity in the System. It also helps in detecting structural complexity and preventing it earlier in the software development process. As a result, the application code is modifiable, portable, and testable.

Most of the presentation will focus on using Aspects and AOP techniques to define architecture rules and use them for policy-enforcement in Java applications. I will briefly discuss how tools like SonarJ and Structure 101 can help the architects integrate architecture analysis and management earlier in the development process.

The session will include several demo's of how to enforce the architecture rules using frameworks like AspectJ and SpringAOP.

Check out more details of the ITARC conference, event schedule and my presentation. Let me know if you live in Atlanta area and if you are going to be attending the conference.

Greg Young on Domain-Driven Design

At QCon San Francisco 2008 conference last year, I interviewed Greg Young on Domain-Driven Design (DDD) topic. His team has been using DDD concepts in their projects. In the interview, Greg discussed how to manage domain state transitions in a DDD project using two different design models, one for reading data from data store and the other for write-only command operations. He also talked about Command Query Separation (CQS) design concept to keep design cleaner and easier to test and maintain and the best practices that developers can use when working on DDD projects.

Check out the interview on InfoQ.

Sunday, February 1, 2009

JavaRebel - nice tool to help with J2EE App hot-deployments

Recently, I got a license of JavaRebel software created by ZeroTurnaround development group. This tool uses a custom Java classloader to hot-deploy the code changes made in a single Java class in the web applications to override the servlet container (JBoss or Tomcat) default WAR deploy behavior (which redeploys the whole web application context).

This tool helps the Java developers be more productive with the time they can save because of the less time required to load the class changes into JVM without having to deploy the whole web application every time a change is made in a single class.

Using the tool is pretty straight-forward. You will have to start the container (whether it's JBoss, Tomcat or any other J2EE container) using the "-javaagent" option and specify the folder(s) where JavaRebel should look for Java class changes in the web applications deployed in the container.

But, remember that even though JavaRebel helps boost the productivity with faster deployments of web application contexts, you should still design your applications to be more unit-testing friendly and be able to test most of the code in the application using the unit testing frameworks like JUnit4 or TestNG, outside the container. You should depend on the container only for those infrastructure concerns (like in-container Database Connection Pool, JTA Transactions, JMS Message Queues and Topics) that need the application to be deployed inside the container. Even in most of these cases, you can use the embedded broker version of ActiveMQ container to unit test the JMS resources outside the container.

If you are using JBoss or Tomcat or other application server and you are maintaining a legacy J2EE application that's not easy to unit test and requires the application to be deployed in the container for even simple code changes, you should check out JavaRebel tool. Similar to tools like IntelliJ IDEA, it is worth the price. The benefits it offers far out-weigh the cost.

I hope SpringSource or JBoss will soon acquire ZeroTurnaround to integrate JavaRebel into Tomcat or JBoss containers respectively. JavaRebel is such an useful tool it only makes sense to see it integrated with these popular J2EE containers and not as a separate product.

Friday, January 23, 2009

Spring 3.0 and Beyond - Interview with Rod Johnson

During QCon San Francisco 2009 conference, I interviewed SpringFramework founder Rod Johnson about various topics including:


The interview is now available on InfoQ. Check it out and let me know what you think.

Monday, January 19, 2009

Top 100 Best Software Engineering Books - Good List

Jurgen Appelo recently posted a list of Top 100 Best Software Engineering Books. I am not sure if I agree with the author on all the ratings of books in the list, but most of my favorites are in top 30. I am just not happy that Eric Evans' book "Domain Driven Design" (which is my top 10 book) is 89 on the list :)

Check out the list. Top 100 Best Software Engineering Books, Ever:
http://knol.google.com/k/jurgen-appelo/top-100-best-software-engineering-books/

How does this compare to your own list of favorite books?