1. Environmental issues
a. "In UAT environment it is working...in production it is not working " [Because of mismatch in the versions of the softwares installed, Hot fixes applied , Patches updated, some files corrupted , Mismatch in the keys used while using encryption / decryption, registry issues because of some corruption, inconsistency in configuration (DB server, APP. Server etc.) – sanity issues]
b. "Yesterday it worked.Today it is not working " [May be it is tested with some other data…today with a different data, Un-audited software installations etc.]
c. Some times bugs in the platforms will get revealed only under some circumstances which even platform vendors may be un-aware of !
2. Resource Availability
[This may lead to non-reproducible errors and hence affects reliability]
a. Availability of DB connections / other legacy resources
b. Thread pool
c. RAM, CPU etc.
d. Instability in the availability of the common resources (which are also used by other applications )
e. Shortage of the resources in the peak loads.In this case problems will bubble only in the peak stage. We will not be able to reproduce it hence it will lead to lots of confusion
3. Resource Accessibility
a. Access to some resources is limited to some roles – DB connections , User roles not mapped / configured in the legacy resources
b. Some times there will be a policy because of which password will get expire / reset
c. Missing of credentials synchronization across resources
a. Types exposed through a service cannot be consumed by a client application developed in a different platform
b. Data types adopted by the data access layer not compatible with the Database system
If we can have processes / policies / governance that are devised around these categories; if we start any development with the consciousness of these factors in mind, then any enterprise application rollout will be a smooth ride and will not result in unnecessary, un-productive night outs & escalations.
In addition to these categories of issues, we will always face issues related to Non-functional requirements like Performance, Security etc. Those issues will surface only under certain architecturally significant scenarios & special conditions. That too, they will bubble only on the final stage of testing & deployment.