Tom Jenkins
Lifetime Supporting Member
Standards can't turn a bad programmer into a good one, and at best reinforce what a good programmer already knows. I see lots of specs with requirements that intend to regulate style and quality, and I haven't seen them do much for me.
Now, you can indicate that the program must be properly structured and fully commented, and that the programming be done in a professional manner. That's a bit of motherhood and the flag, really. You could also dictate that certain functions be used, or require modularity and subroutines, or forbid bit shifts or such, but it won't really be enforceable because it's all a question of interpretation.
Rather than concentrate on trying to control programming style and structure, I suggest you concentrate on making sure you get the tools that will make your subsequent maintenance and upgrading job easier. Require a complete list of I/O, a printout of registers with nicknames, a printout of the logic, a copy of the program on CD (with appropriate protection for the contractor's intellectual property rights if appropriate) and a functional description of the program identifying all the major loops and control functions in text. Screen shots for all the operator interfaces is also helpful, particularly if accompanied by a list of register useage. This is useful to you, and not particular onerous for them. It is also enforceable, because final payment depends on geting documentation that satisfies you.
Beyond that all you can do is take a 2x4 to the purchasing agent and make sure they understand that the selection of contractors cannot be based on low price alone. Create a short list of acceptable contractors, and if a new vendor wants on get a list of references and resumes and check them out.
Now, you can indicate that the program must be properly structured and fully commented, and that the programming be done in a professional manner. That's a bit of motherhood and the flag, really. You could also dictate that certain functions be used, or require modularity and subroutines, or forbid bit shifts or such, but it won't really be enforceable because it's all a question of interpretation.
Rather than concentrate on trying to control programming style and structure, I suggest you concentrate on making sure you get the tools that will make your subsequent maintenance and upgrading job easier. Require a complete list of I/O, a printout of registers with nicknames, a printout of the logic, a copy of the program on CD (with appropriate protection for the contractor's intellectual property rights if appropriate) and a functional description of the program identifying all the major loops and control functions in text. Screen shots for all the operator interfaces is also helpful, particularly if accompanied by a list of register useage. This is useful to you, and not particular onerous for them. It is also enforceable, because final payment depends on geting documentation that satisfies you.
Beyond that all you can do is take a 2x4 to the purchasing agent and make sure they understand that the selection of contractors cannot be based on low price alone. Create a short list of acceptable contractors, and if a new vendor wants on get a list of references and resumes and check them out.
Last edited: