Client/Server
* Will user use "Wireless" network to run application? 
* Will application Run on Thin clients like Citirix OR Terminal Client? 
* Will application deploy in "Virtual Environment"?
 
Application Server (n Tier)
* Would you plan use application server at present or in future?
 
Database
* Will application use Central database for all sites or locations?
* Will application have different databases as per sites or locations?
* If there are different databases, then will you need to replicate or synchronize with central database?
 
Database or Application level programming
* You need to think about availibility of manpower and co-ordination between application and database programmers.
* You need to think about load balancing at database server where many users are connected.
 
Multiple EXEs for major modules or Single EXE for all modules
* If you have mulitple exes, then you need to think about single login and easy navigation among modules.
* If you have single exe, then you need to think about showing important things in main screen.
* Deployment differences in both.
 
Multi Offices
* Will it be multi offices application?
* Will user select office at the time of starting application?
* Will user allow to select office at any screen level?
 
Database Activities
* Develop custom class for all database activities (Retrive, Delete, Edit or Insert).
* This class should be deployed to application server and you should not need to make changes in client application.
* Will application deploy on different databases like Sybase, Oracle or MS Sql?
* If yes, then you need to be careful to use Database specific query or function.
 
Data Caching
* Will application need to cache most frequent use data to speed up performance?
* If yes, will application retrieve data from database and store in memory everytime when you start application?
* Would you see possibility to retrieve from database and store in local computer once and then load in memory when you start application? You need to consider THIN client enviorment while designing this.
 
Security
* What level (Screen, Control and Action) of security you will allow admin to set for the users?
 
Audit Log
* Make sure you write centrally placed code to log user's login/logout, all data manipulation, record access and screen access. It should be parameterized to reduce burden on application.
 
Error Handling
* You need to handle errors for Connection, Database and Programming. It is very important to make robust application by handling errors properly. Exception can be a good way to handle programming errors.
 
Application Messages
* Make sure you develop custom MESSAGEBOX window.
* If you are planning to make multilingual application, then database driven messages would be better choice.
 
Interface Design
* Will you prefer "Traditional" or "Special Layout" interface?
* Will you allow to use screen by Keyboard or Mouse or Both?
* Make sure you resize screens as per user defined resolution.
* Make sure you consider "dual monitor access" possiblity in this world.
* Develop common interface (Frame, Sheet, Response/Modal), standard and custom controls.
 
Preferences
* Make sure you provide provision to setup preferences at Application, User, Computer, Office or Location level.
* You need to setup priority to override preference on each other.
 
Help
* Will you provide website for application's online help? If yes, then what if user does not have internet access?
* Will you provide locally stored context sensitive help?
 
License Verification
* Make sure you verify license detail on application startup and inform user accordingly.
 
Version Control
* Make sure to have proper application version running on all the computers.
* You need to consider "OS level" rights for checking and copying latest files or accessing registry in local computer.
 
Combo or Search driven lookups
* Will you use Combo or Search option for all lookup tables?
* Search may add extra work for the user but same time it gives better performance when you have bulk data in any lookup table.
* You can have both combination as per expected data in lookup.
 
Report Builder
* It is better to develop common interface for all kinds of reports.
* You better use "View" or "Store Procedures" for generating reports.
* You should have central place to setup document or report header. Header can be Text with formatting or Image.
* Provide different program to generaete time consuming reports. Allow to schedule time to generat, print, fax or email this kind of reports.
 
Print/Fax/Email/Export
* Will you allow user to setup different printer as per report, document or computer?
* Will you allow user to Fax and Email document or reports as it shows on screen?
* Which formats you would support to export data?
 
Backup Routine
* Will allow user to take automatic backup (online or offline)?
 
Purge/Restore Data
* Will allow user to purge historical data and restore at any time?
 
Third party control (ActiveX) integration
* Will you use third party compopnent in your application?
* Make sure you are familiar with all deployment requirements for third party component.
 
Runtime Debug Service
* It is better to have RUNTIME DEBUG mode to write most important things in defined file.
 
Inbuilt Support Tool
* It is very important to have inbuilt support tool to see hidden field values, db settings, version info. and many other technical things in runtime mode.
 
Demo or Live mode
* Make sure you should have way to run application in demo mode. It helps sales department to show some features in demo which you cannot put live at client place.
 
MultiLingual
* Will you allow user to select specific language for application?
* If yes, then how do you show different langauge in Labels, Messages and all instructions? Font needs to be properly installed on client machine for defined language.
 
Application Events
* It is useful to call "External Program","WebService" or "Database Store Procedure" on important events of the application.