Tuesday, October 31, 2006

Little Shop of IT horrors

For your Halloween reading pleasure: Check out Little Shop of (IT) Horrors.

The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

Monday, October 30, 2006

Reverse Engineering of UML Class and Sequence Diagrams from Java

About a year ago I had to stop work on an interesting project. There were just too many projects going on at one time, not enough resources to work on them all, and the other projects were more important from a political point of view. The project involved our B2B application making a call to a service provided by a 3rd party outside the firewall. One of the developers had built some great Java code to do this right before we stopped work.

I recently picked that project back up again and needed to dig into that code, understand how it worked, and create some design documentation for the overall project. I also had just recently made a conscious effort to upgrade my object modeling tool from Rational XDE to Rational Software Architect (RSA).

I decided I would start by reverse engineering the Java code to create a class diagram. I had done this numerous times as a Rational Rose and Rational XDE user in the past so I had no worries. I managed to import the source code and began fumbling through the menu options looking for reverse engineering features. I got a sinking feeling at first that someone at Rational had taken the reverse engineering features away. I found numerous transformations for forward engineering from UML class diagrams into something else (like Java). It was not obvious, however, what to do if I already had the Java code and wanted to go in the reverse direction. I had a sinking feeling inside. Had the Model Driven Development / Model Driven Architecture adherents at Rational lost their minds? Had they taken those reverse engineering features away on purpose? Was this a heavy handed means of forcing the whole world to adopt a “forward engineering only” view of the application development process?

Luckily, I was able to determine that Rational had not lost its collective mind. Yes, it was indeed possible to reverse engineer code into a diagram and as I got more into it, I decided it was actually an improvement.

I highly recommend a meaty white paper I found on developerWorks called The new IBM Rational design and construction products for Rose and XDE users” by William T. Smith, a Product Manager supporting model driven development at IBM Rational brand software. From it I discovered that many reverse engineering capabilities were available in RSA (as well as Rational Software Modeler (RSM)) and they appear to be significant improvements over what I was used to in Rose and XDE. There is a great deal of new terminology to get used to, however.

Here is a quick summary of what I learned about reverse engineering using RSA

  • I can select Java classes of interest with my mouse and quickly reverse engineer a class diagram by “visualizing” a “Topic Diagram”. This diagram can be synchronized with code as the code is modified.
  • I can “harvest” classes from the topic diagram and paste them into a separate UML diagram.
  • I can mix “pure” UML classes and harvested classes on the same diagram and the tool will mark classes reverse engineered from code with a glyph in the upper left hand corner.
  • There is a new “Browse Diagram” capability which allows the user to explore existing code by quickly generating class diagrams “on the fly” showing classes related to a selected class. Selecting a different class on this diagram will generated yet another diagram on the fly with all classes related to that class. This quick navigation from one diagram to another is a great way to “get to know” code someone else wrote. You can control which kinds of relationships are included when the class diagrams are created and how many levels (up to 3) removed from the selected class in the center of the diagram. I made great use of this on my project.
  • (Drum roll please!) I can reverse engineer Java method bodies into UML Sequence Diagrams by “visualizing” a “Static Method Sequence Diagram.” This type of program understanding tool has long been missing from UML modeling tools. It will be a windfall to any poor soul who must maintain/modify poorly documented Java code created by someone else who is perhaps no longer around. The only downside is that if the method makes any calls to low-level Java classes like “Integer” those method calls will clutter the generated diagram. But.. think of the time you’ll save!

Together, these reverse engineering capabilities will just about take away the last excuses for not having design documentation match the “as implemented” state of the Java code. It really is easy to create both class and sequence diagrams and rapidly document both the static and dynamic behavior of “as is” Java software.

(Dec 2007) English not your native language? I've begun making podcasts of popular posts and they are available at http://artsciita.podbean.com/. Listen online at that URL, with the MP3 player below, or subscribe to the podcast using the RSS feed and listen with your favorite MP3 player.

Copyright © 2006 by Philip Hartman - All Rights Reserved
The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

Tuesday, October 17, 2006

Halloween Horror Stories for I/T

Out of the many emails I get from the various online trade rags, one jumped out at me from my inbasket the other day. The email pointed me to one article with a title inspired by the upcoming Halloween season: 25 Terrifying Information Technology Horror Stories. There's even a great video clip from an old black and white horror movie, "The Brain that Wouldn't Die".

I won't say I've read through all of the horror stories but from what I can tell, the lessons learned are worth a visit by any serious I/T Architect, project manager, CTO, CIO, and anyone else who doesn't want to be pointed out to the whole world as an example of how NOT to execute an important project.

Copyright © 2006 by Philip Hartman - All Rights Reserved

The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

What Could Possibly Be Wrong With Corporate Blogging?

Not all I/T Architect-bloggers are as fortunate as I in that my employer actually encourages us to blog. (See my very first post in this blog.) I'll reproduce a quote from the IBM employee blogging guidelines I quoted back then. "It is very much in IBM's interest – and, we believe, in each IBMer's own – to be aware of this sphere of information, interaction and idea exchange."

Obviously, not all corporations embrace this kind of thinking. Dan Gillmore points out two very different scenarios in " Corporate Blogging: What Could Go Wrong? The first is the obvious concern about someone leaking new product information and potentially giving a competitor an early start on catching up. But the second scenario was more interesting. It was about the cost of NOT using blogging and NOT being clear and transparent about problems in the open media. He makes an interesting point about not getting out in front of "bad news" and actually engaging potential customers in solving the problem.

"The real danger is not letting your employees harness the full power of an interactive, edge-in communications medium. If you keep the reins too tight, you won't reap the benefits of informed and passionate readers and users. And sometimes, if you're not communicating freely with your readers and users, bad news can catch them by surprise."
I have to admit I see his logic... especially in the area of product development. If I was trying to come up with the next generation Apple iPod I am sure I could recruit an army of passionate bloggers to help me. But what if client A has a whole bunch of fuzzy business requirements, a hodge-podge of technology accumualted from their merger history, and a minefield of political considerations. How would a crowd on the outside be able to digest all the client-specific nuances of the situation? And would the client even want their client-specific details out in the open?

Still...I've heard of the popular business book, The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies and Nations devoted to the innovative use of ideas from outside the company. I haven't read it yet, but maybe I need to. I'd be curious to hear if any of my readers have had success in using blogging to make better one-of-a-kind solutions for clients.

The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

Getting Good Service from SOA

You may find this article interesting regarding benefits being realized by Service Oriented Architecture (SOA). The author makes a point to reference many different companies and give some highlightes of their experiences. Here's a couple of samples:
"At Railinc Corp., a transportation logistics firm based in Cary, N.C., Garry Grandlienard, director of enterprise architecture, notes that many of his company's applications draw on certain basic information about railcars, stored in one main database. Before SOA, changing one element of that database might have meant changing 100 applications. With SOA in place, he may not need to make any application changes at all, since he can change the service layer and it will translate the database change for all applications.

Farmington Hills, Mich.-based RouteOne LLC is an exchange established by the finance arms of General Motors Corp., Ford Motor Co., DaimlerChrysler AG and Toyota Motor Corp. to provide auto dealers with access to a variety of financing options and services. Here, SOA gives CIO Joel Gruber a cost-effective way to make changes to his internal infrastructure without disrupting all the firms that use the exchange. In August, RouteOne began piloting an electronic contract feature, called eContracts, to allow auto dealers to forego paper contracts. Key to the eContracts pilot is a service the company built to test its messaging environment. At RouteOne, a transaction, such as an auto loan application, is treated as a type of message, and the testing environment lets the company see if new message types will cause any problems. "It doesn't sound like a service," notes Gruber. "But it's a utility service that means we don't break anything for our customers when we change something.."

Check out:Getting Good Service
The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

Friday, October 13, 2006

A Company that Can Run Itself from Wherever It Makes the Most Business Sense

I found this interesting blurb highlighting the continuing changes in corporate life:

"A job reassignment notice from IBM today signals something more than that another American executive is moving his office halfway round the world. John Paterson, the company's chief procurement officer, is relocating from Somers, N.Y., to Shenzhen in southern China. IBM's (nyse: IBM - news - people ) global procurement division is going with him. It is the first time, the company says, that it has moved a corporatewide headquarters division outside the U.S. Shenzhen sits just north of Hong Kong on the southeastern side of the Pearl River delta.....That shifting global pattern of employment is old news, but that the top-boss job in a key division is relocating marks a milestone along the road of IBM's transition from an American multinational to a global company, one that can run itself from wherever it makes the most business sense. "

Check out: IBM Goes Global - Forbes.com

The postings on this site are my own and don't necessarily represent IBM's positions, strategies, or opinions.

Sunday, October 08, 2006

College Hiring

I present this little bit of anecdotal evidence that employment prospects for I/T professionals here in the USA are bright. I am making my first college recruiting trip! I will be interviewing undergraduates and graduate students at the University of Tennessee at Knoxville on October 27, 2006 October 20, 2006 for positions in IBM Global Business Services-Application Services. We’ve been hiring experienced professionals all along for several years but this is my first personal experience interviewing college students for entry level positions. I like to look at it as hiring the next generation of I/T Architects and others who will become the technical leaders of tomorrow. Think about it. This is a clear indication of confidence in our future prospects for new business and demonstrates a willingness to invest in the training and mentoring of new employees who don't have lots of real-world experience.

I was actually on campus a couple of weeks ago to speak at an "info night" to talk about Application services and what career in consulting is like. Here's a picture of the UT University Center.