Like old-time baseball, software development is about fundamentals more than fancy new technology. At the Enterprise Software Development Conference, which concluded today, speakers focused on fixing fundamentals for attendees. Though hot topics like the iPhone and virtualization were discussed, keynote speaker Ken Pugh emphasized a more holistic approach to software development.
(ESDC, held in San Mateo, Calif., was produced by BZ Media, which also publishes SD Times.)
Pugh, a consultant with Net Objectives and author of the book “Interface-Oriented Design,” got positively atomic on design patterns and development principles, admonishing attendees to understand which were which. He claimed that the Model-View-Controller (MVC) framework is fairly simple: data comes in, data is processed, data is sent out. While this describes the pattern at work, Pugh said good development principles demand these units be separate entities for easier maintenance. And therein lies the distinction between patterns and principles, he said.
Pugh focused on the fundamental principles and design patterns that are key to succeeding at software development. One of those principles was that of singularity. “Everything should be done in one place. Business rules should be tested in only one layer. Only have one test for one thing. Have one and only one, so that any change made to the system is only done in one place,” he said.
While there were also talks at ESDC that covered more contemporary topics, such as iPhone development and virtualization, these newer ideas were blended with traditional software development wisdom.
Andrew Binstock, principal analyst at Pacific Data Works and a regular SD Times columnist, discussed the use of virtualization within test labs. Specifically, Binstock advocated the use of VMware’s replay and snapshot functions for debugging purposes. He also discussed the use of lab management software from Skytap, Surgient and VMware. For developers building multi-tiered systems, said Binstock, managing a client, server and database server as a single unit can simplify testing processes.
All of this virtualization necessitates the creation of a pool of configuration templates for spinning up virtual machines, said Binstock. “For some companies, every laptop they get is already configured with a set profile. What you can do with virtualization is have virtual machines configured with that default profile. What a lot of big sites have done is created a library of certified, blessed configurations, put them in virtual machines, and, as one of the last stages before deployment, all software tests and user acceptance tests have to be done on clean versions of this profile.”
Binstock also said that virtualization can be used to make tools available to offshore developers without having to purchase new licenses or implement new security models. Binstock also advocated running product demos on virtual machines rather than development laptops. After the demo is shown to the client, he advocates throwing the entire virtual machine out and loading a fresh copy of the virtual machine for the next demo. Thus, he said, developers can eliminate the possibility of crashing demos.
David Intersimone, vice president of developer relations and chief evangelist at Embarcadero Technologies, spoke on what is, perhaps, the most common enterprise software development problem: how to comprehend tangled and undocumented code. In his two-part talk on software and database archeology, he advocated using machines to do code reviews rather than doing them by hand.
He suggested a number of tools to use when trying to comprehend a codebase, such as for viewing source code as UML, checking object metrics, and looking for complex dependencies. He also advocated using tools to find unused source code.
“Do you have unreachable code? Something that throws an exception while false?” Intersimone said. “But false is a constant, and it will never throw an exception. You’d like to know where those are. You’d like to be able to run through the source code and say, ‘This one’s OK, but how do we exit that one?’ If you’re lucky, there’s a comment in the source code that says, ‘Don’t worry, I know what I’m doing.’ Or, if you’re unlucky, that knowledge is locked in someone’s brain.”
When it comes to knowledge trapped in brains, Intersimone suggested that IDEs can be useful for enforcing coding standards, and for forcing developers to write comments. If nothing else, he said, IDEs are useful for refactoring and identifying dead code through source code analytics.