FILE SPLITTER AND JOINER

61
1 1. INTRODUCTION File splitter basically used to split the large files which are not possible to upload or download, when we have to file size restrictions imposed by the application. For example, if we need to upload a file say 30 MB using Gmail, than it might not be possible as Gmail restrict the file size less than 30MB, so if we use our tool we can split the file and send the splitted parts by uploading it and can retain the original file by joining the splitted parts. Likewise we can use our application in other fields as well; where we need the file (can be audio, video, text, rar etc). Using our tool, which is a windows application, one need to decide size for each segments, than need to split the original file. On joining he/she need to select the first and should click on join to get the original file. Existing System In the existing system, splitting of file will be limited only to some file formats. Proposed system In the proposed system, splitting of file will be for all types of files like text, document, image, audio, video, pdf, etc. The advantage of splitting the file is that, we can upload or download the splitted file easily, when there is a restriction in size of the file to be uploaded or downloaded. Overall description By using our tool file splitter one can easily split the file into smaller segments, which in turn can be joined to retrieve the original file. Will have three modules one for segmentation, other for splitted the file into segments and other for joining the splitted parts to obtain the original file. In the segmentation we need to decide the how many segments we need to have for a file , and will have split and join option, using split we can divide the file into required segments and than can join the segments to obtain the original file. Modules of the Product Segmentation: This module basically deals with segmenting the original file into the number of segments based on the size specified for each segment. For example if file size is 4000kb, and if each segment size (in kb/mb) specified is 400, than 10(4000/400) segments will be generated.

description

 

Transcript of FILE SPLITTER AND JOINER

Page 1: FILE SPLITTER AND JOINER

1

1. INTRODUCTION

File splitter basically used to split the large files which are not possible to upload or

download, when we have to file size restrictions imposed by the application. For example, if

we need to upload a file say 30 MB using Gmail, than it might not be possible as Gmail

restrict the file size less than 30MB, so if we use our tool we can split the file and send the

splitted parts by uploading it and can retain the original file by joining the splitted parts.

Likewise we can use our application in other fields as well; where we need the file (can be

audio, video, text, rar etc). Using our tool, which is a windows application, one need to

decide size for each segments, than need to split the original file. On joining he/she need to

select the first and should click on join to get the original file.

Existing System

In the existing system, splitting of file will be limited only to some file formats.

Proposed system

In the proposed system, splitting of file will be for all types of files like text,

document, image, audio, video, pdf, etc. The advantage of splitting the file is that, we can

upload or download the splitted file easily, when there is a restriction in size of the file to be

uploaded or downloaded.

Overall description

By using our tool file splitter one can easily split the file into smaller segments, which

in turn can be joined to retrieve the original file. Will have three modules one for

segmentation, other for splitted the file into segments and other for joining the splitted parts

to obtain the original file. In the segmentation we need to decide the how many segments we

need to have for a file , and will have split and join option, using split we can divide the file

into required segments and than can join the segments to obtain the original file.

Modules of the Product Segmentation:

This module basically deals with segmenting the original file into the number of

segments based on the size specified for each segment. For example if file size is 4000kb,

and if each segment size (in kb/mb) specified is 400, than 10(4000/400) segments will be

generated.

Page 2: FILE SPLITTER AND JOINER

2

File Splitter Module:

This module take care of splitting the file into segments specified in the segmentation

module. Based on of segments to be generated, this module splits the original file into

segments.

File Joining Module:

It is used to join the files which are splitted into the segments in the above module.

FEASIBILITY STUDY

TECHINICAL FEASIBILITY:

Evaluating the technical feasibility is the trickiest part of a feasibility study. This is

because, at this point in time, not too many detailed design of the system, making it difficult

to access issues like performance, costs on (on account of the kind of technology to be

deployed) etc.

A number of issues have to be considered while doing a technical analysis.

1. Understand the different technologies involved in the proposed system:

Before commencing the project, we have to be very clear about what are the

Technologies that are to be required for the development of the new system.

2. Find out whether the organization currently possesses the required technologies:

Is the required technology available with the organization?

If so is the capacity sufficient?

For instance –

―Will the current printer be able to handle the new reports and forms required for the

new system?‖

OPERATIONAL FEASIBILITY:

Proposed projects are beneficial only if they can be turned into information systems

that will meet the organizations operating requirements. Simply stated, this test of feasibility

asks if the system will work when it is developed and installed. Are there major barriers to

Implementation? Here are questions that will help test the operational feasibility of a project:

Is there sufficient support for the project from management from users? If

The current system is well liked and used to the extent that persons will not be

Able to see reasons for change, there may be resistance.

Are the current business methods acceptable to the user? If they are not,

Page 3: FILE SPLITTER AND JOINER

3

Users may welcome a change that will bring about a more operational and useful

systems.

Have the user been involved in the planning and development of the project?

Early involvement reduces the chances of resistance to the system and in

General and increases the likelihood of successful project.

Since the proposed system was to help reduce the hardships encountered

In the existing manual system, the new system was considered to be operational feasible.

ECONOMIC FEASIBILITY:

Economic feasibility attempts 2 weigh the costs of developing and implementing a

new system, against the benefits that would accrue from having the new system in place.

This feasibility study gives the top management the economic justification for the new

system. A simple economic analysis which gives the actual comparison of costs and benefits

are much more meaningful in this case. In addition, this proves to be a useful point of

reference to compare actual costs as the project progresses. There could be various types of

intangible benefits on account of automation. These could include increased customer

satisfaction, improvement in product quality better decision making timeliness of

information, expediting activities, improved accuracy of operations, better documentation

and record keeping, faster retrieval of information, better employee morale.

Page 4: FILE SPLITTER AND JOINER

4

2. PROBLEM DEFINATION AND SCOPE OF THE PROJECT

2.1 Purpose

The purpose of developing our tool is to splits the larger files which can’t be

uploaded or downloaded using some application like Gmail, yahoo mail, etc as per file size

restrictions imposed by this application. In order to support larger file uploads and downloads

we will use our tool, using which one can easily upload or download splitted files.

2.2 Scope

We can use our application or tool to split the files types such as audio, video, text,

rar etc. so that splitted files can be uploaded or downloaded easily.

2.3 Goals:

The main aim of the project is to design software for splitting of any type of files into

segments and reassembling them. The project provides compression of file before splitting

and compressed file is used for splitting. In already existing software they provide only some

file types. We design software to split all types of files like text, document, image, audio,

video, pdf etc. The files splitted portion will be in non-readable format and parts can be

joined back to get the original file.

2.4 Features of our project (Advantages)

1) Our project assists to the users in splitting the larger files into smaller splitted files, which

can easily be uploaded or downloaded.

2) Our project or tool is more user friendly, and can be used easily for file splitting and

joining and Our tool can be used for splitting of video files, audio files, rar files which may

not available in existing system.

2.5 TECHNOLOGIES:

2.5.1 .net description:

The .NET Framework is a new computing platform that simplifies application

development in the highly distributed environment of the Internet. The .NET Framework is

designed to fulfill the following objectives:

To provide a consistent object-oriented programming environment whether object

code is stored and executed locally, executed locally but Internet-distributed, or

executed remotely.

Page 5: FILE SPLITTER AND JOINER

5

To provide a code-execution environment that minimizes software deployment and

versioning conflicts.

Fig 2.5.1: .NET Frame work

To provide a code-execution environment that guarantees safe execution of code, including

code created by an unknown or semi-trusted third party.

To provide a code-execution environment that eliminates the performance problems

of scripted or interpreted environments.

To make the developer experience consistent across widely varying types of

applications, such as Windows-based applications and Web-based applications.

To build all communication on industry standards to ensure that code based on the

.NET Framework can integrate with any other code.

The .NET Framework has two main components: the common language runtime and

the .NET Framework class library. The common language runtime is the foundation of the

.NET Framework. You can think of the runtime as an agent that manages code at execution

time, providing core services such as memory management, thread management, and

remoting, while also enforcing strict type safety and other forms of code accuracy that ensure

security and robustness. In fact, the concept of code management is a fundamental principle

of the runtime. Code that targets the runtime is known as managed code, while code that does

Page 6: FILE SPLITTER AND JOINER

6

not target the runtime is known as unmanaged code. The class library, the other main

component of the .NET Framework, is a comprehensive, object-oriented collection of

reusable types that you can use to develop applications ranging from traditional command-

line or graphical user interface (GUI) applications to applications based on the latest

innovations provided by ASP.NET, such as Web Forms and XML Web services.

The .NET Framework can be hosted by unmanaged components that load the

common language runtime into their processes and initiate the execution of managed code,

thereby creating a software environment that can exploit both managed and unmanaged

features. The .NET Framework not only provides several runtime hosts, but also supports the

development of third-party runtime hosts. For example, ASP.NET hosts the runtime to

provide a scalable, server-side environment for managed code. ASP.NET works directly with

the runtime to enable Web Forms applications and XML Web services, both of which are

discussed later in this topic.

Internet Explorer is an example of an unmanaged application that hosts the runtime

(in the form of a MIME type extension). Using Internet Explorer to host the runtime enables

you to embed managed components or Windows Forms controls in HTML documents.

Hosting the runtime in this way makes managed mobile code (similar to Microsoft®

ActiveX® controls) possible, but with significant improvements that only managed code can

offer, such as semi-trusted execution and secure isolated file storage.

The following illustration shows the relationship of the common language runtime

and the class library to your applications and to the overall system. The illustration also

shows how managed code operates within a larger architecture.

Features of the Common Language Runtime

The common language runtime manages memory, thread execution, code execution,

code safety verification, compilation, and other system services. These features are intrinsic

to the managed code that runs on the common language runtime. With regards to security,

managed components are awarded varying degrees of trust, depending on a number of factors

that include their origin (such as the Internet, enterprise network, or local computer). This

means that a managed component might or might not be able to perform file-access

operations, registry-access operations, or other sensitive functions, even if it is being used in

the same active application.

Page 7: FILE SPLITTER AND JOINER

7

The runtime enforces code access security. For example, users can trust that an

executable embedded in a Web page can play an animation on screen or sing a song, but

cannot access their personal data, file system, or network. The security features of the

runtime thus enable legitimate Internet-deployed software to be exceptionally feature rich.

The runtime also enforces code robustness by implementing a strict type- and code-

verification infrastructure called the common type system (CTS). The CTS ensures that all

managed code is self-describing. The various Microsoft and third-party language compilers

generate managed code that conforms to the CTS. This means that managed code can

consume other managed types and instances, while strictly enforcing type fidelity and type

safety. In addition, the managed environment of the runtime eliminates many common

software issues. For example, the runtime automatically handles object layout and manages

references to objects, releasing them when they are no longer being used. This automatic

memory management resolves the two most common application errors, memory leaks and

invalid memory references.

The runtime also accelerates developer productivity. For example, programmers can

write applications in their development language of choice, yet take full advantage of the

runtime, the class library, and components written in other languages by other developers.

Any compiler vendor who chooses to target the runtime can do so. Language compilers that

target the .NET Framework make the features of the .NET Framework available to existing

code written in that language, greatly easing the migration process for existing applications.

While the runtime is designed for the software of the future, it also supports software of

today and yesterday. Interoperability between managed and unmanaged code enables

developers to continue to use necessary COM components and DLLs.

The runtime is designed to enhance performance. Although the common language

runtime provides many standard runtime services, managed code is never interpreted. A

feature called just-in-time (JIT) compiling enables all managed code to run in the native

machine language of the system on which it is executing. Meanwhile, the memory manager

removes the possibilities of fragmented memory and increases memory locality-of-reference

to further increase performance. Finally, the runtime can be hosted by high-performance,

server-side applications, such as Microsoft® SQL Server™ and Internet Information

Services (IIS). This infrastructure enables you to use managed code to write your business

Page 8: FILE SPLITTER AND JOINER

8

logic, while still enjoying the superior performance of the industry's best enterprise servers

that support runtime hosting.

.NET Framework Class Library

The .NET Framework class library is a collection of reusable types that tightly

integrate with the common language runtime. The class library is object oriented, providing

types from which your own managed code can derive functionality. This not only makes the

.NET Framework types easy to use, but also reduces the time associated with learning new

features of the .NET Framework. In addition, third-party components can integrate

seamlessly with classes in the .NET Framework. For example, the .NET Framework

collection classes implement a set of interfaces that you can use to develop your own

collection classes. Your collection classes will blend seamlessly with the classes in the .NET

Framework. As you would expect from an object-oriented class library, the .NET Framework

types enable you to accomplish a range of common programming tasks, including tasks such

as string management, data collection, database connectivity, and file access. In addition to

these common tasks, the class library includes types that support a variety of specialized

development scenarios. For example, you can use the .NET Framework to develop the

following types of applications and services:

Console applications.

Scripted or hosted applications.

Windows GUI applications (Windows Forms).

ASP.NET applications.

XML Web services.

Windows services.

For example, the Windows Forms classes are a comprehensive set of reusable types that

vastly simplify Windows GUI development. If you write an ASP.NET Web Form

application, you can use the Web Forms classes.

Client Application Development

Client applications are the closest to a traditional style of application in Windows-

based programming. These are the types of applications that display windows or forms on the

desktop, enabling a user to perform a task. Client applications include applications such as

word processors and spreadsheets, as well as custom business applications such as data-entry

Page 9: FILE SPLITTER AND JOINER

9

tools, reporting tools, and so on. Client applications usually employ windows, menus,

buttons, and other GUI elements, and they likely access local resources such as the file

system and peripherals such as printers. Another kind of client application is the traditional

ActiveX control (now replaced by the managed Windows Forms control) deployed over the

Internet as a Web page. This application is much like other client applications: it is executed

natively, has access to local resources, and includes graphical elements.

In the past, developers created such applications using C/C++ in conjunction with the

Microsoft Foundation Classes (MFC) or with a rapid application development (RAD)

environment such as Microsoft® Visual Basic®. The .NET Framework incorporates aspects

of these existing products into a single, consistent development environment that drastically

simplifies the development of client applications.

The Windows Forms classes contained in the .NET Framework are designed to be

used for GUI development. You can easily create command windows, buttons, menus,

toolbars, and other screen elements with the flexibility necessary to accommodate shifting

business needs. For example, the .NET Framework provides simple properties to adjust

visual attributes associated with forms. In some cases the underlying operating system does

not support changing these attributes directly, and in these cases the .NET Framework

automatically recreates the forms. This is one of many ways in which the .NET Framework

integrates the developer interface, making coding simpler and more consistent.

Unlike ActiveX controls, Windows Forms controls have semi-trusted access to a user's

computer. This means that binary or natively executing code can access some of the

resources on the user's system (such as GUI elements and limited file access) without being

able to access or compromise other resources. Because of code access security, many

applications that once needed to be installed on a user's system can now be safely deployed

through the Web. Your applications can implement the features of a local application while

being deployed like a Web page.

Server Application Development

Server-side applications in the managed world are implemented through runtime

hosts. Unmanaged applications host the common language runtime, which allows your

custom managed code to control the behavior of the server. This model provides you with all

Page 10: FILE SPLITTER AND JOINER

10

the features of the common language runtime and class library while gaining the performance

and scalability of the host server.

The following illustration shows a basic network schema with managed code running

in different server environments. Servers such as IIS and SQL Server can perform standard

operations while your application logic executes through the managed code.

Server-side managed code

ASP.NET is the hosting environment that enables developers to use the .NET

Framework to target Web-based applications. However, ASP.NET is more than just a

runtime host; it is a complete architecture for developing Web sites and Internet-distributed

objects using managed code. Both Web Forms and XML Web services use IIS and ASP.NET

as the publishing mechanism for applications, and both have a collection of supporting

classes in the .NET Framework. XML Web services, an important evolution in Web-based

technology, are distributed, server-side application components similar to common Web

sites. However, unlike Web-based applications, XML Web services components have no UI

and are not targeted for browsers such as Internet Explorer and Netscape Navigator. Instead,

XML Web services consist of reusable software components designed to be consumed by

other applications, such as traditional client applications, Web-based applications, or even

other XML Web services. As a result, XML Web services technology is rapidly moving

application development and deployment into the highly distributed environment of the

Internet. If you have used earlier versions of ASP technology, you will immediately notice

the improvements that ASP.NET and Web Forms offers. For example, you can develop Web

Forms pages in any language that supports the .NET Framework. In addition, your code no

longer needs to share the same file with your HTTP text (although it can continue to do so if

you prefer). Web Forms pages execute in native machine language because, like any other

managed application, they take full advantage of the runtime. In contrast, unmanaged ASP

pages are always scripted and interpreted. ASP.NET pages are faster, more functional, and

easier to develop than unmanaged ASP pages because they interact with the runtime like any

managed application.

The .NET Framework also provides a collection of classes and tools to aid in

development and consumption of XML Web services applications. XML Web services are

built on standards such as SOAP (a remote procedure-call protocol), XML (an extensible

Page 11: FILE SPLITTER AND JOINER

11

data format), and WSDL ( the Web Services Description Language). The .NET Framework is

built on these standards to promote interoperability with non-Microsoft solutions.

For example, the Web Services Description Language tool included with the .NET

Framework SDK can query an XML Web service published on the Web, parse its WSDL

description, and produce C# or Visual Basic source code that your application can use to

become a client of the XML Web service. The source code can create classes derived from

classes in the class library that handle all the underlying communication using SOAP and

XML parsing. Although you can use the class library to consume XML Web services

directly, the Web Services Description Language tool and the other tools contained in the

SDK facilitate your development efforts with the .NET Framework.

If you develop and publish your own XML Web service, the .NET Framework

provides a set of classes that conform to all the underlying communication standards, such as

SOAP, WSDL, and XML. Using those classes enables you to focus on the logic of your

service, without concerning yourself with the communications infrastructure required by

distributed software development. Finally, like Web Forms pages in the managed

environment, your XML Web service will run with the speed of native machine language

using the scalable communication of IIS.

2.5.2 Active Server Pages.NET

ASP.NET is a programming framework built on the common language runtime that

can be used on a server to build powerful Web applications. ASP.NET offers several

important advantages over previous Web development models:

Enhanced Performance.

ASP.NET is compiled common language runtime code running on the server. Unlike

its interpreted predecessors, ASP.NET can take advantage of early binding, just-in-time

compilation, native optimization, and caching services right out of the box. This amounts to

dramatically better performance before you ever write a line of code.

World-Class Tool Support.

The ASP.NET framework is complemented by a rich toolbox and designer in the

Visual Studio integrated development environment. WYSIWYG editing, drag-and-drop

server controls, and automatic deployment are just a few of the features this powerful tool

provides.

Page 12: FILE SPLITTER AND JOINER

12

Power and Flexibility.

Because ASP.NET is based on the common language runtime, the power and

flexibility of that entire platform is available to Web application developers. The .NET

Framework class library, Messaging, and Data Access solutions are all seamlessly accessible

from the Web. ASP.NET is also language-independent, so you can choose the language that

best applies to your application or partition your application across many languages. Further,

common language runtime interoperability guarantees that your existing investment in COM-

based development is preserved when migrating to ASP.NET.

Simplicity.

ASP.NET makes it easy to perform common tasks, from simple form submission and

client authentication to deployment and site configuration. For example, the ASP.NET page

framework allows you to build user interfaces that cleanly separate application logic from

presentation code and to handle events in a simple, Visual Basic - like forms processing

model. Additionally, the common language runtime simplifies development, with managed

code services such as automatic reference counting and garbage collection.

Manageability.

ASP.NET employs a text-based, hierarchical configuration system, which simplifies

applying settings to your server environment and Web applications. Because configuration

information is stored as plain text, new settings may be applied without the aid of local

administration tools. This "zero local administration" philosophy extends to deploying

ASP.NET Framework applications as well. An ASP.NET Framework application is deployed

to a server simply by copying the necessary files to the server. No server restart is required,

even to deploy or replace running compiled code.

Scalability and Availability.

ASP.NET has been designed with scalability in mind, with features specifically

tailored to improve performance in clustered and multiprocessor environments. Further,

processes are closely monitored and managed by the ASP.NET runtime, so that if one

misbehaves (leaks, deadlocks), a new process can be created in its place, which helps keep

your application constantly available to handle requests.

Page 13: FILE SPLITTER AND JOINER

13

Customizability and Extensibility.

ASP.NET delivers a well-factored architecture that allows developers to "plug-in"

their code at the appropriate level. In fact, it is possible to extend or replace any

subcomponent of the ASP.NET runtime with your own custom-written component.

Implementing custom authentication or state services has never been easier.

Security.

With built in Windows authentication and per-application configuration, you can be

assured that your applications are secure.

Language Support

The Microsoft .NET Platform currently offers built-in support for three languages:

C#, Visual Basic, and JScript.

Page 14: FILE SPLITTER AND JOINER

14

2.5.3 ACTIVE X DATA OBJECTS.NET

ADO.NET ARCHITECHTURE

Fig2.5.3: Ado.net Architecture

DATA STORE

ADO.NET is an extension of the ADO data access model which consist of only the

connected architecture. The Microsoft organization has realized the data related operations

and have studied and analyzed different data related technologies among which they found

ADO to be interesting , later on they extended the features of the ADO and defined own data

related technology by refining the ADO and hence given the name as ADO.Net. The

Microsoft organization, grouped some set of namespaces which can operates on data, and put

together into technology called ADO.NET. The ADO.Net technology enhances the features

DATASET

DATA PROVIDER

CONNECTION

COMMAND

DATA READER

DATA

ADAPTER

ORACLE ACEESS MSSQL

DataTable1

DataRow/DataColumn

D

DATA RELATION

DataTable2

XML

OUTPUT

DATAVIEW

DATAVIEW

Page 15: FILE SPLITTER AND JOINER

15

of the ADO, which consist of only connected architecture where as in ADO.NET they have

introduces a disconnected architecture.

The connected architecture important feature is the data provider, which consists of

the four important objects namely connection, command, data reader and data adapter.

The connection object provides the connection to the data store nothing but to the back end

database servers. The connection class consists of default constructors and parameterized

constructors. The constructor takes arguments, which provides the connection to the back end

servers. The arguments that the connection class constructors takes are Data Source ,

Database and security.

The first parameter Data Source represents the server name to which our application

needs to be connected. That’s means from the available servers we need to select the

particular data base server which can be done through the data source parameter. The second

parameter indicates the database to which we are going to connect, that’s means in that

particular database server, to which data base we want to connect can be done through the

data base parameter. The third parameter security indicates, the security provided for the

database server. If the server is running under windows authentication mode , than will use

integrated security to be true that’s means no need to specify the user name and password

explicitly why because the system will takes the prebuilt username and password which has

been set for the system. On the other hand if the back end server is running under sql

authentication mode that will specify the username and password which has be set during the

installation of the server, using the security parameter we can connect to the backend

database server.

Also sqlconnection class consists of the methods such as open and close. The open

method is used to open the connection to the database server. Whereas the close method is

used to disconnect the connection from the server. Once the connection is opened while in

the application use, the connection should be closed when the application terminates.

Another object of the data provider is the command object, using which one can write the

queries in order to manipulate data in the database. Once the connection is opened, the

sqlcommand class makes use of the connection and will operate on the database. The

sqlcommand class will do manipulation using the queries or the stored procedures. Which

has to be decided by the programmers whether they want to use the queries or the stored

Page 16: FILE SPLITTER AND JOINER

16

procedures using the method command type? If we want to use queries than we need to

select the text query or else we need to select stored procedure option from the command

type method.

Command object consists of three methods namely execute non query, execute reader and

execute scalar. The execute non query will returns the integer values as an output which

indicates how many records have been updated, or modified etc. the second method execute

reader returns the complete records been affected by the operations , whereas execute scalar

returns the first row first column value remaining will be neglected. The third object in the

connected architecture is the data reader, which reads the data in a forward only mode, that’s

means, its retrieves the data from the data base server and forwards it to the application.

The object is the data adapter which acts like an interface or bridge between the

connected architecture and disconnected architecture. In the disconnected architecture the

important feature is the dataset. It’s a collection of data tables and data rows and the data

tables will be linked using the data relations. When the dataset need to be filled, its request to

the data adapter which in turn fills the dataset by making use of fill method of data adapter.

Features of ADO.NET are as follows:

ADO.NET is the next evolution of ADO for the .Net Framework.

ADO.NET was created with n-Tier, statelessness and XML in the forefront. Two new

objects, the Dataset and Data Adapter, are provided for these scenarios.

ADO.NET can be used to get data from a stream, or to store data in a cache for

updates.

There is a lot more information about ADO.NET in the documentation.

Remember, you can execute a command directly against the database in order to do

inserts, updates, and deletes. You don't need to first put data into a Dataset in order to

insert, update, or delete it.

Also, you can use a Dataset to bind to the data, move through the data, and navigate

data relationships

Page 17: FILE SPLITTER AND JOINER

17

2.5.4 Sql server description:

Microsoft SQL Server is a Structured Query Language (SQL) based, client/server

relational database. Each of these terms describes a fundamental part of the architecture of

SQL Server.

Database

A database is similar to a data file in that it is a storage place for data. Like a data file,

a database does not present information directly to a user; the user runs an application that

accesses data from the database and presents it to the user in an understandable format.

A database typically has two components: the files holding the physical database and

the database management system (DBMS) software that applications use to access

data. The DBMS is responsible for enforcing the database structure, including:

Maintaining the relationships between data in the database.

Ensuring that data is stored correctly and that the rules defining data relationships are

not violated.

Recovering all data to a point of known consistency in case of system failures.

Client/Server

In a client/server system, the server is a relatively large computer in a central location that

manages a resource used by many people. When individuals need to use the resource, they

connect over the network from their computers, or clients, to the server. Examples of servers

are: In a client/server database architecture, the database files and DBMS software reside on

a server. A communications component is provided so applications can run on separate

clients and communicate to the database server over a network. The SQL Server

communication component also allows communication between an application running on

the server and SQL Server.

Server applications are usually capable of working with several clients at the same

time. SQL Server can work with thousands of client applications simultaneously. The server

has features to prevent the logical problems that occur if a user tries to read or modify data

currently being used by others. While SQL Server is designed to work as a server in a

client/server network, it is also capable of working as a stand-alone database directly on the

client. The scalability and ease-of-use features of SQL Server allow it to work efficiently on

a client without consuming too many resources.

Page 18: FILE SPLITTER AND JOINER

18

2.5.5 Structured Query Language (SQL)

To work with data in a database, you must use a set of commands and statements

(language) defined by the DBMS software. There are several different languages that can be

used with relational databases; the most common is SQL. Both the American National

Standards Institute (ANSI) and the International Standards Organization (ISO) have defined

standards for SQL. Most modern DBMS products support the Entry Level of SQL-92, the

latest SQL standard (published in 1992).

SQL Server Features

Microsoft SQL Server supports a set of features that result in the following benefits:

Ease of installation, deployment, and use

SQL Server includes a set of administrative and development tools that improve your

ability to install, deploy, manage, and use SQL Server across several sites.

Scalability

The same database engine can be used across platforms ranging from laptop

computers running Microsoft Windows® 95/98 to large, multiprocessor servers running

Microsoft Windows NT®, Enterprise Edition.

Data warehousing

SQL Server includes tools for extracting and analyzing summary data for online

analytical processing (OLAP). SQL Server also includes tools for visually designing

databases and analyzing data using English-based questions.

System integration with other server software

SQL Server integrates with e-mail, the Internet, and Windows.

Databases

A database in Microsoft SQL Server consists of a collection of tables that contain

data, and other objects, such as views, indexes, stored procedures, and triggers, defined to

support activities performed with the data. The data stored in a database is usually related to

a particular subject or process, such as inventory information for a manufacturing warehouse.

SQL Server can support many databases, and each database can store either interrelated

data or data unrelated to that in the other databases. For example, a server can have one

database that stores personnel data and another that stores product-related data. Alternatively,

one database can store current customer order data, and another; related database can store

Page 19: FILE SPLITTER AND JOINER

19

historical customer orders that are used for yearly reporting. Before you create a database, it

is important to understand the parts of a database and how to design these parts to ensure that

the database performs well after it is implemented.

Entity Integrity Constraint:

Entity Integrity Constraints are of two types:

Unique Constraints

Primary Key Constraints

The unique constraints designate a column or a group of columns as a unique key.

The constraint allows only unique values to be stored in the column Sql Server rejects

duplication of records when the unique key constraint is used.

The primary key constraint is similar to the unique key constraint. The primary key

constraint just like the former avoids duplication of values. Its needs it best felt when a

relation has to be set between tables, because in addition to prevent in duplication it also does

not allow null values.

Referential Integrity Constraint:

The Referential Integrity Constraint enforces relationship between tables. It

designates a column or a combination of columns as a foreign key. The foreign key

establishes a relationship with a specified primary or unique key in another table, called the

referenced key. In this relationship, the table containing the foreign key is called a child

table and the table containing the referenced key is called the parent table.

Page 20: FILE SPLITTER AND JOINER

20

3. SOFTWARE PROJECT MANAGEMENT PLAN (SPMP)

3.1 Development Methodologies-Process Model

When we defining and constructing credit card validation systems will uncover many

requirements that may be difficult at outset. Instead knowledge of the system and

requirements will grow as work progress the whole software engineering process is designed

to uncover details and incompatibilities in the requirements that may not be obvious to

customer and bankers at outset.

Several cases or increments of software development additional increases will be

build and delivered in successive increment system normally involves as are deliver

successive new versions, the development of first version from sketch called green field

development is special case of incremental development the development of first increment

is an important activity series we establish the architectural base that must last for the entire

system’s life time.

3.2 Project Development Life Cycle

3.2.1 WATERFALL LIFECYCLE MODEL:

Waterfall model states that the phases (analysis, design, and coding, testing, support)

are systematized in a linear order and each phase should accomplished entirely earlier of the

next phase begins. In this way the step by step phase initially analyzing phase is completed

and that output takes place at the end of analyze phase after that output will be given as input

for the design phase, depending on the inputs it generates all design steps, like ways all

phases processed and produced all successful outputs, And will to find out whether the

project is pursuing on the exact path or not. If not the project may be discard or any other

action takes place to continue. The model is the most commonly used and also known as

linear sequential lifecycle model.

ADVANTAGES:

1. This model is very easy to use and implement.

2. Each phase is completed at a time and processed.

3. This model better works for smaller projects if only the requirements are well

understood.

4. In each phase have deliverables and that must be reviewed.

Page 21: FILE SPLITTER AND JOINER

21

DISADVANTAGES:

1. If the requirements are gathered are inaccurate then the final product is inaccurate and

the error is known in the final phase of the model. Any sort of errors that cannot be

detected in any previous phase.

2. For long, object-oriented, complex and ongoing projects it’s a poor model.

3. This model has high risks.

Fig3.2.1: Waterfall Lifecycle Model

Page 22: FILE SPLITTER AND JOINER

22

4. SYSTEM AND SOFTWARE REQUIREMENT SPECIFICATIONS

4.1 Software interfaces :

Operating Systems: Windows 2003 Server / Windows XP

MS- VS – 2005 or above

C#, .NET 2.0 or above

4.2 Hardware interfaces :

Pentium 4 with 3GHz

RAM: 2 GB

Hard Disk: 20 GB

4.3 Communications interfaces : Not applicable

Page 23: FILE SPLITTER AND JOINER

23

5. SOFTWARE DESIGN DESCRIPTION

5.1 Design Overview

The design phase begins with the requirements specification for the software to be

developed. Design is the first step to moving from the problem domain towards the solution

domain. Design is essentially the bridge between requirement specification and the final

solution for satisfying the requirements. It is the most critical factor affecting the quality of

the software.

The design process for software system has two levels.

System Design or Top level design

Detailed Design or Logical Design

System Design:

In the system design the focus on the deciding which modules are needed for the

system, the specification of these modules and how these modules should be interconnected.

Detailed Design:

In detailed design the interconnection of the modules or how the specifications of the

modules can be satisfied is decided. Some properties for a software system design are

Verifiability

Completeness

Consistency

Traceability

Simplicity / Understandability

Page 24: FILE SPLITTER AND JOINER

24

1) Application Architecture:

Fig 5.1: Application Architecture

The application which we are developing is using One-Tier or single Tier application.

Within the same tier we are going to include the business functionalities as well the data

access functionalities. The frontend which we are going to develop is using the windows

form application. We will develop all the front end windows forms or User interface forms

using Windows application of .NET environment. Once after developing the user interfaces

we need to write the code behind in order to specify the business logic as well the data access

logic. This coding will be done using In our application will use necessary functionalities

such as splitting the original file into segments, joining the file into segments. The C#

language in our application, where will write all the necessary business logic code and in our

application will use necessary functionalities such as splitting the original file into segments,

joining the file into segments. Data access code in order to access the backend database

server. In our application we are not going to use backend end database server that is MS

SQL server 2005. In our application will use necessary functionalities such as splitting the

original file into segments, joining the file into segments. In the above application diagram ,

in the User Interface block will include all the necessary front end screens and in the BAL

block will include all the necessary business logic required for any business functionalities

whereas in the DAL block will include all the necessary data access functionalities , such as

User Interface

BAL

DAL

Database

Page 25: FILE SPLITTER AND JOINER

25

establishing the connection to the data base server, than after connecting successfully will use

the data manipulation commands such as insert , delete, update ,select operations depending

upon the needs of the application. In order to use the ADO.NET objects in our application we

need to include the respective namespace provided by the ADO.NET. That’s in order to

connect to the MS SQL server2005; we need to include the System.sqlclient namespace in

our application. The namespace sqlclient is to connect to the MS SQL server database. If we

want to connect to oracle database server we need to include oracle client namespace, if we

want to connect to ACCESS database server we need to include odbc namespace in our

application. But in our application we are not using backend data base server so need to have

data base connection.

2) Software Architecture:

Fig 5.2: Software Architecture

In this software architecture, the users block consists of end user or users of our

application. Will design all the forms necessary for the our application. So that when user

wants to split and join the file, he can do by using the GUI feature provided by our

application.

Users

Segmentation

File splitter Database

File Joiner

Page 26: FILE SPLITTER AND JOINER

26

In the business logic if we have any validations relating in our application than we

have to verify that all the validations are satisfied thoroughly. Once after all the validations

are evaluated to be true, will move with the data access logic.

In the data access logic, will connect to the necessary database server by including the

required namespace. I.e. System.sqlclient if the database server we are using is MS SQL

SERVER2005.But we don’t have database server, so no need to establish the connection.

5.2 UML Design:

Modeling is an activity that has been carried out over the years in software

development. When writing applications by using the simplest languages to the most

powerful and complex languages, you still need to model. Modeling can be as

straightforward as drawing a flowchart listing the steps carried out by an application.

Why do we use modeling?

Defining a model makes it easier to break up a complex application or a huge system

into simple, discrete pieces that can be individually studied. We can focus more easily on the

smaller parts of a system and then understand the "big picture." Hence, the reasons behind

modeling can be summed up in two words:

Readability

Reusability

Readability

Brings clarity—ease of understanding. Understanding a system is the first step in

either building or enhancing a system. This involves knowing what a system is made up of,

how it behaves, and so forth. Modeling a system ensures that it becomes readable and, most

importantly, easy to document. Depicting a system to make it readable involves capturing the

structure of a system and the behavior of the system.

Reusability

Is the byproduct of making a system readable. After a system has been modeled to

make it easy to understand, we tend to identify similarities or redundancy, be they in terms of

functionality, features, or structure. The Unified Modeling Language, or UML, as it is

popularly known by its TLA (three-letter acronym!), is the language that can be used to

model systems and make them readable. This essentially means that UML provides the

ability to capture the characteristics of a system by using notations. UML provides a wide

Page 27: FILE SPLITTER AND JOINER

27

array of simple, easy to understand notations for documenting systems based on the object-

oriented design principles. These notations are called the nine diagrams of UML.

Different languages have been used for depicting systems using object-oriented

methodology. The prominent among these were the Rumbaing methodology, the Brooch

methodology, and the Jacobson methodology. The problem was that, although each

methodology had its advantages, they were essentially disparate. Hence, if you had to work

on different projects that used any of these methodologies, you had to be well versed with

each of these methodologies. A very tall order indeed! The Unified Modeling Language is

just that. It "unifies" the design principles of each of these methodologies into a single,

standard, language that can be easily applied across the board for all object-oriented systems.

But, unlike the different methodologies that tended more to the design and detailed design of

systems, UML spans the realm of requirements, analysis, and design and, uniquely,

implementation as well. The beauty of UML lies in the fact that any of the nine diagrams of

UML can be used on an incremental basis as the need arises. Considering all these reasons, it

is no wonder that UML is considered "the" language of choice. UML does not have any

dependencies with respect to any technologies or languages. This implies that you can use

UML to model applications and systems based on either of the current hot technologies; for

example, J2EE and .NET. Every effort has been made to keep UML as a clear and concise

modeling language without being tied down to any technologies.

INTRODUCTION TO UML:

The Unified Modeling Language (UML) is a standard language for specifying,

visualizing, constructing, and documenting the artifacts of software systems, as well as for

business modeling and other non-software systems. The UML represents a collection of best

engineering practices that have proven successful in the modeling of large and complex

systems. The UML is a very important part of developing objects oriented software and the

software development process. The UML uses mostly graphical notations to express the

design of software projects. Using the UML helps project teams communicate, explore

potential designs, and validate the architectural design of the software.

Page 28: FILE SPLITTER AND JOINER

28

Goals of UML

The primary goals in the design of the UML were:

Provide users with a ready-to-use, expressive visual modeling language so they

can develop and exchange meaningful models.

Provide extensibility and specialization mechanisms to extend the core concepts.

Be independent of particular programming languages and development processes.

Provide a formal basis for understanding the modeling language.

Encourage the growth of the OO tools market.

Support higher-level development concepts such as collaborations, frameworks,

patterns and components.

Integrate best practices.

Why we use UML?

As the strategic value of software increases for many companies, the industry looks

for techniques to automate the production of software and to improve quality and reduce cost

and time-to-market. These techniques include component technology, visual programming,

patterns and frameworks. Businesses also seek techniques to manage the complexity of

systems as they increase in scope and scale. In particular, they recognize the need to solve

recurring architectural problems, such as physical distribution, concurrency, replication,

security, load balancing and fault tolerance. Additionally, the development for the World

Wide Web, while making some things simpler, has exacerbated these architectural problems.

The Unified Modeling Language (UML) was designed to respond to these needs.

UML Diagrams

The underlying premise of UML is that no one diagram can capture the different

elements of a system in its entirety. Hence, UML is made up of nine diagrams that can be

used to model a system at different points of time in the software life cycle of a system.

Page 29: FILE SPLITTER AND JOINER

29

The nine UML diagrams are:

Use case diagram:

The use case diagram is used to identify the primary elements and processes that form

the system. The primary elements are termed as "actors" and the processes are called "use

cases." The use case diagram shows which actors interact with each use case.

Class diagram:

The class diagram is used to refine the use case diagram and define a detailed design

of the system. The class diagram classifies the actors defined in the use case diagram into a

set of interrelated classes. The relationship or Apart from this, each class may have certain

"attributes" that uniquely identify the class. association between the classes can be either an

"is-a" or "has-a" relationship. Each class in the class diagram may be capable of providing

certain functionalities. These functionalities provided by the class are termed "methods" of

the class. Apart from this, each class may have certain "attributes" that uniquely identify the

class.

Object diagram:

The object diagram is a special kind of class diagram. An object is an instance of a

class. This essentially means that an object represents the state of a class at a given point of

time while the system is running. The object diagram captures the state of different classes in

the system and their relationships or associations at a given point of time.

State diagram:

A state diagram, as the name suggests, represents the different states that objects in

the system undergo during their life cycle. Objects in the system change states in response to

events. In addition to this, a state diagram also captures the transition of the object's state

from an initial state to a final state in response to events affecting the system

Activity diagram:

The process flows in the system are captured in the activity diagram. Similar to a state

diagram, an activity diagram also consists of activities, actions, transitions, initial and final

states, and guard conditions.

Sequence diagram:

A sequence diagram represents the interaction between different objects in the

system. The important aspect of a sequence diagram is that it is time-ordered. This means

Page 30: FILE SPLITTER AND JOINER

30

that the exact sequence of the interactions between the objects is represented step by step.

Different objects in the sequence diagram interact with each other by passing "messages".

Collaboration diagram:

A collaboration diagram groups together the interactions between different objects.

The interactions are listed as numbered interactions that help to trace the sequence of the

interactions. The collaboration diagram helps to identify all the possible interactions that

each object has with other objects.

Component diagram:

The component diagram represents the high-level parts that make up the system. This

diagram depicts, at a high level, what components form part of the system and how they are

interrelated. A component diagram depicts the components culled after the system has

undergone the development or construction phase.

Deployment diagram:

The deployment diagram captures the configuration of the runtime elements of the

application. This diagram is by far most useful when a system is built and ready to be

deployed. Now that we have an idea of the different UML diagrams, let us see if we can

somehow group together these diagrams to enable us to further understand how to use

them.

UML Diagram Classification—Static, Dynamic, and Implementation

A software system can be said to have two distinct characteristics: a structural,

"static" part and a behavioral, "dynamic" part. In addition to these two characteristics, an

additional characteristic that a software system possesses is related to implementation. Before

we categorize UML diagrams into each of these three characteristics, let us take a quick look

at exactly what these characteristics are.

Static:

The static characteristic of a system is essentially the structural aspect of the system.

The static characteristics define what parts the system is made up of.

Dynamic:

The behavioral features of a system; for example, the ways a system behaves in

response to certain events or actions are the dynamic characteristics of a system.

Page 31: FILE SPLITTER AND JOINER

31

Implementation:

The implementation characteristic of a system is an entirely new feature that

describes the different elements required for deploying a system.

The UML diagrams that fall under each of these categories are:

Static

Use case diagram

Class diagram

Dynamic

Object diagram

State diagram

Activity diagram

Sequence diagram

Collaboration diagram

Implementation

Component diagram

Deployment diagram

Finally, let us take a look at the 4+1 view of UML diagrams.

Views of UML Diagrams

Considering that the UML diagrams can be used in different stages in the life cycle of

a system, let us take a look at the "4+1 view" of UML diagrams. The 4+1 view offers a

different perspective to classify and apply UML diagrams. The 4+1 view is essentially how a

system can be Each of these views represents how a system can be modeled. This will enable

us to understand where exactly the UML diagrams fit in and their applicability. viewed from

a software life cycle perspective. Each of these views represents how a system can be

modeled. This will enable us to understand where exactly the UML diagrams fit in and their

applicability.

The different views are:

Design View:

The design view of a system is the structural view of the system. This gives an idea of

what a given system is made up of. Class diagrams and object diagrams form the design view

of the system.

Page 32: FILE SPLITTER AND JOINER

32

Process View:

The dynamic behavior of a system can be seen using the process view. The different

diagrams such as the state diagram, activity diagram, sequence diagram, and collaboration

diagram are used in this view.

Component View:

Component view shows the grouped modules of a given system modeled using the

component diagram.

Deployment View:

The deployment diagram of UML is used to identify the deployment modules for a

given system.

Use case View:

Finally, we have the use case view. Use case diagrams of UML are used to view a

system from this perspective as a set of discrete activities or transactions.

5.2.1 CLASS DIAGRAM:

The Class Diagram Represent the three Classes.

Login

Varchar usernameVarchar password

Login()

Segmentation

Varchar segmentSizevarhcar Filepath

CalculateSegments()

FileSplitter

varchar filesSplitted

Varchar Filepath

SplitFiles()

FileJoiner

Varchar filesjoinedvarchar Filepath

JoinFiles()

Fig 5.2.1: Class Diagram

Page 33: FILE SPLITTER AND JOINER

33

5.2.2 USECASE DIAGRAM:

The Use Case Diagrams Represent the After Login the user was Select segments with

size and type and Split the file. After split the files join the file.

Segmentation

FileSplitter

FileJoiner

Select the size of segments

Select the size typekilobytes or megabytes

Split the filesinto segments

Join the files using

splitted files

User

Login

Fig 5.2.2: Use case Diagram

Page 34: FILE SPLITTER AND JOINER

34

5.2.3 SEQUENCE DIAGRAM:

The Diagram Represents the sequence of actions.

Login Segmentation FileSplitter FileJoiner ApplicationUser

Send usernameand password

Verify Username and password

Validate Username and passwordValid login or Invalid

Request for segmentation

Send size of each segments

Calcute the segmentsResponse for segmentation

of particular file

Request for FileSplitting

Split file based on segmentation

Split the File into SegmentationResponse for splitting

Request for file joining

Use segmentation

Join the segmentsResponse of Joining the segments

Fig 5.2.3: Sequence Diagram

Page 35: FILE SPLITTER AND JOINER

35

5.2.4 Activity Diagram:

The Diagram represents the control flow of the information.

Login

SegmentationFileSplitter FileJoiner

Validate Usernameand Password

Fig 5.2.4: Activity Diagram

Page 36: FILE SPLITTER AND JOINER

36

5.2.5 Data Flow Diagram Design:

Level 0

Level 1

Fig 5.2.5: Data Flow Diagrams

5.3 Database Design:

The data pertaining to proposed system is voluminous that a careful design of the

database must proceed before storing the data in the database. A database management

system provides flexibility in the storage and retrieval of data bad production of information.

The DBMS is a bridge between the application program, which determines what data are

needed and how they are processed, and the operating system of the computer, which is

responsible for placing data on the magnetic storage devices. A schema defines the database

and a subschema defines the portion of the database that a specific program will use.

Data Model:

The organization of the data is represented by a data model and identifies the logical

organization of data. In a model of real world similar things are usually grouped into classes

of object called object types.

A data model is a pattern according to which data are logically organized. It consists

of the named logical units of data and expresses the relationships among the data as

determined by the interpretation of the model of real world.

The relational data model is a formal model for representing relationships among

attributes of an entity set and the association between entity sets. In the relational data model

USER

Segmentation

USER

Segmentation

File Splitter

File Joiner

Page 37: FILE SPLITTER AND JOINER

37

all attribute relationships and all associations are represented as relations. There is no

distinction even at the model level, between the different kinds or relations. Syntactically all

the relations are the same. The data model does not produce the introduction of additional

semantic information to distinguish different relations according to their properties of models

namely:

Network Model

Hierarchical data model

Relational Data model

Relational data Model

The relational data model is a formal model for representing relationships among

attributes of an entity set and the association between entity sets. In the relational data model

all attribute relationships and all associations are represented as relations. There is no

distinction even at the model level, between the different kinds or relations. Syntactically all

the relations are the same. The data model does not produce the introduction of additional

semantic information to distinguish different relations according to their properties.

NORMALIZATION

Normalization theory is built around the concept of normal forms. A relation is said

to be in particular normal form if it satisfies a certain specified set of constraints.

FIRST NORMALFORM:

A relation R is in first normal form if and only if all underlying domains contained

atomic values only.

SECOND NORMALFORM:

A relation R is said to be in second normal form if and only if it is in first normal

form and every non-key attribute is fully dependent on the primary key.

THIRD NORMALFORM:

A relation R is said to be in third normal form if and only if it is in second normal

form and every non key attribute is non transitively depend on the primary key.

Page 38: FILE SPLITTER AND JOINER

38

6. SCREEN SHOTS AND SAMPLE CODING

6.1 Login form

Fig 6.1: Login Form

Page 39: FILE SPLITTER AND JOINER

39

6.2 Main form

Fig 6.2: Main Form

Page 40: FILE SPLITTER AND JOINER

40

6.3Split form

Fig 6.3: Spilt Form

Page 41: FILE SPLITTER AND JOINER

41

6.4Join form

Fig 6.4: Join Form

Page 42: FILE SPLITTER AND JOINER

42

6.5: Login Validate Form

Fig 6.5: Login Validate Form

Page 43: FILE SPLITTER AND JOINER

43

6.6: Main Segments validate Form

Fig 6.6: Main Segments validate Form

Page 44: FILE SPLITTER AND JOINER

44

6.3 SAMPLE CODE

FileSplitter

class FileSplitter2{

private static long m_segmentSize = 600 * 1024 * 1024;

private static int blockSize = 1024;

public int SplitFile(string fileName){

FileStream fsIn = new FileStream(fileName, FileMode.Open, FileAccess.Read);

string basePath = System.IO.Path.GetDirectoryName(fileName);

int fileSize = (int) fsIn.Length;

int segments = (int) (fileSize / m_segmentSize);

int remainder = (int) (fileSize % m_segmentSize);

if (remainder > 0) segments++;

byte[] buffer = new byte[blockSize];

for (int i = 0; i < segments; i++){

FileStrea fsOut = new FileStream(fileName + "." + i, FileMode.Create,FileAccess.Write);

int blocks = (int) (m_segmentSize / blockSize);

if ( remainder > 0 && i < segments - 1){

for ( int j = 0; j < blocks ; j++){

fsIn.Read(buffer, 0, blockSize);

fsOut.Write(buffer, 0, blockSize);

}

}

else{

int finalBlocks = (int) (remainder / blockSize);

int lastBlock = (int) (remainder % blockSize);

for (int k = 0; k < finalBlocks; k++){

fsIn.Read(buffer, 0, blockSize);

fsOut.Write(buffer,0,blockSize);

}

fsIn.Read(buffer, 0, lastBlock);

fsOut.Write(buffer, 0, lastBlock);

Page 45: FILE SPLITTER AND JOINER

45

}

fsOut.Flush();

fsOut.Close();

}

fsIn.Close();

return (int) segments;

}

}

FileJoiner

public class FileJoiner{

private int m_blockSize = 4096; //arbitrary

private bool m_beenCleaned = false;

public event ProgressNotifyHandler ProgressNotify;

static void Main ( string[] args ){

//TestCase2();

TestCase1();

}

public void JoinFile ( string fileName ){

this.JoinFile( fileName, null );

}

public void JoinFile ( string fileName, string outFile ){

string basePath = System.IO.Path.GetDirectoryName( fileName );

string baseFileName = Path.GetFileNameWithoutExtension( fileName );

int baseFileNumber = Utilities.GetFileNumber ( fileName );

if ( baseFileNumber != 0 ) {

throw new ArgumentException ( "Invalid starting file name - must end in '0'", "fileName");

}

ArrayList fileList = new ArrayList(System.IO.Directory.GetFiles( basePath, baseFileName

+ @".*" ));

CleanArrayList(fileList);

Page 46: FILE SPLITTER AND JOINER

46

if ( outFile == null ) outFile = basePath + @"\" + baseFileName;

JoinFile( (string[]) fileList.ToArray( typeof(string) ), outFile );

}

public void JoinFile ( string[] fileList, string outFile ){

fileList = CleanArrayList ( fileList );

FileInfo[] fileInfo = new FileInfo[fileList.Length];

for ( int i = 0; i < fileList.Length; i++ ){

fileInfo[i] = new FileInfo( fileList[i] );

if ( ! fileInfo[i].Exists )

throw new IOException( String.Format("file {0} doesn't exist", fileList[i] ) );

}

//open outfile exclusively

FileStream fsOut = null;

try {

fsOut = File.Open( outFile, FileMode.Create, FileAccess.Write, FileShare.None);

int bytesRead = 0;

byte[] buffer = new byte[m_blockSize];

for ( int i = 0; i < fileList.Length; i++ ){

FileStream fsIn = null;

try {

fsIn = File.Open( fileInfo[i].FullName, FileMode.Open, FileAccess.Read, FileShare.Read);

while ( 0 < (bytesRead = fsIn.Read( buffer, 0, m_blockSize )) ){

fsOut.Write( buffer, 0, bytesRead );

}

OnProgessNotify( Utilities.GetPercentComplete ( i, fileList.Length ));

}

finally {

if ( fsIn != null ) fsIn.Close();

}

}

Page 47: FILE SPLITTER AND JOINER

47

fsOut.Flush();

}

finally {

if ( fsOut != null ) fsOut.Close();

OnProgessNotify( 100 );

}

}

private void CleanArrayList ( ArrayList arrList ){

if ( ! m_beenCleaned ){

for ( int i = 0; i < arrList.Count; i++) {

if ( Utilities.GetFileNumber ( (string) arrList[i] ) == -1 ) {

arrList.Remove( arrList[i] );

}

}

arrList.Sort( new FileListComparer() );

}

m_beenCleaned = true;

}

private string[] CleanArrayList ( string[] fileList ){

ArrayList arrList = new ArrayList( fileList );

CleanArrayList ( arrList );

return (string[]) arrList.ToArray( typeof(string) );

}

protected virtual void OnProgessNotify( int i){

if ( ProgressNotify != null ){

try {

ProgressNotify( i );

}

catch {}//catch & sqaush the exceptions...

}

Page 48: FILE SPLITTER AND JOINER

48

}

#region Tests

static void TestCase1 (){

FileJoiner fj = new FileJoiner();

string[] files = new string[12];

files[0] = @"c:\temp\m.zip.0";

files[1] = @"c:\temp\m.zip.7";

files[2] = @"c:\temp\m.zip.2";

files[3] = @"c:\temp\m.zip.3";

files[4] = @"c:\temp\m.zip.1";

files[5] = @"c:\temp\m.zip.4";

files[6] = @"c:\temp\m.zip.5";

files[7] = @"c:\temp\m.zip.6";

files[8] = @"c:\temp\m.zip.8";

files[9] = @"c:\temp\m.zip.9";

files[10] = @"c:\temp\m.zip.10";

files[11] = @"c:\temp\m.zip.11";

string resultFile = @"c:\temp\out.zip";

fj.JoinFile( files, resultFile );

}

static void TestCase2 (){

FileJoiner fj = new FileJoiner();

fj.JoinFile( @"c:\temp\m.zip.0");

}

#endregion

}

class FileListComparer : IComparer{

#region IComparer Members

public int Compare(object x, object y){

if ( Utilities.GetFileNumber( (string)x) < Utilities.GetFileNumber( (string)y) )

Page 49: FILE SPLITTER AND JOINER

49

return -1;

if ( Utilities.GetFileNumber( (string)x) > Utilities.GetFileNumber( (string)y) )

return 1;

return 0;

}

#endregion

}

Page 50: FILE SPLITTER AND JOINER

50

7. TESTING

7.1 Introduction

Software testing is a critical element of software quality assurance and represents the

ultimate review of specification, design and coding. The increasing visibility of software as a

system element and attendant costs associated with a software failure are motivating factors

for we planned, through testing. Testing is the process of executing a program with the intent

of finding an error. The design of tests for software and other engineered products can be as

challenging as the initial design of the product itself.

There of basically two types of testing approaches.

One is Black-Box testing – the specified function that a product has been

designed to perform, tests can be conducted that demonstrate each function is fully

operated. The other is White-Box testing – knowing the internal workings of the

product ,tests can be conducted to ensure that the internal operation of the product

performs according to specifications and all internal components have been adequately

exercised. White box and Black box testing methods have been used to test this

package. All the loop constructs have been tested for their boundary and intermediate

conditions. The test data was designed with a view to check for all the

conditions and logical decisions. Error handling has been taken care of by the use of

exception handlers.

Strategies:

Testing is a set of activities that can be planned in advanced and conducted

systematically. A strategy for software testing must accommodation low-level tests that are

necessary to verify that a small source code segment has been correctly implemented as well

as high-level tests that validate major system functions against customer requirements.

Software testing is one element of verification and validation. Verification refers to the set

of activities that ensure that software correctly implements as specific function. Validation

refers to a different set of activities that ensure that the software that has been built is

traceable to customer requirements. The objective of software testing to uncover errors. To

fulfill this objective, a series of test steps unit, integration, validation and system tests are

planned and executed. Each test step is accomplished through a series of systematic test

Page 51: FILE SPLITTER AND JOINER

51

technique that assist in the design of test cases. With each testing step, the level of

abstraction with which software is considered is broadened.

7.2 Unit Testing:

Unit testing focuses verification effort on the smallest unit of software design – the

module. The unit test is always white box oriented. The tests that occur as part of unit

testing are testing the module interface, examining the local data structures, testing the

boundary conditions, executing all the independent paths and testing error-handling paths.

7.3 Integration Testing:

Integration testing is a systematic technique for constructing the program structure

while at the same time conducting tests to uncover errors associated with interfacing. Scope

of testing summarizes the specific functional, performance, and internal design

characteristics that are to be tested. It employs top-down testing and bottom-up testing

methods for this case.

7.4 White Box Testing:

The purpose of any security testing method is to ensure the robustness of a system in

the face of malicious attacks or regular software failures. White box testing is performed

based on the knowledge of how the system is implemented. White box testing includes

analyzing data flow, control flow, information flow, coding practices, and exception and

error handling within the system, to test the intended and unintended software behavior.

White box testing can be performed to validate whether code implementation follows

intended design, to validate implemented security functionality, and to uncover exploitable

vulnerabilities. White box testing requires access to the source code. Though white box

testing can be performed any time in the life cycle after the code is developed, it is a good

practice to perform white box testing during the unit testing phase.

White box testing requires knowing what makes software secure or insecure, how to

think like an attacker, and how to use different testing tools and techniques. The first step in

white box testing is to comprehend and analyze source code, so knowing what makes

software secure is a fundamental requirement. Second, to create tests that exploit software, a

tester must think like an attacker. Third, to perform testing effectively, testers need to know

the different tools and techniques available for white box testing. The three requirements do

not work in isolation, but together.

Page 52: FILE SPLITTER AND JOINER

52

7.5 Black Box Testing:

Also known as functional testing. A software testing technique whereby the internal

workings of the item being tested are not known by the tester. For example, in a black box

test on software design the tester only knows the inputs and what the expected outcomes

should be and not how the program arrives at those outputs. The tester does not ever examine

the programming code and does not need any further knowledge of the program other than its

specifications.

The advantages of this type of testing include:

The test is unbiased because the designer and the tester are independent of each other.

The tester does not need knowledge of any specific programming languages.

The test is done from the point of view of the user, not the designer.

Test cases can be designed as soon as the specifications are complete.

7.6 System Testing:

System testing validates software once it has been incorporated into a larger system.

Software is incorporated with other system elements and a series of system integration and

validation tests are conducted. System testing is actually a series of different test whose

primary purpose is to fully exercise the computer- based system. Once the system has been

developed it has to be tested. In the present system we have to take care of valid property

and assessment numbers i.e. there should not exist any duplicate number in each case. Care

should be taken that the appropriate data is retrieved in response to the queries.

VALIDATION:

The terms verification and validations are used interchangeably we will describe both

these methods. Verification is the process of determining whether or not the products of

given phase of software development fulfill the specifications established in the previous

phase. These activities include proving and reviews. Validation is the process of evaluating

the software at the end of software development process, we find how well the software

satisfies the requirement specifications.

The requirement of the software starts with requirement document and requirement

specifications without errors and specifying client’s requirements correctly. The validation

process of evaluating the developed system at the end is to ensure that it must satisfy all the

Page 53: FILE SPLITTER AND JOINER

53

necessary requirement specification. Requirement verification also checks the factors as

completeness, consistency and testability of the requirements.

As we all know that testing plays a crucial role in evaluation of the system. That is in

order to know whether the system working properly or not. In other words we can say that in

order to know whether the system which we have developed will give the expected output or

not can be know by doing the testing. Testing phase comes after coding phase. Usually

organizations or the software developing companies use different types of testing strategies

in order to evaluate the performance of a system. Also it gives the output which provides

clear information regarding the project or system, whether the project which we have

developed will going to give the expected output or not , that is whether the system fails or

succeed in the market.

We have many types of testing such as unit testing, integration testing, system testing,

black box testing, white box testing and regression analysis testing and so on. In our project

Secure Cryptographic messaging we are using unit testing, integration testing, and system

testing. Unit testing is the one in which each entity or objects in the module will be tested.

Once the entity is evaluated to be tested successfully than will move further with the another

kind of testing. That’s is once unit testing is done with all modules, than integration testing

will be done, on the every module or on group of two or three modules. Finally system

testing will be done , in which all the modules of a system will be tested at once , there by

getting the overall performance of a system that means we can conclude the result on the

entire system whether our system is working as per our requirements or as per our

expectations or not. The advantage of developing or testing modules wise is that, we can

reduce the effort, cost and time. Because if we are testing module wise than we can know

clearly which module is working fine and which module is not working, thereby the module

which is not working perfectly can be evaluated once again by going necessary modifications

unlike the system being tested on a whole, where if any errors comes in than the entire

system need to be tested or evaluated which consumes more effort, time and cost.

Page 54: FILE SPLITTER AND JOINER

54

7.7 Test Cases:

Test Case 1:

FUNCTION EXPECTED

RESULTS

ACTUAL

RESULTS

LOW

PRIORITY

HIGH

PRIOTY

Segmentation

Should get the

file size,

depending upon

which will

decide the no of

segments.

Success

--------

yes

Table7.7.1: Test Case1

Test Case 2:

FUNCTION EXPECTED

RESULTS

ACTUAL

RESULTS

LOW

PRIORITY

HIGH

PRIOTY

File Splitter

If we select file

splitter, we need

to split the

original files

based on

segmentation.

Success

---------

Yes

File Joiner

The splitted files

can be re joined

again to obtain

the original file.

The operation

executed success.

Yes

Table7.7.2: Test Case2

Page 55: FILE SPLITTER AND JOINER

55

8. Implementation

8.1 Running Application:

In order to run the web application the steps we need to follow are listed below:

1) Open the visual studio IDE (Integrated Development Environment) that is Visual

Studio2008 or other version.

Fig8.1: Running Application

Page 56: FILE SPLITTER AND JOINER

56

2) Click on file -> open -> browse the folder in which the project is there then select the

Solution file of the project.

Fig 8.2: Open Application Project

Page 57: FILE SPLITTER AND JOINER

57

3) Click on open option. Than in the solution explorer you will find all the forms and classes

that are related to the project.

Fig 8.3: View Project

Page 58: FILE SPLITTER AND JOINER

58

4) Run the application by pressing F5 or debugging button.

Fig 8.4: Running Project

Page 59: FILE SPLITTER AND JOINER

59

CONCLUSION

Using our application, splitting of file will be for all types of files like text, document,

image, audio, video, pdf, etc. The advantage of splitting the file is that, we can upload or

download the splitted file easily, when there is a restriction in size of the file to be uploaded

or downloaded.

Small and lightweight, less than a megabyte in size, works fast.

Splits large files at adjustable sizes, enter value in KB or MB.

Files can also be joined, uses the .001, .002, .003 format.

Can be portable, run it from the USB flash drive and split files.

Page 60: FILE SPLITTER AND JOINER

60

FUTURE ENHANCEMENT

All most process of the proposed system has been completed. Each and Every phase

in this project is developed keeping the goals in mind as per as an concerned. Every project

has its own limitations. Similarly this project also has own limitations and when can be

upgraded.

The future enhancement of our project is we can split very large files which of TB

size. We can also use conversions from one file format to another file format (Ex: Mp3 to

WAV) converter. We can also provide option for splitting multiple documents.

create one shortcut (a class or a shell script or an xml descriptive file) after a

split to allows to do the join in one click and checksum verification, keep name of original

file, etc.

Add a zip command to prepare backup of multiple files or directory.

Add web start links to this page.

Allows saving directly on disks.

Command line execution.

Page 61: FILE SPLITTER AND JOINER

61

REFERENCES

The following books were referred during the analysis and execution phase of the project:

SOFTWARE ENGINEERING

By Roger S. Pressman,

MSDN 2002,

By Microsoft.

Jeff Poise (2002). Programming Microsoft .NET. Microsoft Press.