|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP THREE LINKS YOU MUST CLICK ON Product Reviews A Servlet-Based Customer Requirements Database
A Servlet-Based Customer Requirements Database
By: Dean Williams
Jul. 1, 2000 12:00 AM
The phrase customer-driven has become a mantra for many companies - asserting and embracing the central role played by customers in the daily life of today's corporations. Notwithstanding the recent growth (and ebb) in IPOs and dot-coms, long-term business success still most often relies on the old basics, namely:
For many software companies, the simplest approach - that of having an e-mail "feedback" link on the company homepage - may be a perfectly adequate solution. Other companies may go a stage further and provide one or more newsgroups for soliciting and tracking customer suggestions. The third and most sophisticated approach is to use an application specifically designed to collect, track and prioritize customer feedback. Though a few commercial solutions exist, the main objective of this article is to show that, with a little effort, a fairly useful Web-based servlet solution can be implemented. More specifically (and to make this discussion a little more concrete), I'll be describing the "Feature Request Database" servlet used by IBMs VisualAge for Java development team to collect, track and prioritize customer input regarding future enhancements .(see http://service5.boulder.ibm.com:8080/servlet/reqServlet3).
User Interface From a servlet point of view this is the start of the user's "session." That is, a unique session ID is generated and used as the index to user-state information that's accessed and updated by the screens that follow. If the user is entering a new feature request (see Figure 2), they are required to enter a one-line description and to select the relevant "component" (so that the correct VisualAge for Java development manager can also be notified). Based on the one-line description, the servlet lists any similar feature requests. If a match is found, the user is encouraged to select an existing feature and add some additional comments; otherwise he or she can continue by selecting Open a New Feature. This automatic and implicit search for any matching features helps to focus user input into fewer new feature requests, but with correspondingly more comments per request. This helps to simplify the subsequent analysis and prioritization. A more detailed description of the feature that can include links to other external Web pages or to other features must then be entered (see Figure 3). Finally (and after a confirmation screen) the feature is added to the feature database, and an e-mail is sent to the relevant component development manager. The screens required to enter a new feature have by design been kept very simple (and hopefully intuitive). As befits this keep-it-simple design approach, browsing the feature database involves selecting one of several standard report options in a list box (see Figure 4). Each report returns a list of matching features, and clicking on the feature number will display the feature's full details. From this detail screen (see Figure 5) users can either add some additional comments or "vote" for this feature as one of their list of top-10 required features. Each user is allowed a maximum of 10 votes, one per feature.
Two-Tiered Authentication Fortunately this two-tier (candy-store) approach can be achieved with only a small degree of extra effort. The key lies in creating an alternative path to your servlet that doesn't require authentication. The preferred way for users to initially launch the servlet is as follows: http://service5.boulder.ibm.com:8080/servlet/reqServlet3 In this mode the user is able to browse all information freely. It's only when users want to make a change (or view information and preferences that are specific to their userID) that they would be redirected to the original path to the servlet:
http://service5.boulder.ibm.com:8080/servlet/reqServlet2 and hence be required to log in (i.e., authenticate). Most Web application servers support the aliasing of servlets, including the specification of any required userID/password lookup file. To make this transition (from unidentified user to authenticated user) as seamless as possible, the servlet should carry over as much session state information as possible (i.e., the small degree of extra effort).
Performance
One such sequence represents the list of all feature numbers (implemented as a static array of integers sorted according to their total votes). At first glance, re-sorting this sequence as votes are added or removed would appear to require a significant amount of CPU time (and hence adversely affect servlet response time). For a list of n items the usual rough estimate of the time taken to sort is of the order n times logn (using the quick sort algorithm). We found, however, that the sort time can be drastically reduced to only order n by using a simple trick, namely, the use of a bidirectional bubble sort that uses the results of the previous sort as input. Because relatively few features would have different vote counts since the last time a user had requested this sorted list, the bubble sort needs only a couple of passes over the list to resequence it based on the latest vote counts.
Persistence This ostensibly low-tech approach to persistence (versus, say, serializing objects to disk) was chosen in part for its simplicity, reliability and error-recovery characteristics. Even in the unlikely event of some system crash or hardware error corrupting one or more records in the logfile, the overall effect on the integrity of the data loaded into the hashtable would be very localized and minimal. Future plans for this data include a move to an XML-based storage format better suited for reuse by other applications.
Summary Given an opportunity, most customers are more than willing to provide you with their constructive suggestions and feedback regarding ways to improve your software tools and products. My hope is that this article may stimulate you to develop your own servlet-based e-business solution to further leverage your customers' input and incorporate it into your development plans for future releases. I'd like to close by thanking both the Media Design and VisualAge Developer Domain teams at IBM for their many helpful suggestions and comments. LATEST JAVA STORIES & POSTS
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK SPONSORED BY INFRAGISTICS
BREAKING JAVA NEWS |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||