|
|
Why is designing web interfaces so hard and why are the consequences of getting it wrong so dire? Some of the many reasons include the following:
Web interfaces change frequently
For example, re-branding may change the look and feel, but not necessarily the workflow, of a web application. A successful application can accommodate such change without the need to change business objects or even web-tier control code.
Web interfaces involve complex markup
Typical web sites contain nested tables and lengthy JavaScripts; pages may even be designed using GUI tools that produce hard-to-read markup. Usually only a small proportion of the content is dynamic. It's vital that the generation of complex markup doesn't obscure the generation of dynamic content. Getting this markup right is the business of specialists; Java developers are seldom good at it and their skills are better employed elsewhere. Thus separation of the roles of markup developer and Java developer is crucial.
Web interfaces use a very different model compared to traditional UIs in languages such as Java
The web programming model is punctuated by requests and responses; it's impossible to update GUI components dynamically when an underlying model changes, as in a traditional MVC approach such as Java Swing.
HTTP requests can carry only string parameters
Thus we frequently need to convert string values to and from Java objects. This can be difficult and error-prone.
Web interfaces make it difficult to validate user input, as we have limited control over the client browser
We must be prepared to reject invalid user input and make users resubmit it. In contrast, we can use custom controls to prevent users entering invalid data in Swing or VB interfaces, as we have complete control over UI presentation.
HTML offers a limited choice of UI controls
Again, this is in sharp contrast to traditional GUI applications, which offer a rich range of controls and the ability to implement custom controls.
Ensuring that a web site looks right and works correctly in all common browsers can be difficult
This can significantly complicate markup and add to the challenge of separating presentation issues from Java programming issues.
There are many efficiency considerations
Often we cannot restrict or predict the number of users using a web application. Both performance and concurrency are likely to be particularly important in web applications.
Web interfaces are relatively hard to test
This is one of many reasons that we should ensure that as little application functionality as possible is web-specific.
|
|