|
MoGeo
Mobile
Geo-Social Networking
|
|
Preliminary
Requirements.
Summary
This project considers
2 broad classes of location-sensitive, social-networking, mobile
applications. The application is based on Android, a GPS-enabled mobile
internet device.
- Person-Person
Functions
- Place it notes. Leave a message, for
a particular person, at a particular location. (E.g., at a restaurant: Phong, make sure you try the Pho Ga here.
it's tasty) Once the message is read, the person can delete it,
or leave it there. A slight variant of this, a place-it todo: A task to
perform at a specific location, by a specific person (E.g., Jack, please pick up earplugs if you're
here at the Longs). Todos will cause phone to buzz if the
person moves away from the area without deleting them.
- Place it notes valid for a given
period (E.g., Yumiko, if you're here
before thurs, pickup tickets at the box office for the friday
performance).
-
Friend Alert When I reach an
area, I can register for friend alerts. This registration is valid for
a period I specify. If, during that period, I am still in the
area, and another friend (people in my contacts list tagged as friends) registers for friend
alerts in the same area, we both get notified. Also, ideally, a compass
points in the direction of the friend. Let's just use our contact lists
for friends.
- Geotagged pictures. I
can tag a picture with a location and a contacts name, and leave it at
a location, for a friend to receive when s/he arrives at that location.
(E.g., Sue, if you come to
this restaurant, stay away from the above-pictured waiter. He's an
annoying flirt)
- Group Functions
- Create a group at
a specific location, and invite friends to join (e.g, at a trailhead,
restaurant, hotel, mountaintop, wherever)
- You can
include place-its, place-it todos, time-constrained place-its, with
that group. (e.g., a time-constrained to-do: If anyone from the Polanski family arrives
at University Mall, pick up 4 Almond Bubble Teas) Also
geo-tagged pictures.
- You make a group a
friend
alert group i.e, all group members automatically registered for
friend alerts from other group members when they arrive at that
location.
You will make use of the
following services:
- Google maps service.
Android provides a Map
view for this purpose.
- PIcasa to store
images. We're trying to figure out, if you figure it out first, speak
up on the facebook group!
- A data base server
we will provide, for:
- Storing messages,
todos.
- storing URLs for
pictures cached at Picasa
- storing location
info for friend alerts.
The requirements
given below are incomplete, as they are in any real
software
project. Part of your task will be to figure out a way to handle the
uncertainity.
In the first
assignment, you will think about how to clarify some (not all) of
the
uncertain parts of these requirements. But several aspects will remain
hidden, and come up only when you start the implementation. Your task
will
be to a) Make a reasonable decision, with some good justification and
b)
design the software so that you can change it if the customer doesn't
like
your choice.
Requirements
Details
Here are some more specific requirements arising
from the mobile context.
- Keep the user interface simple and functional.
- Pay attention to user-interface design. There
will
be one
lecture (about 3 weeks into the class) on user interface design; we
will
raise some specific issues and discuss them in class.
- Think about energy usage. Minimize the amount of
data traffic to & from the server/services. Take into account,
location, velocity etc, and try to get enough data so that messages
will be delivered within a certain period of time.
Design for change.
Software that has users is "alive". No users means
death.
But users also mean complaints and requests, which means change. Write
and design your code to accomodate change easily!
We may want to add some features later (i.e., What
if I ask
you to add a few of these mid-quarter. Will you be able to do it
easily?
Or will it cause you endless agony, sleepless nights, and drive you
mad?)
- Add the ability for voice/audio messages.
- Scaling up to thousands of users.
- Using Facebook friends instead of contacts in the
phone for friend alerts.
Ground Rules
This is a team
project. DO NOT delay getting started on the
project;
it will be quite
a bit of work. There are rules about the project.
- The
programming
job itself
is not hard; the core functionality should be easy to implement. What
will
be hard is to get all the details right--which means doing what the
customer
wants. If you have any doubts about anything, ask me.
Undocumented
bugs of any sort in your system will cost you serious
credits.
Test your system thoroughly! If your system crashes or otherwise
malfunctions
during the final demonstration, you may fail the project.
- This is a
team
effort. Each one of you will expected to know and understand the
full
details of the design and implementation of the entire system. Please
participate fully in your team's efforts. Midterms and finals will test
your knowledge of android, and give you a good
motivation to participate and learn the needed technologies.
Schedule
Here's the rough
order
of things I expect:
These
requirements
are surely full of ambiguities and questions... so think about the
requirements
above, develop test scripts for testing the final product, and come
back
to me with clarifying questions if any. (Assignment
1). This is a team effort.
Once the
requirements
are somewhat clearer deliver a rough prototype (or mock-up) with most
of
the web pages that clearly illustrates all the major functions of the
system,
along with a document that explains all the different choices you made.
I also expect a significant portion of the functionality implemented,
and a complete UML design. so
I can give you feedback. (Assignment 2). This is a team effort.
Finally,
bring
me the final working system, and show it to me, along with a detailed
design
document (Assignment 3, or final project report).