The engineering environment of Web Applications is in a constant state of technological and social flux. These applications face challenges posed by new implementation languages, variations in user agents, demands for new services, and user classes from different cultural backgrounds, age groups, and capabilities. We require a methodical approach towards the development life cycle and maintenance of Web Applications that can adequately respond to this constantly changing environment. In this article, we propose the use of an agile methodology (Highsmith, 2002), namely Extreme Programming (XP) (Beck & Andres, 2005), for a systematic development of Web Applications. In general, agile methodologies have show to be cost-effective for projects with certain types of uncertainties (Liu, Kong, & Chen, 2006) and, according to surveys (Khan & Balbo, 2005), been successfully applied to Web Applications. The organization of the article is as follows. We first outline the background necessary for the discussion that pursues and state our position. This is followed by a discussion of the applicability and feasibility of XP practices as they pertain to Web Applications. Then the shortcomings of XP towards Web Applications are highlighted, and suggestions for improvement are presented. Next, challenges and directions for future research are outlined. Finally, concluding remarks are given.
Engineering Web Applications Using Extreme Programming
In this section, we discuss in detail how the twelve practices put forth by XP manifest themselves in the development of Web Applications (Table 1).
Key Terms in this Chapter
Pair Programming: A practice that involves two people such that one person (the primary person or the pilot) works on the artifact while the other (the secondary person or the co-pilot) provides support in decision making and provides input and critical feedback on all aspects of the artifact as it evolves.
Refactoring: A structural transformation that provides a systematic way of eradicating the undesirable(s) from an artifact while preserving its behavioral semantics.
Web Engineering: A discipline concerned with the establishment and use of sound scientific, engineering, and management principles and disciplined and systematic approaches to the successful development, deployment, and maintenance of high quality Web Applications.
Semantic Web: An extension of the current Web that adds technological infrastructure for better knowledge representation, interpretation, and reasoning.
Coding Standard: A documented agreement that addresses the use of a formal (such as markup or programming) language.
Agile Development: A philosophy that embraces uncertainty, encourages team communication, values customer satisfaction, vies for early delivery, and promotes sustainable development.
Web Application: A Web site specific to a domain that behaves more like an interactive software system and will, in general, require programmatic ability on the server-side and may integrate/deploy additional software (such as application servers, media servers, or database servers) for some purpose (such as dynamic delivery of resources).