Complexity poses increasingly difficult obstacles for software developers, who are nonetheless called on to build applications for users who want this complexity hidden, Rational Software Corp. Chief Scientist Grady Booch said during a presentation at the IBM Corp. developerWorksLive conference on Thursday.
Software has changed the world, creating opportunities for businesses and even changing the nature of civilization, Booch said.
"Therefore, it is a tremendous privilege to be a software developer," said Booch.
Web services technologies such as WSDL and UDDI make it possible to build systems that are accessible to a larger community "than we could have conceived of in the past," Booch said.
But developers face difficulties, he noted.
"Software development has been, and frankly it will remain to be, a very hard thing. That's the fundamental thing we all face as software developers," Booch said.
"The reality for all of us is complexity is increasing," with applications needing to be more distributed and secure, he said. "Building better software faster is a challenge for most organizations."
Developers must cope with building systems on top of operating systems and other systems with millions of lines of code. But developers have to create an illusion of simplicity, with users wanting to hide technology, Booch said.
Technology is limited by factors such as the laws of physics and software, the challenges of algorithms, distribution problems, economics, politics, and the limits of human imagination, according to Booch. Additionally, developers must adapt legacy systems for new applications as well as do new development.
"In short, we are building continuously evolving systems that we can never turn off," he said.
But the history of software engineering, Booch said, has been about raising levels of abstraction, moving from Cobol and Fortran to C, C++, and Java. "These are languages which allow us to express things at higher levels of abstractions than we could in previous times," he said.
Web services add even more abstractions, said Booch. Grid computing also is becoming a factor, but for many it will be transparent.
Rational, for its part, is dedicated to improving the developer experience, he said. Business process modeling also presents an opportunity for developers, he said.
Middleware, meanwhile, provides a way to handle repetitive tasks. The future of software development will feature concepts such as component-based development, reusable assets, model-driven development, and collaborative development environments, according to Booch.
Also on the horizon for developers is the semantic Web, said Booch.
"What the semantic Web brings to bear is the notion of bringing more self-knowledge to things on the Web," creating opportunities for new applications that tie together semantically rich and knowledgeable data, he said.
But Booch cautioned, "I must remind you again that software development remains a very, very hard thing. There's no silver bullet here."