Skip to main content.

Overall Project Organization

We use the first 9 weeks of the term for design and construction of projects. Week 10 is reserved for final presentations. A more complete schedule is available.

We will begin with all teams working on a one or two common projects that will be due roughly at the mid-term. That's a very tight schedule, and I will encourage you to scope it appropriately and approach it incrementally, to minimize the risk of not having something good to turn in at the deadline. Project scoping and risk control are core Software Engineering skills

You will have the option of switching to another project of your own choosing (with my approval) in the second half, but I encourage you to at least consider making a second iteration of the same project. Familiarity from the first iteration usually allows the team to work more effectively and focus on all parts of the process.

Project 1: Distributed Decision Making in a Mobile Context

For the first development, all student teams will develop a reduced-functionality prototype of the Distributed Decision Making system.

Background

In a mobile society, there are many situations in which a disturbed group of people (or systems) must work together to agree on a particular decision. Examples might include the members of a company board, members of a sales team, or members of a club. A key step in the decision making process is that of choosing the preferred option among a set of alternatives, typically by some kind of vote.

The goal of the Distributed Decision Making  (DDM) application is to support the process of collectively choosing among a set of alternatives (e.g., voting) event where group members may be travelling and connecting through different mobile technologies (e.g., email, SMS, web browsers).

Basic Requirements

The purpose of this project is to design and build a system that allows a pre-defined set of people to vote on a group decision using asynchronous technologies such as email, SMS, etc. It should allow users to set up vote among alternatives, inform users of the vote, record voter’s decisions, tally results, and inform voters of the outcome. To support different organizational structures and decision-making approaches, the system should allow the users to choose among a variety of voting algorithms. To support individual contexts (e.g., travel) the system should allow users to choose different connections and support the use of a variety of asynchronous communication technologies (e.g., email, web, SMS) for voting.

Voting Algorithms: the best approach for a group to choose among a set of alternatives can vary depending on the group structure and situation (e.g., how much time is needed). To support different decision making approaches, the system should support a set of the more common voting strategies including:

Mobile Decisions: we assume that voters will be connecting to the system using any of a number of asynchronous technologies including email, SMS, and the web browsers. The system should be able to adapt to each voter’s current technology to inform users of the need to vote, record votes, and inform users of results.

Voting is necessarily only one part of the group decision-making process. A complete process necessarily includes activities such as identifying possible issues, discussion alternative solutions, choosing what to vote on, and so on. For the purposes of this exercise, we assume that these processes will not be supported by the DDM system.

Detailed Requirements

We identify three primary user roles for DDM applications:

Moderator Scenarios

Users acting in the role of moderator initiate and control votes using the DMM system. It is assumed that the moderators will have determined exactly what needs to be voted one and the particular voting algorithm that should be used. The DMM system should support the following activities:

Voter Scenarios

Voters use the system to get information on when a vote is needed, acknowledge participation, review the issues, make their votes, and retrieve results. The DMM system should support the following activities:

Implied Behavioral Requirements:

Additional functionality is needed to support the above scenarios including the following:

Quality Requirements:

A useful voting system will need to meet several quality requirements to support secure, accurate, and timely voting.

Iteration 1 Prototype

Over the first half of the course, team members will collaborate to develop an initial prototype of the DDM system. The prototype should implement a subset of the DDM requirements but be expandable to include additional functionality.

L0: Minimum Useful Subset

All teams should complete a minimum useful subset as follows:

L1: Version 1

L2: Version 1.1

Resources

Server Setup

Systems has requested that we try setting up any

servers using existing accounts. This means that each team will need to choose one member to host the application in their "public.html" folder. This folder can be accessed over the web as "http://ix.cs.uoregon.edu/~[username]". In it, you can put web code, access MySQL, and so on.

For this to work properly in a team environment, you will want to set up a separate repository for code that is in progress. We can do this in the CIS 422 directory creating a group for each team. Then you would need have the owner copy the current code to the public.html directoy when needed. The best way to do this is, of course, by maintaining something like an SVN repository and downloading the code from the repository. That will allow full backups.