ERP software development

Companies developing in-house ERP system software conduct a detailed cost benefit study before initiating the ERP software product development process. Companies whose business processes are unique are best suited to undertake in-house ERP software development.

The biggest advantage of developing ERP software in-house is that the company retains full ownership rights of the source code and the knowledge gained. By having an in-house team, companies will have flexibility in customizing the software as and when they think the time is right.

A major requirement of developing an in-house ERP software is that the company needs to have a core team which is experienced in executing such ERP projects. The core team should have a long term requirements of software in mind before planning the ERP software.

The team should also have a thorough understanding of the business processes of the company and should be proficient in designing a software system based on latest technology.

By developing the software in-house, companies will have the freedom in choosing the softwares such as databases, front end tools and report writers. The satisfaction levels among programmers who have developed ERP in-house system software are much higher and sense of belonging is more.

Such motivated IT teams contribute greatly towards a company's competetive advantage.

In-house ERP software development can lead to a competitive advantage as companies are free to make decisions related to their software systems. In contrast, when a vendor is hired to install a ERP software, decisions related to software need participation from the vendor also which may lead to delays and uncertainties.

How shall we go about developing an ERP software for in-house use? Which technology to choose and what is that technology and where does it fit in and is used in the ERP software development process, are few of the questions which should be answered by the IT team. In this page we will discuss the technologies used in developing an ERP software. Links to the relavent articles are also given.

The first issue to be tackled is the platform on which we will develop the ERP software and host it.

Platform suited for Creating an ERP Software
.Net platform is the most widely used platform given the number of windows machines used world wide. Let us assume that the .Net is our platform and all the following discussion is based on this assumption.

Why did we choose .Net ? Because, it offers the following advantage.

.Net is a new layer of software that sits over the familiar Windows operating system. This insulates computer users from the operating system and makes applications more efficient. Let us now list the major features of .net technology.

Managed code
.Net offers many tools and components that can be used to write managed code. Managed code is better because software errors are identified and stopped before systems crash. .Net ensures that we do not encounter memory leaks while using software.

.Net enforces a new system of supervision. Hackers will find it difficult to break through the .net security model.

.Net development tools make it easier to develop ERP softwares by providing connectivity techniques such as XML web services. This is vital because ERP softwares will be distributed, collaborative and networked systems which communicate constantly. Building an ERP system for such environments is much easier with .net technologies.

Faster and easier software development
.Net allows developers to develop software systems, much easier by offering RAD tools. These tools have excellent programming and debugging features which allows development of better software. Applications developed using these tools run faster as the code is managed by the .net runtime system.

ERP softwares require continues up-gradations which means constant addition of new technologies and features. .Net allows this, as improvements in .net framework is instantly available to the upgraded ERP software. This allows better scalability.

Off-the-shelf ERP softwares
There are many off-the-shelf ERP softwares available in the market. Implementation of these softwares will also involve a detailed system study, preparation of specification documents. Subsequent to these steps, the specifications are matched with the features of the off-the-shelf software.

Note that a certain amount of customization is a must to leverage maximum benefits. Either way, every company which is planning to use an ERP software has to have in-house knowledge of the working of their company, specifications of the software they plan to install and how to derive maximum benefits from an ERP software.

Let us now discuss some important topics related to ERP software development. We begin with technologies.

OOPS is an important programming concept in software development. In the last decade and more, any new language introduced in the market had to be capable of providing required features for developing OOPs based software.

In fact, languages themselves were expected to be developed based on OOPs design. OOPs stands for Object Oriented Programming. Many books on programming and training institutes, talk about OOPS design in programming but rarely discuss how to implement OOPS in database applications such as ERP or Accounting software. We have discussed this in extensive detail in the ERP .Net books.

RAD tools enable us to developr ERP applications based on OOPS design. Classes are an important OOPS concept. For instance, to create Data Access Layer for the ERP application, we use classes.

To create the business layer and to build the business logic in the business layer, we use classes. Important concepts in OOPS are listed below.

abstract class inheritance
An abstract class is inherited by other classes and is similar to interfaces and this is called abstract class inheritance. Abstract classes members are implemented in the inheriting classes. Note that creating an object of an abstract class is not possible.

New C# Language Feature: Automatic Properties
This is a feature of C#. It provides a shorthand method to define property procedures and simplifies writing property procedures.

Compile time polymorphism - Method OverLoading
Using this feature, we can provide different implementation of methods having the same name but different signatures. This is sometimes called method overloading.

Constructor overloading
The Constructor Overloading feature is used to overload the constructor. When we want to define more than one constructor, we use Constructor Overloading.

Procedure OverLoading
Using the Procedure OverLoading feature, we can create many procedures using the same name but different argument lists.

Visual Inheritance with Windows Forms
Inheritance is an important feature of Object oriented Programming language because of which programmers can reuse code. As OOPS technology is applied to visual elements, inheritance is also referred to as visual inheritance.

How Layers are important in ERP software development
Dividing an application into layers has many benefits. The biggest benefit is the neat separation of the presentation part, the business logic part and the data part as layers and so we can handle these parts independently of each other.

For example, the presentation layer will contain all the code related to the user interface and user interaction of an ERP software. The business layer which is adjacent to the presentation layer contains all the classes with code to implement business rules of the ERP system.

SQL Server
Every ERP software should include a database system which can handle the large amount of data entered in an ERP software. Relational databases like Oracle and SQL Server are recommended for handling the data in an eRP software.

SQL server software provides advanced features such as Structured Query Language, business intelligence, stored procedures to enforce validations, implement business logic of an ERP application, triggers to initiate actions, implementation of transactions in an ERP software which enables concurrent access of database and provides security.


Entity Framework enables programmers to create ERP applications without worrying about structure of the database, and work with schemas which reflect business objects.

In the ERP books, we have discussed ADO.Net Data Readers and DataSets and also how to retrieve and save data. We work with the database schema when we use the ADO.Net technology. However, when we use entity framework, we work with the data model and not with the actual database.

The ADO.NET Entity Data Model Designer is included in Microsoft Entity Framework 4 with Visual studio 2010. Using this model designer, programmers can build an Entity Data Model for database applications such as ERP applications.

Entity Framework is a Object Relational Mapper (ORM ) and programmers update data stored in a database using this mapper. Using ORM, we can map database tables to .net classes and build relationships between them.

ORMs help us to create complex enterprise ERP software and build the relational databases model and object oriented models. We can query the entity data model using objectcontext.

The role of GridView Control in ERP Software development
The GridView control is a part of the Presentation layer of an ERP software application. The GridView control normally handles all the table or speadsheet like data entry of the ERP software. ERP software developers need to know what is a GridView control, how to bind a GridView controlwith dataset, how to handle fields within a GridView control, how to autogenerate columns, how to use templatefields in a GridView and how to format GridView using css.

The role of DetailsView Control in ERP Software development
The DetailsView control enables us to display single data item at a time. Programming the DetailsView control is essential for developing ERP software. This is because it enables display, edit, insert and delete of data items. The DetailsView control is typically used for updating and inserting new records in a master/detail scenario.

For instance, in an ERP application the DetailsView control is used along with a GridView control to display pending Sales Order details and DetailsView control displays a single sales order details.

Web ERP software development
A web ERP software is partitioned similar to the desktop ERP software application, that is it contains the Presentation Layer, Business Layer and DataAccess Layer.

Usually, C# is used to build the business logics of a web ERP software. However, programmers also use VB as a language to develop the web ERP software. The Presentation layer is completely developed using ASP.Net and AJAX.

ASP.Net technology is used to develop web applications which can be used over the internet, develop data entry forms which accepts data over the internet, use ASP.Net validation controls to validate data entered, access database over internet and authenticate users.

AJAX is a more recent technology which can be used with ASP.Net and allows programmers to write JavaScript code for speedier applications. AJAX application run faster than traditional ASP.Net applications are more versatile providing users with a user friendly interface.

Web Services
A web service is a software application that works over the internet. A web service resides on the web server and is available for use over the internet.

We create a web service when we would like to use a particular functionality or functionalities in many business applications. By adding a web service to an application we can enhance the features of the application.

Why do we create a web service
Web service products are implemented on XML, SOAP, WSDL,UDDI and other web services technologies.

Tools to create a web service,

Smartphone programming
Smartphones are extensively used by organizations which have implemented ERP software in their organization. Smartphones are used for a variety of office functions such as communication, recording of sales orders, delivery of goods, video conferencing and many other functions.

Popular operating systems used in Smartphones are Android, iPhone and Windows mobile 7. Programming an application for an operating system such as Android requires knowledge of Java language, Android SDK, Activities, menus, layouts, intents and broadcast receivers.

Developing applications for a smartphone is different as compared to developing applications for the web or desktop. Smartphone applications have to be light weight, have interactive presentation layer and handle databases differently.

When teaching ERP software development to students, faculty and teachers have to remember that topics have to be selected in such away the difficulty level increases gradually.

The course structure of ERP software development has to be designed in such a way that students feel comfortable in acquiring the expertise. All the topics of the ERP software programming when considered at once, can be grouped broadly as domain specific and technology specific. The topics which come under the domain group are working of an organization, Business processes, data recorded under various departments, data grouped under heads, reports generated, documents generated and Business Intelligence required by the organization.

The technology specific topics are database design, tables, stored procedures, triggers, programming languages such as vb, c# and java, with ajax and sql server.

The recommended order of topics for teaching ERP software development are given below.
  • Domain knowledge required for developing an ERP software
  • Databaase Design of an ERP software
  • Interface design (Presentation Layer) of the ERP software
  • Data Access Layer which includes the classes to access the database
  • Business layer which contains the classes to implement the business logic