This is a showcase review for our sponsors at CodeProject. These reviews are intended to provide you with information on products and services that we consider useful and of value to developers.
Rarely do you hear managers complain about employees who love their jobs too much. Yet a curious thing occurs with developers—those who program computers are sometimes accused of loving it to excess. Some process gurus and modeling experts (Bran Selic, Scott Ambler, Doug Rosenberg) have worried out loud that application development is too often the domain of coders who prioritize playing with new technology over meeting every last customer need. These voices are largely drowned out, however, by the chorus of agile methodologists who advocate iterative development where "the code is the model."
"It's very easy to get carried away with that creative aspect of coding. In part, this has to do with education, where the emphasis is still very much on coding, and in part on using lines-of-code-produced as our measure of productivity. And the longer you've been a developer, the harder it is to shift away from that frame of mind. You're always thinking in terms of implementation details, design patterns and idioms," says Frank Truyen, CEO of Cephas Consulting Corp., which specializes in Unified Modeling Language (UML) and Model Driven Architecture (MDA). "To be honest, you can get very creative with modeling, too. The ability to express everything your software is going to do one level away from the actual implementation is very powerful."
But smoothing the path to modeling acceptance means making it a collaborative activity rather than an onerous context-switch. According to speaker and author Scott Ambler, while agility values people and the way they work together over tools, "tools and processes are still important issues to address. Although the majority of modeling is done using whiteboards and paper, CASE tools can provide your team with significant value. This is particularly true of tools which support both code generation and reverse engineering."
The onus is on the tool vendors, Ambler says, to provide significant value to their users. "Many of the CASE tools of yesteryear focused on comprehensive documentation and struggled in the marketplace as a result. Modern CASE tools which are 'closer to the metal' and automate critical development tasks should prove to motivate greater levels of modeling on development teams, but only if they truly provide value to developers."
Vision from Down Under
And that's where Geoffrey Sparks comes into the story. From its humble origins nearly a decade ago in Creswick, Australia (near Melbourne) to its status as a fast-growing, low-priced solution for software requirements gathering, modeling, database schema design and business process modeling, his eponymous company has delivered on a unique approach to application development tools.
"The pricing model of some companies in this market ends up restricting their software to the desktops of a few gurus. Our model of offering a seat for $300 or less enables team collaboration," says Ben Constable, Sparx Systems Chief Operating Officer.
In the last year, Enterprise Architect has grown its user base to nearly 100,000 in 60 countries, and earned a coveted Software Development Productivity Award (in which Ambler lauded Enterprise Architect as "a favorite tool among people looking for a low-cost, yet useful, UML-based modeling tool for .NET and J2EE.") But the victory industry observers are most abuzz about is its recently announced integration with Microsoft Visual Studio and Visual Studio Team System, including Team Foundation Server. Could this be the move that brings the Visual Studio mavens into the modeling fold?
For the first time, anyone can open up a window within the Visual Studio interface and access Enterprise Architect. Modelers and architects, requirements engineers and database administrators alike can access a full repository containing round-trip model-to-code artifacts to create seamless integration between the UML models created in EA and the coding done in Visual Studio. "It breaks down the wall that naturally exists. One of the barriers to working together is the resistance to learning a new set of tools. The link between Enterprise Architect and Visual Studio gets around that," says Constable.
The tool has a wider reach than many in its class: Business analysts can use EA for requirements analysis as well as to generate Web- and Microsoft Word-based documentation. A read-only version of the product allows models to be shared directly with clients or other stakeholders. Further, if you have a large body of legacy code that needs to be visualized and reverse engineered, Sparx Systems suggests pointing EA at your existing code base and it will generate classes and relationships for you.
Egg and Chicken
Sounds simple, right? Even though the tool can help developers link model to code, or derive models from existing source files, that's not always an ideal use, according to Truyen.
"'Live' roundtrip engineering is common, but not everyone turns it on all the time. You're often playing with the source code and don't want to see changes reflected back in the model. Likewise, model changes are better reviewed before impacting code," Truyen says. As for "The code is the model": "There is a bit of a danger here of saying 'I'll let the tool do the modeling.' Not that there's anything wrong with documenting that way, but you've missed the real reason for modeling, namely, the building of a layer of abstraction away from the code in order to capture the essence of what the software needs to accomplish."
When it comes to data modeling, he admires EA's facility for allowing developers to quickly create a database schema for testing and prototyping: "You're not really worried at that time about optimizing performance or putting in triggers or stored procedures, although the tool supports those features as well." If you're building on an existing foundation, EA's reverse engineering capabilities can help analyze a legacy application and document the residual dependencies on existing data structures.
SOA and Beyond
If only about 25 percent of developers embrace UML as a way of life, a similar portion is fast becoming enamored of service-oriented architectures (SOA). Beyond a mere focus on bringing UML to the masses, the integration of EA with Visual Studio Team System may augur the widespread acceptance of Web services and business process modeling.
The Eriksson-Penker notation, of Business Modeling with UML: Business Patterns at Work fame, is a freely downloadable, pluggable resource file for EA. The Object Management Group (OMG) standard, Business Process Modeling Notation (BPMN), is available as an add-in to the tool as well. If this is starting to sound like alphabet soup, fear not—there's a reason.
"You can create an entire SOA orchestration from that BPMN model. Either from within the modeling tool itself, or via third party integrations after exporting the model in XMI format, users will have the ability to automatically generate business process execution constructs (BPEL, ebXML, etc.)," Truyen explains. Still confused? In other words, business processes can be defined or cribbed from industry best practices and then a mapped to Microsoft BizTalk, for example, for push-button development.
Suddenly, calls for a common language and collaborative development are more than just warm fuzzies—they're imperatives for conquering the dual demons of complexity and constant change. As one of the most popular development environments on the planet makes modeling a no-brainer, will more elegant architectures emerge? Stay tuned.
An award-winning magazine writer and the former editor in chief of Software Development, Alexandra Weber Morales is also a Webmaster, singer-songwriter, and recovering auto mechanic.