1.      Your company specializes in image processing and pattern recognition.  A business opportunity has been identified: the software being used for fingerprint matching by local law enforcement agencies (produced by your competitor) is slow: it takes several minutes to find matches for a given fingerprint.  (This is an AI algorithm, the performance varies significantly depending on the inputs, and the results are probabilistic).  Engineers at your company believe that they have some ideas about how to modify the architecture and algorithms involved so that the software would be faster, and not much more expensive.

a.      How would you go about systematically exploring this product opportunity and determining its feasibility?

 

b.      Now let us suppose you have established feasibility, and also convinced the potential customers that this is worth pursuing.  It is now time to define the requirements specifications for the contract.   What are the key quality attributes to be addressed in the contract?  How would you go about setting reasonable targets for these attributes?

 

c.       Once the product is built, how would you go about verifying that the product meets the performance goals?

 

2.      You are maintaining an application for the local public library that is used to search the library catalog, perform book check-out and check-in, and place holds on books.  It is used both by the library staff and the patrons, and is accessible both from within the library on dedicated systems, and offers 24-hour access through the Internet.  The software uses a commercial database, and runs on an enterprise server system.  The software primarily consists of client-side and server-side scripts.  The software is a bit buggy, but your team is conscientious about fixing bugs:  almost every week, the system is taken down after business hours and a fresh set of patches applied.

a.      How would you go about gathering data on actual downtime, and on the impacts of the downtime? 

 

b.      What would you do to systematically go about improving the availability of the system?

 

c.       How would you determine reasonable availability objectives?  Hint: factor in both impacts and customer expectations.

 

d.      Your team thinks that the answer to reaching those objectives is to use fault-tolerance techniques.   They even have in mind several ideas, including acquiring systems with redundant hardware (when one processor goes down, another takes over), and adding several fancy software fault-tolerance techniques.  How would you go about evaluating what is worth doing?

 

3.      Your company has a software product that is used for taxicab dispatch.  Customers call in requesting taxis, and dispatchers need to look at the fleet, find a nearby taxi that is available or will soon become available, and tell the customer when to expect it.  The trouble is that your customers (dispatchers at taxi companies) are complaining that the software is really poor on usability, that it is hard to get work done with it.

Your team has put a lot of effort into usability.  The current user interface works like this:

·         The default screen for dispatchers is a graph showing taxicab utilization over the past hour, and commitments for the next hour, that is, the graph shows what % of the taxis were in use at each minute of the past hour, and has a commitment for each minute of the next hour.  There are menus such as “taxis”, which leads to a drop-down menu of the taxis available, a “statistical info” menu that has various commands to get different types of statistics about the operation, and a “modify fleet” menu that can be used to add new vehicles and mark vehicles as out of service.

·         Once the dispatcher selects a particular taxi, they go to another screen that has a lovely picture of a taxi, lists the driver name and vehicle number, and then has several buttons such as “show location”, “status”, “add commitment”, “show future commitments”, “delete commitments”, “show history” etc.

·         When one of these buttons is pushed, a dialog box pops up, giving the information requested, and with buttons such as “OK”, “more info” and “help”.

·         If the dispatchers add a commitment that clashes with an existing future commitment, a pleasant dialog box pops up telling them the error, and offering three options: “OK”, “delete clashing commitment”, “help”.

·         Every screen has context sensitive help.  The fonts are large, the graphics are good quality, and there is even pleasing and appropriate background music on each screen.  Yet one of the user complains that it takes a long time for new employees to learn how to use the system.

·         The software is very reliable, crashes are very rare.

Your team doesn’t see that the customers have any cause for complaints.  But to placate the customers and make them happy, your team plans to create a tutorial on how to use the system, add a “recurring out of service time” feature so that you can mark that a given taxi will be out of service each day or week between particular times (if the dispatcher tries to schedule it during those times, there will be an error message), and offer helpdesk services.

a.      Critique the current user interface.

 

b.      Suggest an alternative user interface that might be much more user-friendly.

 

c.       Suggest some practices and guidelines, based on the above experience, that your team could employ to design more user-friendly interfaces in the future.  Hint: first identify what your team is missing in their approach.

 

4.      You are creating software for your senior project that can be used by faculty all over RIT to compute grades for their classes.  MyCourses does have a gradebook, however all it allows is a simple weighted average of grading components.  Faculty keep complaining that their grading is more complex: sometimes they only take best 2 out of 3 midterms, sometimes they want to do various different “curves”, they have projects where they would like to “group students together” for grading, they want to see “what happens if I use n as the cutoff” and so on.   Departments and colleges also plan to use the tool to get statistical views of performance.

So your team decides to build this grading application and hand it over to ITS to provide to the faculty.  The following decisions have been made [rationale for decisions in brackets]:

·         This will be an interactive Windows application using a menus-and-forms user interface, and a commercial library for generating graphs [high on usability].  Computations will all happen locally at the instructor’s client machine, and only data storage will be remote [performance].

·         The grade data will all be maintained at a central ITS server [dependability: ensure that data gets backed up properly].

·         To help instructors determine cutoffs, the tool will show a histogram showing the grades of each student, in alphabetical order, on a grid.  The instructors will be able to move cutoff lines up and down on the graph, and students with different grades will show up in different colors.

·         Each instructor will own their data and it will not be visible to others.  However, for departmental reporting, you will create additional data files that keep running totals of grade information (that is, as each instructor assigns grades, the tool will compute statistics for average score, standard deviation, number of students in each grade range etc., and accumulate them into a “departmental statistics” table). [performance, minimize “cost” i.e. effort].

·         Since the project is short, and your team is small, you would rather use whiteboards and a discussion list for discussing and tracking the design, rather than using tools such as Visio for drawing design diagrams [effort, cycletime].  You will use reverse engineering tools to generate design diagrams at the end of the project, so that ITS will have design information.

 

Somebody comes up to you and asks if you have considered evolvability, since it is likely that faculty will be using this for many years and would keep coming up with new requests and so on.

a.      Analyze the above design from an evolvability perspective.  If you find gaps, give some examples of likely evolution requirements [from your knowledge of how things work here at RIT] that this tool may find difficult to meet.

 

b.      Suggest some alternative design decisions that may improve evolvability without necessarily adding a lot of effort to the project, or compromising the other attributes.

 

c.       Suggest some practices that you could use before and while making design decisions that would help you to address evolvability better.

 

 

5.      Your company builds software for making online presentations and demos to multiple computers on a LAN or WAN (local-area or wide-area network), similar to the NetSupport Tutor application that we are using for doing slide shows in class.   It is intended for large organizations that want to do teleconferencing or make corporate presentations to groups of employees / customers, and for universities and professional organizations to run classes and conduct virtual conferences.   Unfortunately, you are having a very difficult time getting market share: even though your product has been available for nearly a year, you have hardly any customers.  In fact, several organizations have evaluated your product and decided not to use it.  Your company doesn’t think that the problem is defects: your testing team did a very good of testing and found and removed a large number of defects, and you have received practically no bug reports from customers.   Your company also thinks the problem is not likely to be cost: your product is cheaper than most others on the market.  Yet you are having difficulty getting organizations to buy your software…

a.      What are the most likely causes why the customers don’t prefer the product?

 

b.      How would you go about determining what the actual problems are?  (that is, why your market share is low).  (Note: I am looking for a bit of depth and for completeness here, beyond simply “do a survey”.  Your answer should include some specific survey questions, but would probably also include elements other than surveys).

 

c.       Pick some outcomes of your investigation (that is, identify some of the causes from question 5-a above as being the problem—totally your choice which ones you pick).  After your team has reworked your product to resolve the problems, identify how you would go about measuring whether your product is significantly improved with respect to those problems.

 

d.      Your reworked product is more successful: now you have about 20 organizations using it.  You want to gather customer satisfaction data to keep improving your product.  Identify any three elements of an appropriate data collection approach to gather this data.  [that is, how would you go about gathering customer satisfaction data for this situation and purpose]

 

6.      Examine this sample course survey after you have read the material on survey design.  The survey has the following purpose: to serve as an exercise on critiquing survey design (The survey is intentionally poorly designed, in addition to the unintentional flaws!).  As you answer each question, notice how the presentation of the question and the range of choices affect your responses.

a.      Critique the overall survey design, and each of the questions in the survey.  I suggest you do this individually, then pool your thoughts and submit the results as the answer to this question.