This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
In the process of implementing a database solution, you need to know that you are using the same database schema in your development. You would spend hours of your time with no guarantee when you were done if you were to start analyzing both databases manually in order to be sure that there are no differences that you had found all of the differences. In this case, you should use some tools to comparison database.
To doing this system, the developer should have very good knowledge about databases, this knowledge should be more than just use the database, and knowledge about their queries, the developer should research about database architecture and to making applications should have very good knowledge about .net programming and c# (in this case because I want use c# in .net framework 3.5).
This means after finishing this project the developer will have complete enough knowledge about database (SQL Server) and programming with C#.
To doing this project the main challenges are, retrieve the database structure and compare them base on object or base on text. The text compares formulas and algorithms and about how to change a database to another one
What is database
In computing, databases are sometimes classified according to their organizational approach. The most prevalent approach is the relational database, a tabular database in which data is defined so that it can be reorganized and accessed in a number of different ways. A distributed database is one that can be dispersed or replicated among different points in a network. An object-oriented programming database is one that is congruent with the data defined in object classes and subclasses.
Computer databases typically contain aggregations of data records or files, such as sales transactions, product catalogs and inventories, and customer profiles. Typically, a database manager provides users the capabilities of controlling read/write access, specifying report generation, and analyzing usage. Databases and database managers are prevalent in large mainframe systems, but are also present in smaller distributed workstation and mid-range systems such as the AS/400 and on personal computers. SQL (Structured Query Language) is a standard language for making interactive queries from and updating a database such as IBM's DB2, Microsoft's Access, and database products from Oracle, Sybase, and Computer Associates.
A database consists of an organized collection of data for one or more multiple uses. One way of classifying databases involves the type of content, for example: bibliographic, full-text, numeric, and image. Other classification methods start from examining database models or database architectures: see below. Software organizes the data in a database according to a database model. As of 2010[update] the relational model occurs most commonly. Other models such as the hierarchical model and the network model use a more explicit representation of relationships.
One of the technology terms that most people have become accustomed to hearing either at work or while surfing the internet is the database. The database used to be an extremely technical term, however with the rise of computer systems and information technology throughout our culture, the database has become a household term.
The definition of a database is a structured collection of records or data that is stored in a computer system. In order for a database to be truly functional, it must not only store large amounts of records well, but be accessed easily. In addition, new information and changes should also be fairly easy to input. In order to have a highly efficient database system, you need to incorporate a program that manages the queries and information stored on the system. This is usually referred to as DBMS or a Database Management System. Besides these features, all databases that are created should be built with high data integrity and the ability to recover data if hardware fails.
Types of database:
There are several common types of databases; each type of database has its own data model (how the data is structured). They include; Flat Model, Hierarchical Model, Relational Model and Network Model.
The Flat Model Database
In a flat model database, there is a two dimensional (flat structure) array of data. For instance, there is one column of information and within this column it is assumed that each data item will be related to the other. For instance, a flat model database includes only zip codes. Within the database, there will only be one column and each new row within that one column will be a new zip code.
The Hierarchical Model Database
The hierarchical model database resembles a tree like structure, such as how Microsoft Windows organizes folders and files. In a hierarchical model database, each upward link is nested in order to keep data organized in a particular order on a same level list. For instance, a hierarchal database of sales, may list each days sales as a separate file. Within this nested file are all of the sales (same types of data) for the day.
The Network Model
In a network model, the defining feature is that a record is stored with a link to other records - in effect networked. These networks (or sometimes referred to as pointers) can be a variety of different types of information such as node numbers or even a disk address.
The Relational Model
The relational model is the most popular type of database and an extremely powerful tool, not only to store information, but to access it as well. Relational databases are organized as tables. The beauty of a table is that the information can be accessed or added without reorganizing the tables. A table can have many records and each record can have many fields.
Tables are sometimes called a relation. For instance, a company can have a database called customer orders, within this database will be several different tables or relations all relating to customer orders. Tables can include customer information (name, address, contact, info, customer number, etc) and other tables (relations) such as orders that the customer previously bought (this can include item number, item description, payment amount, payment method, etc). It should be noted that every record (group of fields) in a relational database has its own primary key. A primary key is a unique field that makes it easy to identify a record.
Relational databases use a program interface called SQL or Standard Query Language. SQL is currently used on practically all relational databases. Relational databases are extremely easy to customize to fit almost any kind of data storage. You can easily create relations for items that you sell, employees that work for your company, etc.
Desktop. Desktop database software stores and serves data from a single computer. A desktop database is perfect for a home business, or to store your personal contact information.
Server. Server-based database software stores data on a central computer and makes it available to other computers via a network or the Internet. Server-based database software is typically used in larger businesses and for e-commerce applications.
Web-enabled. Web-enabled database software allows data to be stored locally, but made available to web pages for Internet access. Web-enabled database software, like Microsoft Access, is a great way to publish web pages that don't change often. Typically, these pages would contain reference, contact or long-term scheduling information.
What is database management system
A Database Management System (DBMS) is a set of computer programs that controls the creation, maintenance, and the use of a database. It allows organizations to place control of database development in the hands of database administrators (DBAs) and other specialists. A DBMS is a system software package that helps the use of integrated collection of data records and files known as databases. It allows different user application programs to easily access the same database. DBMSs may use any of a variety of database models, such as the network model or relational model. In large systems, a DBMS allows users and other software to store and retrieve data in a structured way. Instead of having to write computer programs to extract information, user can ask simple questions in a query language. Thus, many DBMS packages provide Fourth-generation programming language (4GLs) and other application development features. It helps to specify the logical organization for a database and access and use the information within a database. It provides facilities for controlling data access, enforcing data integrity, managing concurrency, and restoring the database from backups. A DBMS also provides the ability to logically present database information to users.
A DBMS is a set of software programs that controls the organization, storage, management, and retrieval of data in a database. DBMSs are categorized according to their data structures or types. The DBMS accepts requests for data from an application program and instructs the operating system to transfer the appropriate data. The queries and responses must be submitted and received according to a format that conforms to one or more applicable protocols. When a DBMS is used, information systems can be changed much more easily as the organization's information requirements change. New categories of data can be added to the database without disruption to the existing system.
Database servers are computers that hold the actual databases and run only the DBMS and related software. Database servers are usually multiprocessor computers, with generous memory and RAID disk arrays used for stable storage. Hardware database accelerators, connected to one or more servers via a high-speed channel, are also used in large volume transaction processing environments. DBMSs are found at the heart of most database applications. DBMSs may be built around a custom multitasking kernel with built-in networking support, but modern DBMSs typically rely on a standard operating system to provide these functions.
Ancient to modern: The origins go back to libraries, governmental, business, and medical records. There is a very long history of information storage, indexing, and retrieval. Don't ignore this history, there is usually something to learn from these folks and their success and failure. Lots of online stuff (and there is lots) does not guarantee quality of data or search technique. Good design principles goes way back and lots is known now about how to make good designs that lead to better reliability and performance.
1960's: Computers become cost effective for private companies along with increasing storage capability of computers. Two main data models were developed: network model (CODASYL) and hierarchical (IMS). Access to database is through low-level pointer operations linking records. Storage details depended on the type of data to be stored. Thus adding an extra field to your database requires rewriting the underlying access/modification scheme. Emphasis was on records to be processed, not overall structure of the system. A user would need to know the physical structure of the database in order to query for information. One major commercial success was SABRE system from IBM and American Airlines.
1970-72: E.F. Codd proposed relational model for databases in a landmark paper on how to think about databases. He disconnects the schema (logical organization) of a database from the physical storage methods. This system has been standard ever since.
1970's: Several camps of proponents argue about merits of these competing systems while the theory of databases leads to mainstream research projects. Two main prototypes for relational systems were developed during 1974-77. These provide nice example of how theory leads to best practice.
Ingres: Developed at UCB. This ultimately led to Ingres Corp., Sybase, MS SQL Server, Britton-Lee, Wang's PACE. This system used QUEL as query language.
System R: Developed at IBM San Jose and led to IBM's SQL/DS & DB2, Oracle, HP's Allbase, Tandem's Non-Stop SQL. This system used SEQUEL as query language.
The term Relational Database Management System (RDBMS) is coined during this period.
1976: P. Chen proposed the Entity-Relationship (ER) model for database design giving yet another important insight into conceptual data models. Such higher level modeling allows the designer to concentrate on the use of data instead of logical table structure.
Early 1980's: Commercialization of relational systems begins as a boom in computer purchasing fuels DB market for business.
Mid-1980's: SQL (Structured Query Language) becomes "intergalactic standard". DB2 becomes IBM's flagship product. Network and hierarchical models fade into the background, with essentially no development of these systems today but some legacy systems are still in use. Development of the IBM PC gives rise to many DB companies and products such as RIM, RBASE 5000, PARADOX, OS/2 Database Manager, Dbase III, IV (later Foxbase, even later Visual FoxPro), Watcom SQL.
Early 1990's: An industry shakeout begins with fewer surviving companies offering increasingly complex products at higher prices. Much development during this period centers on client tools for application development such as PowerBuilder (Sybase), Oracle Developer, VB (Microsoft), etc. Client-server model for computing becomes the norm for future business decisions. Development of personal productivity tools such as Excel/Access (MS) and ODBC. This also marks the beginning of Object Database Management Systems (ODBMS) prototypes.
Mid-1990's: Kaboom! The usable Internet/WWW appears. A mad scramble ensues to allow remote access to computer systems with legacy data. Client-server frenzy reaches the desktop of average users with little patience for complexity while Web/DB grows exponentially.
Late-1990's: The large investment in Internet companies fuels tools market boom for Web/Internet/DB connectors. Active Server Pages, Front Page, Java Servlets, JDBC, Enterprise Java Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, etc are examples of such offerings. Open source solution come online with widespread use of gcc, cgi, Apache, MySQL, etc. Online Transaction processing (OLTP) and online analytic processing (OLAP) comes of age with many merchants using point-of-sale (POS) technology on a daily basis.
Early 21st century: Decline of the Internet industry as a whole but solid growth of DB applications continues. More interactive applications appear with use of PDAs, POS transactions, consolidation of vendors, etc. Three main (western) companies predominate in the large DB market: IBM (buys Informix), Microsoft, and Oracle.
Future trends: Huge (terabyte) systems are appearing and will require novel means of handling and analyzing data. Large science databases such as genome project, geological, national security, and space exploration data. Clickstream analysis is happening now. Data mining, data warehousing, data marts are a commonly used technique today. More of this in the future without a doubt. Smart/personalized shopping using purchase history, time of day, etc.
Successors to SQL (and perhaps RDBMS) will be emerging in the future. Most attempts to standardize SQL successors has not been successful. SQL92, SQL2, SQL3 are still underpowered and more extensions are hard to agree upon. Most likely this will be overtaken by XML and other emerging techniques. XML with Java for databases is the current poster child of the "next great thing". Check in tomorrow to see what else is news.
Mobile database use is a product now coming to market in various ways. Distributed transaction processing is becoming the norm for business planning in many arenas.
Probably there will be a continuing shakeout in the RDBMS market. Linux with Apache supporting mySQL (or even Oracle) on relatively cheap hardware is a major threat to high cost legacy systems of Oracle and DB2 so these have begun pre-emptive projects to hold onto their customers.
Object Oriented Everything, including databases, seems to be always on the verge to sweeping everything before it. Object Database Management Group (ODMG) standards are proposed and accepted and maybe something comes from that.
Database management softwares
The Oracle Database (commonly referred to as Oracle RDBMS or simply as Oracle) is a relational database management system (RDBMS) produced and marketed by Oracle Corporation. As of 2009[update], Oracle remains a major presence in database computing.
DB2 is a relational database management system produced by IBM that IBM refers to as a "data server." What is a relational database? A relational database is a set of files that has been analyzed for all of the relationships between fields. The related fields are pulled out of the original files in order to minimize redundancy in the data being stored. For example, instead of storing the information that TN is the state Tennessee in every record, that information is pulled out of the original file and stored only once in a state code file.
The idea of a relational database first arose in 1970 when Dr. E.F. Codd formally stated a number of algebraic rules that could be applied to data manipulation. IBM left the application of Codd's principles to a group of programmers that created a language that was eventually called SQL (Structured Query Language). DB2 was the name given to the Database Management System in 1982, and it is the first database to use SQL.
At first, DB2 was only available on IBM mainframes, but during the 1990's DB2 spread to many other platforms, LUW (Linux, Unix, Windows), mid-range computers i5/OS (formerly AS/400) and even on PDAs. During the 90s, IBM also introduced it's Universal Server. The Universal Server shifted the technology to an object-related SQL DBMS that allows developers to define their own data types from more primitive data types.
In 2001, IBM bought Informix and incorporated many of it's database features into the DB2 product suite.
In 2006, IBM announced "Viper," the codename for DB2 9 on distributed platforms and DB2 9 on z/OS. DB2 9 offers the ability to store XML "natively," and it also allows storage compression to save on disk space. pureXML(tm) is the name that IBM uses to talk about the ability to store XML natively.
Sybase is a computer software company that develops and sells database management system (DBMS) and middleware products. The company was founded in 1984, and the headquarters offices are in Emeryville, CA. Sybase was the first enterprise DBMS for the Linux operating system.
Sybase products have found extensive application, particularly in commercial, industrial, and military communications systems. Spanish telecommunications operator Airtel uses Sybase Adaptive Server IQ Multiplex (ASIQ) to standardize its business information. Telstra, an Australian telecommunications provider, uses data-visualization software powered by Sybase ASIQ Multiplex to optimize its mobile phone network management capacity. Primark uses Sybase MQSeries Integrator to maximize transaction rates, optimize reliability, and allow customization of inputs and outputs. Sybase claims that its MQSeries Integrator makes it possible to add new data formats to meet the needs of clients, and to accommodate diverse system architectures at client locations. Sybase SQL Anywhere, embedded in Geodyn FxView, is used in two-way communications between military command centers and soldiers in the field.
MySQL is a relational database management system (RDBMS) based on SQL (Structured Query Language). First released in January, 1998, MySQL is now one component of parent company MySQL AB's product line of database servers and development tools.
Many Internet startups became interested in the original open source version of MySQL as an alternative to the proprietary database systems from Oracle, IBM, and Informix. MySQL is currently available under two different licensing agreements: free of charge, under the GNU General Public License (GPL) open source system or through subscription to MySQL Network for business applications.
MySQL runs on virtually all platforms, including Linux, Unix, and Windows. It is fully multi-threaded using kernel threads, and provides application program interfaces (APIs) for many programming languages, including C, C++, Eiffel, Java, Perl, PHP, Python, and Tcl.
MySQL is used in a wide range of applications, including data warehousing, e-commerce, Web databases, logging applications and distributed applications. It is also increasingly embedded in third-party software and other technologies. According to MySQL AB, their flagship product has over six million active MySQL installations worldwide. Customers include Cisco, Dun & Bradstreet, Google, NASA, Lufthansa, Hyperion, and Suzuki.
SQL Server is a relational database management system (RDBMS) from Microsoft that's designed for the enterprise environment. SQL Server runs on T-SQL (Transact -SQL), a set of programming extensions from Sybase and Microsoft that add several features to standard SQL, including transaction control, exception and error handling, row processing, and declared variables.
Codenamed Yukon in development, SQL Server 2005 was released in November 2005. The 2005 product is said to provide enhanced flexibility, scalability, reliability, and security to database applications, and to make them easier to create and deploy, thus reducing the complexity and tedium involved in database management. SQL Server 2005 also includes more administrative support.
The original SQL Server code was developed by Sybase; in the late 1980s, Microsoft, Sybase and Ashton-Tate collaborated to produce the first version of the product, SQL Server 4.2 for OS/2. Subsequently, both Sybase and Microsoft offered SQL Server products. Sybase has since renamed their product Adaptive Server Enterprise.
Available Product Review
The StarInix Database Compare application will allow you to compare the structure of two databases and display all the differences between them. Supported databases include: SQL Server (All Editions), MySQL and Access databases. You can compare two different databases, like access and SQL 2000. It will also allow you to create snapshots of a database and compare a live database to a snapshot. A database structure viewer is included. You can filter the comparison results by type of object and you can also choose to exclude the comparison of constraints and fields.
Â Its Free
Â Will compare 3 different types of database using the same user friendly interface.
Â Take snapshots of the structure of the database and review it later.
Â Snapshots can be saved anywhere, allowing you to take snapshots of any database for reviewing later.
Â Easy to use and user-friendly
Â Compare two online database connections
Â Compare an online database connection to an off-line snapshot
Â Compare two off-line snapshots
Â Use integrated or user based security
Â Compares: views, constraints, stored procedures, functions, tables and fields.
Â Compare Access database to an SQL Server database
Â Compare Access database to a MySQL database
Â Compare Access database to another Access database
Â Compare MySQL Database to an SQL Server Database
Â Compare SQL Server 2000 to SQL Server 2005
SQL Delta loads the schema of two SQL databases and quickly locates the schema differences in tables, views, stored procedures or any other object in the database. SQL Delta can also search for data differences between the two databases. Compare whole tables or drill down to select specific columns within a table and even filter the column data for a more fine grained comparison.
Once compared you can synchronize the schema and data from your source to target database. SQL Delta generates the SQL change script and you can either save the script or automatically execute it. This provides an easy way to replicate a database from one server to another and all with just the press of a few buttons. Even email the script file to remote locations so they can reliably update their database.
Now you no longer need to find and manually script development changes onto your live server, just run SQL Delta, compare and then sync and your done. A task that once took hours can now takes minutes and it's more reliable with no chance of typos or other human error creeping into your live server.
Having SQL Delta means no longer do you miss that last minute change added to your development database even if your production database is not available, all you need to do is compare an offline snaphot of the live database to your development database and then generate the change script.
Quite simply SQL Delta takes the headache out of managing your databases.
SQL Delta for SQL Server works with Microsoft SQL Server (all versions) and
SQL Delta for Oracle works with Oracle Database Server.
http://www.sqldelta.com/images/ball.pngÂ Synchronize the schema of two SQL databases
http://www.sqldelta.com/images/ball.pngÂ Synchronize the data within two databases
http://www.sqldelta.com/images/ball.pngÂ Easy to read difference display
http://www.sqldelta.com/images/ball.pngÂ Automatically generate and run change scripts
http://www.sqldelta.com/images/ball.pngÂ Control comparison projects with an advanced project manager
http://www.sqldelta.com/images/ball.pngÂ Comprehensive reporting including difference, schema and data reports
http://www.sqldelta.com/images/ball.pngÂ Generate Snapshots for offline comparisons
http://www.sqldelta.com/images/ball.pngÂ Run scheduled comparisons and control SQL Delta using command line scripting.
http://www.sqldelta.com/images/ball.pngÂ Comprehensive filtering and searching of schema objects
http://www.sqldelta.com/images/ball.pngÂ Fantastic value for money: you get two products, structure and data compare, in one package
YesSave time by automatically comparing and synchronizing database schemas
YesEliminate mistakes migrating database changes from dev, to test, to production
YesSpeed up the deployment of new database schema updates
YesGenerate T-SQL scripts to update one database to match the schema of another
YesFind and fix errors caused by differences between databases
YesKeep an accurate history of all previous database records
Compare and deploy changes to SQL Server database schemas
Automatically create error-free synchronization scripts
Migrate individual, a selection of, or all schema differences
Build sophisticated rules to selectively limit what to synchronize
Support for Microsoft SQL Server 2000, 2005 & 2008 databases
Create reports detailing database differences
Troubleshoot database differences
Backup target database before changes are migrated
Command line automation for continuous integration
Automatically output a database into individual object creation scripts
Restore just a single object (or selection of objects) from a backup file
SQL Server databases
Snapshots of the schema
Backup files (both native SQL Server & Red Gate SQL Backup)
Folders of SQL scripts (for source control)
â€¢ Automate compare database
â€¢ Compare all database objects or selected ones only
â€¢ Compare database by all or selected properties of objects only
â€¢ A wide variety of options for comparison
â€¢ Compare databases using all or selected object properties
â€¢ Advanced visual build tree interface for an intuitive visual representation of any differences
â€¢ Built-in text differences control with SQL syntax highlighting
â€¢ Native database comparison support for Microsoft SQL Server 2008 (and 2005)
To doing this project its plan to use spiral model, there is some explanation about this methodology.
The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also known as the spiral lifecycle model (or spiral development), it is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping model and the waterfall model. The spiral model is intended for large, expensive and complicated projects.
The steps in the spiral model iteration can be generalized as follows:
The system requirements are defined in as much detail as possible. This usually involves interviewing a number of users representing all the external or internal users and other aspects of the existing system.
A preliminary design is created for the new system.This phase is the most important part of "Spiral Model". In this phase all possible (and available) alternatives, which can help in developing a cost effective project are analyzed and strategies to use them are decided. This phase has been added specially in order to identify and resolve all the possible risks in the project development. If risks indicate any kind of uncertainty in requirements, prototyping may be used to proceed with the available data and find out possible solution in order to deal with the potential changes in the requirements.
A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product.
A second prototype is evolved by a fourfold procedure:
evaluating the first prototype in terms of its strengths, weaknesses, and risks;
defining the requirements of the second prototype;
planning and designing the second prototype;
constructing and testing the second prototype
The main purpose of this application is to generate compare to databases and change one of them to another one, to doing this application the developer choose C# programming language.
In first place for business classes, C# is selected due to its power to build rich applications and it is also very easy to understand and manipulate. It syntax is very similar to favorite C++ programming language. Now it is widely use for application development in .net platform.
Following list shows advantage of .NET for application development (Including C# language) according to (Nagel et al, 2005) :
Object-Oriented Programming - Both the .NET Framework and C# are entirely based on object-oriented principles right from the start.
Good Design - A base class library, which is designed from the ground up in a highly intuitive way.
Language Independent - With .NET, all of the languages Visual Basic .NET, C#, J#, and managed C++ compiler to a common Intermediate Language. This means that languages are interoperable in a way that has not been seen before.
Better Support for Dynamic Web Pages - While ASP offered a lot of flexibility, it was also inefficient because of its use of interpreted scripting languages, and the lack of object-oriented design often resulted in messy ASP code. .NET offers an integrated support for Web pages, using a new technology - ASP.NET. With ASP.NET, code in your pages is compiled, and may be written in a .NET-aware high-level language such as C#, J#, or Visual Basic.
Efficient Data Access - A set of .NET components, collectively known as ADO.NET, provides efficient access to relational databases and a variety of data sources. Components are also available to allow access to the file system, and to directories. In particular, XML support is built into .NET, allowing you to manipulate data, which may be imported from or exported to non-Windows platforms.
Code Sharing - .NET has completely revamped the way that code is shared between applications, introducing the concept of the assembly, which replaces the traditional DLL. Assemblies have formal facilities for versioning, and different versions of assemblies can exist side by side.
Improved Security - Each assembly can also contain built-in security information that can indicate precisely who or what category of user or process is allowed to call which methods on which classes. This gives you a very fine degree of control over how the assemblies that you deploy can be used.
Zero Impact Installation - here are two types of assemblies: shared and private. Shared assemblies are common libraries available to all software, while private assemblies are intended only for use with particular software. A private assembly is entirely self-contained, so the process of installing it is simple. There are no registry entries; the appropriate files are simply placed in the appropriate folder in the file system.
Support for Web Services - .NET has fully integrated support for developing Web services as easily as you'd develop any other type of application.
Visual Studio - .NET comes with a developer environment, Visual Studio, which can cope equally well with C++, C#, J#, and Visual Basic, as well as with ASP.NET code.
So the best choice for programming language which is suppose to generate C# code (by default) and user be able to develop custom template for that program is C# itself.
Writing managed code using the C# language, other than C++ and VB.net provides the following benefits (Microsoft Corporation, 2010):
Complete object-oriented design.
Very strong type safety.
A good blend of Visual Basic simplicity and C++ power.
Syntax and keywords similar to C and C++.
Development environment is used to design, implement, compile, test and debug software programs. It means good environment must has mentioned requirement and developers can easily develop and applications in it.
For current project selected language is C# and target operating system is Microsoft Windows. Base on these facts Microsoft Visual Studio is the best (probably the only choice) for developing Windows Form application. First Visual Studio with .NET capabilities release in 2003 (.net 1.1) and latest version (at this time) is 2010 (.net 4.0) and it is release 3 weeks ago (April 12, 2010  ).
Visual Studio 2008 is the most reliable, bug free and stable version of visual studio with support of .NET frame work 1.1, 2.0, 3.0 and 3.5; it seems this version is the best choice for developing current project.