Software Requirements Specification Distributed File System
Software Requirements Specification Distributed File System
For
Prepared By Aarshi Taneja(10104666) Akshit Bansal(10104669) Nupur (10104676) Rajat Bhatia (10104773)
Page ii
Table of Contents
1. Introduction ........................................................................................................1
1.1 Purpose ........................................................................................................................................ 1.2 Scope ........................................................................................................................................... 1.3Glossary........................................................................................................................... 1.4 References................................................................................................................................... 1.5 Overview ..................................................................................................................................... 1 1 1 2 2
3. Specific Requirements...................................................................................... 8
3.1 Functional Requirements ...............................................................................................................8 3.1.1 Server...........................................................................................................................................8 3.1.2 Normal User(Client).................................................................................................................... 9 3.1.3 Common Functions ................................................................................................................... .9 3.1.4 UML Diagrams......................................................................................................................... .10 3.1.4.1 Use Cases................................................................................................................................ 10 3.1.4.2 Class Diagrams........................................................................................................................11 3.1.4.3 Sequence Diagrams........................................................................................................................12 3.2 Non-Functional Requirements ......................................................................................................20 3.2.1 Performance Requirements.........................................................................................................20 3.2.2 Safety Requirements...................................................................................................................20 3.2.3. SecurityRequirements................................................................................................................20 3.2.4 Software quality attributes .........................................................................................................21 3.2.5. Error Handling....... 21
5. Stored Items........................................................................................................ 31
5.1 Original file.....................................................................................................................................31 5.2Encrypted File................................................................................................................................. 31 5.3Split File.......................................................................................................................................... 31 5.4.Key File.......................................................................................................................................... 32 5.5File To Download............................................................................................................................ 32
5.6.Downloaded File............................................................................................................................. 32
Software Requirements Specification for DFS Page iii
LIST OF TABLES
Table 1 Table 2 Table 3 Table 4 Table 5 Table 6 Attributes Saved About original file.................................................... 31 Attributes Saved About Encrypted File................................................ 31 Attributes Saved About Split File......................................................... 31 Attributes Saved About Key File.......................................................... 32 Attributes Saved About File To Download ........................................... 32 Attributes Saved About Downloaded File.............................................. 32
Page iv
LIST OF FIGURES
Figure 1 Figure 2 Figure 3 Figure 4 Figure 5 Figure 6 Figure 7 Figure 8 Figure 9 Startup Interface.................................................................................... 22 Registration Interface............................................................................ 23 Login Interface...................................................................................... 24 Client Interface...................................................................................... 25 Command Prompt and Server Interface ................................................ 26 Client folders.......................................................................................... 27 Client folders.......................................................................................... 28 Downloading The File........................................................................... 29 Downloading The File........................................................................... 30
Page 1
1.2
Scope
This product is provides facility to the clients to upload the file and split it within other clients. This distribution of file into multiple chunks would help to reduce the load on the system. The splitting is done by server. Also, for security purpose, the client who uploaded the file has the key to access the file and hence can download it. The project is specifically designed for the use of file upload and download. The product will work as a complete user interface for file upload and download from ordinary users. Distributed file system project can provide a free easy-to-use system for uploading and downloading the files. At one time, it can deal with many clients and many files.
1.3 Glossary
Term Client Server Distributed IEEE Definition the user who uploads/downloads the file. System handling the splitting function and connecting the clients to one another. A file is splitted into small chunks Institute of Electrical and Electronics Engineers
Page 2
1.4 References
[IEEE] The applicable IEEE standards are published in IEEE Standards Collection, 2001 edition.
Page 3
A valid chunk number is provided to the chunk (for eg. The chunks of file1 will be names ad file1.1,file1.2), after which the number of copies made or sent are transmitted via the network to the server where it stores the file and its chunks after splitting it. A valid key must be selected in order to download the file. The system can then calculate the number of chunks created and transferred. The data is collected and stored within the Servers own software which is fully JAVA compliant. The information will be queried by the custom application at regular user defined intervals, and recorded in the appropriate client accounts in the system. The custom application that is the subject of this SRS will handle all aspects of uploading, splitting and downloading for the client, with an interface.
should receive the file uploaded by the client and encrypt it successfully. should be able to split the file into the chunks and it should know the number of chunks it created. should be aware about all the folder paths. should distribute the chunks between the connected clients successfully and send a key to the client who uploaded the file. should be able to collect back all the distributed chunks and simultaneously delete them from the clients space. should merge the chunks decrypt the file successfully send the file to the client who requested for the same allow other clients to upload and download the file should be able to delete a client can remove the connection between itself and the client can exit. 2.2.2 Normal Users (Client) The member should be able to login into the main window. The member should be able to register his username and the password which is used later for logging into the main window. The member should be able to register themselves with the server and create a connection between them. Members are given the option to upload, download the file. Members can look into their computers directories for uploading a file. Members can download a file by selecting the key. Members can edit, modify, delete and open the downloaded file at the respective location.
2.3
Operating Environment
Windows Operating System: The server is currently running Windows 2000 and it is assumed that this is the operating system the software must run on. The client software will run on Windows 98 or higher for the desktops.
Page 5
2.4
User Characteristics
The skill set of the users of this software is varied. The main user, the server acts as a administrator who has the knowledge about networking system and distributed file handling. The other user is the client who has the knowledge to use this software. He/She has been using a computer for the past ten years and is a competent user of Windows programs and the Windows operating system.
. Most, but not all, of the clients level of comfort varies with computer, but all are at least familiar with the functionality standard among Windows programs. The client may have a high school education, some with a year of college, but no degrees. They are all comfortable with the Windows operating system and standard Windows program functionality. Administrators of the system should have more knowledge of internal modules of the system and are able to rectify small problems that may arise due to disk crashes, power failures and other catastrophes. Friendly user interface, online help and user guide must be sufficient to educate the users on how to use this product without any problems or difficulties.
Page 6
Interfaces to other applications The new system must provide an internal interface to the client for purposes of uploading and downloading the data collected and stored by that system. The information of all clients username, password, the number of clients connected at a time, the uploader, file name, file size must be stored in a database. Users may access software from any computer that has the java platform. Users must have their correct usernames and passwords to enter into their accounts and do actions. The server and the client, both should be aware about all the folder paths. Criticality of the application - This application is considered to be critical software as defined by IEEE Std 610.12-1990 (Standard Glossary of Software Terminology) as follows: Software whose failure could have an impact on safety, or could cause large financial or social loss. However, the Law Society has set strict guidelines on the storage of law firm data, as well as the traceability of uploading and downloading of file. The data, as well as the uploading and downloading of file logs must be stored for a minimum of seven years. While this may seem like only an archival issue, any loss of information from a system crash or malfunction is considered critical by GGA. It is critical that no data be lost. It must therefore be considered a critical design priority to ensure the integrity of the data. Functionality of the system that is not related to data storage can be considered as less than critical.
Page 7
2.6
Page 8
Page 9
Title Merging Description This action is done to merge the collected chunks. Title Decryption Description This action is done to decrypt the merged file. Title Send the file Description This action is done to send the file after decryption, to the client who requested for it. Title Exit Description This action is done to exit from the servers interface. 3.1.2 Normal User (client) Title Login Description This action is done to let the client enter into the main clients interface if the username and the password is correct. Title Registration Description When new user enters the software for the first time then he has to register. Title Upload Description This action is done to upload the file. Title Download Description This action is done to download the file. Title Exit Description This action is done to exit from the clients interface. 3.1.3 Common Functions Title Register Description This action is done to register themselves. Title File Transfer Description This action is done to transfer file.
Page 10
Title Exit Description This action is done to exit from the interface.
3.1.4
UML DIAGRAMS
Page 11
class SplitFile
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
CommRWBufferMemory buffer :byte ([]) RWMemory -
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial:BufferMemory Version([]) EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg - buffers eop :boolean
interface NamingAlgorythm cursor :int freeBuffers :int reading :boolean writting :boolean maxSize :int {readOnly} size :int SplitFileEvent + + + + + + + CommRWBufferMemory(int) getBuffer() :byte[] getMaxSize() :int getSize() :int isEOP() :boolean setEOP() :void setSize(int) :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg + getOutputFile(long) :File
+ init(File, long) :ErrorSplittingEvent
+ getReadMemory() :BufferMemory EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg + getWriteMemory() :BufferMemory -nameAlg + releaseReadMemory() :void
-memory + releaseWriteMemory() EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version:voidEA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg + RWMemory(BufferMemory, BufferMemory) -memory -memory
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
Observable ErrorSplittingEvent
RunnableEA 9.3 Unregistered Trial Version EA 9.3+ Unregistered EA 9.3 Unregistered Trial Version Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg FILE_EMPTY :int = 5 {readOnly} FileWrite Observable FileRead + FILE_IS_DIRECTORY :int = 3 {readOnly} + FILE_NOT_FOUND :int = 4 {readOnly} + + + + + + + + + INTERNAL_ERROR1 :int = 10 {readOnly} INTERNAL_ERROR2 :int = 11 {readOnly} INTERNAL_ERROR3 :int = 12 {readOnly} IOEXCEPTION_READING :int = 6 {readOnly} IOEXCEPTION_WRITTING :int = 7 {readOnly} NOT_EXISTING_FILE :int = 2 {readOnly} NOT_READABLE_FILE :int = 1 {readOnly} reason :int SPLITFILE_SMALLER :int = 8 {readOnly} SPLITTING_CANCELLED :int = 9 {readOnly}
chunkSize :long Runnable EA 9.3- Unregistered fileName :String Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg EA-- 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version chunkWrite :long StartSplittingEvent currentChunk :long file :FileOutputStream memory :RWMemory nameAlg :NamingAlgorythm sendWriteEvents :boolean thisChunkSize :long thread :Thread write :long ChunkCreatedEvent constRead :long file :FileInputStream memory :RWMemory read :long sendReadEvents :boolean thread :Thread - chunkSize :long - fileSize :long - nChunks :long + + + + +
ReadEvent WriteEvent EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered - chunkSize :long Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered - fileNameTrial :String Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg - fileName :String - nChunk :long + + + + FinishOpEvent - bytesRead :long - fileRead :boolean StopSplittingEvent - bytesWritten :long - fileWritten :boolean
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
~ + ~ + + + ~ endAnyOp() :void + FileRead(FileInputStream, long, RWMemory) FileWrite(RWMemory, NamingAlgorythm, long, long) + run() :void getOutputFile() :FileOutputStream + startReading(Observer, boolean) :void -fileWrite run() :void + stopReading() :void startWritting(Observer, boolean) :void -fileRead stopWritting() :void writeFile(byte[], int, boolean) :ErrorSplittingEvent ChunkCreatedEvent(String, long, long) getFileName() :String getFileSize() :long getSequenceNumber() :long + getBytesRead() :long + isFileRead() :boolean + ReadEvent(long, boolean) + getBytesWritten() :long + isFileWritten() :boolean + WriteEvent(long, boolean) getChunkSize() :long getFileName() :String getFileSize() :long getNumberOfChunks() :long StartSplittingEvent(String, long, long, long)
~ endAnyOp() :void Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg EA 9.3 Unregistered Trial Version EA 9.3 Unregistered + ErrorSplittingEvent(int)
getError() :int EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3+ Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg + getFileName() :String + reasonToString(int) :String
setFileName(String) Trial :void Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3++ Unregistered toString() :String
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
Observable
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg Observer
FileSplitter error :boolean fileRead :FileRead fileSize :long fileWrite :FileWrite fis :FileInputStream memory :RWMemory nChunks :long
- constBlockLength :int = 65536EA {readOnly} EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
~ finishWait() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg ~ InitFileSplitter(String, long, NamingAlgorythm) :ErrorSplittingEvent
+ split(String, long, NamingAlgorythm, boolean) :void + stopSplitting() :void ~ waitToFinish() :void -splitter
+ update(Observable, Object) :void EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3Observer Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ListChunks
chunks :Vector EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial-- Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg splitter :FileSplitter
getChunks() :Enumeration EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial++Version EA 9.3 getNumberOfChunks() :intUnregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg + ListChunks(FileSplitter) + update(Observable, Object) :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
Page 12
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
interface
BufferMemory EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
-buffers
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
ErrorSplittingEv ent + + + + + + + + + + + + FILE_EMPTY :int = 5 {readOnly} FILE_IS_DIRECTORY :int = 3 {readOnly} FILE_NOT_FOUND :int = 4 {readOnly} fileName :String INTERNAL_ERROR1 :int = 10 {readOnly} INTERNAL_ERROR2 :int = 11 {readOnly} INTERNAL_ERROR3 :int = 12 {readOnly} IOEXCEPTION_READING :int = 6 {readOnly} IOEXCEPTION_WRITTING :int = 7 {readOnly} NOT_EXISTING_FILE :int = 2 {readOnly} NOT_READABLE_FILE :int = 1 {readOnly} reason :int SPLITFILE_SMALLER :int = 8 {readOnly} SPLITTING_CANCELLED :int = 9 {readOnly}
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un CommRWBufferMemory
RWMemory buffers :BufferMemory ([]) cursor :int freeBuffers :int reading :boolean writting :boolean buffer :byte ([]) maxSize :int {readOnly} size :int
eop :boolean EA 9.3 Unregistered Trial Version EA 9.3 - Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 +Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un CommRWBufferMemory(int)
+ + + + getReadMemory() :BufferMemory + + + + getBuffer() :byte[] getMaxSize() :int isEOP() :boolean setEOP() :void releaseReadMemory() :void releaseWriteMemory() :void RWMemory(BufferMemory, BufferMemory) -memory -memory -memory
EA 9.3 Unregistered Trial Version EA 9.3 +Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un + getWriteMemory() :BufferMemory getSize() :int
+ ErrorSplittingEvent(int) EA 9.3 Unregistered Trial Version EA 9.3 +Unregistered setSize(int) :void Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un + getError() :int + getFileName() :String
+ reasonToString(int) :String EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un + setFileName(String) :void + toString() :String
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
Runnable FileWrite Observable Runnable
Observable EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un - chunkSize :long
FileRead chunkWrite :long currentChunk :long ~ + + + + file :FileInputStream memory :RWMemory memory :RWMemory nameAlg :NamingAlgorythm thisChunkSize :long thread :Thread write :long endAnyOp() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un - constRead EA :long9.3 Unregistered Trial - Version file :FileOutputStream
sendReadEvents :boolean thread :Thread endAnyOp() :void FileRead(FileInputStream, long, RWMemory) run() :void startReading(Observer, boolean) :void -fileWrite stopReading() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un - read :longEA 9.3 Unregistered Trial - Version sendWriteEvents :boolean
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
~
+ Version FileWrite(RWMemory, NamingAlgorythm, long, long) EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial EA 9.3 Unregistered Trial Version EA 9.3 Un ~ getOutputFile() :FileOutputStream + run() :void
+ startWritting(Observer, boolean) :void -fileRead EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un + stopWritting() :void ~ writeFile(byte[], int, boolean) :ErrorSplittingEvent
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EAObservable 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
Observer FileSplitter constBlockLength :int = 65536 {readOnly} error :boolean fileRead :FileRead fileSize :long fileWrite :FileWrite fis :FileInputStream memory :RWMemory nChunks :long
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA~9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un finishWait() :void
~ + + + ~ InitFileSplitter(String, long, NamingAlgorythm) :ErrorSplittingEvent split(String, long, NamingAlgorythm, boolean) :void stopSplitting() :void update(Observable, Object) :void waitToFinish() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Un
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
Software Requirements Specification for DFS Page 13
red VersionEAEA Unregistered Trial Version eredTrial Trial Version 9.3 9.3 Unregistered Trial Version
SplitFileEvent
ered Trial Version EA 9.3 Unregistered Trial Version red Trial Version EA 9.3 Unregistered Trial Version
red VersionEAEA Unregistered Trial Version eredTrial Trial Version 9.3 9.3 Unregistered Trial Version
eredTrial Trial Version 9.3 9.3 Unregistered Trial Version red VersionEAEA Unregistered Trial Version
ReadEv ent + + + bytesRead :long fileRead :boolean getBytesRead() :long isFileRead() :boolean ReadEvent(long, boolean)
red Trial Version EA 9.3 Unregistered Trial Version ered Trial Version EA 9.3 Unregistered Trial Version
red VersionEAEA Unregistered Trial Version eredTrial Trial Version 9.3 9.3 Unregistered Trial Version
Page 14
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
jButton1 :javax.swing.JButton jButton2 :javax.swing.JButton jButton3 :javax.swing.JButton jLabel1 :javax.swing.JLabel jLabel2 :javax.swing.JLabel jLabel3 :javax.swing.JLabel jLabel4 :javax.swing.JLabel jPanel1 :javax.swing.JPanel txtpwd :javax.swing.JPasswordField txtuname :javax.swing.JTextField initComponents() :void
javax.swing.JFrame Thread EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version Register AppClientServ ice jButton1 :javax.swing.JButton
~ appClient :AppClient = null EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version - jButton2 :javax.swing.JButton ~ clientNode :Node = null ~ clientServiceSocket :ServerSocket = null ~ server :Node = null + + + + + + + + getAppClient() :AppClient getClientNode() :Node getServer() :Node run() :void setAppClient(AppClient) :void setClientNode(Node) :void setServer(Node) :void uploadSplitFile(File, String) :void jLabel1 :javax.swing.JLabel jLabel2 :javax.swing.JLabel jLabel3 :javax.swing.JLabel jPanel1 :javax.swing.JPanel txtpwd :javax.swing.JPasswordField txtuname :javax.swing.JTextField initComponents() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
+ + jButton2ActionPerformed(java.awt.event.ActionEvent) :void jButton3ActionPerformed(java.awt.event.ActionEvent) :void Login() main(String[]) :void
- jButton1ActionPerformed(java.awt.event.ActionEvent) :void - jButton1ActionPerformed(java.awt.event.ActionEvent) :void Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 - jButton2ActionPerformed(java.awt.event.ActionEvent) :void + main(String[]) :void + Register()
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version ~acs
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
~appClient ActionListener AppClient
EA 9.3 Unregistered Trial Version JFrameEA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
~ ~ ~ acs :AppClientService = null btnBrowseClientPath :JButton btnBrowseUpload :JButton btnDownload :JButton btnExit :JButton btnRegister :JButton btnUploadFile :JButton client :Node = null CLIENT_PATH :String = "D:\\workspace\... {readOnly} lblClientIds :JLabel lblClientIP :JLabel lblClientPath :JLabel lblClientPort :JLabel lblServerIP :JLabel lblServerPort :JLabel lblUploadFile :JLabel lstClientIds :JList pnlContainer :JPanel sbrClientIds :JScrollPane server :Node = null txtClientIP :JTextField txtClientPath :JTextField txtClientPort :JTextField txtServerIP :JTextField txtServerPort :JTextField txtUploadFile :JTextField
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
+ actionPerformed(ActionEvent) :void + + + + + + AppClient() downloadFile() :void getClientPath() :String main(String[]) :void registerClient() :void removeClientId() :void unRegister() :void uploadFile() :void
+ 9.3 addClientId(String) :void Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA Unregistered
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
Page 15
class serv er
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister Serializable
ClientData ~ clientId :String ~ clientNode :Node
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ clientCount :int
~ key :String ~ splitFileCount :int
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version ~ encrFile :String EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
Thread ~ uploadedFile :String ~ appServer :AppServer = null + getClientCount() :int + getClientId() :String
~ splitFolder :String EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister AppServ erServ ice
~ clientCount :int + ClientData(String, String, String, String, int, Node, int) EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ lstClients :List<Node> = new ArrayList<N... ~ mapClientBatFile :Map<String, File> = new HashMap<Str...
~ mapClientData :HashMap<String, ClientData> = new HashMap<Str... + getClientNode() :Node EA 9.3 Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ Unregistered mapSplitData :Map<String, List<String>> = new HashMap<Str... + getEncrFile() :String ~ server :ServerSocket = null ~ setClientTransProcessed :Set<String> = new HashSet<Str... + getAppServer() :AppServer + main(String[]) :void + setAppServer(AppServer) :void ~as + getKey() :String + getSplitFileCount() :int
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version :String EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister + getSplitFolder()
+ getUploadedFile() :String + setClientCount(int) :void + setClientNode(Node) :void + setEncrFile(String) :void + setSplitFileCount(int) :void + setSplitFolder(String) :void
+ Unregistered run() :void EA 9.3 Trial Version EA 9.3 Unregistered Trial + setClientId(String) Version EA :void 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
+ setKey(String) EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version :void EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
+ setUploadedFile(String) :void EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~appServer
JFrame AppServ er
Runnable EA 9.3 Unregistered Trial Version ActionListener EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version ClientHandlerImpl EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ appServer :AppServer = null
~ as :AppServerService = null EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version = null EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ bis :BufferedInputStream ~ btnBrowseEncrPath :JButton ~ btnBrowseServer :JButton ~ dos :DataOutputStream = null ~ inReader :BufferedReader = null
~ btnExit :JButton ~ lstClients :List<Node> = null EA 9.3 Unregistered ~ btnStartServer :JButton Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ lblChunkSize :JLabel ~ lblClientNo :JLabel ~ lblEncrPath :JLabel ~ lblMessage :JLabel ~ mapClientBatFile :Map<String, File> = null ~ mapClientData :HashMap<String, ClientData> = null
~ mapSplitData :Map<String, List<String>> = null EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ lblClients :JLabel ~ mode :String = null ~ setClientTransProcessed :Set<String> = null
~ lblMessages :JLabel Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister EA 9.3 Unregistered - areAllClientsActive(String) :boolean ~ lblServerPath :JLabel ~ lblServerPort :JLabel + ClientHandlerImpl() + ClientHandlerImpl(AppServer, List<Node>, BufferedReader, String, HashMap<String, ClientData>, BufferedInputStream, DataOutputStream, Map<String, List<String>>, Map<String, File>, Set<String>) - downloadFileToClient() :void + encryptFile(File, File) :void
~ lstClients :JList EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version - decryptFile(String, File) :File EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ lstMessages :JList ~ pnlContainer :JPanel
- SERVER_ENCR_PATH :String = "D:\\workspace\... {readOnly} + getAppServer() :AppServer EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister EA 9.3 Unregistered Version EA 9.3 Unregistered Trial Version - SERVER_PATH :StringTrial = "D:\\workspace\... {readOnly} ~ txtaClients :JTextArea ~ txtaMessages :JTextArea ~ ~ ~ ~ ~ + getInReader() :BufferedReader + getLstClients() :List<Node> + + + + + + + + + -
~appServer + getMode() :String EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister ~ txtChunSize :JTextField txtClientNo :JTextField txtEncrPath :JTextField txtMessage :JTextField txtServerPath :JTextField txtServerPort :JTextField mergeFiles(File) :void pullAllSplitFiles(String) :void registerClient() :void run() :void sendFileToClient(File) :int sendKeyFile(String, Node, File) :void sendOrgFileToClient(File, String, int) :void setAppServer(AppServer) :void setInReader(BufferedReader) :void setLstClients(List<Node>) :void setMode(String) :void splitFile(File, File) :void unRegisterClient() :void uploadClientSplitFile() :void uploadOriginalClientFile() :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister + actionPerformed(ActionEvent) :void
+ addClient(String) :void + clearMessages() :void + getChunkSize() :long
+ addMessage(String) :void EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister + AppServer()
EA 9.3 Unregistered Trial + getDownloadFolder(String) :File Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
+ getEncrFolder(String) :File + getOrigFileFolder(String) :File + getServerPort() :String + getSplitFolder(String) :File + + + + + + + removeClient(String) :void setReadProgress(int) :void setWriteProgress(int) :void showClientNo(int) :void showError(String) :void showMessage(String) :void splittingFinished(boolean) :void
EA 9.3 + getServerPath() Unregistered :String Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
+ main(String[]) :void Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister EA 9.3 Unregistered
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregister
Page 16
class serv er
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA Serializable
ClientData ~ ~ ~ ~ ~ ~ ~ clientId :String clientNode :Node encrFile :String key :String splitFileCount :int splitFolder :String uploadedFile :String
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version ~ clientCount :int EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
Thread
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA AppServ erServ ice
~ appServer :AppServer = null + + + + + + + + + + + + + + + + getClientCount() :int getClientId() :String getClientNode() :Node getEncrFile() :String getKey() :String getSplitFileCount() :int getSplitFolder() :String getUploadedFile() :String setClientCount(int) :void setClientId(String) :void setClientNode(Node) :void setEncrFile(String) :void setKey(String) :void setSplitFileCount(int) :void setSplitFolder(String) :void setUploadedFile(String) :void
~ clientCount :int + ClientData(String, String, String, String, int, Node, int) EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA ~ lstClients :List<Node> = new ArrayList<N... ~ ~ ~ ~ ~ + + + + mapClientBatFile :Map<String, File> = new HashMap<Str... mapClientData :HashMap<String, ClientData> = new HashMap<Str... mapSplitData :Map<String, List<String>> = new HashMap<Str... server :ServerSocket = null setClientTransProcessed :Set<String> = new HashSet<Str... getAppServer() :AppServer main(String[]) :void run() :void setAppServer(AppServer) :void
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
Software Requirements Specification for DFS
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
JFrame ActionListener
EA 9.3 Unregis
EA 9.3 Unregis
Page 17
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version
+ + + + + + + + + + + + + + + + + + + + actionPerformed(ActionEvent) :void addClient(String) :void addMessage(String) :void AppServer() clearMessages() :void getChunkSize() :long getDownloadFolder(String) :File getEncrFolder(String) :File getOrigFileFolder(String) :File getServerPath() :String getServerPort() :String getSplitFolder(String) :File main(String[]) :void removeClient(String) :void setReadProgress(int) :void setWriteProgress(int) :void showClientNo(int) :void showError(String) :void showMessage(String) :void splittingFinished(boolean) :void
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
lblChunkSize :JLabel lblClientNo :JLabel lblClients :JLabel lblEncrPath :JLabel lblMessage :JLabel lblMessages :JLabel lblServerPath :JLabel lblServerPort :JLabel lstClients :JList lstMessages :JList pnlContainer :JPanel SERVER_ENCR_PAT H :String = "D:\\workspace\... {readOnly} SERVER_PAT H :String = "D:\\workspace\... {readOnly} txtaClients :JT extArea txtaMessages :JT extArea txtChunSize :JT extField txtClientNo :JT extField txtEncrPath :JT extField txtMessage :JT extField txtServerPath :JT extField txtServerPort :JT extField
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
EA 9.3 Unregis
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EASpecification 9.3 Unregistered Trial18 Version EA 9.3 Unreg Software Requirements for Trial DFSVersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Page
ersion EA 9.3 Unregistered class serv erTrial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
Runnable ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version ClientHandlerImpl EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg ~ appServer :AppServer = null ~ ~ ~ ~ ~ ~ ~ ~
ersion EA 9.3 Unregistered Trial Version= null EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg ~ bis :BufferedInputStream
dos :DataOutputStream = null inReader :BufferedReader = null lstClients :List<Node> = null mapClientBatFile :Map<String, File> = null mapClientData :HashMap<String, ClientData> = null mapSplitData :Map<String, List<String>> = null mode :String = null setClientTransProcessed :Set<String> = null
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version :boolean EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg - areAllClientsActive(String)
+ + + + + + + + + + + + + + + + ClientHandlerImpl() ClientHandlerImpl(AppServer, List<Node>, BufferedReader, String, HashMap<String, ClientData>, BufferedInputStream, DataOutputStream, Map<String, List<String>>, Map<String, File>, Set<String>) decryptFile(String, File) :File downloadFileToClient() :void encryptFile(File, File) :void getAppServer() :AppServer getInReader() :BufferedReader getLstClients() :List<Node> getMode() :String mergeFiles(File) :void pullAllSplitFiles(String) :void registerClient() :void run() :void sendFileToClient(File) :int sendKeyFile(String, Node, File) :void sendOrgFileToClient(File, String, int) :void setAppServer(AppServer) :void setInReader(BufferedReader) :void setLstClients(List<Node>) :void setMode(String) :void splitFile(File, File) :void unRegisterClient() :void uploadClientSplitFile() :void uploadOriginalClientFile() :void
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
class crypt
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg DES
ersion EA 9.3 Unregistered Trialkey Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg :Key
ersion EA 9.3 Unregistered + Trialdecrypt(byte[], Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg Key) :byte[]
ersion EA 9.3 Unregistered + TrialgetKey() Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg :Key
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
ersion EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unreg
Page 19
class util
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre Serializable
FileUtil Node ~ + + + + + + + + STYLE_REDTEXT :String = "name=\"RedText\"" {readOnly} areMandatorySectionsLeftOut(byte[], String[]) :boolean listAllFiles(File, String, Map<String, File>) :void readByteFile(File) :byte[] readFile(File) :byte[] readInputStreamAsString(InputStream) :String readObjectFile(File) :Object writeByteFile(String, byte[]) :boolean writeObjectFile(String, Object) :boolean ~ ~ + + + + + + + ip :String = null port :int = 0
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre ~ folder :String = null
getFolder() :String getIp() :String getPort() :int setFolder(String) :void setIp(String) :void setPort(int) :void toString() :String
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
EA 9.3 Unregistered Trial Version EA 9.3 Unregistered Trial Version EA 9.3 Unre
Page 20
3.2
NONFUNCTIONAL REQUIREMENTS
3.2.1 Performance Requirements It is not a resource hog and will run on almost every computer. Its functions and features are not computationally intensive. It does not require a powerful processor or graphics card, much RAM, or disk space, for both the install and Live version, and the program loads and runs fairly quick. The only real requirement is preinstallation of the java platform. The system shall accommodate high number of users without any fault. Responses shall take no longer than 10 seconds to appear on the screen. 3.2.2 Safety Requirements As it is stated with many warnings in the program, data loss is a serious possibility, if you are not careful, backup your data and/or use the program with extreme caution. It is obvious then if you deal with file manipulation; you could lose your data by human or application error. System use shall not cause any harm to human users.
3.2.3 Security Requirements Security is very important aspect of any application so it include authentication and cryptographic algorithms for encryption and decryption of files.
Page 21
System will use secured database. It provides a key to the client which restricts the accessibility of the file by the other clients. System will have different types of users and every user has access constraints.
3.2.4 Software Quality Attributes The application provides a quite friendly user interface with its operations accessible. An average or casual user should not find any problem using the program to perform at least its main functions. Response time It is really fast as it quickly performs all the actions. For eg: connection between the server and the clients, transfer of files, splitting of files into the chunks etc. No of clients It can connect any number of clients with the server, but with increasing number of clients its performance will degrade. 3.2.5 Error handling shall handle expected and non-expected errors in ways that prevent loss in information and long downtime period.
Page 22
FIGURE 1
The figure1 above is the server interface. Server gets started on clicking the start server tab. The panel asks the user to give the desired path where the file will be encrypted. Path of the encrypted folder as well as the folder location is filled in the Encrypted folder and server path Boxes respectively. The server is then started.
Page 23
4.1.1 REGISTERATION INTERFACE The window below shows the registration interface.
FIGURE 2
In figure 2 the user is required to enter a username and a password to register itself as a client. A message box appears on successful registration. The username and password is stored in a database.
Page 24
FIGURE 3
Page 25
FIGURE 4
Page 26
FIGURE 5
Page 27
The figure shows encrypted chunks among various clients wiyhonly !client having the access key to the cloud.
FIGURE 6
The figure 7 below displays the receiving of keys by client1. After the files are split into chunks and distributed a key is generated by the server. This key is received by the client which uploaded the file on server. Only client1 can download the files as it uploaded it. This is done for security purposes and the information remains safe on the cloud.
Page 28
FIGURE 7
Page 29
FIGURE 8
Page 30
FIGURE 9
Page 31
5. Stored Items
In this section we will list all stored information about every file in DFS
TYPE
Any file can be uploaded. (zip, text file..etc)
LOCATION
The file is stored in the original folder in the server system.
CONSTRAINTS
TYPE
The file uploaded is encrypted by the server.
LOCATION
It is stored in the encrypt folder with ther server.
CONSTRAINTS
TYPE
ANY FILE (text file, zip file..etc)
LOCATION
The splitted files are stored in the folders 1,2 3,.. of client 1, client 2, client 3 respectively.
CONSTRAINTS
The original file is splitted with eact split file of size 10000 bytes and is in encrypted format. for eg. Zip file is splitted 1234567891011_com.zip.enc.1
Page 32
TYPE
Key file
LOCATION
It is stored in the key folder of the client who uploaded the file.
CONSTRAINTS
Only given to the client who uploaded the file. For ex. 1234567891011_manifest.zip.key
TYPE
The file uploaded can be downloaded.
LOCATION
The server merges the splitted files and save the merged file in the download folder.
CONSTRAINTS
Server collects all the files from the client and merges them with the help of the key generated before.
TYPE
The file uploaded and splitted can be downloaded by the client.
LOCATION
The final file is saved with the client in its respective folder.
CONSTRAINTS
The file can be downloaded only by the client who uploaded the file and who has the key generated by the server while splitting.