Revision History
| Date |
Version |
Description |
Author(s) |
| 02/12/2006 |
1.02 |
Finished updating sections based on SRS meeting |
Andy Kant |
| 02/05/2006 |
1.01 |
Finished filling in sections, created new template (inspired by the SDL SRS) |
Andy Kant |
| 01/29/2006 |
1.0 |
Initial revision |
Andy Kant |
Software Requirements Specification
Executive Summary
The Tag project is being created by senior design students who wanted an easier way to organize and find their files. The purpose of the project is to provide an easy way to add meta information to files on a personal computer as well as be able to navigate and search this meta information quickly.
Project Description
The purpose of the Tag project is to provide a computer user an easy way to add meta information to individual files on his or her computer. In today's world, computer users can become inundated with files on their hard drive and lose track of things over time. There are some solutions to this problem, but most do not scale to the full set of files on a computer and are limited to a subset of files. For example:
- Most compressed audio formats include support for a tagging scheme called ID3, which audio players can use to sort and keep track of files.
- Image files have their own standard called EXIF for keeping meta data on photographs.
- In addition, applications such as iPhoto and Picasa allow users to store information about photos.
The goal of the Tag project is to bring one solution for saving meta information to all file types, regardless of content. We plan on doing so using the schema of "tagging" of attaching user-defined keywords to files. The Tag application will provide an easy method to adding or removing tags from files, and searching by tags for files. It will be operating system independent, and feature an open architecture such that plug-ins for other applications (music players, video players, desktop search tools) can be written to utilize the tags.
As an example case for tagging a file say you download ten audio files of speeches given at a certain conference but do not have time to listen to all of them at once. You could tag all ten of them as "new" or "have not listened to" and then later as you listen to them one at a time you could update them the tags to say "old" or "listened to". This way you can keep track of which ones you have and have not listened to easily. Also, you could tag each of the speeches by the presenter and later find all speeches by the same person across multiple conventions.
Project Goals
- Goal 1: The Tag application shall allow the user to add tags to files on their operating system.
- Advantage: This will make files easier to find and organize.
- Metric: Files are able to be tagged by the user.
- Goal 2: The Tag application shall not decrease system performance.
- Advantage: This ensures that the Tag application will not slow down OS operations or take up valuable computer resources.
- Metric: The Tag application will stay under 5% CPU usage and 15mb of RAM at all times.
- Goal 3: The Tag command line tool shall be file-system and operating system independent.
- Advantage: This ensures that the Tag functionality will be portable and useful on many different platforms.
- Metric: The Tag command line tool will be usable on Windows, Linux, and Mac OS X.
Stakeholders
| Name |
Category |
Specific Information |
| Project Team Members |
Internal |
Students within the Tag senior design team are stakeholders for this project, as they will develop the system and use it upon its completion. |
| Dr. Welch |
Internal |
Dr. Welch is a stakeholder for this project, as he will directly advise the project. |
| Senior Design Professors |
Internal |
The senior design professors are stakeholders for this project, as they will oversee the project. |
Work Context
| Adjacent System |
Category |
Inflow Events |
Outflow Events |
| User |
Active |
Creates, modifies, and deletes tags from files |
Display files' tag |
| File system |
Cooperative |
Captures file system's changes |
None |
| Database |
Cooperative |
Retrieves file and tag data |
Makes changes to the file and tag data |
Use-Case Model Hierarchy
Assumptions
Dependencies
- The underlying technologies of the Tag application must be available for the OS that it is being installed on.
Constraints
- The Tag front-end must be able to run on Windows.
- The Tag back-end must be able to run on Linux, Mac OS X, and Windows.
- The Tag application will stay under 5% CPU usage and 15mb of RAM at all times.
Requirements
Functional
- [Unicode]FR1:The application shall store all text data as Unicode safe.
- [Networked drives]FR2:The application shall support tagging files on remote and networked drives as long as they have a local path. (No http:// or ftp:// locations)
- [Deleting tags]FR3:The application shall delete selected or all tags on one or more files according to the user’s choices.
- [Edit tags of one file]FR4:The application shall allow the user to edit the tags on a file selected by the user.
- [Edit tags of multiple files]FR5:The application shall allow the user to edit tags common to multiple files selected by the user.
- [Add tags to one file]FR6:The application shall allow the user to add tags to a file selected by the user.
- [Add tags to multiple files]FR7:The application shall allow the user to add tags to multiple files selected by the user.
- [Search and replace tags]FR8:The application shall allow the user to search all tagged files for a certain tag and replace it with a new tag. (The application shall ask for confirmation prior to applying the change.)
- [File searching]FR9:The application shall allow the user to search for one or multiple tags and return the files that contain those tags. (The application shall allow the user to search using the following methods: Any matching tags, all matching tags, and Boolean logic.)
- [Deleting files]FR10:The application shall monitor the deletion of files on the file-system and delete their corresponding tags.
- [Copying files]FR11:The application shall monitor the copying of files on the file-system and copy their corresponding tags.
- [Moving files]FR12:The application shall monitor the moving and renaming of files on the file-system and update their corresponding tags to the new locations.
- [Ghost file cleanup]FR13:The application shall be able to remove tags for files that can no longer be found on the file-system.
- [Software installation]FR14:There shall be an installer for the application that sets up all of the software used by the application on the computer.
- [Software uninstall]FR15:There shall be an uninstaller that removes both the software as well as all stored tags from the computer.
- [Searching front-end]FR16:The searching application shall be able to achieve all functionality that is available through integration.
Applicable Standards
Legal
Performance
- [File monitoring]PE1:The monitoring of file operations shall not degrade normal operating system performance by more than 5% CPU usage during file operations.
Reliability
Software
Supportability
- [Back-end]SU1:All back-end code shall be platform independent.
Usability
- [Help file/dialog]UR1:The application shall be able to list all command line options along with their descriptions.
- [Linux man page]UR2:The application shall provide a man page for Linux/UNIX computer systems.
User
Glossary
- Back-end Functionality that runs via the command line.
- CPU Usage The current load amount of the computer's processor.
- Front-end User interfaces that make calls to the back-end so that the user doesn't need to do it manually.
- OS Operating system.
- Project A specific project that a development team is assigned to.
- RAM The memory that is available to the computer.
- Tag A keyword assigned to a file in the file-system.
- Tag Application The entire project application.
- Tag Back-end See "Back-end."
- Tag Command Line Tool Similar to "Back-end," this includes portions of the application that run via a command console/terminal.
- Tag Front-end See "Front-end."
References