| Version Control | An auditable history of all changes to the application code and data objects. | |
| Review by Peers | Reading of code changes by other developers. | |
| Departmental Approval | Secondary approval of changes by a party with ownership of the application. | |
| Documentation | Written record of requirements, assumptions, and expectations of the applications. | |
| Testing | Attempt to make use of the changes in a non-production environment. | |
| Resource Impact | Analyze how programs or processes might impact the hardware resources of the system. | |
| Security | Conscientious attention to application upgrades and account maintenance. | |
| Archiving Code and Data | Code and data should be archived to avoid data loss. | |
| Centralization of Resources | Make use of existing supported resources and processes. |
Versioning refers to the practice of preserving older, "milestone" copies of a given document so you can
"fall back" to a certain version of a document without backing out current changes. The minimum amount
of information that should be kept is the ID of the person who made the changes from the last copy, the
date/time they were last changed, and a short description of the changes made.
Benefits of versioning:
|
Peer review is defined as a meeting of the developer and at least one other developer and/or customer to discuss
the code and the performance of a given program, form or report. As a minimum, all source code should be scanned
for obvious errors and tested by the customer.
Benefits of peer review:
|
As a minimum, at least one knowledgeable second party should approve changes to each program or document before
it is moved into a production environment. This person should be an end-user, data owner, or power user who has
a legitimate vested interest in the correct functioning of the application.
Benefits of departmental approval:
|
| As a minimum, approval of changes, documentation of the code, and test plan documents should be developed for each project (process, program, form, etc) and kept in an area that is accessible to developers, auditors, and the owner of the application. |
Testing is the process of running code through a realistic simulation of the production system to find errors or
enhancements to the code before implementation. As a minimum, all code should be run successfully at least once
against a set of test data. Testing should include all processes associated with the change, analysis of
potential performance impacts due to the change, and assessment of the correctness of the solution. It is also
beneficial to test existing and revised documentation that is related to the change, to ensure its continued
correctness. Include end-users in testing the change.
Benefit of testing:
|
| An analysis of potential performance impacts due to the change should be conducted. Sharing of hardware and software resources should be considered. Document and schedule intensive operations. Communicate significant impact to system administrators and owners of other applications that share resources. Document significant resource usage and file this document with other process documents. |
Thoroughly secure access to the application and data. The following aspects of security should be addressed:
|
Ensure the availability and recoverability of application data and source code by adhering to the following
best practices on file archives:
|
A centralized infrastructure of servers, file storage systems and software installations should be used
whenever possible. This includes hardware platforms, programming tools, file formats, file storage
systems, and executable programs. Security considerations should be taken into account, as well as ease
of access and redundancy. Care should also be taken to use industry standard formats and languages.
Benefits of centralization:
|