external

Flexible GUI Development

Dwight is a software developer at a large corporation. He integrates enterprise applications, and develops many of the user interfaces that his colleagues will end up using ona day-to-day basis. The end-users have a variety of requirements, which often change rapidly, in terms of functionality, platform and style.

Dwight has been tasked with developing a web-based front-end reporting system to a job scheduling system for field engineers. The current system consists of a database holding details of field locations, field staff and their level of training, outstanding jobs and status reports on these, with a few low-level reporting tools that use the command-line. These have a wide range of options in reporting style, too many for the field staff to remember. Dwight's brief is to reuse the existing command-line tools as the back-end of a web-based system.

In this brief, Dwight will undertake a lot of stamp-collecting activities himself, and develop a system that will be used by others in their stamp-collecting activities. Whenever Dwight does stamp-collecting work, or creates stamp-collecting tools that his colleagues will use, we'll highlight it with this little icon .

When writing code, Dwight typically needs to look up a lot of reference material. He re-uses a lot of third-party libraries, both from component resellers' catalogues and public repositories such as sourceforge . He may use directory services like freshmeat or technical news sites to keep up to date. If he's smart, he may have a newsfeed aggregator sitting on his desktop or on a personal webpage, filtering incoming messages from many sources .

He's used to picking up new products and APIs quickly by reading the documentation. In addition to coding samples, these typically contain cross-referenced lists of classes and methods . He keeps several of these open most of the time, for constant reference.

Today he's working on the interface that the field engineers will log into via their laptops. The field engineers work shifts of varying lengths, and need to know what outstanding work there is during their next shift, within a reasonable distance . The command-line tools can pull this out easily by specifying a start-time and an end-time, a grid reference, and a maximum radius, returning a set of matching jobs. All that Dwight has to do is provide a HTML form for them to specify these parameters, press a button, and then print out a listing of returned jobs . Easy enough.

Once he gets into it, though, he realises that the dates have to be specified in a certain format, with punctuation in the correct places. If he simply presents the engineers with text fields, they'll always be typing in the wrong formats, which was a big problem with the old system. Maybe he should provide a crib sheet, or an example at the top of the field? Or split the date into day, month, hours, minutes, with fixed drop-down values. Then the page begins to get cluttered and ungainly. Maybe he should offer a checklist of hourly slots in the current day. He thinks wistfully of the pull-down calendar control in his favourite GUI toolkit. If only this wren't a web project. He thinks briefly of implementing such a beast using dynamic HTML or Flash, but he doesn't have the time. So, he settles on a sub-optimal solution, and moves on. At least this page has a nice graphic for the submit button.

The results from the form will be returned as a listing page, sorted by start time . Some engineers may wish to sort them by length, by location, by type, and Dwight has cleverly saved up some code from a previous piece of work at the company that he can reuse for this job . This refreshes the entire page, and makes it jump back to the top, but its better than nothing.

He can calculate distance from the grid coordinates as the crow flies. The field engineers travel by road, though, and this information is only partially useful to them. A map showing the jobs would be a nice-to-have, but Dwight doesn't have time to implement that today. Similarly, a gantt-chart-like view showing how jobs overlap with one another might be useful, but there isn't time. So again, he settles for a sub-optimal solution. Adding custom icon types to distinguish different job types makes it look not too bad, and by altering the background color of each alternating row, its easy to read, and kind of looks like a File Explorer program.

Dwight's building from scratch here. He might not be hand-coding all the HTML. If he's smart, he's using a web application framework to handle a lot of that stuff, and this will do a good job of describing input forms as arrays of control items, and maybe it'll wrap the returned results as an array of objects for him too. However, he has to work his own way around presenting these results, and has developed some informal reuse strategies of his own. He has added another hand-coded layer on top of the command-line interface, and doesn't have the time to make a perfect fit. And so some degree of expressiveness is lost.

The geographical data issue is important too. In deciding which order to visit the sites in, the field engineers are employing higher-level decision-making capabilities as well as 'stamp-collecting', and this decision can't be automated for them. A map in association with a filter (say, by time-window, but ideally more flexible) would be a powerful and intuitive tool to aid them in making their decisions. Let the computer do what the computer does well, leaving the decision-maker free to make decisions. Setting up such a widget from scratch is quite difficult, but becomes justifiable if it can be made generic enough to serve across a wide range of tasks.

credits
hosted by
SourceForge Logo
projects
download