In addition to the challenges that have to be dealt with in any kind of software development, the environment and restrictions in the development of Web applications lead to particular difficulties and challenges.
Many Web applications are designed to address a new or unknown user group. As these future users don’t know what is offered or what they can or should expect from a new Web application, they cannot formulate requirements or express their expectations. For this reason, Web application development is often confronted with new or changing requirements much more often than traditional software systems. This means a lot of prudence and intuition in weighing interests in an extremely insecure requirements portfolio for a Web application. Also since most Web applications are new, it is difficult to fall back on past experience.
Many Web application development projects are characterized by high time-to-market pressure and short development cycles. The reason for this high time pressure in Web projects is seen in the rapid change on the Web and the consequent short lifecycles of Web applications, or their high update frequency. In addition, there is currently fierce competition in the market of Web application development, since this is an expanding and ousting market.
The objectives of Web applications and the tools to create and use them as well as the Web itself are subject to continuous evolution. Consequently, the transition from development to maintenance is hard to schedule for Web applications, and it generally doesn’t make sense. Maintenance is difficult particularly if a Web application has to offer 24 × 7 availability.
Many Web application environments are constantly updated or changed. They are often immature so that error removal, interface expansion, etc. represent important productivity increases. As a consequence of the extremely fast pace of technological development, experience with tools is poor, which can lead to a considerable hindrance of a Web application’s evolution. Many release changes of a Web application are tied to changes in the development environment, often due to newly introduced techniques and standards for the Web or changing browser technologies.
The look of Web pages is subject to more updating and trends than any other software. To stay “in” with one’s Web design is seen as the critical success factor. This necessity to change products from the artistic/aesthetic view accelerates the pressure driven by the technical evolution to change things even more.
A Web user cannot be expected to be loyal to a Web vendor. People use Web applications only when they see a direct benefit in them. In contrast to many traditional information systems, there is no pressure to use a specific Web application. If users don’t like a Web application, they will find other ways to obtain the information they are interested in.
Spontaneity leads to another consequence: the use of a Web application has to be widely possible without instructions. Web application users are even less willing than users of conventional software systems to read extensive instructions, let alone paper manuals. This means that Web applications have to be self-explanatory and feature a highly repetitive control flow or navigation. The usage logic has to be uniform across the entire Web application, so that users can acquire operating routine quickly and feel comfortable with the Web application. Good usability is a critical success factor for Web applications, which cannot be stressed enough in the planning phase.
The potential user group for a publicly accessible Web application is generally large. This means that the number and characteristics of the actual user group are unknown, and the spectrum of potential user types is extremely wide. This situation leads to the problem that it is impossible to determine a representative user group as a basis for identifying requirements during the development of a Web application. Even though a test application deployed on the Web can reach Internet users, one can often observe neither approval nor denial, but merely indifference due to the spontaneous interaction behaviour.
People use browsers to visualize and use a Web application. Though only a handful of browsers dominate the market (Microsoft Internet Explorer, Mozilla Firefox, Opera and other Mozilla based browsers), they have a very different compatibility behaviour and often unclear support of certain standards (HTML, CSS, etc.). In addition, the platform adaptations and software versions of these browsers differ, and neither downward nor upward compatibility is necessarily a given. A uniform design of the set of functionalities and user guidance is, accordingly, hard to implement and maintain due to frequently surprising and serious changes effected by browser vendors. On the other hand, limiting Web applications to users with specific browsers would aggravate large potential customer groups.
Users expect Web applications to be available round the clock (24×7 operation). These expectations mean high requirements not only on application quality with regard to reliability, but also on the underlying hardware and network connection. This requirement represents an enormous challenge for the maintenance of Web applications, because they have to be maintained either on the production system or in parallel to it. In the latter case, synchronizing the development system with the production system and testing (while data change dynamically) are especially difficult.
The ubiquity of Web applications, combined with the spontaneity of users, imply that Web applications have to be scalable to an extent that cannot be projected prior to and during development. A poorly scalable Web application can cause a dramatic loss of performance perceived by all of its users as soon as their number reaches a certain maximum. This situation can aggravate the entire user group, or cause data loss in the worst case.