Skip to main content


Form is perhaps not normally considered a non-functional requirement but given the common parlance "form-v-function" and principle of "form-follows-function" the general direction seems to be that form is counter to function and therefore in IT terms is a non-functional requirement.

So specified in requirements terms, form may refer to:

Accessibility - For which the first port of call should be the w3c Web Accessibility Initiative. I have to shamefully admit to knowing very little about accessibility. Partly because I cannot draw for toffee and leave the graphical design to others though this isn't a sufficient excuse and I should try harder... Suffice to say, my common bugbears are:

  1. Requirements for accessible maps (GIS - I have never seen a graphical map on a website that is accessible to the blind).

  2. Forms where the focus jumps around fields like fleas on my dogs back.

  3. Lack of clarity on which fields are required.

Device compatibility - There was a time when every naff corporate website sported a couple of icons at the bottom indicating best viewed with "Netscape Navigator 4" or "Internet Explorer 5". These have thankfully mostly disappeared, though (and I won't name names) there are many corporate intranet systems which still sport these badges of shame. More recently clients are trying to withdraw from defining browser requirements - partly because of the variety out there today and partly because by the time the system is ready the world would have moved on and they could be faced with what may be a significant "change request". Fair enough really. My personal preference is to target Firefox and Internet Explorer using HTML5 - if you can get these two to work then you'll probably find Chrome, Safari, Opera etc. all work fine. It's not always the case of course and some of the more esoteric HTML5 features have poor support across browsers (e.g. "range" input type). Include in this a greater variety of client devices (tablets, smartphones, phablets etc.) and the need to conform to standards; for developers of sites and devices/browsers themselves, becomes even stronger.

Graphical design - As I said, I can't draw for toffee - there are others that can do that. I really have very little to say on the subject but have found some colour scheme tools which have been fun to play with but yielded virtually nothing of benefit to any site I've developed. I personally find most satisfaction in simple layouts and visualisation where the design is driven by the data (e.g. the mighty However, from an implementation perspective it irks me when developers out of ignorance or laziness don't use the correct tools to layout designs - using <table/> instead of <div/> and the such like. There's no need for it and it causes problems for screen readers such as JAWS, can affect the quality of search engine results and detracts from attempts to develop the semantic web. More recent trends in website design aim to respond to the capabilities of the client to provide a better experience for users on a diverse range of clients. Fortunately the tools to attack these issues are available in HTML5, CSS3 - common problems will be met by common solutions.

So in a way Form can be boiled down in essence to compatibility. Compatibility with the technology of the web, compatibility with the client device and compatibility with the wetware on the other side of the keyboard and screen.

From a requirements perspective you should be able to define all of these - Who's the audience? What sort of devices need to be supported? How do you want to be found on the web?

From a solution perspective you have the tools available to make this happen.


Popular posts from this blog

An Observation

Much has changed in the past few years, hell, much has changed in the past few weeks, but that’s another story... and I’ve found a little time on my hands in which to tidy things up. The world of non-functionals has never been so important and yet remains irritatingly ignored by so many - in particular by product owners who seem to think NFRs are nothing more than a tech concern. So if your fancy new product collapses when you get get too many users, is that ok? It’s fair that the engineering team should be asking “how many users are we going to get?”,   or “how many failures can we tolerate?” but the only person who can really answer those questions is the product owner.   The dumb answer to these sort of question is “lots!”, or “none!” because at that point you’ve given carte-blanche to the engineering team to over engineer... and that most likely means it’ll take a hell of a lot longer to deliver and/or cost a hell of a lot more to run. The dumb answer is also “only a couple” and “

Inter-microservice Integrity

A central issue in a microservices environment is how to maintain transactional integrity between services. The scenario is fairly simple. Service A performs some operation which persists data and at the same time raises an event or notifies service B of this action. There's a couple of failure scenarios that raise a problem. Firstly, service B could be unavailable. Does service A rollback or unpick the transaction? What if it's already been committed in A? Do you notify the service consumer of a failure and trigger what could be a cascading failure across the entire service network? Or do you accept long term inconsistency between A & B? Secondly, if service B is available but you don't commit in service A before raising the event then you've told B about something that's not committed... What happens if you then try to commit in A and find you can't? Do you now need to have compensating transactions to tell service B "oops, ignore that previous messag

Equifax Data Breach Due to Failure to Install Patches

"the Equifax data compromise was due to their failure to install the security updates provided in a timely manner." Source: MEDIA ALERT: The Apache Software Foundation Confirms Equifax Data Breach Due to Failure to Install Patches Provided for Apache® Struts™ Exploit : The Apache Software Foundation Blog As simple as that apparently. Keep up to date with patching.