Preliminary
Requirements.
Summary
This project
considers
a set of tasks that integrate mobile communication, multimedia
and location.
- General
Functions
- Location-sensitive
Messaging/Task Manager. Leave a message, for
a particular person, at a particular location, or set of
locations. (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 on Covell or the Rite Aid on Russell).
Todos will cause phone to buzz if the
person moves away from the area without deleting them.
Tasks will be
valid only during specific time periods (e.g., Esteban, pick up a box of
soymilk at the
co-op if you get here before tuesday night). Sets
of locations could be identified by search, or by creating
a set of locations by selecting them individually. A
special variant of a task is a query (e.g., Sue, is the Soon Do Boo at Manna tasty?)
which will prompt the recipient for an answer that
will be texted back to the originator. Queries may or may
not have an expiry time, but will buzz the phone of the
recipient if s/he leaves without answering the query.
- 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., Beatrice,
if you come
to
this dentist, avoid the above-pictured hygenist. He's a
ditzy,
incompetent flirt).
- Location
Sensitive service customization: When
I'm at a
particular location, and at a particular point in time, I
want certain
services to be enabled, and others to be disabled. I want
to be as
flexible as possible with the "service". e.g., I may want
ringing and
alarms to be disabled, only while I'm on campus, only MWF
1210-1300,
only until June 10th, and only if the call is NOT coming
from the
school counselor at Holmes Middle School in Davis. I also
don't want to
get ANY alarms, (except for calendars) while I'm at the
MU.
You will make use of
the
following services:
- Google maps
service.
Android provides a Map
view
for this purpose.
- Picasa
to store
images.
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 handle change easily. Use design
patterns when reasonable. Ask me if you have questions about the
design.
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 sending messages.
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).