You are on page 1of 61

ABSTRACT

TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

ABSTRACT

LIST OF TABLES

1 INTRODUCTION

2 SYSTEM STUDY

2.1 EXISTING SYSTEM

2.2 PROPOSED SYSTEM

2.3 FEASABILITY STUDY

2.4 OBJECTIVE

3 SYSTEM SPECIFICATION

3.1 HARDWARE SPECIFICATION

3.2 SOFTWARE SPECIFICATION

4 LANGUAGE DESCRIPTION
5
5 SYSTEM DESIGN AND DEVELOPMENT
5.1 DESCRIPTION

5.2 DATA FLOW DIAGRAM

5.3 PROCESS DIAGRAM

5.4 SCREEN DESIGN

5.5 SAMPLE CODING

5.6 SAMPLE INPUT AND OUTPUT

6 TESTING AND IMPLEMENTATION

6.1 SYSTEM TESTING

6.2 IMPLEMENTATION TESTING

6.3 SYSTEM IMPLEMENTATION

7 FUTURE ENHANCEMENT

8 CONCLUSION
PROJECT TITLE

Fuzzy Keyword Search over Encrypted Data in


Cloud Computing

Abstract—As Cloud Computing becomes prevalent, more and more sensitive


information are being centralized into the cloud. For the protection of data privacy,
sensitive data usually have to be encrypted before outsourcing, which makes
effective data utilization a very challenging task. Although traditional searchable
encryption schemes allow a user to securely search over encrypted data through
keywords and selectively retrieve files of interest, these techniques support only
exact keyword search. That is, there is no tolerance of minor typos and format
inconsistencies which, on the other hand, are typical user searching behavior
and happen very frequently. This significant drawback makes existing techniques
unsuitable in Cloud Computing as it greatly affects system usability, rendering user
searching experiences very frustrating and system efficacy very low. In this paper,
for the first time we formalize and solve the problem of effective fuzzy keyword
search over encrypted cloud data while maintaining keyword privacy. Fuzzy
keyword search greatly enhances system usability by returning the matching files
when users’ searching inputs exactly match the predefined keywords or the closest
possible matching files based on keyword similarity semantics, when exact match
fails. In our solution, we exploit edit distance to quantify keywords similarity and
develop an advanced technique on constructing fuzzy keyword sets, which greatly
reduces the storage and representation overheads. Through rigorous security
analysis, we show that our proposed solution is secure and privacy-preserving,
while correctly realizing the goal of fuzzy keyword search.

Existing System:

As Cloud Computing becomes prevalent, more and more


sensitive information are being centralized into the cloud, such as emails, personal
health records, government documents, etc. By storing their data into the cloud, the
data owners can be relieved from the burden of data storage and maintenance so as
to enjoy the on-demand high quality data storage service. However, the fact that
data owners and cloud server are not in the same trusted domain may put the
outsourced data at risk, as the cloud server may no longer be fully trusted. It
follows that sensitive data usually should be encrypted prior to outsourcing for data
privacy and combating unsolicited accesses. However, data encryption makes
effective data utilization a very challenging task given that there could be a large
amount of outsourced data files. Moreover, in Cloud Computing, data owners may
share their outsourced data with a large number of users. The individual users
might want to only retrieve certain specific data files they are interested in during a
given session. One of the most popular ways is to selectively retrieve files through
keyword-based search instead of retrieving all the encrypted files back which is
completely impractical in cloud computing scenarios. Such keyword-based search
technique allows users to selectively retrieve files of interest and has been widely
applied in plaintext search scenarios, such as Google search [1]. Unfortunately,
data encryption restricts user’s ability to perform keyword search and thus makes
the traditional plaintext search methods unsuitable for Cloud Computing. Besides
this, data encryption also demands the protection of keyword privacy since
keywords usually contain important information related to the data files. Although
encryption of keywords can protect keyword privacy, it further renders the
traditional plaintext search techniques useless in this scenario.

Proposed system:

In this paper, we focus on enabling effective yet privacy-


preserving fuzzy keyword search in Cloud Computing. To the best of our
knowledge, we formalize for the first time the problem of effective fuzzy keyword
search over encrypted cloud data while maintaining keyword privacy. Fuzzy
keyword search greatly enhances system usability by returning the matching files
when users’ searching inputs exactly match

the predefined keywords or the closest possible matching files based on keyword
similarity semantics, when exact match fails. More specifically, we use edit
distance to quantify keywords similarity and develop a novel technique, i.e., an
wildcard-based technique, for the construction of fuzzy keyword sets. This
technique eliminates the need for enumerating all the fuzzy keywords and the
resulted size of the fuzzy keyword sets is significantly reduced. Based on the
constructed fuzzy keyword sets, we propose an efficient fuzzy keyword search
scheme. Through rigorous security analysis, we show that the proposed solution is
secure and privacy-preserving, while correctly realizing the goal of fuzzy keyword
search.
HARDWARE SPECIFICATION:

Processor : Pentium-IV

Speed : 1.1GHz

RAM : 512MB

Hard Disk : 40GB

General : KeyBoard, Monitor , Mouse

SOFTWARE SPECIFICATION:

Operating System : Windows XP

Software : Dot Net C#

Back End : SQL Server

Modules:

1. Cloud Server
2. User
3. Owner

Module Description:

Cloud Server:

In this paper, we consider a cloud data system consisting of data


owner, data user and cloud server. Given a collection of n encrypted data files C =
(F1, F2, . . . , FN) stored in the cloud server, a predefined set of distinct keywords
W = {w1, w2, ...,wp}, the cloud server provides the search service for the
authorized users over the encrypted data C.

User:

An authorized user will be able to retrieve the encrypted data from cloud
server using appropriate keyword or can get the data related to keyword which will
give the matching files.

Owner:

An owner will put encrypted data in the cloud server and user has to
retrieve the data from the cloud server.

2. SYSTEM STUDY

2.3FEASIBILITY STUDY
All projects are feasible given unlimited resources and infinite time. It is
both necessary and prudent to evaluate the feasibility of the project at the earliest
possible time. Feasibility and risk analysis is related in many ways. If project risk
is great , the feasibility listed below is equally important.

The following feasibility techniques has been used in this project


 Operational Feasibility
 Technical Feasibility
 Economic Feasibility

Operational Feasibility:

Proposed system is beneficial since it turned into information system


analyzing

the traffic that will meet the organizations operating requirements.IN


security, the file is transferred to the destination and the acknowledgement is
given to the server. Bulk of data transfer is sent without traffic.

Technical Feasibility:

Technical feasibility centers on the existing computer system (hardware ,


software, etc..) and to what extent it can support the proposed addition. For
example, if the current computer is operating at 80% capacity. This involves,
additional hardware (RAM and PROCESSOR) will increase the speed of the
process. In software, Open Source language that is JAVA and is used. We can also
use in Linux operating system.
The technical requirement for this project are Java tool kit and Swing
component as software and normal hardware configuration is enough , so the
system is more feasible on this criteria.

Economic Feasibility:

Economic feasibility is the most frequently used method for


evaluating the effectiveness of a candidate system. More commonly known as
cost / benefit analysis, the procedure is to determine the benefits and saving that
are expected from a candidate and compare them with the costs. If the benefits
outweigh cost. Then the decision is made to design and implement the system.
Otherwise drop the system.

This system has been implemented such that it can be used to analysis
the traffic. So it does not requires any extra equipment or hardware to implement.
So it is economically feasible to use.

SYSTEM SPECIFICATION:

3.1 HARDWARE SPECIFICATION:

Processor : Pentium-IV

Speed: 1.1GHz
RAM : 512MB

Hard Disk : 40GB

General : Keyboard, Monitor, Mouse

3.2 SOFTWARE SPECIFICATION:

Operating System : Windows XP

Software : VB .NET C#

Back End : SQL Server

LANGUAGE DESCRIPTION:

4. Software Environment - . NET Framework

4.1 Features OF. Net


Microsoft .NET is a set of Microsoft software technologies for rapidly
building and integrating XML Web services, Microsoft Windows-based
applications, and Web solutions. The .NET Framework is a language-neutral
platform for writing programs that can easily and securely interoperate. There’s no
language barrier with .NET: there are numerous languages available to the
developer including Managed C++, C#, Visual Basic and Java Script. The .NET
framework provides the foundation for components to interact seamlessly, whether
locally or remotely on different platforms. It standardizes common data types and
communications protocols so that components created in different languages can
easily interoperate.
“.NET” is also the collective name given to various software
components built upon the .NET platform. These will be both products (Visual
Studio.NET and Windows.NET Server, for instance) and services (like
Passport, .NET My Services, and so on).

THE .NET FRAMEWORK

The .NET Framework has two main parts:

1. The Common Language Runtime (CLR).

2. A hierarchical set of class libraries.

The CLR is described as the “execution engine” of .NET. It provides the


environment within which programs run. The most important features are

 Conversion from a low-level assembler-style language, called


Intermediate Language (IL), into code native to the platform being
executed on.
 Memory management, notably including garbage collection.
 Checking and enforcing security restrictions on the running code.
 Loading and executing programs, with version control and other such
features.
 The following features of the .NET framework are also worth
description:
Managed Code

The code that targets .NET, and which contains certain extra Information -
“metadata” – to describe itself. Whilst both managed and unmanaged code can run
in the runtime, only managed code contains the information that allows the CLR to
guarantee, for instance, safe execution and interoperability.

Managed Data
With Managed Code comes Managed Data. CLR provides memory
allocation and Deal location facilities, and garbage collection. Some .NET
languages use Managed Data by default, such as C#, Visual Basic.NET and
JScript.NET, whereas others, namely C++, do not. Targeting CLR can, depending
on the language you’re using, impose certain constraints on the features available.
As with managed and unmanaged code, one can have both managed and
unmanaged data in .NET applications - data that doesn’t get garbage collected but
instead is looked after by unmanaged code.

Common Type System

The CLR uses something called the Common Type System (CTS) to strictly
enforce type-safety. This ensures that all classes are compatible with each other, by
describing types in a common way. CTS define how types work within the
runtime, which enables types in one language to interoperate with types in another
language, including cross-language exception handling. As well as ensuring that
types are only used in appropriate ways, the runtime also ensures that code doesn’t
attempt to access memory that hasn’t been allocated to it.

Common Language Specification

The CLR provides built-in support for language interoperability. To ensure


that you can develop managed code that can be fully used by developers using any
programming language, a set of language features and rules for using them called
the Common Language Specification (CLS) has been defined. Components that
follow these rules and expose only CLS features are considered CLS-compliant.
THE CLASS LIBRARY

.NET provides a single-rooted hierarchy of classes, containing over 7000


types. The root of the namespace is called System; this contains basic types like
Byte, Double, Boolean, and String, as well as Object. All objects derive from
System. Object. As well as objects, there are value types. Value types can be
allocated on the stack, which can provide useful flexibility. There are also efficient
means of converting value types to object types if and when necessary. The set of
classes is pretty comprehensive, providing collections, file, screen, and network
I/O, threading, and so on, as well as XML and database connectivity.

LANGUAGES SUPPORTED BY .NET

The multi-language capability of the .NET Framework and Visual


Studio .NET enables developers to use their existing programming skills to build
all types of applications and XML Web services. The .NET framework supports
new versions of Microsoft’s old favorites Visual Basic and C++ (as VB.NET and
Managed C++), but there are also a number of new additions to the family.

Visual Basic .NET has been updated to include many new and
improved language features that make it a powerful object-oriented programming
language. These features include inheritance, interfaces, and overloading, among
others. Visual Basic also now supports structured exception handling, custom
attributes and also supports multi-threading.

Visual Basic .NET is also CLS compliant, which means that any CLS-
compliant language can use the classes, objects, and components you create in
Visual Basic .NET.

Managed Extensions for C++ and attributed programming are just


some of the enhancements made to the C++ language. Managed Extensions
simplify the task of migrating existing C++ applications to the new .NET
Framework.
C# is Microsoft’s new language. It’s a C-style language that is
essentially “C++ for Rapid Application Development”. Unlike other languages, its
specification is just the grammar of the language. It has no standard library of its
own, and instead has been designed with the intention of using the .NET libraries
as its own.

Microsoft Visual J# .NET provides the easiest transition for Java-


language developers into the world of XML Web Services and dramatically
improves the interoperability of Java-language programs with existing software
written in a variety of other programming languages.

Other languages for which .NET compilers are available include

 FORTRAN
 COBOL
 Eiffel

Fig1 .Net Framework

ASP.NET Windows Forms

XML WEB
SERVICES
Base Class Libraries
Common Language Runtime
Operating System

C#.NET is also compliant with CLS (Common Language Specification) and


supports structured exception handling. CLS is set of rules and constructs that
are supported by the CLR (Common Language Runtime). CLR is the runtime
environment provided by the .NET Framework; it manages the execution of the
code and also makes the development process easier by providing services.
C#.NET is a CLS-compliant language. Any objects, classes, or components that
created in C#.NET can be used in any other CLS-compliant language. In
addition, we can use objects, classes, and components created in other CLS-
compliant languages in C#.NET .The use of CLS ensures complete
interoperability among applications, regardless of the languages used to create
the application.

CONSTRUCTORS AND DESTRUCTORS:


Constructors are used to initialize objects, whereas destructors are used to
destroy them. In other words, destructors are used to release the resources
allocated to the object. In C#.NET the sub finalize procedure is available. The
sub finalize procedure is used to complete the tasks that must be performed
when an object is destroyed. The sub finalize procedure is called automatically
when an object is destroyed. In addition, the sub finalize procedure can be
called only from the class it belongs to or from derived classes.
GARBAGE COLLECTION
Garbage Collection is another new feature in C#.NET. The .NET Framework
monitors allocated resources, such as objects and variables. In addition, the
.NET Framework automatically releases memory for reuse by destroying
objects that are no longer in use.
In C#.NET, the garbage collector checks for the objects that are not currently in
use by applications. When the garbage collector comes across an object that is
marked for garbage collection, it releases the memory occupied by the object.
OVERLOADING
Overloading is another feature in C#. Overloading enables us to define
multiple procedures with the same name, where each procedure has a different
set of arguments. Besides using overloading for procedures, we can use it for
constructors and properties in a class.
MULTITHREADING:
C#.NET also supports multithreading. An application that supports
multithreading can handle multiple tasks simultaneously, we can use
multithreading to decrease the time taken by an application to respond to user
interaction.
STRUCTURED EXCEPTION HANDLING
C#.NET supports structured handling, which enables us to detect and
remove errors at runtime. In C#.NET, we need to use Try…Catch…Finally
statements to create exception handlers. Using Try…Catch…Finally statements,
we can create robust and effective exception handlers to improve the
performance of our application.
THE .NET FRAMEWORK
The .NET Framework is a new computing platform that simplifies
application development in the highly distributed environment of the Internet.
OBJECTIVES OF. NET FRAMEWORK
1. To provide a consistent object-oriented programming environment whether
object codes is stored and executed locally on Internet-distributed, or executed
remotely.
2. To provide a code-execution environment to minimizes software deployment
and guarantees safe execution of code.
3. Eliminates the performance problems.
There are different types of application, such as Windows-based applications
and Web-based applications.

The Microsoft .NET Framework is a software framework that can be


installed on computers running Microsoft Windows operating systems. It includes
a large library of coded solutions to common programming problems and a virtual
machine that manages the execution of programs written specifically for the
framework. The .NET Framework is a Microsoft offering and is intended to be
used by most new applications created for the Windows platform.
The framework's Base Class Library provides a large range of features including
user interface, data access, database connectivity, cryptography, web application
development, numeric algorithms, and network communications. The class library
is used by programmers, who combine it with their own code to produce
applications.

Programs written for the .NET Framework execute in a software environment that
manages the program's runtime requirements. Also part of the .NET Framework,
this runtime environment is known as the Common Language Runtime (CLR). The
CLR provides the appearance of an application virtual machine so that
programmers need not consider the capabilities of the specific CPU that will
execute the program. The CLR also provides other important services such as
security, memory management, and exception handling. The class library and the
CLR together constitute the .NET Framework.

Version 3.0 of the .NET Framework is included with Windows Server 2008 and
Windows Vista. The current stable version of the framework, which is 3.5, is
included with Windows 7, and can also be installed on Windows XP and the
Windows Server 2003 family of operating systems.[2] Version 4 of the framework
was released as a public beta on 20 May 2009.[3] The .NET version 4 is now
released for the public.

The .NET Framework family also includes two versions for mobile or embedded
device use. A smaller version of the framework, the .NET Compact Framework, is
available on Windows CE platforms, including Windows Mobile devices such as
smart phones. Additionally, the .NET Micro Framework is targeted at severely
resource constrained devices.

Principal design features

Interoperability 

Because interaction between new and older applications is commonly


required, the .NET Framework provides means to access functionality that is
implemented in programs that execute outside the .NET environment.
Access to COM components is provided in the
System.Runtime.InteropServices and System.EnterpriseServices namespaces
of the framework; access to other functionality is provided using the
P/Invoke feature.

Common Runtime Engine 

The Common Language Runtime (CLR) is the virtual machine component


of the .NET framework. All .NET programs execute under the supervision
of the CLR, guaranteeing certain properties and behaviors in the areas of
memory management, security, and exception handling.

Language Independence 

The .NET Framework introduces a Common Type System, or CTS. The


CTS specification defines all possible datatypes and programming constructs
supported by the CLR and how they may or may not interact with each other
conforming to the Common Language Infrastructure (CLI) specification.
Because of this feature, the .NET Framework supports the exchange of types
and object instances between libraries and applications written using any
conforming .NET language.

Base Class Library 

The Base Class Library (BCL), part of the Framework Class Library (FCL),
is a library of functionality available to all languages using the .NET
Framework. The BCL provides classes which encapsulate a number of
common functions, including file reading and writing, graphic rendering,
database interaction and XML document manipulation.

Simplified Deployment 

The .NET framework includes design features and tools that help manage
the installation of computer software to ensure that it does not interfere with
previously installed software, and that it conforms to security requirements.

Security 

The design is meant to address some of the vulnerabilities, such as buffer


overflows, that have been exploited by malicious software. Additionally,
.NET provides a common security model for all applications.

Portability 

The design of the .NET Framework allows it to theoretically be platform


agnostic, and thus cross-platform compatible, however in practice, some
classes within the Base Class Library (for example, those within the
Windows.Forms namespace) are Windows-specific. Although Microsoft's
implementation of the CLR and base class libraries are designed to run only
under Microsoft Windows, a cross-platform implementation is available by
way of the Mono Project, which can be run on both Windows/PC and
Unix/Linux. Microsoft submits the specifications for the Common Language
Infrastructure (which includes the core class libraries, Common Type
System, and the Common Intermediate Language),[4][5][6] the C# language,[7]
and the C++/CLI language[8] to both ECMA and the ISO, suggesting they are
available as open standards.

Architecture

Visual overview of the Common Language Infrastructure (CLI)

I. Common Language Infrastructure (CLI)


Main article: Common Language Infrastructure

The purpose of the Common Language Infrastructure, or CLI, is to provide a


language-neutral platform for application development and execution, including
functions for exception handling, garbage collection, security and interoperability.
By implementing the core aspects of the .NET Framework within the scope of the
CLR, this functionality will not be tied to a single language but will be available
across the many languages supported by the framework. Microsoft's
implementation of the CLI is called the Common Language Runtime or CLR.

II. Assemblies
Main article: .NET assembly
The CIL code is housed in .NET assemblies. As mandated by specification,
assemblies are stored in the Portable Executable (PE) format, common on the
Windows platform for all DLL and EXE files. The assembly consists of one or
more files, one of which must contain the manifest, which has the metadata for the
assembly. The complete name of an assembly (not to be confused with the
filename on disk) contains its simple text name, version number, culture, and
public key token. The public key token is a unique hash generated when the
assembly is compiled, thus two assemblies with the same public key token are
guaranteed to be identical from the point of view of the framework. A private key
can also be specified known only to the creator of the assembly and can be used for
strong naming and to guarantee that the assembly is from the same author when a
new version of the assembly is compiled (required to add an assembly to the
Global Assembly Cache).

III. Metadata
Main article: .NET metadata

All CIL is self-describing through .NET metadata. The CLR checks the metadata
to ensure that the correct method is called. Metadata is usually generated by
language compilers but developers can create their own metadata through custom
attributes. Metadata contains information about the assembly, and is also used to
implement the reflective programming capabilities of .NET Framework.

IV. Security

.NET has its own security mechanism with two general features: Code Access
Security (CAS), and validation and verification. Code Access Security is based on
evidence that is associated with a specific assembly. Typically the evidence is the
source of the assembly (whether it is installed on the local machine or has been
downloaded from the intranet or Internet). Code Access Security uses evidence to
determine the permissions granted to the code. Other code can demand that calling
code is granted a specified permission. The demand causes the CLR to perform a
call stack walk: every assembly of each method in the call stack is checked for the
required permission; if any assembly is not granted the permission a security
exception is thrown.
When an assembly is loaded the CLR performs various tests. Two such tests are
validation and verification. During validation the CLR checks that the assembly
contains valid metadata and CIL, and whether the internal tables are correct.
Verification is not so exact. The verification mechanism checks to see if the code
does anything that is 'unsafe'. The algorithm used is quite conservative; hence
occasionally code that is 'safe' does not pass. Unsafe code will only be executed if
the assembly has the 'skip verification' permission, which generally means code
that is installed on the local machine.

.NET Framework uses AppDomains as a mechanism for isolating code running in


a process. AppDomains can be created and code loaded into or unloaded from
them independent of other AppDomains. This helps increase the fault tolerance of
the application, as faults or crashes in one AppDomains do not affect rest of the
application. AppDomains can also be configured independently with different
security privileges. This can help increase the security of the application by
isolating potentially unsafe code. The developer, however, has to split the
application into sub domains; it is not done by the CLR.

V. Class library:

The .NET Framework includes a set of standard class


libraries. The class library is organized in a hierarchy of namespaces. Most of the
built in APIs are part of either System.* or Microsoft.* namespaces. These class
libraries implement a large number of common functions, such as file reading and
writing, graphic rendering, database interaction, and XML document manipulation,
among others. The .NET class libraries are available to all CLI compliant
languages. The .NET Framework class library is divided into two parts: the Base
Class Library and the Framework Class Library.

The Base Class Library (BCL) includes a small subset of the entire class library
and is the core set of classes that serve as the basic API of the Common Language
Runtime.[9] The classes in mscorlib.dll and some of the classes in System.dll and
System.core.dll are considered to be a part of the BCL. The BCL classes are
available in both .NET Framework as well as its alternative implementations
including .NET Compact Framework, Microsoft Silverlight and Mono.
The Framework Class Library (FCL) is a superset of the BCL classes and refers to
the entire class library that ships with .NET Framework. It includes an expanded
set of libraries, including Win Forms, ADO.NET, ASP.NET, Language Integrated
Query, Windows Presentation Foundation, Windows Communication Foundation
among others. The FCL is much larger in scope than standard libraries for
languages like C++, and comparable in scope to the standard libraries of Java.

Memory management

The .NET Framework CLR frees the developer from the burden of managing
memory (allocating and freeing up when done); instead it does the memory
management itself. To this end, the memory allocated to instantiations of .NET
types (objects) is done contiguously[10] from the managed heap, a pool of memory
managed by the CLR. As long as there exists a reference to an object, which might
be either a direct reference to an object or via a graph of objects, the object is
considered to be in use by the CLR. When there is no reference to an object, and it
cannot be reached or used, it becomes garbage. However, it still holds on to the
memory allocated to it. .NET Framework includes a garbage collector which runs
periodically, on a separate thread from the application's thread, that enumerates all
the unusable objects and reclaims the memory allocated to them.

The .NET Garbage Collector (GC) is a non-deterministic, compacting, mark-and-


sweep garbage collector. The GC runs only when a certain amount of memory has
been used or there is enough pressure for memory on the system. Since it is not
guaranteed when the conditions to reclaim memory are reached, the GC runs are
non-deterministic. Each .NET application has a set of roots, which are pointers to
objects on the managed heap (managed objects). These include references to static
objects and objects defined as local variables or method parameters currently in
scope, as well as objects referred to by CPU registers.[10] When the GC runs, it
pauses the application, and for each object referred to in the root, it recursively
enumerates all the objects reachable from the root objects and marks them as
reachable. It uses .NET metadata and reflection to discover the objects
encapsulated by an object, and then recursively walk them. It then enumerates all
the objects on the heap (which were initially allocated contiguously) using
reflection. All objects not marked as reachable are garbage.[10] This is the mark
phase.[11] Since the memory held by garbage is not of any consequence, it is
considered free space. However, this leaves chunks of free space between objects
which were initially contiguous. The objects are then compacted together, by using
memcpy[11] to copy them over to the free space to make them contiguous again.[10]
Any reference to an object invalidated by moving the object is updated to reflect
the new location by the GC.[11] The application is resumed after the garbage
collection is over.

The GC used by .NET Framework is actually generational.[12] Objects are assigned


a generation; newly created objects belong to Generation 0. The objects that
survive a garbage collection are tagged as Generation 1, and the Generation 1
objects that survive another collection are Generation 2 objects. The .NET
Framework uses up to Generation 2 objects.[12] Higher generation objects are
garbage collected less frequently than lower generation objects. This helps increase
the efficiency of garbage collection, as older objects tend to have a larger lifetime
than newer objects.[12] Thus, by removing older (and thus more likely to survive a
collection) objects from the scope of a collection run, fewer objects need to be
checked and compacted.[12]

Versions

Microsoft started development on the .NET Framework in the late 1990s originally
under the name of Next Generation Windows Services (NGWS). By late 2000 the
first beta versions of .NET 1.0 were released.[16]
The .NET Framework stack.

Version Version Release Visual Studio Default in Windows


Number Date
Visual Studio
1.0 1.0.3705.0 2002-02-13
.NET
Visual Studio
1.1 1.1.4322.573 2003-04-24 Windows Server 2003
.NET 2003
Visual Studio
2.0 2.0.50727.42 2005-11-07
2005
Windows Vista, Windows
3.0 3.0.4506.30 2006-11-06
Server 2008
Visual Studio Windows 7, Windows
3.5 3.5.21022.8 2007-11-19
2008 Server 2008 R2
Visual Studio
4 RC 2010-02-10
2010
A more complete listing of the releases of the .NET Framework may be found on
the .NET Framework version list.
VI. .NET Framework 1.0:

The old .NET Framework logo

This is the first release of the .NET Framework, released on 13 February 2002 and
available for Windows 98, Me, NT 4.0, 2000, and XP. Mainstream support by
Microsoft for this version ended 10 July 2007, and extended support ended 14 July
2009.[17]

VII. .NET Framework 1.1:

This is the first major .NET Framework upgrade. It is available on its own as a
redistributable package or in a software development kit, and was published on 3
April 2003. It is also part of the second release of Microsoft Visual Studio .NET
(released as Visual Studio .NET 2003). This is the first version of the .NET
Framework to be included as part of the Windows operating system, shipping with
Windows Server 2003. Mainstream support for .NET Framework 1.1 ended on 14
October 2008, and extended support ends on 8 October 2013. Since .NET 1.1 is a
component of Windows Server 2003, extended support for .NET 1.1 on Server
2003 will run out with that of the OS - currently 14 July 2015.

Changes in 1.1 on comparison with 1.0:

 Built-in support for mobile ASP.NET controls. Previously available as an


add-on for .NET Framework, now part of the framework.
 Security changes - enable Windows Forms assemblies to execute in a semi-
trusted manner from the Internet, and enable Code Access Security in
ASP.NET applications.
 Built-in support for ODBC and Oracle databases. Previously available as an
add-on for .NET Framework 1.0, now part of the framework.
 .NET Compact Framework - a version of the .NET Framework for small
devices.
 Internet Protocol version 6 (IPv6) support.
 Numerous API changes.

VIII. .NET Framework 2.0:

Released with Visual Studio 2005, Microsoft SQL Server 2005, and BizTalk 2006.

 The 2.0 Redistributable Package can be downloaded for free from Microsoft,
and was published on 22 January 2006.
 The 2.0 Software Development Kit (SDK) can be downloaded for free from
Microsoft.
 It is included as part of Visual Studio 2005 and Microsoft SQL Server 2005.
 Version 2.0 without any Service Pack is the last version with support for
Windows 98 and Windows Me. Version 2.0 with Service Pack 2 is the last
version with official support for Windows 2000 although there have been
some unofficial workarounds published online to use a subset of the
functionality from Version 3.5 in Windows 2000.[18] Version 2.0 with
Service Pack 2 requires Windows 2000 with SP4 plus KB835732 or
KB891861 update, Windows XP with SP2 or later and Windows Installer
3.1 (KB893803-v2) although you can just copy the directories "Microsoft.
NET" and "assembly" (located in %SYSTEMROOT%) from the computer
where the .NET Framework is installed, also mscoree.dll, msvc*80.dll,
gdiplus.dll in "%SYSTEMROOT%\System32" and add value to the registry
"HKLM\SOFTWARE\Microsoft\.NET Framework", parameter
"InstallRoot" with value "C:\\WINDOWS\\Microsoft.NET\\Framework\\".
 It shipped with Windows Server 2003 R2 (not installed by default).

Changes in 2.0 in comparison with 1.1:

 Numerous API changes.


 A new hosting API for native applications wishing to host an instance of
the .NET runtime. The new API gives a fine grain control on the behavior of
the runtime with regards to multithreading, memory allocation, assembly
loading and more (detailed reference). It was initially developed to
efficiently host the runtime in Microsoft SQL Server, which implements its
own scheduler and memory manager.
 Full 64-bit support for both the x64 and the IA64 hardware platforms.
 Language support for generics built directly into the .NET CLR.
 Many additional and improved ASP.NET web controls.
 New data controls with declarative data binding.
 New personalization features for ASP.NET, such as support for themes,
skins and webparts.
 .NET Micro Framework - a version of the .NET Framework related to the
Smart Personal Objects Technology initiative.
 Partial classes
 Anonymous method
 Data Tables
 Generics

.NET Framework 3.0:

.NET Framework 3.0, formerly called WinFX,[19] was


released on 21 November 2006. It includes a new set of managed code APIs that
are an integral part of Windows Vista and Windows Server 2008 operating
systems. It is also available for Windows XP SP2 and Windows Server 2003 as a
download. There are no major architectural changes included with this release;
.NET Framework 3.0 uses the Common Language Runtime of .NET Framework
2.0.[20] Unlike the previous major .NET releases there was no .NET Compact
Framework release made as a counterpart of this version.

.NET Framework 3.0 consists of four major new components:

 Windows Presentation Foundation (WPF), formerly code-named Avalon; a


new user interface subsystem and API based on XML and vector graphics,
which uses 3D computer graphics hardware and Direct3D technologies. See
WPF SDK for developer articles and documentation on WPF.
 Windows Communication Foundation (WCF), formerly code-named
Indigo; a service-oriented messaging system which allows programs to
interoperate locally or remotely similar to web services.
 Windows Workflow Foundation (WF) allows for building of task
automation and integrated transactions using workflows.
 Windows CardSpace, formerly code-named InfoCard; a software
component which securely stores a person's digital identities and provides a
unified interface for choosing the identity for a particular transaction, such
as logging in to a website.

IX. . NET Framework 3.5:

Version 3.5 of the .NET Framework was released on 19 November 2007, but it is
not included with Windows Server 2008. As with .NET Framework 3.0, version
3.5 uses the CLR of version 2.0. Which means it's not a complete new framework,
but just an extension of 2.0, and it can't run without it. In addition, it installs .NET
Framework 2.0 SP1, (installs .NET Framework 2.0 SP2 with 3.5 SP1) and
.NET Framework 3.0 SP1 (installs .NET Framework 3.0 SP2 with 3.5 SP1),
which adds some methods and properties to the BCL classes in version 2.0 which
are required for version 3.5 features such as Language Integrated Query (LINQ).
These changes do not affect applications written for version 2.0, however.[21]

As with previous versions, a new .NET Compact Framework 3.5 was released in
tandem with this update in order to provide support for additional features on
Windows Mobile and Windows Embedded CE devices.

The source code of the Base Class Library in this version has been partially
released (for debugging reference only) under the Microsoft Reference Source
License.[1]

Changes since version 3.0:

 New language features in C# 3.0 and VB.NET 9.0 compiler


 Adds support for expression trees and lambda methods
 Extension methods
 Expression trees to represent high-level source code at runtime.[22]
 Anonymous types with static type inference
 Language Integrated Query (LINQ) along with its various providers
o LINQ to Objects
o LINQ to XML
o LINQ to SQL
 Paging support for ADO.NET
 ADO.NET synchronization API to synchronize local caches and server side
datastores
 Asynchronous network I/O API[22] .
 Peer-to-peer networking stack, including a managed PNRP resolver[23]
 Managed wrappers for Windows Management Instrumentation and Active
Directory APIs[24]
 Enhanced WCF and WF runtimes, which let WCF work with POX and
JSON data, and also expose WF workflows as WCF services.[25] WCF
services can be made stateful using the WF persistence model.[22]
 Support for HTTP pipelining and syndication feeds.[25]
 ASP.NET AJAX is included.

Service Pack 1 :

The .NET Framework 3.5 Service Pack 1 was released on 11 August 2008. This
release adds new functionality and provides performance improvements under
certain conditions,[26] especially with WPF where 20-45% improvements are
expected. Two new data service components have been added, the ADO.NET
Entity Framework and ADO.NET Data Services. Two new assemblies for web
development, System.Web.Abstraction and System.Web.Routing, have been
added; these are used in the ASP.NET MVC Framework and, reportedly, will be
utilized in the future release of ASP.NET Forms applications. Service Pack 1 is
included with SQL Server 2008 and Visual Studio 2008 Service Pack 1.It also
featured a new set of controls called "Visual Basic Power Packs" which brought
back Visual Basic controls such as "Line" and "Shape".
.NET Framework 3.5 SP1 Client Profile:

For the .NET Framework 3.5 SP1 there is also a new variant of the .NET
Framework, called the ".NET Framework Client Profile", which at 28 MB is
significantly smaller than the full framework and only installs components that are
the most relevant to desktop applications.[27] However, the Client Profile amounts
to this size only if using the online installer on Windows XP SP2 when no other
.NET Frameworks are installed. When using the off-line installer or any other OS,
the download size is still 250 MB.[28]

.NET Framework 4:

Microsoft announced the .NET Framework 4 on 29 September 2008. The Public


Beta was released on 20 May 2009.[3] Some focuses of this release are:

 Parallel Extensions to improve support for parallel computing, which target


multi-core or distributed systems.[29] To this end, they plan to include
technologies like PLINQ (Parallel LINQ),[30] a parallel implementation of the
LINQ engine, and Task Parallel Library, which exposes parallel constructs
via method calls.[31]
 New Visual Basic and C# language features, such as statement lambdas,
implicit line continuations, dynamic dispatch, named parameters, and
optional parameters.
 Full support for IronPython, IronRuby, and F#.[32]
 Support for a subset of the .NET Framework and ASP.NET with the "Server
Core" variant of Windows Server 2008 R2.[33]
 Support for Code Contracts.
 Inclusion of the Oslo modelling platform, along with the M programming
language.[34]
 Inclusion of new types to work with arbitrary-precision arithmetic
(System.Numerics.BigInteger) and complex numbers
(System.Numerics.Complex).

On 28 July 2009, a second release of the .NET Framework 4 beta was made
available with experimental software transactional memory support.[35] Whether
this functionality will be available in the final version of the framework has not
been confirmed.

On 19 October 2009, Microsoft released Beta 2 of the .NET Framework 4.[36] At


the same time, Microsoft announced the expected launch date for .NET Framework
4 as the 22 March 2010.[36] This launch date has subsequently been delayed to
April 12, 2010.[37]

On 10 February 2010 a release candidate was published: Version:RC

In conjunction with .NET Framework 4, Microsoft will offer a set of


enhancements, codenamed Dublin, for Windows Server 2008 application server
capabilities.[38][39] Dublin will extend IIS to be a "standard host" for applications
that use either WCF or WF.[39]

.NET vs. Java and Java EE:


See also: Comparison of the Java and .NET platforms and Comparison of C# and
Java

The CLI and .NET languages such as C# and VB have many similarities to Sun's
JVM and Java. Both are based on a virtual machine model that hides the details of
the computer hardware on which their programs run. Both use their own
intermediate byte-code, Microsoft calling theirs Common Intermediate Language
(CIL; formerly MSIL) and Sun calling theirs Java bytecode. On .NET the byte-
code is always compiled before execution, either Just In Time (JIT) or in advance
of execution using the Native Image Generator utility (NGEN). With Java the byte-
code is either interpreted, compiled in advance, or compiled JIT. Both provide
extensive class libraries that address many common programming requirements
and address many security issues that are present in other approaches. The
namespaces provided in the .NET Framework closely resemble the platform
packages in the Java EE API Specification in style and invocation.

.NET in its complete form (i.e., Microsoft's implementation, described in the


Standardization and licensing section of this article) can only be installed on
computers running a Microsoft Windows operating system[40][41][42] whereas Java in
its entirety can be installed on computers running any one of a variety of operating
systems such as GNU/Linux, Solaris, Mac OS or Windows.[43] From its
beginning .NET has supported multiple programming languages and at its core
remains platform agnostic and standardized so that other vendors can implement it
on other platforms (although Microsoft's implementation only targets Windows,
Windows CE, and Xbox platforms). The Java Virtual Machine was also designed
to be both language and operating system agnostic[44] and was launched with the
slogan "Write once, run anywhere." While Java has long remained the most used
language on the JVM by a wide margin, recent support for dynamic languages has
increased popularity of alternatives; in particular JRuby, Scala, and Groovy.[45] (see
JVM languages).

Sun's reference implementation of Java (including the class library, the compiler,
the virtual machine, and the various tools associated with the Java Platform) is
open source under the GNU GPL license with Classpath exception.[46] The source
code for the .NET framework base class library is available for reference purposes
only under the Microsoft Reference License.[47][48]

The third-party Mono Project, sponsored by Novell, has been developing an open
source implementation of the ECMA standards that are part of .NET Framework,
as well as most of the other non-ECMA standardized libraries in Microsoft's .NET.
The Mono implementation is meant to run on GNU/Linux, Solaris, Mac OS X,
BSD, HP-UX, and Windows platforms. Mono includes the CLR, the class
libraries, and compilers for C# and VB.NET. The current version supports all the
APIs in version 2.0 of Microsoft's .NET. Full support exists for C# 3.0 LINQ to
Objects and LINQ to XML.[49]

Criticism

Some concerns and criticism relating to .NET include:

 Applications running in a managed environment tend to require more system


resources than similar applications that access machine resources more
directly.
 All "managed" languages are easier to reverse-engineer than native code.
There is concern over possible loss of trade secrets and the bypassing of
license control mechanisms. Microsoft's Visual Studio 2005 (and newer)
includes a tool to obfuscate code, and many other techniques can help to
prevent this.
 Newer versions of the framework (3.5 and up) are not pre-installed in
versions of Windows below Windows 7. For this reason, applications must
lead users without the framework through a procedure to install it. Some
developers have expressed concerns about the large size of .NET framework
runtime installers for end-users. The size is around 54 MB for .NET 3.0, 197
MB for .NET 3.5, and 250 MB for .NET 3.5 SP1 (while using web installer
the typical download for Windows XP is around 50 MB, for Windows Vista
- 20 MB). The size issue is partially solved with .NET 4 installer (x86 +
x64) being 54 MB.
o The first service pack for version 3.5 mitigates this concern by
offering a lighter-weight client-only subset of the full .NET
Framework. Two significant limitations should be noted, though.[50]
Firstly, the client-only subset is only an option on an existing
Windows XP SP2 system that currently has no other version of the
.NET framework installed. In all other scenarios, the client-only
installer will install the full version of the .NET Framework 3.5 SP1.
Secondly, the client-only framework does not have a 64-bit option.
However, the 4 release of the .NET Framework Client Profile will be
available on all operating systems and all architectures (excluding
ia64) supported by the full .NET Framework.[51]
 The .NET framework currently does not provide support for calling
Streaming SIMD Extensions (SSE) via managed code. However, Mono has
provided support for SIMD Extensions as of version 2.2 within the
Mono.Simd namespace; Mono's lead developer Miguel de Icaza has
expressed hope that this SIMD support will be adopted by the CLR ECMA
standard.[52] Streaming SIMD Extensions have been available in CPUs since
the introduction of the Pentium III. However, adding CPU specific
implementations would reduce the portability of .Net, one of its design
goals.
Alternative implementations

The Microsoft .NET Framework is the predominant implementation of .NET


technologies. Other implementations for parts of the framework exist. Although
the runtime engine is described by an ECMA/ISO specification, other
implementations of it may be encumbered by patent issues; ISO standards may
include the disclaimer, "Attention is drawn to the possibility that some of the
elements of this document may be the subject of patent rights. ISO shall not be
held responsible for identifying any or all such patent rights."[53] It is more difficult
to develop alternatives to the base class library (BCL), which is not described by
an open standard and may be subject to copyright restrictions. Additionally, parts
of the BCL have Windows-specific functionality and behavior, so implementation
on non-Windows platforms can be problematic.

Some alternative implementations of parts of the framework are listed here.

 Microsoft's Shared Source Common Language Infrastructure is a shared


source implementation of the CLR component of the .NET Framework.
However, the last version only runs on Microsoft Windows XP SP2, and
does not contain all features of version 2.0 of the .NET Framework.
 Microsoft's .NET Micro Framework is a .NET platform for extremely
resource-constrained devices. It includes a small version of the .NET CLR
and supports development in C# and debugging (in an emulator or on
hardware), both using Microsoft Visual Studio. It also features a subset of
the .NET base class libraries (about 70 classes with about 420 methods), a
GUI framework loosely based on Windows Presentation Foundation, and
additional libraries specific to embedded applications.
 Mono is an implementation of the CLI and portions of the .NET Base Class
Library (BCL), and provides additional functionality. It is dual-licensed
under free software and proprietary software licenses. Mono is being
developed by Novell, Inc. It includes support for ASP.NET, ADO.NET, and
evolving support for Windows Forms libraries. It also includes a C#
compiler, and a VB.NET compiler is in pre-beta form.
 CrossNet is an implementation of the CLI and portions of the .NET Base
Class Library (BCL). It is free software. It parses .NET assemblies and
generates standard C++ code, compilable and linkable within any ANSI C++
application on any platform.
 .NET for Symbian .NET Compact Framework implementation for Symbian
(S60)
 Portable.NET (part of DotGNU) provides an implementation of the
Common Language Infrastructure (CLI), portions of the .NET Base Class
Library (BCL), and a C# compiler. It supports a variety of CPUs and
operating systems.

Microsoft SQL Server


Features of SQL-SERVER:

The OLAP Services feature available in SQL Server version 7.0 is


now called SQL Server 2000 Analysis Services. The term OLAP Services has been
replaced with the term Analysis Services. Analysis Services also includes a new
data mining component. The Repository component available in SQL Server
version 7.0 is now called Microsoft SQL Server 2000 Meta Data Services.
References to the component now use the term Meta Data Services. The term
repository is used only in reference to the repository engine within Meta Data
Services

SQL-SERVER database consist of six type of objects, they are,

1. TABLE

2. QUERY

3. FORM

4. REPORT

5. MACRO
TABLE:

A database is a collection of data about a specific topic.

VIEWS OF TABLE:

We can work with a table in two types,

1. Design View

2. Datasheet View

Design View

To build or modify the structure of a table we work in the table


design view. We can specify what kind of data will be hold.

Datasheet View

To add, edit or analyses the data itself we work in tables


datasheet view mode.

QUERY:

A query is a question that has to be asked the data. Access gathers data that
answers the question from one or more table. The data that make up the answer is
either dynaset (if you edit it) or a snapshot (it cannot be edited).Each time we run
query, we get latest information in the dynaset. Access either displays the dynaset
or snapshot for us to view or perform an action on it, such as deleting or updating.
X. Genesis

The code base for MS SQL Server (prior to version 7.0) originated in Sybase SQL
Server, and was Microsoft's entry to the enterprise-level database market,
competing against Oracle, IBM, and, later, Sybase. Microsoft, Sybase and Ashton-
Tate originally teamed up to create and market the first version named SQL Server
1.0 for OS/2 (about 1989) which was essentially the same as Sybase SQL Server
3.0 on Unix, VMS, etc. Microsoft SQL Server 4.2 was shipped around 1992
(available bundled with Microsoft OS/2 version 1.3). Later Microsoft SQL Server
4.21 for Windows NT was released at the same time as Windows NT 3.1.
Microsoft SQL Server v6.0 was the first version designed for NT, and did not
include any direction from Sybase.

About the time Windows NT was released, Sybase and Microsoft parted ways and
each pursued their own design and marketing schemes. Microsoft negotiated
exclusive rights to all versions of SQL Server written for Microsoft operating
systems. Later, Sybase changed the name of its product to Adaptive Server
Enterprise to avoid confusion with Microsoft SQL Server. Until 1994, Microsoft's
SQL Server carried three Sybase copyright notices as an indication of its origin.

Since parting ways, several revisions have been done independently. SQL Server
7.0 was a rewrite from the legacy Sybase code. It was succeeded by SQL Server
2000, which was the first edition to be launched in a variant for the IA-64
architecture.

In the eight years since release of Microsoft's previous SQL Server product (SQL
Server 2000), advancements have been made in performance, the client IDE tools,
and several complementary systems that are packaged with SQL Server 2005.
These include: an ETL tool (SQL Server Integration Services or SSIS), a Reporting
Server, an OLAP and data mining server (Analysis Services), and several
messaging technologies, specifically Service Broker and Notification Services.

SQL Server 2005:


SQL Server 2005 (codenamed Yukon), released in October 2005, is the successor
to SQL Server 2000. It included native support for managing XML data, in
addition to relational data. For this purpose, it defined an xml data type that could
be used either as a data type in database columns or as literals in queries. XML
columns can be associated with XSD schemas; XML data being stored is verified
against the schema. XML is converted to an internal binary data type before being
stored in the database. Specialized indexing methods were made available for
XML data. XML data is queried using XQuery;CLR Integration was the main
features with this edition where one could write SQL code as Managed Code these
are those code which are being executed by CLR(Common Language Runtime).
SQL Server 2005 added some extensions to the T-SQL language to allow
embedding XQuery queries in T-SQL. In addition, it also defines a new extension
to XQuery, called XML DML, that allows query-based modifications to XML
data. SQL Server 2005 also allows a database server to be exposed over web
services using TDS packets encapsulated within SOAP (protocol) requests. When
the data is accessed over web services, results are returned as XML.[1]

For relational data, T-SQL has been augmented with error handling features
(try/catch) and support for recursive queries (Common Table Expressions). SQL
Server 2005 has also been enhanced with new indexing algorithms and better error
recovery systems. Data pages are checksummed for better error resiliency, and
optimistic concurrency support has been added for better performance. Permissions
and access control have been made more granular and the query processor handles
concurrent execution of queries in a more efficient way. Partitions on tables and
indexes are supported natively, so scaling out a database onto a cluster is easier.
SQL CLR was introduced with SQL Server 2005 to let it integrate with the .NET
Framework.[2]

SQL Server 2005 introduced "MARS" (Multiple Active Results Sets), a method of
allowing usage of database connections for multiple purposes.[3]

XI. SQL Server 2008:

The current version of SQL Server, SQL Server 2008,[4][5] was released (RTM) on
August 6, 2008[6] and aims to make data management self-tuning, self organizing,
and self maintaining with the development of SQL Server Always On technologies,
to provide near-zero downtime. SQL Server 2008 also includes support for
structured and semi-structured data, including digital media formats for pictures,
audio, video and other multimedia data. In current versions, such multimedia data
can be stored as BLOBs (binary large objects), but they are generic bitstreams.
Intrinsic awareness of multimedia data will allow specialized functions to be
performed on them. According to Paul Flessner, senior Vice President, Server
Applications, Microsoft Corp., SQL Server 2008 can be a data storage backend for
different varieties of data: XML, email, time/calendar, file, document, spatial, etc
as well as perform search, query, analysis, sharing, and synchronization across all
data types.[5]

Other new data types include specialized date and time types and a Spatial data
type for location-dependent data.[7] Better support for unstructured and semi-
structured data is provided using the new FILE STREAM[8] data type, which can be
used to reference any file stored on the file system.[9] Structured data and metadata
about the file is stored in SQL Server database, whereas the unstructured
component is stored in the file system. Such files can be accessed both via Win32
file handling APIs as well as via SQL Server using T-SQL; doing the latter
accesses the file data as a BLOB. Backing up and restoring the database backs up
or restores the referenced files as well.[10] SQL Server 2008 also natively supports
hierarchical data, and includes T-SQL constructs to directly deal with them,
without using recursive queries.[10]

The Full-Text Search functionality has been integrated with the database engine,
which simplifies management and improves performance.[11]

Spatial data will be stored in two types. A "Flat Earth" (GEOMETRY or planar)
data type represents geospatial data which has been projected from its native,
spherical, coordinate system into a plane. A "Round Earth" data type
(GEOGRAPHY) uses an ellipsoidal model in which the Earth is defined as a single
continuous entity which does not suffer from the singularities such as the
international dateline, poles, or map projection zone "edges". Approximately 70
methods are available to represent spatial operations for the Open Geospatial
Consortium Simple Features for SQL, Version 1.1[12].
SQL Server includes better compression features, which also helps in improving
scalability. It also includes Resource Governor that allows reserving resources for
certain users or workflows. It also includes capabilities for transparent encryption
of data as well as compression of backups.[8] SQL Server 2008 supports the
ADO.NET Entity Framework and the reporting tools, replication, and data
definition will be built around the Entity Data Model.[13] SQL Server Reporting
Services will gain charting capabilities from the integration of the data
visualization products from Dundas Data Visualization Inc., which was acquired
by Microsoft.[14] On the management side, SQL Server 2008 includes the
Declarative Management Framework which allows configuring policies and
constraints, on the entire database or certain tables, declaratively.[7] The version of
SQL Server Management Studio included with SQL Server 2008 supports
IntelliSense for SQL queries against a SQL Server 2008 Database Engine[15]. SQL
Server 2008 also makes the databases available via Windows PowerShell providers
and management functionality available as Cmdlets, so that the server and all the
running instances can be managed from Windows PowerShell.[16]

XII. SQL Server 2008 R2:

SQL Server 2008 R2 (formerly codenamed SQL Server "Kilimanjaro") was


announced at TechEd 2009. SQL Server 2008 R2 adds certain features to SQL
Server 2008 including master data management system branded as Master Data
Services, a centralized console to manage multiple SQL Server instances, and
support for more than 64 logical processors.[17]

Editions:

Microsoft makes SQL Server available in multiple editions, with different feature
sets and targeting different users. These editions are:[18][19]

SQL Server Compact Edition (SQL CE)

The compact edition is an embedded database engine. Unlike the other


editions of SQL Server, the SQL CE engine is based on SQL Mobile
(initially designed for use with hand-held devices) and does not share the
same binaries. Due to its small size (1MB DLL footprint), it has a markedly
reduced feature set compared to the other editions. For example, it supports
a subset of the standard data types, does not support stored procedures or
Views or multiple-statement batches (among other limitations). It is limited
to 4GB maximum database size and cannot be run as a Windows service,
Compact Edition must be hosted by the application using it. The 3.5 version
includes considerable work that supports ADO.NET Synchronization
Services.

SQL Server Developer Edition

SQL Server Developer Edition includes the same features as SQL Server
Enterprise Edition, but is limited by the license to be only used as a
development and test system, and not as production server. This edition is
available to download by students free of charge as a part of Microsoft's
DreamSpark program.

SQL Server 2005 Embedded Edition (SSEE)

SQL Server 2005 Embedded Edition is a specially configured named


instance of the SQL Server Express database engine which can be accessed
only by certain Windows Services.

SQL Server Enterprise Edition

SQL Server Enterprise Edition is the full-featured edition of SQL Server,


including both the core database engine and add-on services, while including
a range of tools for creating and managing a SQL Server cluster.

SQL Server Evaluation Edition


SQL Server Evaluation Edition, also known as the Trial Edition, has all the
features of the Enterprise Edition, but is limited to 180 days, after which the
tools will continue to run, but the server services will stop.[20]

SQL Server Express Edition

SQL Server Express Edition is a scaled down, free edition of SQL Server,
which includes the core database engine. While there are no limitations on
the number of databases or users supported, it is limited to using one
processor, 1 GB memory and 4 GB database files. The entire database is
stored in a single .mdf file, and thus making it suitable for XCOPY
deployment. It is intended as a replacement for MSDE. Two additional
editions provide a superset of features not in the original Express Edition.
The first is SQL Server Express with Tools, which includes SQL Server
Management Studio Basic. SQL Server Express with Advanced Services
adds full-text search capability and reporting services.[21]

SQL Server Fast Track

SQL Server Fast Track is specifically for enterprise-scale data warehousing


storage and business intelligence processing, and runs on reference-
architecture hardware that is optimized for Fast Track.[22]

SQL Server Standard Edition

SQL Server Standard edition includes the core database engine, along with
the stand-alone services. It differs from Enterprise edition in that it supports
fewer active instances (number of nodes in a cluster) and does not include
some high-availability functions such as hot-add memory (allowing memory
to be added while the server is still running), and parallel indexes.
SQL Server Web Edition

SQL Server Web Edition is a low-TCO option for Web hosting.

SQL Server Workgroup Edition

SQL Server Workgroup Edition includes the core database functionality but
does not include the additional services.

Architecture:
Protocol layer:

Protocol layer implements the external interface to SQL Server. All operations that
can be invoked on SQL Server are communicated to it via a Microsoft-defined
format, called Tabular Data Stream (TDS). TDS is an application layer protocol,
used to transfer data between a database server and a client. Initially designed and
developed by Sybase Inc. for their Sybase SQL Server relational database engine
in 1984, and later by Microsoft in Microsoft SQL Server, TDS packets can be
encased in other physical transport dependent protocols, including TCP/IP, Named
pipes, and Shared memory. Consequently, access to SQL Server is available over
these protocols. In addition, the SQL Server API is also exposed over web
services.[19]

Data storage:

The main unit of data storage is a database, which is a collection of tables


with typed columns. SQL Server supports different data types, including primary
types such as Integer, Float, Decimal, Char (including character strings), Varchar
(variable length character strings), binary (for unstructured blobs of data), Text (for
textual data) among others. The rounding of floats to integers uses either
Symmetric Arithmetic Rounding or Symmetric Round Down (Fix) depending on
arguments: SELECT Round(2.5, 0) gives 3.

Microsoft SQL Server also allows user-defined composite types (UDTs) to


be defined and used. It also makes server statistics available as virtual tables and
views (called Dynamic Management Views or DMVs). In addition to tables, a
database can also contain other objects including views, stored procedures, indexes
and constraints, along with a transaction log. A SQL Server database can contain a
maximum of 231 objects, and can span multiple OS-level files with a maximum file
size of 220 TB.[19] The data in the database are stored in primary data files with an
extension .mdf. Secondary data files, identified with an .ndf extension, are used to
store optional metadata. Log files are identified with the .ldf extension.[19]

Storage space allocated to a database is divided into sequentially numbered


pages, each 8 KB in size. A page is the basic unit of I/O for SQL Server
operations. A page is marked with a 96-byte header which stores metadata about
the page including the page number, page type, free space on the page and the ID
of the object that owns it. Page type defines the data contained in the page - data
stored in the database, index, allocation map which holds information about how
pages are allocated to tables and indexes, change map which holds information
about the changes made to other pages since last backup or logging, or contain
large data types such as image or text. While page is the basic unit of an I/O
operation, space is actually managed in terms of an extent which consists of 8
pages. A database object can either span all 8 pages in an extent ("uniform extent")
or share an extent with up to 7 more objects ("mixed extent"). A row in a database
table cannot span more than one page, so is limited to 8 KB in size. However, if
the data exceeds 8 KB and the row contains Varchar or Varbinary data, the data in
those columns are moved to a new page (or possibly a sequence of pages, called an
Allocation unit) and replaced with a pointer to the data.[23]

For physical storage of a table, its rows are divided into a series of partitions
(numbered 1 to n). The partition size is user defined; by default all rows are in a
single partition. A table is split into multiple partitions in order to spread a database
over a cluster. Rows in each partition are stored in either B-tree or heap structure.
If the table has an associated index to allow fast retrieval of rows, the rows are
stored in-order according to their index values, with a B-tree providing the index.
The data is in the leaf node of the leaves, and other nodes storing the index values
for the leaf data reachable from the respective nodes. If the index is non-clustered,
the rows are not sorted according to the index keys. An indexed view has the same
storage structure as an indexed table. A table without an index is stored in an
unordered heap structure. Both heaps and B-trees can span multiple allocation
units.[24]

XIII. Buffer management:

SQL Server buffers pages in RAM to minimize disc I/O. Any 8 KB page can
be buffered in-memory, and the set of all pages currently buffered is called the
buffer cache. The amount of memory available to SQL Server decides how many
pages will be cached in memory. The buffer cache is managed by the Buffer
Manager. Either reading from or writing to any page copies it to the buffer cache.
Subsequent reads or writes are redirected to the in-memory copy, rather than the
on-disc version. The page is updated on the disc by the Buffer Manager only if the
in-memory cache has not been referenced for some time. While writing pages back
to disc, asynchronous I/O is used whereby the I/O operation is done in a
background thread so that other operations do not have to wait for the I/O
operation to complete. Each page is written along with its checksum when it is
written. When reading the page back, its checksum is computed again and matched
with the stored version to ensure the page has not been damaged or tampered with
in the meantime.[25]

Logging and Transaction:

SQL Server ensures that any change to the data is ACID-compliant, i.e., it
uses transactions to ensure that any operation either totally completes or is undone
if fails, but never leaves the database in an intermediate state. Using transactions, a
sequence of actions can be grouped together, with the guarantee that either all
actions will succeed or none will. SQL Server implements transactions using a
write-ahead log. Any changes made to any page will update the in-memory cache
of the page, simultaneously all the operations performed will be written to a log,
along with the transaction ID which the operation was a part of. Each log entry is
identified by an increasing Log Sequence Number (LSN) which ensure that no
event overwrites another. SQL Server ensures that the log will be written onto the
disc before the actual page is written back. This enables SQL Server to ensure
integrity of the data, even if the system fails. If both the log and the page were
written before the failure, the entire data is on persistent storage and integrity is
ensured. If only the log was written (the page was either not written or not written
completely), then the actions can be read from the log and repeated to restore
integrity. If the log wasn't written then integrity is also maintained although the
database state remains unchanged as if the transaction never occurred. If it was
only partially written, then the actions associated with the unfinished transaction
are discarded. Since the log was only partially written, the page is guaranteed to
have not been written, again ensuring data integrity. Removing the unfinished log
entries effectively undoes the transaction. SQL Server ensures consistency between
the log and the data every time an instance is restarted.[19]

Concurrency and locking:

SQL Server allows multiple clients to use the same database concurrently.
As such, it needs to control concurrent access to shared data, to ensure data
integrity - when multiple clients update the same data, or clients attempt to read
data that is in the process of being changed by another client. SQL Server provides
two modes of concurrency control: pessimistic concurrency and optimistic
concurrency. When pessimistic concurrency control is being used, SQL Server
controls concurrent access by using locks. Locks can be either shared or exclusive.
Exclusive lock grants the user exclusive access to the data - no other user can
access the data as long as the lock is held. Shared locks are used when some data is
being read - multiple users can read from data locked with a shared lock, but not
acquire an exclusive lock. The latter would have to wait for all shared locks to be
released. Locks can be applied on different levels of granularity - on entire tables,
pages, or even on a per-row basis on tables. For indexes, it can either be on the
entire index or on index leaves. The level of granularity to be used is defined on a
per-database basis by the database administrator. While a fine grained locking
system allows more users to use the table or index simultaneously, it requires more
resources. So it does not automatically turn into higher performing solution. SQL
Server also includes two more lightweight mutual exclusion solutions - latches and
spinlocks - which are less robust than locks but are less resource intensive. SQL
Server uses them for DMVs and other resources that are usually not busy. SQL
Server also monitors all worker threads that acquire locks to ensure that they do
not end up in deadlocks - in case they do, SQL Server takes remedial measures,
which in many cases is to kill one of the threads entangled in a deadlock and
rollback the transaction it started.[19] To implement locking, SQL Server contains
the Lock Manager. The Lock Manager maintains an in-memory table that manages
the database objects and locks, if any, on them along with other metadata about the
lock. Access to any shared object is mediated by the lock manager, which either
grants access to the resource or blocks it.

SQL Server also provides the optimistic concurrency control mechanism,


which is similar to the multiversion concurrency control used in other databases.
The mechanism allows a new version of a row to be created whenever the row is
updated, as opposed to overwriting the row, i.e., a row is additionally identified by
the ID of the transaction that created the version of the row. Both the old as well as
the new versions of the row are stored and maintained, though the old versions are
moved out of the database into a system database identified as Tempdb. When a
row is in the process of being updated, any other requests are not blocked (unlike
locking) but are executed on the older version of the row. If the other request is an
update statement, it will result in two different versions of the rows - both of them
will be stored by the database, identified by their respective transaction IDs.[19]

Data retrieval:

The main mode of retrieving data from an SQL Server database is querying
for it. The query is expressed using a variant of SQL called T-SQL, a dialect
Microsoft SQL Server shares with Sybase SQL Server due to its legacy. The query
declaratively specifies what is to be retrieved. It is processed by the query
processor, which figures out the sequence of steps that will be necessary to retrieve
the requested data. The sequence of actions necessary to execute a query is called a
query plan. There might be multiple ways to process the same query. For example,
for a query that contains a join statement and a select statement, executing join on
both the tables and then executing select on the results would give the same result
as selecting from each table and then executing the join, but result in different
execution plans. In such case, SQL Server chooses the plan that is supposed to
yield the results in the shortest possible time. This is called query optimization and
is performed by the query processor itself.[19]

SQL Server includes a cost-based query optimizer which tries to optimize on


the cost, in terms of the resources it will take to execute the query. Given a query,
the query optimizer looks at the database schema, the database statistics and the
system load at that time. It then decides which sequence to access the tables
referred in the query, which sequence to execute the operations and what access
method to be used to access the tables. For example, if the table has an associated
index, whether the index should be used or not - if the index is on a column which
is not unique for most of the columns (low "selectivity"), it might not be
worthwhile to use the index to access the data. Finally, it decides whether to
execute the query concurrently or not. While a concurrent execution is more costly
in terms of total processor time, because the execution is actually split to different
processors might mean it will execute faster. Once a query plan is generated for a
query, it is temporarily cached. For further invocations of the same query, the
cached plan is used. Unused plans are discarded after some time.[19][26]

SQL Server also allows stored procedures to be defined. Stored procedures


are parameterized T-SQL queries, that are stored in the server itself (and not issued
by the client application as is the case with general queries). Stored procedures can
accept values sent by the client as input parameters, and send back results as output
parameters. They can call defined functions, and other stored procedures, including
the same stored procedure (up to a set number of times). They can be selectively
provided access to. Unlike other queries, stored procedures have an associated
name, which is used at runtime to resolve into the actual queries. Also because the
code need not be sent from the client every time (as it can be accessed by name), it
reduces network traffic and somewhat improves performance.[27] Execution plans
for stored procedures are also cached as necessary.

XIV. SQL CLR:

Microsoft SQL Server 2005 includes a component named SQL CLR


("Common Language Runtime") via which it integrates with .NET Framework.
Unlike most other applications that use .NET Framework, SQL Server itself hosts
the .NET Framework runtime, i.e., memory, threading and resource management
requirements of .NET Framework are satisfied by SQLOS itself, rather than the
underlying Windows operating system. SQLOS provides deadlock detection and
resolution services for .NET code as well. With SQL CLR, stored procedures and
triggers can be written in any managed .NET language, including C# and VB.NET.
Managed code can also be used to define UDT's (user defined types), which can
persist in the database. Managed code is compiled to .NET assemblies and after
being verified for type safety, registered at the database. After that, they can be
invoked like any other procedure.[28] However, only a subset of the Base Class
Library is available, when running code under SQL CLR. Most APIs relating to
user interface functionality are not available.[28]

When writing code for SQL CLR, data stored in SQL Server databases can
be accessed using the ADO.NET APIs like any other managed application that
accesses SQL Server data. However, doing that creates a new database session,
different from the one in which the code is executing. To avoid this, SQL Server
provides some enhancements to the ADO.NET provider that allows the connection
to be redirected to the same session which already hosts the running code. Such
connections are called context connections and are set by setting context
connection parameter to true in the connection string. SQL Server also provides
several other enhancements to the ADO.NET API, including classes to work with
tabular data or a single row of data as well as classes to work with internal
metadata about the data stored in the database. It also provides access to the XML
features in SQL Server, including XQuery support. These enhancements are also
available in T-SQL Procedures in consequence of the introduction of the new
XML Datatype (query,value,nodes functions).[29]

Services:

SQL Server also includes an assortment of add-on services. While these are
not essential for the operation of the database system, they provide value added
services on top of the core database management system. These services either run
as a part of some SQL Server component or out-of-process as Windows Service
and presents their own API to control and interact with them.
XV. Service Broker:

The Service Broker, which runs as a part of the database engine, provides a
reliable messaging and message queuing platform for SQL Server applications.
Used inside an instance, it is used to provide an asynchronous programming
environment. For cross instance applications, Service Broker communicates over
TCP/IP and allows the different components to be synchronized together, via
exchange of messages.[30]

XVI. Replication Services:

SQL Server Replication Services are used by SQL Server to replicate and
synchronize database objects, either in entirety or a subset of the objects present,
across replication agents, which might be other database servers across the
network, or database caches on the client side. Replication follows a
publisher/subscriber model, i.e., the changes are sent out by one database server
("publisher") and are received by others ("subscribers"). SQL Server supports three
different types of replication:[31]

Transaction replication

Each transaction made to the publisher database (master database) is synced


out to subscribers, who update their databases with the transaction.
Transactional replication synchronizes databases in near real time.[32]

Merge replication

Changes made at both the publisher and subscriber databases are tracked,
and periodically the changes are synchronized bi-directionally between the
publisher and the subscribers. If the same data has been modified differently
in both the publisher and the subscriber databases, synchronization will
result in a conflict which has to be resolved - either manually or by using
pre-defined policies. rowguid needs to be configured on a column if merge
replication is configured.[33]

Snapshot replication

Snapshot replication published a copy of the entire database (the then-


snapshot of the data) and replicates out to the subscribers. Further changes to
the snapshot are not tracked.[34]

Analysis Services

SQL Server Analysis Services adds OLAP and data mining capabilities for
SQL Server databases. The OLAP engine supports MOLAP, ROLAP and HOLAP
storage modes for data. Analysis Services supports the XML for Analysis standard
as the underlying communication protocol. The cube data can be accessed using
MDX queries.[35] Data mining specific functionality is exposed via the DMX query
language. Analysis Services includes various algorithms - Decision trees,
clustering algorithm, Naive Bayes algorithm, time series analysis, sequence
clustering algorithm, linear and logistic regression analysis, and neural networks -
for use in data mining.

Reporting Services:

SQL Server Reporting Services is a report generation


environment for data gathered from SQL Server databases. It is administered via a
web interface. Reporting services features a web services interface to support the
development of custom reporting applications. Reports are created as RDL files.[37]
Reports can be designed using recent versions of Microsoft Visual Studio
(including Visual Studio.NET 2003 onwards) with Business Intelligence
Development Studio, installed or with the included Report Builder. Once created,
RDL files can be rendered in a variety of formats[38] including Excel, PDF, CSV,
XML, TIFF (and other image formats)[39], and HTML Web Archive.
Notification Services:

Originally introduced as a post-release add-on for SQL Server


[40]
2000 , Notification Services was bundled as part of the Microsoft SQL Server
platform for the first and only time with SQL Server 2005.[41][42] with Sql Server
2005, SQL Server Notification Services is a mechanism for generating data-driven
notifications, which are sent to Notification Services subscribers. A subscriber
registers for a specific event or transaction (which is registered on the database
server as a trigger); when the event occurs, Notification Services can use one of
three methods to send a message to the subscriber informing about the occurrence
of the event. These methods include SMTP, SOAP, or by writing to a file in the
file system.[43]. Notification Services was discontinued by Microsoft with the
release of SQL Server 2008 in August 2008, and is no longer an officially
supported component of the SQL Server database platform.

Integration Services:

SQL Server Integration Services is used to integrate data from


different data sources. It is used for the ETL capabilities for SQL Server for data
warehousing needs. Integration Services includes GUI tools to build data
extraction workflows integration various functionality such as extracting data from
various sources, querying data, transforming data including aggregating,
duplication and merging data, and then loading the transformed data onto other
sources, or sending e-mails detailing the status of the operation as defined by the
user.[44]

Full Text Search Service:


The SQL Server Full Text Search service architecture

SQL Server Full Text Search service is a specialized indexing and querying
service for unstructured text stored in SQL Server databases. The full text search
index can be created on any column with character based text data. It allows for
words to be searched for in the text columns. While it can be performed with the
SQL LIKE operator, using SQL Server Full Text Search service can be more
efficient. Full Text Search (FTS) allows for inexact matching of the source string,
indicated by a Rank value which can range from 0 to 1000 - a higher rank means a
more accurate match. It also allows linguistic matching ("inflectional search"), i.e.,
linguistic variants of a word (such as a verb in a different tense) will also be a
match for a given word (but with a lower rank than an exact match). Proximity
searches are also supported, i.e., if the words searched for do not occur in the
sequence they are specified in the query but are near each other, they are also
considered a match. T-SQL exposes special operators that can be used to access
the FTS capabilities.[45][46]

The Full Text Search engine is divided into two processes - the Filter
Daemon process (msftefd.exe) and the Search process (msftesql.exe). These
processes interact with the SQL Server. The Search process includes the indexer
(that creates the full text indexes) and the full text query processor. The indexer
scans through text columns in the database. It can also index through binary
columns, and use iFilters to extract meaningful text from the binary blob (for
example, when a Microsoft Word document is stored as an unstructured binary file
in a database). The iFilters are hosted by the Filter Daemon process. Once the text
is extracted, the Filter Daemon process breaks it up into a sequence of words and
hands it over to the indexer. The indexer filters out noise words, i.e., words like A,
And etc, which occur frequently and are not useful for search. With the remaining
words, an inverted index is created, associating each word with the columns they
were found in. SQL Server itself includes a Gatherer component that monitors
changes to tables and invokes the indexer in case of updates.[47]

When a full text query is received by the SQL Server query processor, it is
handed over to the FTS query processor in the Search process. The FTS query
processor breaks up the query into the constituent words, filters out the noise
words, and uses an inbuilt thesaurus to find out the linguistic variants for each
word. The words are then queried against the inverted index and a rank of their
accurateness is computed. The results are returned to the client via the SQL Server
process.[47]

TOOLS
XVII. SQLCMD:

SQLCMD is a command line application that comes with Microsoft SQL


Server, and exposes the management features of SQL Server. It allows SQL
queries to be written and executed from the command prompt. It can also act as a
scripting language to create and run a set of SQL statements as a script. Such
scripts are stored as a .sql file, and are used either for management of databases or
to create the database schema during the deployment of a database.

SQLCMD was introduced with SQL Server 2005 and this continues with
SQL Server 2008. Its predecessor for earlier versions was OSQL, which is
functionally equivalent and many of the command line parameters are identical.

Visual Studio:

Microsoft Visual Studio includes native support for data programming with
Microsoft SQL Server. It can be used to write and debug code to be executed by
SQL CLR. It also includes a data designer that can be used to graphically create,
view or edit database schemas. Queries can be created either visually or using
code. SSMS 2008 onwards, provides intellisense for SQL queries as well.
SQL Server Management Studio:

SQL Server Management Studio is a GUI tool included with SQL Server
2005 and later for configuring, managing, and administering all components within
Microsoft SQL Server. The tool includes both script editors and graphical tools
that work with objects and features of the server.[48] SQL Server Management
Studio replaces Enterprise Manager as the primary management interface for
Microsoft SQL Server since SQL Server 2005. A version of SQL Server
Management Studio is also available for SQL Server Express Edition, for which it
is known as SQL Server Management Studio Express (SSMSE).[49]

A central feature of SQL Server Management Studio is the Object Explorer,


which allows the user to browse, select, and act upon any of the objects within the
server.[50] It can be used to visually observe and analyze query plans and optimize
the database performance, among others.[51] SQL Server Management Studio can
also be used to create a new database, alter any existing database schema by adding
or modifying tables and indexes, or analyze performance. It includes the query
windows which provide a GUI based interface to write and execute queries.[19]

XVIII. Business Intelligence Development Studio:

Business Intelligence Development Studio (BIDS) is the IDE from


Microsoft used for developing data analysis and Business Intelligence solutions
utilizing the Microsoft SQL Server Analysis Services, Reporting Services and
Integration Services. It is based on the Microsoft Visual Studio development
environment but customizes with the SQL Server services-specific extensions and
project types, including tools, controls and projects for reports (using Reporting
Services), Cubes and data mining structures (using Analysis Services).[52]

Programmability:
T-SQL:
T-SQL (Transact-SQL) is the primary means of programming and managing
SQL Server. It exposes keywords for the operations that can be performed on
SQL Server, including creating and altering database schemas, entering and
editing data in the database as well as monitoring and managing the server
itself. Client applications, both which consume data or manage the server,
leverage SQL Server functionality by sending T-SQL queries and statements
which are then processed by the server and results (or errors) returned to the
client application. SQL Server allows it to be managed using T-SQL. For this it
exposes read only tables from which server statistics can be read. Management
functionality is exposed via system-defined stored procedures which can be
invoked from T-SQL queries to perform the management operation. It is also
possible to create linked Server using T-SQL. Linked server allows operation to
multiple server as one query. [53]

XIX. SQL Native Client:


SQL Native Client is the native client side data access library for Microsoft
SQL Server, version 2005 onwards. It natively implements support for the SQL
Server features including the Tabular Data Stream implementation, support for
mirrored SQL Server databases, full support for all data types supported by SQL
Server, asynchronous operations, query notifications, encryption support, as well
as receiving multiple result sets in a single database session. SQL Native Client is
used under the hood by SQL Server plug-ins for other data access technologies,
including ADO or OLE DB. The SQL Native Client can also be directly used,
bypassing the generic data access layers

XX. 6. SYSTEM TESTING

The purpose of testing is to discover errors. Testing is the process of trying


to discover every conceivable fault or weakness in a work product. It provides a
way to check the functionality of components, sub assemblies, assemblies and/or a
finished product It is the process of exercising software with the intent of ensuring
that the
Software system meets its requirements and user expectations and does not fail in
an unacceptable manner. There are various types of test. Each test type addresses a
specific testing requirement.

TYPES OF TESTS

Unit testing
Unit testing involves the design of test cases that validate that the internal
program logic is functioning properly, and that program inputs produce valid
outputs. All decision branches and internal code flow should be validated. It is the
testing of individual software units of the application .it is done after the
completion of an individual unit before integration. This is a structural testing, that
relies on knowledge of its construction and is invasive. Unit tests perform basic
tests at component level and test a specific business process, application, and/or
system configuration. Unit tests ensure that each unique path of a business process
performs accurately to the documented specifications and contains clearly defined
inputs and expected results.

Integration testing
Integration tests are designed to test integrated software components to
determine if they actually run as one program. Testing is event driven and is more
concerned with the basic outcome of screens or fields. Integration tests
demonstrate that although the components were individually satisfaction, as shown
by successfully unit testing, the combination of components is correct and
consistent. Integration testing is specifically aimed at exposing the problems that
arise from the combination of components.

Functional test
Functional tests provide systematic demonstrations that functions tested are
available as specified by the business and technical requirements, system
documentation, and user manuals.

Functional testing is centered on the following items:

Valid Input : identified classes of valid input must be accepted.

Invalid Input : identified classes of invalid input must be rejected.


Functions : identified functions must be exercised.

Output : identified classes of application outputs must be exercised.

Systems/Procedures: interfacing systems or procedures must be invoked.

Organization and preparation of functional tests is focused on requirements, key


functions, or special test cases. In addition, systematic coverage pertaining to
identify Business process flows; data fields, predefined processes, and successive
processes must be considered for testing. Before functional testing is complete,
additional tests are identified and the effective value of current tests is determined.

System Test

System testing ensures that the entire integrated software system meets
requirements. It tests a configuration to ensure known and predictable results. An
example of system testing is the configuration oriented system integration test.
System testing is based on process descriptions and flows, emphasizing pre-driven
process links and integration points.

White Box Testing

White Box Testing is a testing in which in which the software tester has
knowledge of the inner workings, structure and language of the software, or at least
its purpose. It is purpose. It is used to test areas that cannot be reached from a black
box level.

Black Box Testing

Black Box Testing is testing the software without any knowledge of the inner
workings, structure or language of the module being tested. Black box tests, as
most other kinds of tests, must be written from a definitive source document, such
as specification or requirements document, such as specification or requirements
document. It is a testing in which the software under test is treated, as a black
box .you cannot “see” into it. The test provides inputs and responds to outputs
without considering how the software works.

6.1 Unit Testing:

Unit testing is usually conducted as part of a combined code and unit test
phase of the software lifecycle, although it is not uncommon for coding and unit
testing to be conducted as two distinct phases.

Test strategy and approach


Field testing will be performed manually and functional tests will be written
in detail.

Test objectives
 All field entries must work properly.
 Pages must be activated from the identified link.
 The entry screen, messages and responses must not be delayed.

Features to be tested
 Verify that the entries are of the correct format
 No duplicate entries should be allowed
 All links should take the user to the correct page.

6.2 Integration Testing

Software integration testing is the incremental integration testing of two or


more integrated software components on a single platform to produce failures
caused by interface defects.

The task of the integration test is to check that components or software


applications, e.g. components in a software system or – one step up – software
applications at the company level – interact without error.
Test Results: All the test cases mentioned above passed successfully. No defects
encountered.

6.3 Acceptance Testing

User Acceptance Testing is a critical phase of any project and requires


significant participation by the end user. It also ensures that the system meets the
functional requirements.

Test Results: All the test cases mentioned above passed successfully. No defects
encountered.

Future Enhancements:

We will continue to research on security mechanisms that support: 1) search


semantics that takes into consideration conjunction of keywords, sequence of
Keywords, and even the complex natural language semantics to produce highly
relevant search results; and 2) search ranking that sorts the searching results
according to the relevance criteria.

8. CONCLUSION

In this paper, for the first time we formalize and solve the problem of
supporting efficient yet privacy-preserving fuzzy search for achieving effective
utilization of remotely stored encrypted data in Cloud Computing. We design an
advanced technique (i.e., wildcard-based technique) to construct the storage-
efficient fuzzy keyword sets by exploiting a significant observation on the
similarity metric of edit distance. Based on the constructed fuzzy keyword sets, we
further propose an efficient fuzzy keyword search scheme. Through rigorous
security analysis, we show that our proposed solution is secure and privacy-
preserving, while correctly realizing the goal of fuzzy keyword search.

9. BIBLIOGRAPHY
Good Teachers are worth more than thousand books, we have them in Our
Department.

References Made From:

1. User Interfaces in C#: Windows Forms and Custom Controls by Matthew


MacDonald.

2. Applied Microsoft® .NET Framework Programming (Pro-Developer) by


Jeffrey Richter.

3. Practical .Net2 and C#2: Harness the Platform, the Language, and the
Framework by Patrick Smacchia.

4. Cloud Computing, by Behrouz A Forouzan.

5. Encrypted Data, by James F. Kurose.

6. Fuzzy Keyword Search, by Abraham Silberschatz.

Sites Referred:

http://www.sourcefordgde.com

http://www.cloudcomputing.com

http://www.codeproject.com

You might also like