A successful software project during the final year of your bachelor education is important. This is because, questions about the project during an interview is common and impressing the employer with a high quality project is the best way to get a job.
My advice to you is :
- Choose a project which can land you a job in companies such as Microsoft, Oracle, Google and Accenture
- Choose a project topic for which job potential is high
- Cover topics in your project, which will demonstrate to the employer that you are willing to understand and handle complex tasks
Application developer, database administrator and system architect jobs are high paying and available all over the world. This can be verified from the fact that softwares such as Oracle, SAP, Microsoft´s Visual Studio, SAS, BI, all of them handle databases or are database software applications themselves. Doing a project in which you develop a complete software application for a domain of your choice (Banking, Finance, ERP, Healthcare and Manufacturing) will help you in your career.
In this article, I have outlined many of the topics which should appear in your project. I have explained some of the concepts in detail for your benefit. I suggest you read these topics carefully, research a bit more and put your project together.
I also suggest :
- Ensure that you cover all the steps of application development in your project.
- Take your time, research, read as many books as possible on developing database applications and prepare your project.
This article is grouped into four parts. This grouping is done to make it easy for you to read the article.
Part 1: Covers project purpose, characteristic of a good software.
Part 2: An overview of how one should go about collecting the information, writing the ER diagram, datbase design and architecture required to develop the software.
Part 3: Key topics the software project should include - creating a framework for multi-tier application, GridView control and User Interface.
Part 4: How to make your project special? - Add a cutting edge technology to your project, I have added Entity Framework and MVC for your reference.
For readers of books listed on Home page -
For those who are pursuing their MCA, BE or BSc degrees, choosing this series of books is a smart move.
Get the following benefits:
1. You can do your project with ease and quickly. No more searching and wasting your precious time.
2. Ready, tried and tested material, data entry forms and reports
3. Impress your teachers with most recent and latest topics
4. You will learn as you develop the software
5. All the learning will be helpful in your interviews and in your Jobs
6. Your project will be on the popular / high job potential ERP domain
7. Your technology will be the Cloud Technology / Web Technology
8. You will have the foundation to learn other software products such as Dynamics, SAP, SAAS after college
Solves a practical problem
The first thing an employer would like to see in your project report is what or which problem your software addresses. Companies would like to see the problem defined very clearly in your project report. Suppose, you create a mini ERP software as your final year project, companies would like to see - a clear explanation of what problem your ERP software solves, why and how the software you develop will be better than off-the-shelf software available already in the market.
Is your solution can be beneficial (over other technologies and solutions)
Companies would like to see why you think the technologies you have chosen are better than the other ones. Here, you can make a positive impression by being persuasive about the technologies you have chosen. For example, if you choose .Net technologies such as C#, VB.Net and ASP.Net, list out all the positive points about these technologies and include in your report an explanation of why heavy lifting which is an often cited drawback of .Net technologies, is in fact not bad after all. I have cited only one point. There are many positive aspects of .Net technologies which you can cite to make your point.
Technical challenges (you have faced and overcome)
Companies would like to see the technical complexity you have addressed in your project. As a student it may be difficult for you to choose a completely complex project due to time and cost constraints. Choose your project wisely. Consider adding a certain amount of complexity to a simple project and ensure that these complexities are highlighted in your documentation.
Your Software App should be usable
A software application may be attractive because of fancy and sleek design and use of flash. These features may prompt people to comment that the software is very good and likable. However, as a software professional you should recognize that while attractiveness is important, usability is much more important. I have often come across students who choose attractiveness over functionality and usability while creating their software. Usability can be thought of as a measure to assess how easy it is to perform the tasks for which the software is created for. A software may be very attractive but may score poor on usability.
A database software application is mostly used for recording data. The common tasks include opening a menu, accessing an option, entering data and saving data. The software application must be designed in such a way that these tasks can be easily performed in the shortest possible time. The usability of a software application covers not only the above mentioned tasks but many more, such as generating reports, creating spreadsheets with data, charts etc.
A highly usable software ensures that a person with least training (it does not mean no training) will be able to access all the options, enter data and generate reports. Usability testing is a separate exercise in which users are involved to participate and their time study is done to assess the software.
Characteristics of a good software
When you write code for your project, you should write in such a way that the code can be used multiple times in your project or any other. To achieve this, you put your code in assemblies. Visual Studio provides an easy way to write code in class libraries which exist as assemblies. This method of programming is also referred to as API - (Application Programming Interface). By doing this, your code is reusable. Let me make this clearer for you. Suppose, you choose to do a Sales Order Management system. For this project, data access code and business logic code has to be written. If you place this code in separate assemblies, then you will be able to re-use the same code in other projects. However, the ability to write code which is re-usable requires some level of expertise.
Modularity in software application development means dividing the application into tiny parts with each part having a purpose or a task. The tiniest part you can make in VS.Net is a class. Remember, each class should have single specific clearly defined task. When we divide the application into classes for modularity, we should also ensure that the various classes interact with each other in a well coordinated way to achieve the objective of the application.
VS (Visual Studio) provides means to manage these classes by specifying which classes are interdependent and in what order they should be calling each other. In large applications, this can become very complex, Microsoft has provided IOC containers which make it simpler to manage this inter-dependency. However, you need not worry about this complexity as your project will be simpler compared to large enterprise applications where hundreds of classes are used.
Microsoft introduced what is called as design patterns to make it easier for you to implement modularity in an application.
A design pattern is a sort of a template or a guide, developed and tested, and ensures a high degree of reliability. However, a design pattern is not a ready solution to be used in a project. It has to be used as a guide at the implementation level for a specific purpose. It is not related to architecture level design. Note that these patterns can be implemented in any language like Java, PHP or .Net.
The rapid increase in usage of web applications and smart phone applications has resulted in a large demand for creation of loosely coupled applications. As explained above, some degree of modularity is achieved in applications by creating classes which is the OOPS methodology. However, for today's enterprise and smartphone applications, a higher degree of modularity and hence reusability is required.
When you create classes, you will observe that all the dependent classes have to be instantiated in the constructor. Tasks such as these will be handled differently by IOC containers which is the latest solution offered by Microsoft for achieving higher degree of loose coupling which is necessary for today's enterprise and smart phone applications.
How to create a class which follows the rules of modularity and loosely coupling
As we have seen in the earlier part of this article, each class should be designed to perform a single task. VS provides a feature called interfaces using which you can define business rules. The classes we create will implement these interfaces. If any business rule is modified or added, and we change the interface, the classes will adopt the changes automatically.
As enterprise applications contain hundreds of classes and interfaces, managing them is difficult. IOC containers ensure that these classes interact with each other smoothly.
There are two types of tests we can conduct on a Web application. One is unit testing and other is integrated testing. Unit testing refers to those tests we conduct on small units of code, classes and methods. While conducting these tests the classes and methods are considered independent of the application. Unit tests are suitable to test business logic and data access logic and stored procedures. In Visual Studio, we perform unit tests by creating a test project.
Integrated testing refers to the tests which check the entire application and how its components work relative to each other. This test should be conducted after completion of every stage or module. In this test, the working of the application including the browser calls such as button clicks and submission of forms are simulated. Open source tools available to conduct these tests on .Net applications are available in the market.
The main difference between unit testing and integrated testing is that with unit tests, we can check the working of individual components independent of other components whereas with integrated testing we can check how each component works with other component to meet the specified requirements.
For a detailed explanation on how to conduct these tests, refer the Microsoft online manual.
Let me tell you how I test a database software application as I develop it. After completing the database design, I write the server-side stored procedures for retrieving and saving data. Now, I execute each stored procedure providing proper input data and check whether the expected result is being returned or not. This can be done on a Sql Server. Open the SQL server software and select the stored procedure in the object browser and right-click on the execute stored procedure option. The stored procedure will be executed and a window will be displayed. In this window, you can enter data and click on Ok button to complete the testing. The advantage of doing this first is that the first part of the code of the application is tested. Once the logic for retrieving and saving data is working fine, you can develop and connect the application to SQL server and test the other parts of the application. After testing the saving and retrieving routines, you can test your data access (DAL) component which contains the code to connect to database and call the stored procedures. Next, you can test the business logic (BAL) components which contain the code for implementing the domain business rules. Lastly, you can test the GUI of the application. The application at this stage will include all the parts of the application. The testing procedure changes if you use MVC in your application. Visual Studio provides an in-built tool to test MVC applications. Note that the tests you conduct on your application should cover each and every aspect of the application and should also be documented.
Highlight the work you have done on testing your application in your project report as this will demonstrate your commitment to quality aspect of your project.
The process of application development begins with studying the working of the organization, collecting all the information and laying it out in a format to facilitate the development of your software project.
Note that, you use the guidelines given below and collect the information and then move on to the technical stage of your project creation.
Firstly, choose a domain. Either you can choose the broader ERP domain which covers the five domains Accounting, Inventory (Stock in some countries), Manufacturing, Purchase (SCM) and Sales (SRM). Note that ERP by itself is not a domain. It covers the five above mentioned domains. The HR (human resources) domain is also considered as a module of the ERP domain.
After choosing the domain, you can start collecting the information by list out all the events which occur in the organization. For some of you, this may be new, so let me explain.
An event in a company is a happening which can be recorded in a standard format. An event can occur frequently or occasionally. For example, buying of consumables is an event which happens frequently. Some events may happen occasionally. For example, purchase of a machine tool in a manufacturing company may happen occasionally. For this event, purchase of machine tool is recorded as a Fixed Asset purchase event. The details redcorded are name of the machine tool, name of the vendor from whom we have purchased, amount we have paid, date of purchase, under which head this purchase transaction is created. The value of this asset depreciates on a yearly basis as per accounting regulations of the country. The value of this particular asset reduces gradually, which can be inferred from the fact that if the company wants to sell it, it can be sold only at a reduced price. When you record an event in an organization, the event has to be explained in detail with information such as when do the events occur, what is the data to be recorded, how many times does this event occur on a monthly or any other period, how many people should be authorized to record this event, what is the designation of the person who records this event and finally what is the impact of this event on other domains.
After listing out the events, the next step is to list the data which is recorded in every event. Consider the example we discussed above - Purchase of Machine Tool. The event is the Purchase, data recorded is date of purchase, name of vendor, description of the material purchased, cost of the material, taxes if any and any other notes which may be of use. You will also have to detail the data and type of data. Based on the information you have collected you will have to prepare the requirement analysis report. After the requirement analysis is approved, the next step is to develop the application. Your system requirement report should contain the following.
- Work-flow or process flow diagram. This diagram describes how the system works.
- For each business process or an event, identify the three main aspects - input, process and output of the system.
- Architecture of the application - Multi-Tier architecture, Two-Tier architecture.
- List data entities and define relationships between entities using E-R diagram.
- Normalized database structure.
- User Interface of the application
The ER diagram represents entities and the relationship between them. To give you an idea of what is an ER diagram and how it appears, I have considered a mini version of a Sales Order Management system. Below is a diagram of the SOM ER diagram. A Customer initiates a SalesOrder which contains multiple SalesOrderItems. Each SalesOrderItem lists a product which belongs to a particular Category. This is only a part diagram of the full SOM system diagram. Use this diagram as a guide to draw the ER diagram for your project. Listed below are the entities and their purpose of a SOM system.
- Customer : A person who places orders
- SalesOrder : An order placed by a customer. A single order may have multiple Products
- Product : A product is a thing or goods purchased by a customer
- Category : A Category is a description to which a product or products belong
- SalesOrderItem: A particular order can have multiple products. Each product in an order is associated with a rate, qty and a value. The product and all the details of the product forms the SalesOrderItem.
An order can have multiple SalesOrderItems
The system requirement report includes the database details. I have created the database to store the SOM data and listed the tables below for you.
After creating the database with the above tables in the sql server, the database diagram appears as follows. You can view this digram in a SQL Server by clicking on the database diagram option.
Some of the key topics your software project should include -
- Create a framework for your multi-tier application
- Data entry forms
Create Sales Order Mgt App Framework using Visual Studio
We discussed about the ER diagram and the database in Part 2. Now, we will discuss about the framework for the SOM application. The diagram given below represents how your application framework appears. There will be a Presentation Layer which contains the web forms and interacts with the Business Layer which contains the business logic code and so on. The procedure to create this framework is given below. You can follow the same procedure for any of the domain you choose.
The first step is to create a solution and name it the myVbSolution. Within this solution, we will create three projects. In the Figure given below, observe that the Project 1 is a class library and under this class library, place Data Access objects which form the Data Access Layer of the SOM application. Project 2 is also a class library and under this class library, place the business objects which form the Business Layer. Project 3 is a web application and under this web application, create web forms which form the Presentation Layer.
You create two class libraries, one for Data Access Layer and another for the Business Layer - name them as myVbDataAccessLayer and myVbBusinessLayer respectively. Create a web application and name it as myVbPresentationLayer. Our objective is to create a multi-layer application and class libraries are the way to create and implement such applications. Class Libraries enable us to separate the code completely and they exist in different layers. Listed below are the steps to create the class library components for each layer in detail.
a. Creating a Class Library for the Data Access Layer
b. Creating a Class Library for the Business Layer
c. Creating a web Application for the Presentation Layer
a. Creating a Class Library for the Data Access Layer
1. In Visual Studio 2010 select File - New Project.
2. Select Visual Basic from the Project Type list and then choose the Class Library icon from the Template list as shown in below figure.
3. Type the Project Name as myVbDataAccessLayer and Solution as myVbSolution.
4. Click Ok to create a New Project with a default Class called Class1.vb.
5. Rename the Class1.vb as DataServer.vb as shown in below figure.
When you create a Class Library, Visual Studio creates a default namespace, which can be observed in the Project Properties. For our SOM application, you create your own namespace. Use the Namespace statement to create a namespace named DataService and place the classes and methods inside the namespace as shown in Figure. When Programming the Business Layer, we can import this namespace by using the Imports statement.
Before you create a Class Library for the Business Layer, you need to build the myVbDataAccess Layer project. Right click on the myVbDataAccessLayer project in the solution explorer and select build option.
b. Creating a Class Library for the Business Layer
1. In Visual Studio 2010 select File - New Project.
2. Select Visual Basic from the Project Type list and then choose the Class Library icon from the Template list.
3. Type the Project Name as myVbBusinessLayer and in the Solution drop down list box select Add to Solution option.
4. Click Ok to create a New Project with a default Class called Class1.vb.
To use the component myDataAccessLayer in the Business Layer, we need to add a reference to the component using Add Reference dialog box. To activate this dialog box, click on the Business Layer project and select the Add Reference option. The dialog box is shown below.
Choose the Projects tab and select the myVbDataAccessLayer project and click Ok. Now, we can import the namespace of the myVbDataAccessLayer component. The below figure shows the screenshot of the class Class1.vb with the namespaces.
I have listed out all the steps of creating the framework for the multi-tier SOM web application. All the three layers have been created. Follow these steps when you create your software project, the steps are same whichever domain you choose. The next step is to create the Presentation Layer.
c. Creating a Web application for the Presentation Layer
The next step is to create the Presentation Layer.
1. In Visual Studio 2010 select File - New Project.
2. Select Visual Basic from the Project Type list and then choose the Web application icon from the Template list.
3. Type the Project Name as myPresentationLayer and in the Solution dropdown listbox select Add to Solution option.
4. Click Ok to create a New Project.
User interface will form an important part of your software project. Designing an user interface using Visual Studio is comparatively easy because of the advanced tools available and various controls available. I will discuss about the GridView control in detail as it will form an important part of your software interface. In fact, you will use the GridView control in many of your forms.
A GridView control ia an important part of any data intensive applications user interface. Given below is a picture of a GridView control displaying some data. Observe that you can do many things to control the appearance of the GridView control. An important application of GridView is to display data from two tables with one to many relationships. An alternative description of a GrioView control is - A GridView control is a spreadsheet like control consisting of rows and columns, the intersection of which is a cell in which you can display or enter data.
To use a GridView in an application, we have to bind it to a datasource control. After binding it, you can display, edit and delete data.
Key points you should know to incorporate a GridView in your software project.
- Programmatic DataBinding in GridView control.
- Bind a DataSet object to a GridView control.
- Use fields with the GridView control.
- Use column field element to display DropDownLists or HyperLinks or Images in columns.
- Use BoundFields
- Use CommandField to display one or more command buttons in a column of the GridView control.
- Use Templatefields in a GridView control to add ASP.Net controls and add DataBinding Expressions to a GridView control. For example, when using a GridView control to edit database records, we may need to display an interface which contains DropDownLists, Checkboxes, Labels, Textboxes and Validation controls.
- Display a Drop-Down List when Editing in the GridView using EditItemTemplate
Steps to create the GridView control with templates to display and edit customer data
- Declare the GridView and set the AutoGenerateColumns property to false
- Create Bound columns for CustomerCode, CustomerName and CustomerAdress fields
- Create a Template column
- Create <ItemTemplate> to display GroupName
- Create <EditItemTemplate> to display DropDownList control to select a group when editing the record
- Create SqlDataSource control and set the SelectCommand and UpdateCommand properties to display and update records from the AccountsTable
Designing the SalesOrderForm in the SOM system
Listed below are the data fields and their purpose used in the OrderForm.aspx (this is the name I have given to the Sales Order Form).
|Order no: ||A unique number assigned to each order
||The date on which an order is created.
||The customer to whom this particular order has to be delivered.
||The address to which the consignment has to be shipped.
||The date on or before the order has to be completed.
||Itemname, Qty, Rate, Value Details of the products which have to be delivered to the customer are entered here.
||An amount which is deducted from the order value.
||The amount charged for shipping products to the customer.
||The amount to be paid to the tax authorities by the organization and collected from the customer.
||This is the sum total of all the values of the products. The value is a multiple of quantity and rate per unit.
The Net amount is the sum of order total, tax and freight less the discount amount.
Order Net = Order Total +Tax + Freight - Discount
|Buttons and Functionality|
||To add a new row of data i.e., new item, click this button. When clicked, a new row of data is ready to accept new data.
||To delete a row of data, click this button.
||To modify the record, click this button.
||To commit the transaction into the database, click this button.
The OrderForm.aspx is used to record sales order transactions and acepts sales order data such as quantity of goods to be delivered, the name of the customer buying the goods and the date of delivery. The form has to do the following:
- Accept user input
- Populate a DropDownList box with customer names.
- Allow users to add products to the Sales Order from a product list.
- Calculate the order total amount and net order amount.
Here are the steps which will help you to design Sales Order Form
- Place two ObjectDatasource controls (not visible in the form)
- Place the DropDownList control and bind it to the ObjectDataSource control to display Customer names
- Create and set important properties and methods of the GridView control.
- Create Template columns in the GridView control using <asp:TemplateField> element.
- Use the following three types of templates in each Template Column.
- Footer Template
- Create a Template column for the Item Name column in the OrderForm
- Create a Template column for the Qty column in the OrderForm
- Create a Template column for the Rate column in the OrderForm
- Create a Template column for the Value column in the OrderForm
- Create Template column for Insert button, Delete Command button and Edit Command button
- Create EmptyDataTemplate to accept first row of data when data source is empty.
- This Template is specifically designed to accept data for the first row in the GridView control.
- Place Add NewRecord button and Save button.
- Place TextBox controls and corresponding Label controls for Discount, Freight, Tax, Order Total and Order Net.
How to make your project special?
There are many ways to make your project unique. One way is to add a new technology to your project. For example, you can use the any one of the technology provided by Microsoft to create a Data Access Layer.
- ADO.Net technology with Datasets feature
- Linq to SQL
- Entity Framework
You can replace the Data Access Layer with any one of the above technology and demonstrate a variation of your existing project.
The below figure demonstratrs how a three-tier architectured application looks like when Entity Framework is used as the Data Access technology.
Entity Framework uses EDM which is evolved from Entity Relationship Modeling. EDM is the link between the model and the database and stores the mapping information.
The ADO.NET Entity Data Model is created using the ADO.NET Entity Data Model designer tool provided with Microsoft Entity Framework 4. The Microsoft Entity Framework 4 is available with .Net framework 4 and can be used in Visual studio 2010. Using this tool we can graphically create the EDM and it is represented as a EDMX file.
Using ASP.Net MVC as web application framework
Using MVC as the web application framework is an another variation you can consider. MVC stands for Model View Controller. MVC architecture is a Microsoft recommended ASP.NET web application development architecture. This architecture does not replace the web forms model which we are familiar with. When we develop a web application using MVC architectural pattern, the application is divided into three components, which are Model, View and Controller.
This design pattern separates the data access and business logic from the presentation code and creates a feature to test GUI. Any application developed based on the MVC pattern is easier to test than an application developed on the page controller pattern.
A page of a web application developed using the MVC design pattern can be tested easily because individual components can be tested in isolation. This is because the MVC design separates the components and user interfaces.
Suggested Project titles
- Desktop ERP application with ADO.Net technology
- Web ERP application with ADO.Net technology
- Desktop ERP application with Linq to Sql as the Data Access Technology
- Web ERP application with Linq to Sql as the Data Access Technology
- Desktop ERP application with Entity Framework
- ASP.Net MVC Web application with Entity Framework
Free .Net software tools you can use to create your project