Stages of site design

  1. Target setting
  2. Requirements specification
  3. Planning
    1. Application structure
    2. Data storage
    3. Gateways to other programs
  4. Graphical design
  5. Programming
    1. Makeup
    2. Client functions
    3. Server functions
  6. Content
  7. Hosting
  8. Advertisement
  9. Support

Target setting

This may sound trivial, but before starting to do something we need to clearly decide what exactly we want to get. Answer for this obvious question is the one hiding behind the nice term "good target setting". It, herewith, is not as simple as it looks like. Following target settings may jump out in webdesign: "We need our company's site. How much does it cost?" Perhaps, reaction of developing company's representative may puzzle such a customer. Maybe, he'll even become suspicious: "Why this guy sitting silent and looks so thinking, sure he counts how to get more money from us." Actually, the developer just preparing to make a mini-speech. He wants to say that all companies are different, their requirements are different, so their sites must be different too, which leads to different amount of work and, consequently, to different costs, based on customer demands. After the speech there will happen a discussion, leading to co-work on target setting document.

Actually, target setting is the only stage of software design lying completely on the customer's shoulders. Developing company may aid him in document processing, data structurization and like, but it cannot know what the customer really wants. It can just ask some significant questions and advise something, basing on its own experience.

So, the basic questions for site design are:

  • What are we need to do? The definition must be complete while fit into 500 symbols.
  • What kind of information will appear on the site? Just name all sections, but try to take everything in account.
  • What additional functions the site will offer, except a statical articles? Name and describe each function, better staying in 100 symbols.
  • Should the site exchange data with other programs? If should, name and describe all the programs and explain the purpose of the exchange.
  • Is there any requirements for software and hardware platforms for the site? If there is, name the requirements and give them short descriptions.

Of course, mentioned questions may be not enough for clear target setting. They needed just for start. After the anwers will appear, other questions will rise up. The cycle shoud be repeated until the careful examination of the document will not bring any new question. In this joyful moment one may stop and proceed to requirements specification stage.

Requirements specification

Next step after the targets was defined is the development of requirements specification. Let's figure out whait is it and why we need it. Actually, we already have the Target Setting document, which shortly and clearly describes the customer's wishes. Isn't it enough? Especially if we'll count a time spent for it! Unfortunately, that's not enough. For example, the Target Setting document may declare that site must provide company's price list, but there is no price format, no update process specification, no other important things. The price list may be either one page in size or big and complex enough to require its own search system. In other words, Target Setting are enough to grasp conception of the job, but not enough to do it.

Here we have the moment when Requirements Specification (RS) comes to stages. RS are written to describe the job in smallest details. Ideal RS are complete and closed document. When the developers got it, they may freely break all connections with outer world and went somewhere to the wilderness of Podkamennaya Tunguska. They'll take with them RS and equipment to accomplish it, and will return after decided time with complete product.

Obviously, writing ideal (or close to ideal) RS is very complex task, and customer absolutely cannot do it. Commonly the developers does this task for themselves, because most of the questions requires technical knowledge to solve. Target Setting become a base of Requirements Specification and its part, providing occasion for new specializing questions. Other data source for RS is developers' knowledge about ways to realize some function to make it best usable. This area of knowledge is known as Usability.

Result of the second stage is the document "Requirements Specification". It may be large enough (as large as 50 pages) and contain all information needed to further develop the project.

Planning

When acquired the Requirements Specification, devlopers come to their main job - working on the complete product. In a similar manner that more or less serious building cannot be built without set of blueprints, serious software must be planned beforehand. Some sources said that expences to make changes in developed application are rising by exponent from stage to stage. This means that much more cheap to correct Requirements Specification than the Project, and even cheaper to not make the error on the planning stage than to fix it on the realization stage. Three important branches of planning may be defined: application structure, data storage method and gateways to other programs.

Application structure

Each program has definite logic of functionality. With some simplifications, this logic may be called "program structure". If we are talking about simple static website (that's even not a program, actually), then we have a set of data files, with crossreferences between them. It functions according to base website logic, so we practically don't need to think about its structure. Other matter is complex dynamic site, working with database and allowing to change its content online. Such a site will contain server-side programs and client subroutines, being loaded in browser and executed on the user's PC. Well-thinked scheme of all this subroutines and components of the site, and also their interaction, are makes the Application Structure.

Data Storage

Most, or even all, programs are working with data. This fact is known to everyone familiar to programming. But modern process of user applications' development may rather be called metaprogramming. This is something like "programming programs", that means that we are working with programs controlling other programs, which in turn controlling more programs etc. Such programs' data are organized complexly and have many special properties.

We may define two types of data: static and dynamic. Static data hardcoded into program and can be changed only by program rebuild. If we'll count a site as a program, we'll see that never-changing "company's history" page is a perfect example of a static data. Obvious that fully static site contains only pages with constant data. In order to change it one must change the program, using special knowledge.

In contrary to static, dynamic data are changing from time to time. Good example of dynamic data is news. News constantly appearing, old news become invalid and being deleted. That's natural that an application must know how to work with dynamic data, and therefore have some storage for them.

In dependence of data complication, required update frequence, project's budget, at last, two ways of data storage may be suggested: a) text files with definite structure (XML documents) or b) database.

XML documents

XML is the popular modern method of creation of structured text documents. Before it appeared, there was a conflict: text documents, so understandable for human, was hard to process with software methods; on the other hand, binary files, perfectly understood by a program, very poorly readable and editable for human. XML format become a compromiss decision - some simple rules allows to make structured text files readable for both software and user.

In order to store data in XML documents, we must create definite structure for each data type and teach our software to get data from a files with such a structure. In most cases an initial data will be written to these files manually, because when a data being kept in files, there will rise a problems with shared access to these files.

Databases

With some simplifications, we may say that database is the place to store, modify and process data. Data are strictly structured in database, so in order to store some information in database we must analyse it beforehand, make a structure, and then implement this structure in database. The task is obviously complex, but the advantages of databases are big enough: simplicity of huge data arrays processing, opportunity for complex search through database, ease of data updates etc.

In contrary to XML documents, databases are not supposed to allow user to work with data manually, so usage of base contemplates usage of special software to update data stored there.

Gateways to other programs

That's logical to assume that if a human can communicate with other human, then a software can communicate with any other software. Eventually, that's way not so easy. Continuing starting analogy, one may say that all software are speaking in different languages and must be specially teached to understand each other.

Therefore, in order to make developed product get information from some other automatized systems, one must build the special component - gateway. Gateway may work in a variety of ways. Everything is depends on programs being linked and the task to accomplish.

Graphical design

It's easy to define designer's task: design must be nice and comfortable. But to find a solutin of this problem, or to draw nice and comfortable interface is, maybe, the most difficult stage of all the work on a project.

First, every new project's graphical design must be build around a fresh concept. Second, this concept must be implemented in site model. Model shows the look of different pages, places to insert information, positions of navigation elements and controls etc. At last, the model become base to design a look of each category of pages. For example, there must be different designs for news, product information. Practically, designer are studying a requirements specification and draws a samples for everything described there.

Now lets review the specificity of website interface design.

  • Site design must be "light", which means that summary size of all image files in design model should be low. This is neccessary to allow the site to load quickly even on slow lines.
  • Users may have screens with different resolutions, their browser windows may be opened to practically any size. So, site design must be "elastic". Elastic design will stretch out when browser is wide and shrink when it's narrow. Of course, everything has its limits and every elastic design has its lower limit - page cannot be narrower than the information inside.
  • Scale of the Internet makes requests to server noticeably long, so interface must be designed with minimizing such requests in mind.

Programming

Programming, or realization, stage starts on finishing of all preparation stages: projection and user interface design. Every application type has its own specific development steps. For websites, three steps may be divided: makeup, client side programming and server side programming (not neccessarily in this order).

Makeup

Site interface built by designer is just a model of final site interface. Actually, that's just a set of images. In order to use it in application, one must do a makeup - cut interface model on graphical components and describe their position on a page. Descriptions are being written on specialized language - HTML, Hypertext Markup Language. Ready to use HTML models than used in following stages of project.

Note that HTML is complex enough to implement, which puts large requirements on Internet pages viewer, or browser. Old browsers (for example, Netscape 4.x) has significantly weaker abilities than the modern ones. So, if the project requires backward compatibility with older browsers, proper makeup become uneasy and sometimes impossible task.

Client functions

Ready HTML models defines a way to present an information: overall look of pages, placement of text, navigation buttons etc. Actually, this may be more than enough for a static site, where every navigation link just leads to other static page. This is the implemention of main website function - providing information.

On the other hand, application often should accomplish some tasks on client side. For example, we may want to do some animation or quickly calculate something without bothering the server. All these tasks may be done by subroutines, running inside user's browser. A set of such subroutines are called client-side application.

One of the functions of client side is to support optimal scenario of interaction with the server - more smart than standard "click and reload" one.

Server functions

In order to receive data from database, accomplish some search, automatically insert into base an information submitted by site administrator or do something like, the server, supporting a site, should run an appropriate application. The aggregate of all site components, working on the server, are called server-side application.

Every serious dynamic site owns very advanced server side. It rules the interaction with databases, security matters (user autentification), updates of information and communication with other programs.

Content

The main purpose of such a specific software as a website is providing information to visitors. Therefore, after finishing all other development stages, the site must be filled with an information. According to size of data this may be either trivial or very complex task. It may be accomplished by developers, if the customer had provided them with all neccessary information, or the customer may do it by himself. The latter are preferable if the site is equpped with automatic modification system. Practically the combined method become most used - some part of information are typed in by developers, and the rest are up to customer.

Naturally, an information for a site must be prepared beforehand: one should write texts, collect and process product information, prepare photos etc. This process is rather time-consuming, therefore it should be started on the early stages, maybe just after affirmation of requirements specification.

Developers may aid customar on this stage too, providing services of copyrighter, translator and designer. Copyrighter are specializing in writing texts. He'll process customer's materials and prepare a text strictly fitting into site content model. Designer will work on provided photos to embed them into site's graphical style and optimize for fast download from the Web.

Hosting

Obviously, when a site is already done, one should do the thing all the work was done for - make it available to visitors. In order to do this, site should be placed to server - powerful computer with fast and reliable Internet connection. Such a placement are called hosting. Commonly, the customer should pay monthly for this. Except the placement on a hosting platform, one should give the site some nice address. For example, www.theCompany.ru. That requires registration of domain name theCompany.ru and some setup to redirect requests for www.theCompany.ru to server needed. More information on domain registrations may be found at www.nic.ru. That's just an administrative procedure and we'll not cover it here. Lets better review the question of request redirecting.

Each machine in the Web have its unique address, consisting of four numbers. There is actually neither words nor letters. In order to not make humans to remember numbers, the DNS (Domain Name Service) was organized some time ago. This service is doing the job of translating string addresses to numbers. So, if we want a string address to lead to particular server, we must make appropriate record in DNS service. The rules are to make two record for each name - primary and secondary ones, for reliability reasons. This service is also offered for money.

Advertisement

Taken in account that there is a huge lot of sites in the Internet, that's very important to do all the possible to make new site known to people. That's acchieving by submitting the site to search engines and catalogues, drawing and showing banners, target advertisements etc. The range of various advertisement methods are wide enough, so specialized advertisement company are done for each particular occasion.

Support

A complete software must be still supported by owners: information should be updated, bugs fixed, new ideas implemented. All this tasks are included in term "support". Customer may support his site by himself, let the developer do it or implement a combined approach. Customer's part of support are commonly fulfilled through online control systems embedded into site and do not include major site modifications. In turn, developers within the framework of site support could:

  • Update site materials
  • Change site structure: add new sections, modify or delete old ones
  • Aid in site functionality analysis, compile recommendations to change it
  • Add new functions, advance the capabilities of already existing functions and services
  • Do a graphical jobs: process new photos, develop banners, anonces etc.
  • Write a texts for new site sections

Important to understand that accurate support is the key to site success, and the site that isn't supported as it should be aren't costs the effort and money spent on its development.

Copyright ©1999-2011 BYTE-force

Rambler's Top100