Software standards play an important role in the development of successful software projects. A typical software project will be subject to many standards, from enterprise-wide architecture standards to project-specific coding style guidelines. Developers who have worked in smaller organizations with fewer standards are often surprised at the large number of software standards some groups have. Standards, if imposed too early during the development of a new technology, can stifle innovation. Organizations producing large, complex software projects, however, cannot successfully do so in the long run without careful selection of the appropriate standards. This section discusses some of the various types of standards that are typically found in successful software organizations.
You should only have a few enterprise-wide architecture standards and they should be simple ones. Some examples of these standards would be:
All information should be delivered to users in a web browser format.
Interfaces between systems should use a publish and subscribe methodology for information exchange.
Note that these standards are both hardware platform and software technology independent. For instance, in the first standard, there is no statement that says the web browser should be on a Unix workstation, a PC, a Mac, a TV boxtop browser, or for that matter a cell phone display. Each department can choose its platform based on its specific needs. This is not to say that the IT group might not choose to implement a standard corporate desktop, it is just that this decision would be independent of the software architecture standard. Similarly, in Standard 2 above, publish and subscribe is a generic technology. You might implement it with a CORBA-based system, a relational DBMS, or even a FORTRAN program.
Code conventions are important to programmers for a number of reasons:
80% of the lifetime cost for a piece of software goes to maintenance.
Hardly any software is maintained for its whole life by the original author.
Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.
If you ship your source code as a product, you need to make sure it is as well-packaged and clean as any other product you create.
For the conventions to work, every person writing software must conform to the code conventions. Everyone. There are many sample coding standards for various languages available on the Internet. In Appendix B, we have included a sample Java coding standard.
There is nothing more frustrating than getting a non-descriptive help message from an application that confuses you more than it helps you. In the early days of software development, "Help" information was contained in long rows of three-ring binders stacked along the wall of the terminal room. As window-based interfaces became popular, user interface coding standards allocated standard positions for the "Help" button. For instance, the Macintosh has perhaps the most standard Help button location that is always on the top right of the menu bar. Today, of course, help standards specify much more than the location of the Help button. Four of the more popular help standards include Microsoft's WinHelp, Oracle Help, Netscape's NetHelp, and JavaHelp. Each provides a set of utilities for authoring, storing, delivering, and displaying help within applications.
From implementing a standard "Help" screen to making sure developers have adequate whiteboard space, these are some of the many factors that will effect the productivity of your programmers and the quality of the code they will develop.