Software Requirement Specification

Michael Wales - NeedMoreHP@yahoo.com
EEL 5874 - Expert Systems and Knowledge Engineering



Version History:
DocumentDateDescription
SRS V1.0February 11, 2002Initial Document


Table of Contents


Introduction

Problem Overview:

It can be very confusing for uninformed people to figure out what components you really need when building a new computer system. Assembling all the components is fairly easy, and the average computer user could assemble the system for themselves. Choosing the parts that best fit your needs takes a fair bit of research though. Computer salesmen can often be misleading, when alternative products would better suit your needs.

The application I'm creating will ask a computer purchaser what they often use their computer for, and how much they are looking to spend on the new system. It will then recommend a set of components that will best fit their needs and price range. This will save the consumer the effort of having to figure this out themselves, and the money of any potentially wrong decisions.

The importance and feasibility of solving this problem with our knowledge-based system is discussed in great detail in the Feasibility Analysis document.



User Profile:

The main users of this system would be people who want to build their own computer system. You typically can get the computer for cheaper, and better parts when you build the computer yourself. Many people are intimidated at the thought of trying to put together a computer, but I have found much easier, and more straightforward, than working on a car! The components typically only fit one way to each other, they typically offer documentation, and are easy to add and remove. You can't say the same thing about car parts, and lots of people work on their own car.

As far as picking out the components for the system, it's not quite as easy. You really need to know how the performance of each component will affect your needs. A top of the line CPU won't make your computer any faster on the Internet if you are connecting with a 56k modem, but there are many people who may not understand that. These are the kind of individuals who I would like to focus on with my application.

I started upgrading my own computer in junior high school, so that has to be near the minimum education requirement, although most users would probably have a high school education. All users would have experience with computers. If a user doesn't have any experience with computers at all, they aren't going to have any idea what there needs will be. And if a user doesn't have any experience at all with computers, they probably aren't going to know what they need or a clue how to put one together. I don't think the user of my program would know what the differences are between each form of a component (GeForce Vs. Radeon for graphics cards, DDR Vs. Rambus for RAM, etc). This application will give this user the ability to purchase hardware that will fit there needs without having to research all the different components.



Project Goals:

The main goal of the project will be for it to make a complete system recommendation for a home user. I want it to address the needs of the following systems:

The user can also blend these types of systems together. The expert in the project has a system that is both a video capture and editing machine, but also a multimedia server machine

The goal of the project will be to have it make good recommendations (that are similar to the experts) for each of the above types of systems, and in it's recommendation, it should give a complete list of hardware components, and the total price of the system.

If we accomplish that goal, and we still have not met the minimum rule requirements, we will also start to consider some machines that belong more in the office environment. We might also include recommendations on the OS, or peripherals.




System Functions

System Outputs:

The system will give the user only one set of outputs; it will be the system's best recommendation. The recommendation will typically consist of a long list of hardware components along with their prices, the total price of the system, and some comments about which components are key to the system's best performance given the user's needs.

If it is possible with the KB shell, I would like to display the output as HTML in a web browser. This would allow the user to easily print out the list of components. It would also allow the system to display the item description with a small picture of the item. If this kind of output isn't available with the tool that we choose, it will print out a table of the component's name and price. The display of HTML in a web browser is desired, but isn't necessary.

Here is a short sample of what the desired HTML output should look like:

ATI All In Wonder
Rage 128 GPU
16MB PCI
$50
AMD Athlon XP CPU
1500+ Model
1333 MHz
$120

No.Requirement
R1The system shall output the recommended system as a plain text table with each component's description and price.
R2The system shall output the recommended systems estimated total price
R3The system should output a list of the components that are key to this system's best performance for the user
R4The system should output the table of each component's description, picture, and price in a web-browser window.



System Inputs:

The system will prompt the user for each input individually through the shell's interface. The system will ask the user to rate the importance of a certain aspect of computer functionality. For example, the system would ask the user what is the importance of gaming performance. The user could then respond with a number 0 - 100 relating to it's importance. The system will ask the user a similar question for each major computing application. I would also like to implement a way for the user to ask for help with the given question, and then the system could give a better and simpler explanation of the question.

The system will also ask the user the budget for the system; therefore the system can recommend a system that has the best features that they can afford to spend.

The inputs should be accurate, but the importance value will be used as a confidence factor for the system to determine what hardware components they will really need for the system.

No.Requirement
R5The system shall ask the user the importance of performance of each of the common computer applications.
R6The system should give the user a help facility to get a better explanation of the current question.
R7The system shall ask the user what they can afford to spend on the new computer system.



Auxiliary Features:

If it is possible, the system will have a web interface for input and output. This would allow any potential user to only have to navigate their web browser to a specific URL. This would be much easier than them having to install the KB shell, download the application, and then run it manually. The feasibility of this will heavily depend on the interfaces to the KB shell tool.

No.Requirement
R8The system should be accessible from the Internet through a web browser.



Implementation Priorities:

The requirements with the keyword "shall" will be implemented first. These requirements will make the system usable. I expect to deliver the system with all of these requirements completed. If time allows, the "should" requirements will be attempted because I think they will add a significant amount of user-friendliness to the system.




Constraints

Hardware Constraints:

The system will be developed on personal computers and used primarily on personal computers. The minimum requirements of the user's computer will be determined by the minimum requirements of the KB shell tool that the system uses. I don't expect the requirements to exceed the capabilities of a based on a 486 class CPU.

If the web interface is implemented, it may change these hardware requirements. If the KB shell is downloaded (ex: Java based shell), the system requirements may be slightly higher. If the KB shell runs on the server, and the user uses an HTML form to interact with it, the user's system's requirements will be even less.

No.Requirement
C1The system shall run on a PC that meets the KB shell's minimum requirements.



External Interfaces:

The basic system (completion of all the shall requirements) will not have any external interfaces. The system will be executed manually within the shell.

If the web interface is completed, it will have to use some sort of external interface to the KB shell program. It is not known at this time what kind of interface it will use. Possible interfaces include a network socket, command line pipe, a built in web-interface to the shell, etc.

No.Requirement
C2The system should use an external interface between the KB shell and the web application.



Compatibility with previous products:

There will be no backwards compatability issues with the system, because it is being developed from scratch.



Speed of execution:

For the system to be usable, it should have a responsive interface. The final system will respond in less than 10 seconds on the average PC. I will test this by running the application on my AMDK6-2 500MHz computer. Most P2, P3, P4, AMD Duron, AMD Athlon and Celeron based systems greatly exceed the performance of this computer.

System performance cannot be guaranteed for systems running several simultaneous tasks.

No.Requirement
C3The system shall respond to all user commands within 10 seconds on my AMD K6-2 500MHz test system if the program is the only task running.



Reliability:

The system will be free from any type of runtime errors. If there are any bugs in the shell used by the system, there will be no way to control those or correct them. The maturity of many of the KB shells leads us to believe that this shouldn't be a problem in our application.

If we develop a web interface for the application, its reliability will be heavily dependent on the host system. The system would be hosted on my P100 Linux web server, connected to the Internet through TWC Road Runner. Road Runner typically has 1 day of downtime per month, and this would heavily impact the reliability of the system. The Linux OS with Apache web server has proven reliability, and shouldn't be a problem either.

The system will provide a recommendation of the hardware components to purchase for your system. This system will likely not be maintained, so therefore the data will be out-of-date within a few months. Also, a recommendation by definition doesn't mean absolute. The user should at least do some minimal research on their own before purchasing the system, and the recommendation should only be treated as just that, recommendations.

No.Requirement
C4The system shall be bug free, and should be at least as reliable as the KB shell the system is based on.
C5The web interface should be reliable except when the Road Runner connection quits.



Maintainability:

Since this system will be developed as a KB system, maintainability will not be difficult by a person experienced with the system and the shell tool. The system will need to be maintained often and be kept up to date with current hardware prices and components.

A system like this would probably need to be updated weekly to remain current. A weekly update would probably only need to update the prices, but from time to time a more significant update will have to take place that will add new hardware components and slightly adjust the rule base. The paradigm and most of the knowledge shouldn't need to change.

No.Requirement
C6The system should be update weekly for the system to make accurate recommendations.



Security:

The knowledge contained in the system is not classified or proprietary. The user is free to modify the knowledge base in any way they would like to.



Error Identification:

Errors in the user's input (such as out of range inputs) will be handled by having the user try to enter the input again. With around only 50 rules in the knowledge base, there won't be any error correction for errors in the knowledge base. Any errors within the system's hardware will probably cause the program and possibly the system to crash.

No.Requirement
C7The system shall verify the validity of all the user inputs, and if they are out of range, the user will be prompted to enter them again.




Miscellaneous Issues

Validation method:

We will check the validation of the system through a series of test cases. The test cases will be the same for both the validation and verification. For validation, the expert and I will make sure that the system is following the correct procedures. It should first ask the user how important each of the common computer applications are to the user. It should also then ask the user the amount of money they expect to spend on the system.

The system will then output it's complete system recommendation. For validation, the expert and I will make sure that the system specifies a complete hardware solution (as long as the user can afford the minimum performance components).

No.Requirement
M1The expert and I shall verify that the system prompts the user for all the needed inputs (common applications and cost).
M2The expert and I shall verify that the system outputs a complete hardware solution as long as the customer has enough money to create the minimum system.



Verification method:

We will verify the system through a series of test cases. The test cases will be the same for both the validation and verification. For verification, the expert and I will test the correctness of the outputted hardware solution for each of the major types of computer applications, and at least 3 hybrid test cases will be developed that blend multiple needs. The recommendation does not have to exactly match the expert's hardware solution, but the expert and I must both agree that the solution is very reasonable and practical given the user's needs.

No.Requirement
M3The expert and I shall verify that the system outputs reasonable recommendations.
M4The expert and I shall test the system with a test case relating to each type of common computer application.
M5The expert and I shall test the system with at least 3 test cases relating to systems with multiple common applications specified.
M6Their shall be a documented list of test cases (with expected outputs) for the system.



Documentation

All documentation will be in the HTML format for easy presentation on the Internet. All documentation is hand written in raw HTML (I don't use Frontpage, Word, or similar HTML generation utility) for smaller size, easier readability, and easier modification. All the documentation will be posted to my personal website, www.MWales.net. The documentation can be found under the list of software projects.

No.Requirement
M7The documentation shall be written by hand in HTML.
M8The documentation shall be constantly updated and stored on my personal website: www.MWales.net.



Other

Along with the documentation, all important source files, and tools used in the system will be accessible from my website, www.MWales.net.

No.Requirement
M9All files and applications relating to the project shall be constantly updated and stored on my personal website: www.MWales.net.




Appendix

Complete list of requirements:

No.Requirement
R1The system shall output the recommended system as a plain text table with each component's description and price.
R2The system shall output the recommended systems estimated total price
R3The system should output a list of the components that are key to this system's best performance for the user
R4The system should output the table of each component's description, picture, and price in a web-browser window.
R5The system shall ask the user the importance of performance of each of the common computer applications.
R6The system should give the user a help facility to get a better explanation of the current question.
R7The system shall ask the user what they can afford to spend on the new computer system.
R8The system should be accessible from the Internet through a web browser.
C1The system shall run on a PC that meets the KB shell's minimum requirements.
C2The system should use an external interface between the KB shell and the web application.
C3The system shall respond to all user commands within 10 seconds on my AMD K6-2 500MHz test system if the program is the only task running.
C4The system shall be bug free, and should be at least as reliable as the KB shell the system is based on.
C5The web interface should be reliable except when the Road Runner connection quits.
C6The system should be update weekly for the system to make accurate recommendations.
C7The system shall verify the validity of all the user inputs, and if they are out of range, the user will be prompted to enter them again.
M1The expert and I shall verify that the system prompts the user for all the needed inputs (common applications and cost).
M2The expert and I shall verify that the system outputs a complete hardware solution as long as the customer has enough money to create the minimum system.
M3The expert and I shall verify that the system outputs reasonable recommendations.
M4The expert and I shall test the system with a test case relating to each type of common computer application.
M5The expert and I shall test the system with at least 3 test cases relating to systems with multiple common applications specified.
M6Their shall be a documented list of test cases (with expected outputs) for the system.
M7The documentation shall be written by hand in HTML.
M8The documentation shall be constantly updated and stored on my personal website: www.MWales.net.
M9All files and applications relating to the project shall be constantly updated and stored on my personal website: www.MWales.net.