Talk:Web development/Web development (rewrite)

Note: ''I have allocated the current content (copied on 12/26/2006) of the WEB DEVELOPMENT article to a new page. Some of what follows is new material I am drafting, some is existing material with my comments about it. Many sections are still empty, but are included to show the overall layout. I hope to at least write stubs for each section.''

''In parallel with this, I am also rewriting the Web Design article. I will be moving some of that material to this page -- see my notes there.''

''For more details of how to participate in this discussion, see the Talk:Web development page. But please go ahead and make minor edits here, if you see something that needs fixing.'' Chris Loosley 21:43, 29 December 2006 (UTC)

Introduction
''I think this existing material can be reworked a bit to produce a good introduction. It needs to better reflect the diverse products of Web development -- pages, sites, blogs, consumer and business applications, Web services, and ... (what have I forgotten?).'' Chris Loosley 16:53, 28 December 2006 (UTC)

Web development is a broad term that incorporates all areas of developing a Web site for the World Wide Web. This can include graphical Web design, actual coding of pages, backend programming, and Web server configuration. However, among web professionals, Web development usually refers only to the non-design aspects of building Web sites, e.g. writing markup and coding.

''The following examples should be preceded by a more general sentence saying that there is no standard set of participants, only some common tasks to be accomplished. Also, this material could be merged into the later section on small- and large-scale development.'' Chris Loosley 16:53, 28 December 2006 (UTC)

For larger businesses and organizations, Web development teams can consist of hundreds of people. Smaller organizations may only require a single permanent or contracting webmaster, or secondary assignment to related job positions such as a graphic designer and/or Information systems technician. Web development may be a collaborative effort between departments rather than the domain of a designated department.

Web development activities
Web development is a special form of Software development, a broad topic that is covered in many Wikipedia articles. The principal activities of any software development process are requirements analysis, architecture and design, programming, testing, and deployment. Although a Web development process incorporates corresponding activities, the process is best described by a slightly different set of categories. The principal Web development activities are:


 * 1) Requirements Analysis
 * 2) Conceptual Design
 * 3) Mockups and Prototyping
 * 4) Production
 * 5) Launch
 * 6) Maintenance

These categories reflect the specific challenges of developing for the Web, the approaches typically adopted by those doing Web development, and the terminology favored among Web designers and developers to describe the processes they follow. But note that the above list of activities, although presented in a logical order, does not imply that those activities must be performed sequentially in a process that follows the waterfall model. In fact, Web development is much more likely to be performed using an iterative and incremental development process.

The following paragraphs summarize the tasks and deliverables that comprise each development activity.

''To begin the process of creating the following sections, I have included sample descriptions of each activity or phase, which I will edit. They are taken from Diamond Bullet Design, Inc.. Their process parallels the Web development process presented in the book "Usability For The Web", by Tom Brinck, Darren Gergle, and Scott D. Wood. (Publisher's page), which contains the most complete and well structured description of a Web development process I am familiar with.'' Chris Loosley 21:06, 29 December 2006 (UTC)

This older version of the Software design article also contained material on process steps. Chris Loosley 22:32, 15 January 2007 (UTC)

Requirements Analysis
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

Strategy and User Needs Analysis: We identify requirements, formulate the design problem, and develop a viable strategy to meet business needs in a cost-sensitive manner. Beginning with a client's existing brand strategy, organizational information, and desired business outcomes, we work to determine the target audience and platforms of a project and to create a clear profile of users, their tasks, and the usability goals of the end-product. Common evaluation methods at this stage include competitive analysis, exploratory research, functional and observational analysis, focus groups, user interviews, and surveys. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

Conceptual Design
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

Conceptual Design: We lay out the conceptual design, or initial framework, of a website or software application. We work to determine functionality, carefully evaluating product effectiveness and viability before committing to any specific layout or implementation. Key considerations include the way users will interact with a particular website or application, the step-by-step processes they will perform, and the relationship between individual pages. This stage incorporates user testing and expert review processes to ensure that our work will achieve desired results in real-world situations. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

Mockups and Prototyping
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

Mockups and Prototyping: We create visual representations, or mockups, and interactive scenarios, or prototypes, in order to develop and refine the final product design. Through a rapid production and review process, we save time and money by understanding the impact of our work early on, avoiding expensive changes at a later stage. Common evaluation methods include focus groups and user testing, as well as evaluative walkthroughs and testing against standards and guidelines. Through careful work at this stage, we ensure that a design is ready for production. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

Production
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

Production: We create the finished product;from final text and graphic content to software development and implementation. Guided by comprehensive processes of quality assurance and usability evaluation, we develop a product that delights users and meets or exceeds our established benchmarks. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

CSS versus HTML tables for page layout
I moved this section here from the current article on Web design, made some edits for readability, deleted the last half (see below for text) as POV and containing too much detail. Chris Loosley 04:03, 2 January 2007 (UTC)

When Netscape Navigator 4 dominated the Web browser market, the popular (but now deprecated) way to lay out a Web page was to use HTML tables. Often even simple designs for a page would require dozens of tables nested inside one another. Many web templates in Dreamweaver and other WYSIWYG editors still use this technique today. Navigator 4 didn't support Cascading Style Sheets (CSS) well, so it simply wasn't used. But after the browser wars were over, and Internet Explorer dominated the market, the practice of using of CSS to lay out pages grew steadily.

CSS proponents argue that tables should be used to present tabular data, but not to control page layout. Using CSS instead of tables also returns HTML to a semantic markup, which helps bots and search engines understand what's going on in a web page.

Today, all modern browsers incorporate some degree of support for CSS. However, because the various browsers support different subsets of CSS rules, a given CSS specification can be displayed in slightly different ways. This gives rise to the criticism that relying exclusively on CSS for layout means to relinquish control of page appearance. Consequently, detractors argue that -- for someone with experience using table-based layouts -- developing using CSS amounts to trying to replicate what can already be done with tables. As a result, some developers still find CSS rather cumbersome.

Flash
''I moved this section here from the current article on Web design. It is currently unchanged. I need to research whether any other articles cover this subject matter.'' Chris Loosley 04:08, 2 January 2007 (UTC)

Adobe Flash (formerly Macromedia Flash) is a proprietary, robust graphics animation/application development program used to create and deliver dynamic content, media (such as sound and video), and interactive applications over the web via the browser.

Flash is not a standard produced by a vendor-neutral standards organization like most of the core protocols and formats on the Internet. Flash is much more restrictive than the open HTML format, though, requiring a proprietary plugin to be seen, and it does not integrate with most web browser UI features like the "Back" button. However, those restrictions may be useful depending on the goals of the web site design.

Flash as a format has become very widespread on the desktop market. According to NPD study, 98% of US Web users have the Flash Player installed, with 45%-56% (depending on region) having the latest version. Numbers vary depending on the detection scheme and research demographics.

Many graphic artists use Flash because it gives them exact control over every part of the design, and anything can be animated and generally "jazzed up". Some application designers enjoy flash because it lets them create applications that don't have to be refreshed or go to a new web page every time an action occurs. Flash can use embedded fonts instead of the standard fonts installed on most computers. There are many sites which forego HTML entirely for Flash. Other sites may use flash content combined with html as conservatively as gifs or jpegs would be used, but with smaller vector file sizes and the option of faster loading animations. Flash may also be used to protect content from unauthorized duplication or searching.

Flash detractors claim that Flash websites tend to be poorly designed, and often use confusing and non-standard user-interfaces. Up until recently, search engines have been unable to index Flash objects, which has prevented sites from having their contents easily found. It is possible to specify alternate content to be displayed for browsers that do not support Flash. Using alternate content also helps search engines to understand the page, and can result in much better visibility for the page. This, however, does not enable search engines to read images used in the place of text for styling purposes, nor are the vast majority of Flash websites disability accessible (for screen readers, for example) or Section 508 compliant.

The most recent incarnation of Flash's scripting language (called "actionscript", which is an ECMA language similar to JavaScript) incorporates long-awaited usability features, such as respecting the browser's font size and allowing blind users to use screen readers. Actionscript 2.0 is an Object-Oriented language, allowing the use of CSS, XML, and the design of class-based web applications.

Static and dynamic page generation
''I have moved this section here from the current article on Web design. I added links to DHTML and JavaScript. It needs a one sentence introduction linking to the terms static Web page and dynamic Web page.'' Chris Loosley 06:58, 1 January 2007 (UTC) The traditional method of laying out web pages, HTML, is static. There are two ways of delivering content dynamically:

Server-side
A web server, running special software, constructs an HTML page 'on the fly', according to the user's request and possibly other variables, such as time or stock levels.

Suitable scripting languages include:


 * ASP
 * ASP.NET
 * ColdFusion
 * JSP
 * Lasso
 * Perl
 * PHP
 * Python
 * Ruby

XSLT can be used to translate data from XML format into HTML.

Databases are often used in conjunction with server-side scripting languages for persistent storage of content. Database management system like mySQL and postgreSQL offers convenient methods for accessing data stored within the databasen, to update, delete, insert into or search from the database. Most websites / web applications of non-trivial complexity uses some form of database to manage their content.

Client-side
The next paragraph reflects a particular POV, not common practice -- see Ajax. Chris Loosley 06:58, 1 January 2007 (UTC) Client-side scripting works at the user's browser, and therefore should not be used for "mission critical' work, where the user's capabilities are not known – it is more suited to adding decoration and other ephemeral content. It is most often achieved through JavaScript.

Client side DHTML can pose major problems for Web accessibility and search engine optimization. Most software designed for assisting people with disabilities, and most search engine robots do not support client side DHTML.

If a web site's menus are built with JavaScript, it is usually impossible for search engines to find the pages listed in the menus, unless an alternative navigation scheme is provided elsewhere on the page. (NOTE: By using nested lists for navigation menus, and slightly more complex, DOM-based scripts, this problem may be overcome.)

Launch
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

Deployment ...: We make our product available to the public. In a final pre-launch quality testing phase, we ensure that every element of a product is ready for use. Immediately following deployment, a final correctness assessment verifies accuracy. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

Maintenance
Sample: Chris Loosley 21:16, 29 December 2006 (UTC)

... and Ongoing Support: We then move into our maintenance and stewardship roles, providing support to our clients and their customers. Through field testing, user feedback, and hit- log analysis, we provide ongoing optimization of your site in response to actual usage and evolving customer needs. ''[http://www.diamondbullet.com/process.txl (C) Copyright 2002. Diamond Bullet Design, Inc.]''

Small-scale and large-scale Web development
I know we need to cover this, but I have not yet decided where to put it. Chris Loosley 16:53, 28 December 2006 (UTC)

In practice, informal approaches to Web development, especially those employed by a single Web developer or a small development team, may not treat each development category listed above as a distinct activity or phase. Nonetheless, the more formal descriptions of software development processes do serve to identify a collection of tasks that are essential to the production of effective software. So while people may adopt many different methodologies (or approaches) for addressing the work, those essential tasks must still be performed -- somehow, by someone -- during any development process. This article focuses primarily on the tasks of Web development, rather than on the processes or methodologies that can be adopted to perform those tasks.

Concerns that span development tasks
This article should contain short sections on each of these topics, but in most (maybe all?) cases those sections would link to a separate article. Chris Loosley 16:53, 28 December 2006 (UTC)

Web Design
This will refer to the (rewritten) article on Web Design . Chris Loosley 22:37, 29 December 2006 (UTC)

Draft of new material: Among Web designers, the term Web design is sometimes used as a synonym for Web development. However, a stricter interpretation of these terms would distinguish them, as follows: design is a planning activity, which is only one component of an engineering process. Consider the analogy of civil or mechanical engineering. The person who designs a bridge, or a house, or a car, is only one part of the team responsible for producing the final result. For Web development, a similar distinction can be made. However, this distinction tends to blurred in the software development arena, because it is common for developers to participate in (and even be responsible for) many design decisions. Chris Loosley 22:37, 29 December 2006 (UTC)

Usability
See articles on usability and Web usability. Chris Loosley 21:56, 29 December 2006 (UTC)

Findability
There is a short article on findability. Chris Loosley 21:51, 29 December 2006 (UTC)

Accessibility
''I moved this material here from Web design. Otherwise it is currently unchanged from the present article. However, I intend to merge the last two bullets into the concluding paragraph.'' Chris Loosley 02:58, 2 January 2007 (UTC)

For more ideas, see Van Duyne et al, The Design of Sites, Section B9, pp218-226. Chris Loosley 03:40, 2 January 2007 (UTC)

Accessible Web design is the art of creating webpages that are accessible to everyone, using any device. It is especially important so that people with disabilities - whether due to accident, disease or old age - can access the information in Web pages and be able to navigate through the website.

To be accessible, web pages and sites must conform to certain accessibility principles. These can be grouped into the following main areas:
 * use semantic markup that provides a meaningful structure to the document (i.e. Web page)
 * use a valid markup language that conforms to a published DTD or Schema
 * provide text equivalents for any non-text components (e.g. images, multimedia)
 * use hyperlinks that makes sense when read out of context. (e.g. avoid "Click Here.")
 * don't use frames

merge the following material: Chris Loosley 02:58, 2 January 2007 (UTC)


 * use CSS rather than HTML Tables for layout.
 * author the page so that when the source code is read line-by-line by user agents (such as a screen readers) it remains intelligible. (Using tables for design will often result in information that is not.)

However, W3C permits an exception where tables for layout either make sense when linearized or an alternate version (perhaps linearized) is made available.

Platforms, frameworks, and tools
''Some initial suggestions for edits of existing material. We will need a reference to Web application frameworks here.'' Chris Loosley 18:55, 29 December 2006 (UTC)

As far as Web development tools and platforms are concerned, t There are many systems available to the public free of charge to aid in development. A popular example is the LAMP (Linux, Apache, MySQL, PHP), which is usually distributed free of charge. This fact alone has manifested into many people around the globe setting up new Web sites daily and thus contributing to increase in Web development popularity.

Another contributing factor has been the rise of easy to use WYSIWYG Web development software, most prominently Microsoft FrontPage or Macromedia Dreamweaver. Using such software, virtually anyone can develop a Web page in a matter of minutes. Knowledge of HyperText Markup Language (HTML), or other programming languages is not required.

The next generation of Web development tools uses the strong growth in LAMP and Microsoft .NET technologies to provide the Web as a way to run applications online. Web developers now help to deliver applications as Web services which were traditionally only available as applications on a desk based computer.

Instead of running executable code on a local computer, users are interacting with online applications to create new content. A nother good example of transformative communication led by Web development is the blog. Web applications such as WordPress and b2evolution have created easily implemented blog environments for individual Web sites. Open source content systems such as Xoops, Joomla, and Drupal have extended Web development into new modes of interaction and communication.

History of Web Development
I favor moving this section towards the end of the article -- comments? Chris Loosley 16:53, 28 December 2006 (UTC)

Since the mid-1990's, Web development has been one of the fastest growing industries in the United States. In 1995 there were fewer than 1,000 Web development companies and in 2005 there are over 30,000 such companies. The Web development industry is expected to grow over 20% by 2010. The growth of this industry is being pushed by large businesses wishing to sell products and services to their customers and to automate business workflow, as well as the growth of many small web design and development companies.

In addition, cost of Web site development and hosting has dropped dramatically during this time. Instead of costing tens of thousands of dollars, as was the case for early websites, one can now develop a simple web site for less than a thousand dollars, depending on the complexity and amount of content. Smaller Web site development companies are now able to make web design accessible to both smaller companies and individuals further fueling the growth of the web development industry.

Sections of current article that will be dropped
''These two paragraphs are off topic. They are about the effects of the Web, not about Web development. That article already contains material about Sociological implications'' Chris Loosley 16:53, 28 December 2006 (UTC)

This has created new methods in communication and allowed for many opportunities to decentralize information and media distribution. Users are now able to interact with applications from many locations, instead of being tied to a specific workstation for their application environment.

Examples of dramatic transformation in communication and commerce led by Web development include e-commerce. Online auction sites such as eBay have changed the way consumers consume and purchase goods and services. Online resellers such as Amazon.com and Buy.com (among many, many others) have transformed the shopping and bargain hunting experience for many consumers.

''This material about CSS (which came from the current Web Design article) is more detailed than required here, and arguably POV in parts. But it could be merged into the article on Tableless web design.'' Chris Loosley 07:50, 2 January 2007 (UTC)

For example, at one time it was rather difficult to produce certain design elements, such as vertical positioning, and full-length footers in a design using absolute positions. With the abundance of CSS resources available online today, though, designing with reasonable adherence to standards involves little more than applying CSS 2.1 or CSS 3 to properly structured markup.

These days most modern browsers have solved most of these quirks in CSS rendering and this has made many different CSS layouts possible. However, some people continue to use old browsers, and designers need to keep this in mind, and allow for graceful degrading of pages in older browsers. Most notable among these old browsers are Internet Explorer 5 and 5.5, which, according to some web designers, are becoming the new Netscape Navigator 4 &mdash; a block that holds the World Wide Web back from converting to CSS design.