Software requirements specification
Here you can find the description of the project, methods of the realization of the exercise.
Summary of the description:
This is the Exercise #4 - Database simulation. The software has to simulate a database with file handling. The program must have a console menu or console command line so that the user can manage the database tables with commands or with menu options. The databases contain tables. The tables contain columns. The columns have names, types and can-be-empty-flags. The column type defines the possilble values of that column, which can be boolean, integer, real or string. If the can-be-empty-flag is not set, than writing data to that row is obligatory. The program must save every table into separate text files (the form of the file name is: <databasename>_<tablename>.dat). These files must contain the count of rows and table specific properties and the rows.
Time-table and life cycle:
The project will use a waterfall model. This way the life cycle and the time-table of the project:
- 2014/10/09 Requirement specification (costs, milestones, exact descripton, analysis, etc.) /project definition and analysis/
- 2014/12/04 Systemplan (classes, methods, input-output, data storage, etc.) /software architecture/
- 2014/12/20 The working program /implementation, testing, release/
- 2015/01/04 Developer documentation /support/
- 2015/01/12 User documentation /support/
This project won't support these phases: deployement, training and maintance
Costs of the project:
Every phase requires one programmer or one manager.
Working hours:
- Up to 1st milestone: 5 hours * 1 person (manager) = 5 hours
- From 1st to 2nd milestone: 6 hours * 1 person (programmer) = 6 hours
- From 2nd to 3rd milestone: 20 hours * 1 person (programmer) = 20 hours
- From 3rd to 4th milestone: 5 hours * 1 person (programmer) = 5 hours
- From 4th to 5th milestone: 5 hours * 1 person (programmer) = 5 hours
- Summary of working hours: 41 hours
The accurate project definition:
Exercise: Database simulation
- It have to manage more databases
- A database has tables
- A table has columns
- Rows contain the data in tables
Data storage:
- in text files
- file name have to be in the following format <database_name>_<table_name>.dat
- every 'table file' have to be in the same directory
- file structure: at the beginning of file there's the column count, features of columns and then the rows of table line by line
Columns:
- Name of column
- Type of column (it can be boolean, integer, float/real or string)
- Flag which determines if we can leave this column empty or not
Actions:
- Creat a new database with the given name
- Open an existing database by its name
- Query the tables of a database
- Create a new table with the given name and the given informations about columms
- Modify table by deleting or adding columns
- Empty an existing table
- Delete an existing table
- Add new row into an existing table
- List rows from an existing table
- List specific rows from an existing table (> < = operators for integer, real and = for string and boolean)
- Delete specific rows from an existing table
Development:
- The program have to use oop. It'll be implemented in C++.
- The program have to save modifications immidiately after using commands.
- Users communicate with the program via console commands
- The program have to check values from console input whether they are fitting the requested datum format or not
- It have to server one user at a time
Names and ids:
- Only a-z, A-Z, 0-9 ASCII characters
- Note: Strings can contain other characters.
Domain analysis:
- The management system can be independent from other applications, it depends on the programming language input/output system and the database library/class.
- The database class can be independent from other applications, it depends on the programming language file handling system.
- Supported operating systems: MS Windows 7, MS Windows 8 (it'll be tested on these platforms)
- Minimal hardware requirements: 1 GB RAM or more, Intel Pentium 4 3GHz processor or better / nearly the same AMD processor or better, GPU not required, hard disk space depends on the size of databases (minimal 100 MB)
Software elements analysis:
- Database core
- It has the methods listed above. It has to check the proper types and drop exceptions on failure. It should drop exceptions on every failure.
- User interface / management system
- It has a command line and it'll parse the command from the user and make database commands from it.
- It should catch exceptions from the core.
- The management system will concant the users and it will make database queries from user commands. So this is the connection bridge between the user and the database core. It should catch the exceptions and translate the user commands.
Requirements analysis:
- You can find this section above in the "Costs of the project" and "Time-table and life cycle" sections.
Quality index
- reliability:
- The program ensure proper working without errors as long as a datatabase table file is under 512 MB.
- If the existing table file is damaged, than the program will work properly except you can't load the damaged table.
- The program can handle inproper inputs.
- efficiency:
- Speed is depending on the count of rows in the loaded table file.
- accessability:
- The program can be accessed only from the computer.
- Networking is not supported.
- There is no time limit in accessing functions.
- size/scale:
- Size is depending on the size of the table files.
- We recommend making archives, because greater tables cause slower working.
- The program will contain expectedly less than 1500 lines.
- maintainability:
- The program and the data files can be easily maintained.
- The program structure has to be done in a logically correct way.
- security:
- The program doesn't ensure security.
- The data files are not encoded.
- deliverability:
- Only one version of the program will be released and delivered.
- After delivery the program can be used immidiately.
- UML 2.0 creating tool: Software Ideas Modeler Standard
- programming language: C++ (GNU gcc compiler)
- IDE: Microsoft Visual Studio 2012 and 2013
- project tracking system: sourceforge.net
- revision control system: Git