Web Performance and Standards Compliance - Managers

An important way to ensure a project will succeed is to be aware of how it is managed and what standards are most likely to drive the project forward and maintain its quality. Therefore, this articles expands on the best practices and standards that are most commonly used by successful web agencies.

Introduction

Creating an application that is efficient and appealing is one of the most difficult tasks of web development. The user has different backgrounds, expectations, levels of technical proficiency, and most of all, levels of patience.

Therefore, in order for an application to be successful it is very important to follow specific standards so that it has the least issues possible and at the same time maintains the level of acceptance high for the average user.

One example of an appealing application is one that does not require multiple steps for a single task, or that allows the user to work fluidly through the page, with no clutter or confusion.

On the other hand, maintaining the application efficient requires clever programming and careful design. Making too many last-minute changes can compromise the appeal and even performance of an application.

The purpose of this document is to give some high level information for project managers and stake holders so these standards can be held to an acceptable level of compliance. This document will also expand on some of the technologies and give practical examples of usage (even though they will be simple and should not be used as major templates for development)

In order to ease the burden on the reader, this document is divided into different sections and subsections. Please refer to each when deciding which tailors to your needs:

a.    Documentation
          i.    Use Cases (or other method of description of processes)
          ii.    System Requirements
          iii.    Reporting (during development, testing, and deployment)

b.    Development Standards
          i.    Testing before coding
          ii.    Emulating the production environment
          iii.    Optimization
          iv.    Stress and performance testing

Documentation

Use Cases (or other method of description of processes)

When assessing what the system is supposed to do it is important to document what is expected, who will be using the system and what kind of interaction users will have with the system and any possible outcomes it will deliver.

Normally, processes should be described in a simple way, and also graphically, so that domain experts can easily understand and validate them. There are several tools available for creating graphical representations as well as documentation. Two of the most common include Microsoft Visio, and Sparx Enterprise Architect, IBM Rational System, etc.

System Requirements

Assessing what hardware the application will require not only facilitates development, but also helps managers steer the project into the direction is should stay on. Unforeseen or unplanned changes in the hardware requirements may raise a red flag since it points to conflicts in scope and design.

System requirements may not only specify hardware but also overhead requirements for deployment, maintenance and recycling.

Most system requirements are also graphically represented, to facilitate the understanding of management.

Reporting (during development, testing, and deployment)


One of the major flaws in any project is the lack of planning, even planning for the unplanned. Also, many times, a software agency may accept a tight schedule simply not to lose a contract but knows that in fact the time requirement will most likely not be met. Therefore, when contracting an agency it’s important to have in mind that a schedule that does not have enough time for trial and error will most likely fail to meet expectations.

Development Standards

Testing before coding

Any software that is developed without some minimal testing is most times extremely buggy and tends to cause more problems than resolve them. If calculations are not done correctly, then the outcome may be completely different from what’s expected and fixing it after it was deployed will not only cost to fix the problem but also to redeploy and re-train (in some instances).

Therefore, it’s important that testing be done even before any actual code is created. By doing such, developers can make sure their result is always the same and correct. While coding, continuing to test assures that their results are still de same as setup in the beginning.

Requiring a testing methodology can mean saving money in the long run, even if that methodology adds to the initial cost.

Emulating the production environment

Once a final version of an application is deployed, many issues can occur including slow responses, database problems, and even corruption of components. That occurs because of the many variables included in operating systems, the applications already in the server or client computer, and even Internet bandwidth.

Because of these issues, testing the application in a client computer that matches that of a real user, or even in a server that has the same characteristics of the production server, may greatly increase the application’s efficiency once it is actually deployed to production.

So, testing in an environment that emulates as close as possible the production environment can be summarized in the following phrase: “If it works smoothly on a less-than-perfect simulation, odds are that it will run just fine in the real world”.

Optimization

Coding without reviewing is the same as writing a book and not proof-reading it. Peer reviews are the most common in cases where a team of developers needs to review their code. By looking at each other work, developers can find errors in logic, or even possible bugs. Once the code is reviewed and is approved by the reviewer it’s easier to accept that it was optimized.

Even though the word “hack” is normally taken as malicious, a good team of developers should always be looking for better ways to improve their code, with less work - or hack their own code - so that it runs with less stress on the system.

Stress and performance testing

The last but not least important task before and after deployment is making sure the server and the application are handling the payload well and the burden of the processes without loosing connections, throwing errors, or breaking completely.

Many times, it’s found that an application starts presenting latency for either one of the reasons below:
·    One of the previous steps was not followed and caused the application to lack in quality
·    A configuration error occurred in the process of setting up the application - either in the application or any hardware related
·    Bandwidth is not robust enough to handle the requests
·    Server or client hardware is overloaded and is not handling well the application

All of the issues above can be monitored and even forecasted by stress and performance testing. Testing can even pinpoint bottlenecks and design issues.

Conclusion
Following these set of standards may require some training and practice. Nevertheless, most of the suggestions in this document are intended to create a leveled expectation from managers that will know at least the basic steps for having a successful outcome for a project.

It’s found that, if managers are aware of the progress, and even problems of a project, that they will become more proactive in participating and acting towards a positive outcome. Therefore, documenting and reporting are essentials to any project.

Resources:

<http://www.sparxsystems.com.au> - UML Design Tool
<http://alistair.cockburn.us/Use+cases> - Use Cases Documentation
<http://www.agilemodeling.com/artifacts/useCaseDiagram.htm> - Graphic Use Cases
<http://office.microsoft.com/en-us/visio/default.aspx> - Visio Tool
<http://office.microsoft.com/en-us/project/default.aspx> - Project Tool
<http://www.orm.net> - Object-Role Modeling Database Design
<http://www.testdriven.net/default.aspx> - NUnits Plug-in for Visual Studio
<http://www.nunit.org/index.php> - NUnit (testing) Framework
<http://www.siteloadtesting.com/> - Website performance test
<http://www.stresstester.com/> - Website Stress test
<http://logging.apache.org/log4net/> - Web Application Logging and Debugging plug-in
<http://jcrawler.sourceforge.net/> - Website Crawler
<http://www.softwareqatest.com/qatweb1.html> - List of Applications and sites for testing your application
<http://www.gomez.com/info_center/instant-test.php> - website speed test

By Carlos Casalicchio   Popularity  (918 Views)