Guide to Successful Corporate Website and ERP Design
1. Introduction
The internet and IT is an integrated part of our daily life these days. No business or company can survive without a website or an ERP (Enterprise Resource Management) system. The cost of administration and human interaction without an IT solution can easily put the company out of business, being unable to compete with other companies who employ IT solutions.
Here we are going to point at some very important topics regarding website design in PHP, how it should evolve and how to keep ERP connectivity in mind during projects development cycle (important to know for businesses).
2. PHP vs. ASP.NET?
Having worked with both technologies for more than a decade, I must say that both are competitive. Whether we should choose ASP.NET or PHP is debate among engineers. Coders chose the language that they are most familiar with. However, PHP has certain advantages over ASP.NET.
Having worked with both technologies for more than a decade, I must say that both are competitive. Whether we should choose ASP.NET or PHP is debate among engineers. Coders chose the language that they are most familiar with. However, PHP has certain advantages over ASP.NET.
1) PHP runs faster than ASP.NET. (It can even run twice faster if held in cache in compiled state) ASP.NET uses the COM and ActiveX model, making it slower to perform.
2) Many OpenSource solutions available, free of Charge
3) PHP engineers usually come cheaper
4) Already in use in great businesses (Facebook is a good example)
5) Easier to learn/understand (No.NET background required)
6) Many OpenSource CRMs are available in PHP (Wordpress being a very good Example)
7) PHP is the only solution when targeting Embedded systems market. PHP uses Apache and Linux To run, and Linux is virtually available for every family of Microprocessor/Microcontroller that exist (x86, ARM, PPC, MIPS, AVR, etc).
However, it comes with some disadvantages as well
1) By nature, it lacks already-made components which facilitates website design (You can find vast number of OpenSource components on the internet, so we can omit this problem)
2) Lacks a dedicated IDE (However, NetBEANS 6.9.+ Supports PHP with code-completion, Free of charge.) Unless you are a big business with your own IT department using.NET for ERP and your systems, PHP would be the better option. If not (already using.NET in your ERP), then ASP.NET is the way to go.
3. What database to use? MySQL, PostgreSQL or Microsoft SQL Server?
This is an important decision to make. Microsoft SQL Server is a professional database solution for most businesses (Large and medium sized). It is extremely simple to write Stored-Procedures and Scripts.
MySQL is very popular as well, but it is not as easy to work with MySQL than it is with MSSQL. MySQL doesn't support Script writing, has some restrictions regarding Multi-Core query execution and of course, support. However, if you are not intending to make complex database (Which is very possible with MySQL, just not as easy as MSSQL), then MySQL is a wise choice. It runs on Linux, it is free and finding a coder familiar with MySQL is a very easy task.
Microsoft SQL, being more featureful, however cannot run on Linux. This means that if you are targeting MSSQL, either you must run your PHP website on IIS server (A windows server, not linux), and install the SQL Server on the same machine, or you can have two servers, one which runs linux and your website, and the other runs windows server and has MSSQL installed in it. Both ASP.NET and PHP easily connect to Microsoft SQL server and MySQL database.
4. Connectivity with corporates ERP
ERP can be the center of the universe for a big or medium sized business. ERP can be home-made in the company, or can be SAP or other large systems designed by corporations.
If you are not using an ERP, and looking for a full internet/intranet solution, you can skip this part. However, if you are using an ERP (Purchased or designed by your engineers), then keeping ERP in mind during the website design is essential.
First thing to consider is the database of your ERP. You must have the answer to the following questions:
1) Do you have your ERPs documentation?
2) Are table structures and connections known and clear for you?
3) Do you know how your database system works?
4) How are you planning to use your ERPs data on your website?
5) Can your clients modify data on ERPs database via your website?
2) Are table structures and connections known and clear for you?
3) Do you know how your database system works?
4) How are you planning to use your ERPs data on your website?
5) Can your clients modify data on ERPs database via your website?
Most of the time, companies decide to build their website just to be visible on the internet. My experience has taught me that 90% of the time, they go beyond this idea, and soon after, they decide to open a web interface for their clients. This is a huge plus for stable business, as clients can track orders, services or any other business they may having with your company.
It is worthy to say that this vision may later extend to a system known as EDI which stands for Electronic Data Interchange. EDI helps synchronizing data with your clients database without human intervention, in an automated manner. EDI Can be custom made (XML, Plain-text) or standards such as VAN or EDIFACT.
In the end, if your website needs access to your companies internal database, then you must be planning for it right from the beginning, as it may be too difficult to change the code later to support this feature.
In the end, if your website needs access to your companies internal database, then you must be planning for it right from the beginning, as it may be too difficult to change the code later to support this feature.
5. Database design tips and tactics
Database can be the center of your business. All the information regarding your clients, their orders or products and their feedbacks will reside there. A poorly designed database can take drive to business to complete failure. Common problems you may encounter with a poorly designed database:
1) You may loose important and vital data related to your business
2) Database responsiveness can reduce greatly after it goes under heavy load
3) Mis-calculations (especially in invoicing) can affect clients trust
4) Gathering statistical information can become very difficult
2) Database responsiveness can reduce greatly after it goes under heavy load
3) Mis-calculations (especially in invoicing) can affect clients trust
4) Gathering statistical information can become very difficult
The first step is to make sure that your database is being designed by a professional. It's best to have only one person for your database. This is because once a team is involved in database design, they may have different ideas regarding a professional and optimized database. This can have an inverse effect and make things more difficult instead of making them easy.
The key to successful database design, is using Foreign Keys, Views, Stored procedures, Functions as much as possible. Never in the code should an INSERT or DELETE or UPDATE be used, as it can affect the quality of the system, and can cause half-completed transactions, reducing data integrity even further.
The sole method of communication between database and PHP or.NET code must be STORED PROCEDURES. It is easier to control the flow of information, and should an error arise, you can easily trace the error in the procedures, rather than the code.
To present data, VIEWs must be used. First of all, this helps reducing design effort, as a view can be used in many different instances, and the team will slowly recognize the view, and use it even further in their modules and classes. Secondly, to change how data is presented, one can simply change the VIEW in the database editor, instead of modifying the code and running a second compile before everything can take effect.
And finally, to optimize the database and make it as fast as possible, INDEXes must be used on all Primary Keys of all tables. Please be advised that every once in a while, you must RE-INDEX your database. Otherwise, your database will become slow in time, cancelling all positive effects of indexing. This is a fact many engineers are not aware of.
6. Coding methods, tips and tactics
A clean and structured code can be the path to success in software project. However, it should not be over structured. Most software design firms use Design Patterns and Factory model to product their softwares. This is not necessarily the best approach to coding (It is, however, the best approach for a software design firm who has to handle 50 different projects simultaneously).
Using classes and interfaces help simply coding and debugging. However, coding style is different from engineer to engineer. There is no unique standard method of coding which everyone in the world should follow. It is best to keep the number of engineers who work on your project under five.
Remember the more people work on one project, the more bugs you will have create due to different coding style of each engineer. In my opinion, hiring two or maximum three top of the line professionals will yield the best result.
There isn't really much that can be said regarding coding style of your project, since it is completely engineer dependent. Hiring best engineers will have the best effect in this department.
One thing I always suggest is to have a central emailing system in your intranet, and whenever a crash is detected on your application, the application automatically send an Email to your engineering team with whatever data available, which can expose the root of the issue and how it has come to surface. This method will accelerate the bug-fixing process.
7. Methods to manage the project
In order to have a professional and stable website (and/or ERP), the project must be managed carefully. I personally recommend the AGILE SCRUM method. The method is rather easy to implement, will transfer responsibility over to your engineers (Reduces management efforts and increases their productivity) and will dramatically increase the chance of success and meeting deadlines.
In AGILE SCRUM, you must gather all the features you need to have in your product on a paper. We call this the product Backlog. There can be many features that your company requires, thus we have to divide the Backlog into several sub-backlogs (called release backlogs). Essentially, you are dividing your full product into several smaller products, which makes it possible to spread the work-load evenly.
The next step is to convert each product-release into smaller parts which are called Sprints. Workload behind each sprint should not exceed 30 days. Once all the sprints are finished, you will have a product release. The project will be finished when all product-releases are completed, and from that point, you will be in maintenance phase.
It is important to dedicate a few sprints just for debugging and adjustment. Collaboration of your final users in the project can be vital to project success (this method reduces modifications and adjustments to minimum once the product is released). You can find articles and tutorials regarding AGILE SCRUM on internet. YouTube can be a good source in this regard.
In the end, I should add that no matter how professional you design your system, there will always be modifications, debugging stages. It is impossible to avoid them, but it is possible to reduce them to minimum when your product is first released to its users or to your clients.
I suggest that when your product is released, it is best to have an Alpha and Beta stage, where your users are informed that this is a new product, and whenever they see any problem, they should report it back to you immediately, and not fully rely on the integrity of the data available in your system. After a certain number of bug fixes, you can say that your product is released and from now on, you are in maintenance phase.
Wordpress Monitoring
Comments
Post a Comment