IT Design Policy:
Here are some general application design guidelines for the 21st century.
Create applications that are SQL database-centric. Such applications are easier to structurally modify, and can provide extensive metrics. Additional metrics are easily added to such a system. Managers can perform metric analyses from any browser through an SQL interface.
Wherever possible, design applications as interactive, rather than batch. Careful, but not indiscriminate, attention to record, file, and database locking procedures will allow the availability of current, on-time data, while preserving database integrity.
Design applications using Internet or Intranet technologies. Such systems can function in a mixture of local or wide-area applications transparently. In many cases, built-in SSL server/browser encryption can replace the function of costly VPN's. Any computer that can run a standard Internet browser can become part of the system without needing special application software installed on it. Application code can be a part of the downloaded browser page.
Improve efficiency by spreading the client-server workload. A single program can contain some code that will execute on the server and some code that will execute on the client. Implement system and database level operations in ASP (Microsoft Active Server Pages) or PHP (Unix/Linux) code that will execute at the server. Implement user interface, data-checking, and other distributed processes in Vbscript and Javascript code that will execute in standard Internet browsers at the users' computers.
Use the standard HTTP ports wherever possible. Information passed on these ports will usually pass through firewalls and NAT's. This can eliminate costly and time-consuming server and router modifications between disparate systems.
Use open-source operating systems and services at the server levels wherever possible. System administrators can easily modify open-source code to improve efficiency and security. Such modification capabilities are rarely even available from software vendors. This will also result in a tremendous reduction of client-server licensing costs and reporting requirements.
Do not create software with products that reinforce vendor supplication. For instance, develop software with tools that can produce code for both Microsoft and Unix environments.