This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
A web application is a program which interacts with users through a web browser over a network. While a web server can respond to requests with static files, a web application typically handles requests dynamically by programmatically building the response. Web applications are the foundation of interactive web sites.
Further a web application is a dynamic extension of a web or application server. There are two types of web applications:
Presentation-oriented: A presentation-oriented web application generates interactive web pages containing various types of markup language (HTML, XML, and so on) and dynamic content in response to requests.
Service-oriented: A service-oriented web application implements the endpoint of a web service. Presentation-oriented applications are often clients of service-oriented web applications. (java.sun.com/j2ee/1.4/docs/tutorial/doc/WebApp.html)
Most web applications are based on the client-server architecture where the client enters information while the server stores and retrieves information. Internet mail is an example of this, with companies like Yahoo and MSN offering web-based email clients.
In the Java 2 platform, web components provide the dynamic extension capabilities for a web server. Web components are either Java servlets, JSP pages, or web service endpoints. The interaction between a web client and a web application is illustrated in Figure 1 below.
The client sends an HTTP request to the web server. A web server that implements Java Servlet and JavaServer Pages technology converts the request into an HTTPServletRequest object. This object is delivered to a web component, which can interact with JavaBeans components or a database to generate dynamic content. The web component can then generate an HTTPServletResponse or it can pass the request to another web component. Eventually a web component generates a HTTPServletResponse object. The web server converts this object to an HTTP response and returns it to the client.
A software framework, in computer programming, is an abstraction in which common code provides generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are a special case of software libraries in that they are reusable abstractions of code wrapped in a well-defined Application programming interface (API), yet they contain some key distinguishing features that separate them from normal libraries
A web application framework is a software framework that is designed to support the development of dynamic websites, Web applications and Web services.
Web Application Frameworks supports in the areas of
Session Management and User Authentication
Web Application Testing
In the early days of the web, web sites consisted of static pages, which severely limited interaction with the user. In the early 1990's, this limitation was removed when web servers were modified to allow communication with server-side custom scripts. No longer were applications just static brochure-ware, edited only by those who knew the arcane mysteries of HTML; with this single change, normal users could interact with the application for the first time.
This is a huge and fundamental step towards the web as we know it today. Without interactivity, there would be no e-commerce (such as Amazon), no web e-mail (Hotmail or Gmail), no Internet Banking, no blogs, no online share trading, and no web forums or communities like Orkut or Friendster. The static Internet would have been vastly different to today.
The trend towards increased interactivity has continued apace, with the advent of "Web 2.0", a term that encompasses many existing technologies, but heavily features highly interactive, user centric, web-aware applications.
Initially, it was quite difficult to write sophisticated applications. The first generation web applications were primitive, usually little more than form submissions and search applications. Even these basic applications took quite a great deal of skill to craft.
Many of the applications on the web are either small or medium scale. The usual architecture is a simple linear procedural script. This is the most common form of coding for this kind of applications are using PHP, ASP, ColdFusion and Perl scripts including LAMP technologies.
The reason for this architecture is that it is easy to write, and few skills are required to maintain the code. For smaller applications, any perceived performance benefit from moving to a more scalable architecture will never be recovered in the development time for those applications.
Larger applications need a different architecture than that of a simple survey or feedback form. As applications get larger, it becomes ever more difficult to implement and maintain features and to keep scalability high. Using scalable application architectures becomes a necessity rather than luxury when an application needs more than about three database tables or presents more than approximately 20 - 50 functions to a user.
Scalable application architecture is often divided into tiers, and if design patterns are used, often broken down into re-usable chunks using specific guidelines to enforce modularity, interface requirements, and object re-use.
Breaking the application into tiers allows the application to be distributed to various servers, thus improving the scalability of the application at the expense of complexity.
One of the most common web application architectures is model-view-controller (MVC). The main concept of MVC is to keep the code that displays content (the view) completely separate from the data and business logic (the model). The controller exists to handle user input.
MVC is typical of most Apache Foundation Jakarta Struts applications and Spring MVC applications.
Over time, the arcane knowledge required to write applications has been reduced. Today, it is relatively easy to write sophisticated applications with modern platforms and simpler languages, like Java, C#, PHP, VB.NET etc and most significantly with the use of web application frameworks.
The spotlight of the research is about modern web application technologies and how they participate in the success of the web development project.
What are the important parameters, in the context of software frameworks, which determine the selection of software frameworks and the success of web application?
In order to move forward to do the research on the above topic and the research problem defined above I have identified the following as the set of question which will lead me to dig into the areas which provides me to find the facts for my research.
What are the different types of internet or web applications?
What are the technologies used to develop small, medium and large scale internet or web application development?
What is the suitability and the classifications of software frameworks applicable for small, medium and large scale internet or web application development?
What are key factors influences the success of a web application project?
What are evaluations criteria for selecting software frameworks for web application development?
What are the pros and cons of using software frameworks for web application development compared to traditional web development?
How the success of the web application project is influenced by the software frameworks?
Critically evaluating how the selection of the right collection of web application framework influences the success of web application development project. The research will lead me to gain a thorough knowledge in web application frameworks and different technologies used in web application development
Understanding the technology behind presentation oriented and service oriented web applications.
Understanding the technologies and the web application languages used in small, medium and large scale web applications.
Identifying the web application frameworks which are used in small, medium and large scale presentation oriented and service oriented web applications.
Identifying which are the key factors that influence the success of web projects.
Identifying the evaluation criteria for selecting the right collection of web application framework
Identifying the the pros and cons of using web frameworks over traditional web application development
Identifying the important parameters which determines the success of web applications
Ultimate objective of the study is to be conversant with the latest web technologies, best web frameworks and identifying the parameters influences the success of a web application project.
The research report consists of five chapters. Those are namely
Chapter 1 - Introduction to the topic
Chapter 2 - Theoretical background, features and literature
Chapter 3 - Web application technologies and related frame works
Chapter 4 - Evaluation of the features of different frameworks which influences the success of the web application development project
Chapter 5 - Data Presentation and Analysis
Chapter 6 - Conclusion and Recommendation
Bibliography and annexure appears after Chapter 6 respectively.
Time Scale and Gantt chart
Time scale let the reader to decide on the viability of the research proposal (Saunders et al, 2009). According to the planned study of the research on web application frameworks the research is divided into number of stages and the allocated time the schedule is produced using a Gantt Chart.
Gantt chart is developed by Henry Gantt in 1917, this provides a simple visual representation of the tasks or activities that make up your research project, each being plotted against time line. (Saunders et al, 2009)
Refer Appendix 1
Web development is the art of writing computer software which operates web sites on the internet. Generally web development involves turning requests from web browsers into pages to be displayed to users.
There are a variety of platforms, programming languages, and databases available for the development of web sites.
Software frameworks consist of frozen spots and hot spots. Frozen spots define the overall architecture of a software system, that is to say its basic components and the relationships between them. These remain unchanged (frozen) in any instantiation of the application framework. Hot spots represent those parts where the programmers using the framework add their own code to add the functionality specific to their own project.
The designers of software frameworks aim to facilitate software development by allowing designers and programmers to devote their time to meeting software requirements rather than dealing with the more standard low-level details of providing a working system, thereby reducing overall development time. For example, a team using a web application framework to develop a banking web site can focus on the operations of account withdrawals rather than the mechanics of request handling and state management
A web application framework is a type of software framework, or foundation, specifically designed to help developers build web applications. These frameworks typically provide core functionality common to most web applications, such as user session management, data persistence, and templating systems. By using an appropriate framework, a developer can often save a significant amount of time building a web site. (http://www.owasp.org/index.php/What_are_web_applications%3F)
Each framework is different, but many provide a variety of useful features. By using a framework, a developer avoids having to re-implement these same features for each web application they create.
There are many different types of frameworks, even within one classification of applications. Some offer little more than individual utility routines within a basic shell of an application. Others offer what is almost a complete application and require strict code organization and other rules. Choosing the best framework for a project often requires a programmer to balance how much functionality they get from the framework against the flexibility they are left with.
Following are the some of the advantages of using frameworks
Software development teams and distribution of work
Frameworks & security features
Platform-specific best practices and rules
Use of design patterns and general best practices
Flexibility for application development
Following are some of the disadvantages
Frameworks & extra programming
Bugs and security
List of Web Application Frameworks 
Though there are number of commercial and open source web application frameworks the following are some of the notable web application frameworks:
Refer Appendix A
During my research I will be picking up limited number of technologies and the related frameworks for critical analysis to find how choosing the right collection of web application frameworks influences the success of the web application development project.
Java Platform, Enterprise Edition or Java EE is a widely used platform for server programming in the Java programming language. The Java platform (Enterprise Edition) differs from the Java Standard Edition Platform (Java SE) in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier Java software, based largely on modular components running on an application server.
A Java web application generates interactive web pages containing various types of markup language (HTML, XML, and so on) and dynamic content. It is typically comprised of web components such as JavaServer Pages (JSP), servlets and JavaBeans to modify and temporarily store data, interact with databases and web services, and render content in response to client requests.
Because many of the tasks involved in web application development can be repetitive or require a surplus of boilerplate code, web frameworks can be applied to alleviate the overhead associated with common activities. For example, many frameworks, such as Spring, Apache Struts and JavaServer Faces provide libraries for templating pages and session management, and often promote code reuse.
Few of the most popular frameworks related to Java web application development are
JavaServer Faces (JSF) is a Java-based Web application framework intended to simplify development integration of web-based user interfaces.
JSF is a request-driven MVC web framework based on component driven UI design model, using XML files called view templates or Facelets views. Requests are processed by the FacesServlet, which loads the appropriate view template, builds a component tree, processes events, and renders the response (typically HTML) to the client.
Spring Framework / Spring MVC
The Spring Framework is an open source application framework for the Java platform. The core features of the Spring Framework can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the Spring Framework does not impose any specific programming model, it has become popular in the Java community as an alternative to, replacement for, or even addition to the Enterprise JavaBean (EJB) model.(http://www.springframeworks.com
Apache Struts is an open-source web application framework for developing Java EE web applications. It uses and extends the Java Servlet API to encourage developers to adopt a model-view-controller (MVC) architecture(struts.apache.org)
Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database. Hibernate solves object-relational impedance mismatch problems by replacing direct persistence-related database accesses with high-level object handling functions.
ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages (ASP) technology. ASP.NET is built on the Common Language Runtime (CLR), allowing programmers to write ASP.NET code using any supported .NET language (.NET Frameworks, http://java-source.net/open-source/web-frameworks)
Microsoft has released some extension frameworks that plug into ASP.NET and extend its functionality. Some of them are:
An extension with both client-side as well as server-side components for writing ASP.NET pages that incorporate AJAX functionality.
ASP.NET MVC Framework
An extension to author ASP.NET pages using the MVC architecture.
Spring.NET provides comprehensive infrastructural support for developing enterprise .NET applications. It allows you to remove incidental complexity when using the base class libraries makes best practices, such as test driven development, easy practices. Spring.NET is created, supported and sustained by SpringSource (http://www.springframework.net/)
The design of Spring.NET is based on the Java version of the Spring Framework, which has shown real-world benefits and is used in thousands of enterprise applications worldwide. Spring .NET is not a quick port from the Java version, but rather a 'spiritual port' based on following proven architectural and design patterns in that are not tied to a particular platform.
The breath of functionality in Spring.NET spans application tiers which allows you to treat it as a 'one stop shop' but that is not required. Spring .NET is not an all-or-nothing solution. You can use the functionality in its modules independently.
MonoRail (formerly called Castle on Rails), a component of the Castle Project, is an open source web application framework built on top of the ASP.NET platform. Inspired by Ruby on Rails Action Pack MonoRail differs from standard ASP.NET WebForms development by enforcing separation of concerns using a model-view-controller (MVC) architecture. The framework is commonly used in conjunction with Castle ActiveRecord, an ORM layer built on NHibernate (Professional Enterprise .NET, 2009)
NHibernate is an Object-relational mapping (ORM) solution for the Microsoft .NET platform: it provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a significant portion of relational data persistence-related programming tasks.
PHP: Hypertext Preprocessor is a widely used, general-purpose scripting language that was originally designed for web development to produce dynamic web pages.
Yii is a component-based high-performance PHP framework for developing large-scale Web applications. Yii is written in strict OOP and comes with thorough class reference and comprehensive tutorials. From MVC, DAO/ActiveRecord, widgets, caching, hierarchical RBAC, Web services, to theming, I18N and L10N, Yii provides nearly every feature needed by today's Web 2.0 application development. And all these come without incurring much overhead. As a matter of fact, Yii is one of the most efficient PHP frameworks around. (http:// php.dzone.com/news/top-10-php-frameworks )
CakePHP is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.(http:// php.dzone.com/news/top-10-php-frameworks)
The technologies which are used in the web application development is highly supported by web application frameworks due to many reasons those leads to success of high quality web application ranging from simple applications to B2B, B2C applications and many others. (http:// php.dzone.com/news/top-10-php-frameworks )
The extent to which you are clear about the theory at the beginning of your research raises an important question concerning the design of the research project (Saunders et al, 2009). Research approach refers to the approach or the methodology that has been adopted to conduct the research. It basically involves the selection of research questions, the conceptual framework that has to be adopted, the selection of appropriate research method such as primary research, secondary research etc.
There are two main research approaches generally recommended for any kind of research, those are
Deduction: testing theory
This is an approach treated as a scientific research.
It involves the development of a theory that is subjected to rigorous test. As such it is a the dominant research approach in the natural sciences, where law present the basis of explanation, allow the anticipation of phenomena, predict their occurrences and therefore permit them to be controlled (Collis and Hussey 2003)
The five stages suggested by Robson (2002) lists five sequential stages through which deductive research will progress.
Deducing a hypotheses
Expressing the hypothesis
Testing this operational hypothesis
Examining the specific outcome of the inquiry
If necessary, modifying the theory in the light of the findings
(Saunders et al, 2009)
Induction: building theory
This is an alternative approach to conducting research. The purpose here would be to get a feel of what was going on, so far to understand better the nature of the problem. Your task then would be to make sense of the interview data you have collected by analysing those data. The result of the analysis would be the formulation of the theory. (Saunders et al 2009)
There are number of research strategies which can be employed for the study. Each strategy can be used for exploratory, descriptive, and explanatory research (Yin 2003). Using the particular strategy(ies) will let the researcher answer the research question and lead to achieve the objectives.
Following are some of the research strategies listed by Saunders.
This section outlines the strategy which has been adopted for this research.
Case study - The selected strategy for the current research
Robson (2002:178) defines case study as a 'A strategy for doing research which involves an empirical investigation of a particular contemporary phenomenon within its real life context using multiple uses of evidence'.
The case study will particularly suitable for gaining a rich understanding of the context of the research and the processes being enacted. The case study approach has considerable ability to answer 'why', 'what' and 'how' questions. The research on web application framework will adopt case study strategy for the reason it is explanatory and exploratory.
The data collection techniques in this strategy include combination of
The primary data for this research study will be collected through interviews and surveys done using questionnaires with few of the technical representatives and project managers and testers from software development organizations listed below
The organizations from which I intended to collect the primary data from are
Virtusa Corporation - http://www.virtusa.com/
UniSys - http://www.unisys.com/unisys/
E-College, Sri Lanka - http://www.ecollege.com/
Fast Enterprise Search - http://www.microsoft.com/enterprisesearch/en/us/default.aspx
Secondary data will be gathered from books, information technology magazines, journals, web archives, publications, and other internet sources.
Qualitative Approach for data analysis
In the qualitative approach analysis begins when the data is first collected and is used to guide decisions related to further data collection.
The data for this research will be analysed based on qualitative methods.
The data required for the current research
Number of lines of code
Size of the source file
Availability of human resource
Cost of the project
Bugs in the application due to bugs in the technology
The data analysis will be carried out using the following steps during the research
Cleaning and organizing the data for analysis (Data Preparation)
Describing the data (Descriptive Statistics)
Testing Hypotheses and Models (Inferential Statistics)
Analysis of Covariance