Iteration 1: Requirements (Delieverable) - agarcia169/4306-Donaldson-Project Wiki

Iteration 1

(All below information pulled straight from Dr. Dogdu's repo here: https://github.com/edogdu/software-engineering-course/wiki/Iteration-1:-Requirements)

1. Team Info:

Joel King, Adebolanle Balogun, Alex Garcia

2. Vision Statement:

A program that grabs Tweets from the official Twitter accounts of companies that do business with Donaldson, and analyzes them for mentions of powertrain alternatives to internal combustion engines. The program can provide that data in aggregate or by company, possibly in a manner indicating chronology and/or positive/negative tone.

3. Feature List:

List the features of final product. If the project/product is in an area that is something not common knowledge, include a Domain Analysis along with your features -- Some details here.

4. UML Use Case Diagram:

Use Case Diagram v1

5. UI Sketches:

(aka storyboards/mocks) Key UI elements to help express your vision. If it is a phone app you are encouraged to use one of the many nice storyboarding tools for this. Focus on the non-trivial aspects of the app, not the obvious features such as login or change password.

6. Key use-cases :

You don't need to write a long list of use-cases; instead we want use-cases only for complex multi-step processes which are not obvious from the UI sketches. For example, "login" in most applications is a self-explanatory process so you do not need to make a use-case for it. Also if your storyboards/mocks clearly show the stepwise sequence there is no need to repeat that information in a use-case. If you don't have any key use-cases it is a sign your project is too data-centric: it has no interesting algorithms in it.

Adding a company:

User requests the ability to add a company to the database. Program requests both company name (required/not-null) and Twitter handle (required/not-null). Program verifies that the handle is valid and not already in the database under the retrieved ID and presents information from that account (bio/description, perhaps) and asks to confirm this is the correct account. If confirmed, company is added to database for later use. No further analysis occurs at this time.

Pulling down a company's tweets for analysis:

A pulldown menu of valid companies exists. User selects company from pulldown menu. User asks program (button? command line?) to query for new Tweets. Program asks for confirmation, with warnings on how this request will impact the Tweet caps. Both quarter-hourly and monthly caps are involved in this. If the user confirms the action, this API interface is queried.

Note: this pulls down all relevant data for analysis and storage in the database. No further requests should be required?

Display data

Dumps CSV containing powertrain mentions, labeled by time? Ugh. I don't like this one.

7. Architecture:

Python Tweepy: a Python library for accessing the Twitter API. NLTK: a Python library for tokenizing sentences (and doing sentiment analysis?) MySQL: For a database storage area to keep track of companies, their associations with various tweets mentioning powertrain technologies.

8. Nothing needed for 8 :

While no code is required for this submission, you should be downloading and installing various frameworks you have not used before, reading the documentation on how to use those frameworks, installing, running, and playing with provided demo examples, etc. You are also encouraged to develop one-off prototypes if you need to check feasibility of a design idea.

9. Optional step :

If your project is a variation on an existing application, mention somewhere the application and describe how you plan to make your project different.