Okay, here goes. This is the start of the requirements that I have gathered/made up/learnt that the next version of AJAXTagger should achieve. I am finding it quite hard to get the requirements down, so I think the best thing to do is to break them down in functional areas. My application should really achieve all of these for it to be a success (in my terms anyway).
Features of the application
- The application must be able to tag journal entries easily.
- The application must be able to find related information about tags so that the user can decide if to use them or not.
- The application must be able to find related articles on the users site.
- The application must be able to find related blogs.
- The application must be able to find related websites.
- The application must be able to find related articles on any particular web site.
- The application must provide the user with searches related to the subject via a variety of search providers.
- The application must provide the user with all the search results (where possible) in one simple feed.
- The application must be able to find images related to an article for inclusion.
- The application must be able to extract items that could be used to help associate schemes.
- The application must be able to pull an article from either a site or a blogging system such as blogger.
- The application must be able to save an article to either a site or email system.
- The application must make a minimal number of round trips to the server.
- The system must be able to determine when a client can perform work that the server needs not.
UI
- The user must be aware of all the data that is entered on to the system
- The user must be required to do as little work as possible.
- The user must be able to see the results of editing straight away
- The user must be able to hide information that they do not require
- The UI must not interfere with the results the user requires
- The user must be able to see the results of their actions immediatly
Business Logic Client Side
- The application's logic must not cause the browser to be stalled.
- The application must be able to access data across domains if needed but be able to fall back to server side proxy scripts.
- The application must function in IE6 and IE7.
- The application must function in Firefox.
- All Business Logic must be performant in Firefox
- All Business Logic must be performant in IE6 and IE7
- The system must be created in such a way that new functionality can be added easily
- The system must be created in such a manner that adding new search engines and results sections is straight forward.
- The system must be created in such a way that it can be easily maintained
- The system must be able to handle errors
- The system must be able to handle broken communication
- The system must be able to manage chained events, one action causing another action causing another etc
- The system must be able to handle multiple data requests at any one time
- The system must be able to prioritze system events that require access to external data sources so that not too many requests happen at once
Business Logic Server Side
- Any logic that is done on the server should be as short as possible
- Any logic done on the server must be performed in as secure a manner as possible
Data Access
- Data should not need to be stored on the server
- Data may be stored in cookies so that the user doesn't have to enter
- Direct access to external data sources will be as short as possible
- Direct access to external data sources may be cached
- Direct access to external data sources will fail gracefully if errors occur
Known External Dependancies
- Amazon
- Yahoo
- MSN
- Google
- Ebay
- FindOry
- Flickr
- Alexa
- Wikipedia
Known Internal Dependencies
- No Root Access to server
- Bandwidth constraints
- HTML Interface
- Javascript
- XmlHTTPrequest
- Internet Explorer 6 & 7
- Firefox