Skip to main content

Architectural manifesto: A look at the future of software development and application building

Mikko Kontio has a background in software development and consulting. He is currently a director in Softera, a software development company focusing on business portals and telecom-billing solutions.

Summary:  This installment takes a break from agile topics and instead looks into the future of software development. Explore how the evolution of tools, technologies, methods, and customer demands might shape the future of the industry. Current trends could cause software development to diverge into two distinct forks, or roles.

View more content in this series

Date:  30 Sep 2008
Level:  Introductory PDF:  A4 and Letter (27KB | 7 pages)Get Adobe® Reader®
Comments:  

Introduction

In this article, explore the future of software development. Learn how today's trends might shape or split the industry.

Before predicting the future, though, let's first take a glance at the life of those who buy software development services. If you’ve read about chief information officers (CIOs), you know that their most important job these days should be to offer solutions to business problems with a price that makes it worthwhile. They are not only solving technology problems, but are also solving business problems or business goals with technology. In addition to determining basic information communication technology (ICT) infrastructure, CIOs are also finding solutions that support or enable growth, change, product launches, and so on. You could say that the role of the CIO is more business oriented than IT oriented, or at least it should be.

In the past 10 years, the cost and time demands for software development projects have tightened, and it is obvious that the trend will continue. On both the customer and provider side, it's very important to always remember the problem that you’re solving. If software developers focus too much on the technology, they can lose touch with customers (and the problems they're trying to solve). On the other hand, focusing only on the customer problem can lead to losing touch with evolving technologies and methods. Either extreme is bad for the customer in the long run. It’s mainly a question of finding the right balance.

In this article, learn how software development has evolved and how it might change in the future. Review recent trends of price sensitivity, multilocation projects, outsourcing, important technologies, and methods. Discover how the trends might push half of the profession into application building.


From software development…

The future of software development looks very interesting as tools and methods evolve. Some types of projects get outsourced, and others are done in-house. Large development companies use outsourcing centers in more affordable countries where experts are available. Some companies move only the implementation and testing and still do analysis and project management locally. Others, whose customers have made the requirements specifications, can do most of their parts of the project in the affordable locations.

Large development projects are now sometimes done on the other side of the world. This sets up huge demands for the project management, development, and communication tools used by the team. For years the software industry and university researchers have invented and crafted development processes, methods, and project management techniques to ensure that development projects run smoothly even if team members are all over the world.

Customers and development companies are trying to make the software development process more efficient—and to cut costs where possible. The project management, analysis, and requirement specifications are hardest to move to locations away from the customer, because typically the requirements can only be written or gathered together with the customer.

Thus far, the actual design, coding, and testing of software have been the easiest parts of the process to make cheaper by moving them to affordable locations. In the near future, it will become more important to save time and expenses by reusing code, components, and architectures. If you read the trade press, this should be happening right now. Sometimes, though, the reality is different. Using efficient development tools, component libraries, and methods such as model-driven architecture (MDA) would make work more efficient, yet some companies and developers are hesitant to adopt these tools. There is a short-term cost, and learning curve, to make the change from old tools to new ones.

The technologies that your components use are becoming more and more important. For example:

  • For a typical Java™ EE project, there are several ways a team could build the software. The do-it-all-yourself team would first spend time with the customer to write a requirements document for the first couple of iterations (depending on the development process they're using). They would then build the database manually, write classes to handle object-to-relational mappings, write the business logic with JavaBeans, and create the user interface with JSP or JSF.
  • The more tool-aware team would first model the requirements with a modeling tool, and continue to model the requirements into test cases and the software architecture. They would export their models to source code in a way that is suitable for the application sever and the portal product that they’d use. Instead of manually composing the Web user interface, they'd use portal components and allow the portal to handle most of the basic stuff. They would save time, make the software less prone to errors, and make the application’s design and test documentation more easily changeable.

You can see there is a difference. The lessons are:

  • Keep up with what's new and always try to improve your methods.
  • Tools make manual work phases easier. Aim to completely remove the need to interfere manually.

So far, one of the solutions to make development services cheaper has been to move the work to cheaper locations. But technology is also another way is to make your services more efficient.

What technologies are most likely to take us to the next level? All component-related technologies, including Web services and other Web-based components, code generation, open interfaces, and more. There are several component technologies available for almost all development platforms and languages, some more famous than others. They all aim to reuse code and logic, and to enhance ease of use. Some have succeeded in their goals better than others, but they all help lead the way.

Web services and other Web-based components bring the same kind of concept to the Internet. MDA lays a good foundation for generating code from the design model of the application, thereby reducing work efforts, and ensuring quality and maintainability. MDA has not broken through yet, possibly because developing an application using MDA is quite different from coding it manually, and there are different tools. Generally speaking, it is becoming more common to generate some part of the application, such as class skeletons, from Unified Modeling Language (UML).

Customer needs, trends in software development, and some of the available technologies will provide a pretty interesting future for software development.


…to application building

Combining some of the methods and technologies discussed in the previous section can create an interesting setup. If certain functions are made available as a component over the Internet, either as Web services or with another technology, the role of software developer could change to service developer. The services would then be used to build applications for end users by combining several small components into one big application. People who use the services would be application builders. The service developer and application builder could be the same person; think of them as roles.

Web services standards provide tools for offering interfaces and the role of broker of services (UDDI). However, the critics say Web services are too complex as it is. The RESTful Web services (with Web Services Description Language) could make it easier though.

Small software companies could focus on developing and maintaining specified services. As customers try to find ways to implement software more cheaply, the evolving setup would serve them well. With a good selection of services, building applications based on the services would quickly become an obvious choice. It would be tempting to offer affordable applications to customers within a tight schedule. The customer relationships would become stronger, and a good reputation would ensue. Demand, and a promise of money, would lure developers to build and offer these services.

Services could range from simple graph building operations to managing a complete sales process. Application builders would be able to select the most appropriate services, and build the application while crafting the architecture of the application. Even with a thorough requirements analysis phase, test phase, and customer-specific user interface development, the work efforts of the project would be minimal compared to a typical development project. Of course, this is just a prediction; the process could be different but the basic elements should be there.

Developers and companies would then divide into two main groups: one creating services, and one creating customer solutions from the services. At first there probably wouldn’t be much competition between services, but once (and if) the model started to work, competition between the services would be fierce. The builders could easily, from a technical point of view, change a not-so-good service into a better one.

One group couldn't work without the other. Some of the Web application providers (customer relationship management, enterprise resources planning, project management suites, and so on) could possibly start to offer their applications using Web interfaces for other developers. This is already happening, but what is still needed are easier-to-use interfaces that are similar to one another, and simple contract issues between service developers and application builders.

The future requires a development environment that combines requirements, modeling, and building applications from the services that are available. A tool could also solve the contract issue with a simple solution, such as a check box to make contract issues easy for the application builder. Evolution of tools has been continuously fast for years, so if the speed continues at that rate, the required functions could be available in the near future. Envision the tool as a Delphi, or Microsoft® Visual Studio, with component libraries of services offered online.


Conclusion

This column ruminated on the future of software development. The evolution of tools and methods in the past 10 years has been amazing. Source code that used to be written manually can now be generated from the UML model, letting developers focus more on the essentials. Services and components can be made available over the Internet. Project management methods and development processes have made multilocation projects easier to handle.

Customers want customized solutions faster, and for less money. By combining some of the trends discussed in this article, one can predict that the software development industry might split into two groups: developers who develop services and host them for others, and application builders who use the services to build applications for customers.


Resources

Learn

Get products and technologies

  • Download IBM product evaluation versions and get your hands on application development tools and middleware products from IBM® DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.

Discuss

  • Participate in the IT architecture forum to exchange tips and techniques and to share other related information about the broad topic of IT architecture.

About the author

Mikko Kontio has a background in software development and consulting. He is currently a director in Softera, a software development company focusing on business portals and telecom-billing solutions.

Comments



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Rational
ArticleID=342577
ArticleTitle=Architectural manifesto: A look at the future of software development and application building
publish-date=09302008
author1-email=mikko.kontio@softera.fi
author1-email-cc=