Education

7.2 Education

Education of personnel in the proper performance of their tasks is essential to the production and use of quality software systems.

Education, while rarely provided by the software quality organization, is a necessary step in the provision of a quality product. The software quality practitioner is responsible for monitoring the educational activities that surround the development and use of software systems. Education is one of the elements of the SQS that is most often delegated to another organization within the company. While software quality practitioners will monitor and report on the educational status with regard to each development project, they are rarely the educating facility. Most companies use an in-house education group, video courses, outside instructors, outside seminars, and hands-on or on-the-job education and training methods.

Programmers must be taught the proper use of programming languages and software development facilities for their assignments. Users must be taught the proper ways to use the software system and its results. Operations personnel need to learn the correct procedures for running the system. And, finally, the various support organizations, including software quality, must be educated in the proper performance of their tasks.

7.2.1 Developer education

The production of a quality software system depends heavily on the performance of the producers.

Developers—the designers, analysts, coders, and testers—must know their jobs in order to contribute to the production of a quality software system. All participants must have the proper training and background to permit them to do their jobs correctly. Inadequate education, missing experience, and lack of training all can contribute to lower than acceptable performance and, thus, lower than acceptable quality in the end product.

It is obvious that a system designer who knows little about the system being designed can bring little insight into the solution of the problem. To expect a designer well schooled in accounting systems to be a top performer on a radar guidance system, without specific education in radar theory and practice, would be an invitation to a product with questionable reliability. There are new techniques for design and programming being developed at a rapid pace. While not every new technique can, or should, be applied to every project, the more experience and education in the various techniques that a staff has, the more likely it is that the best approach will be taken. Some techniques, like structured design and object-oriented programming, have been widely accepted as standard approaches to be taken in all cases. Newer techniques are now beginning to show that, while they are fine methodologies in many situations, structured design and object-oriented programming are not always the best methods. Techniques such as rapid prototyping, automated design, and extreme programming are being shown to be superior in a growing number of applications. Better techniques usually mean better results and higher productivity. Education of the development staff can lead to the implementation of software development methodology that is best suited for the specific application.

Equally important to the development of quality software systems is the fluency of the programming and coding personnel in the language in which the system is being written. One of the more important education concerns of the software quality practitioner is that the developers be knowledgeable in the language to be used for the system. While emphasis is generally focused on the coders, it is also important that designers and testers be well trained in the language. This will help designers express design considerations in terms more understandable to the coders, as well as help the testers understand the intricacies of the code itself.

Another area of educational concern is the background environment to be used during the development. Such things as operating systems and database management systems greatly affect the design and implementation of the software and should be well understood by the developers. Failure to recognize the various characteristics of the software environment can cause many headaches later in operation and testing. Even the operation of the desktop terminal cannot be overlooked in the educational process.

Software development is a labor-intensive activity, and many tools, techniques, and methodologies are coming forth. Computer-aided software engineering; object-oriented techniques; client-server and distributed processing; local-, wide-, and municipal-area and value-added networks; test tools; database management applications; visual development languages; internets and intranets; GUIs; and the like are all areas of challenge to the information technology developer. The quality of the development and the productivity of the developers depend to a large extent on the level of education, training, and experience of the developers.

7.2.2 Support training

Support includes both the development environment that must be maintained and the ancillary activities such as software quality, CM, test, and security.

As already mentioned, there is a need for developers to be schooled in the programming environment such as the operating system and the database management system. They need to know how the environment is going to affect the software being developed and vice versa. Care must be taken, though, that the personnel charged with the creation and maintenance of that environment are well educated in their tasks. In addition, the developers must be well educated in the specific development methodology to be used on a given project. Development methodologies such as structured and object-oriented analysis and design techniques and fourthgeneration languages all require detailed understanding if they are to be applied beneficially.

As Figure 7.5 shows, the development staff is at the center of, and supported by, a much larger environment. Failures in any of the surrounding fields can seriously impact the ability of the developers to accomplish their assigned tasks.

click to expand
Figure 7.5: Developer's world.

The area commonly known as systems programming includes the operating systems and various language systems. Without these, there is no software development at all and effectively no maintenance. The software quality practitioner is responsible for ensuring that an adequate and ongoing education program is provided for the systems programming staff.

Database administration, security measures, and telecommunications are also present in most organizations. Poorly trained or inexperienced personnel in these groups must also receive the necessary training and education to keep them able to cope with the advances being made in those disciplines and the growing dependence of the total organization on them.

The testing group is a frequently overlooked area for education. The test group should be knowledgeable in the system as a whole, the programming language being used, and the programming environment. Armed with such information and knowledge, the testers are able to see areas of potential weakness in the code and can test for those weaknesses.

Finally, software quality practitioners cannot ignore themselves in ensuring that all software personnel have adequate education and training for their jobs. The software quality people must know how to review documents, the standards being imposed on the various projects, how to communicate their findings upward to management, how to accomplish the various audits for which they are responsible, and all the rest of the SQS tasks.

7.2.3 User education

The best system will not perform well if incorrectly used. It is worth restating that if the users of a system do not have full knowledge of how to use the system, the system will not perform up to its capabilities. The system may be underused, which effectively wastes some of the effort put into its creation. It may not work at all, making the whole system a waste. Worst of all, incorrect use of the system may negatively affect other systems being run; sometimes even to the extent of bringing a halt to the whole processing activity. It should be clear that user education is at least as important as developer education.

The two main areas of user education are the inputting of data and the use of the outputs from the system. Data input includes starting the system and telling it what it is required to do for any particular processing exercise. Some systems need only be started, and they then perform a series of preset functions. Such things as process control or standard data reduction systems may fall into this category. Knowing how to start the system is the important point. Other systems require parameters or additional data to be provided. Payroll systems, for example, need to have time records input and may have to have parameters, such as special bonus equation values, entered. The proper provision of existing databases is important in both cases. Finally, some systems are interactive, and the user must respond to the system while it is running, perhaps by providing additional input or giving directions to the systems based on the system's computations or questions. A simple example is the word processing package on which this text was generated. The user entered text into the package, and the package occasionally asked for directions on what to do in certain situations, such as reaching the limit of the working memory allotment.

The use of the produced information is of equal importance. If a security system detects an attempted breach of the secure area, the user must have full instructions as to what action to take. This is true whether the breach attempted is of a data security system or of a building. If the system has not been designed to respond with some action on its own, the user must take the appropriate action.

More often, though, the output is in the form of business or scientific data in one format or another. Business users and users of scientific data must understand what they are receiving and what to do with it. At other times, education in the use of the output will be as simple as informing the user to whom a particular printer report is to go. Whatever the specific system requires, though, with respect to inputs and outputs, the user must be properly trained in its use.

Other user educational considerations include such things as the limits of the system. These may involve valid input data limits, number of entries that the system can accept at one time, the speed of input, limits on the size or type of outputs, access control passwords, frequency of use in a particular time period, and so on. Each user must be aware of the capabilities built into the system so those capabilities are not violated or underused. Asking more of the system than it can provide may lead to errors or crashes, while underutilization may lead to underestimation on future projects.

Dr. W. Edwards Deming was a strong proponent of employee training and development. Implementation of new software products and systems normally brings change to the way users perform their jobs, or the environment in which they work. New jobs and tasks may be created, while existing jobs and tasks may be vastly altered or even eliminated. Management of this type of change offers many educational and development opportunities.

The software quality practitioner's role in user education is much the same as his or her role in developer education. That is, the monitoring of the user education plans and progress so that the proper education is provided. Software quality control practitioners may even take the education themselves as a part of the acceptance test procedures. By exercising the system in the same manner as the intended users, the test team can often find flaws not only in the software but also in the educational programs.

7.2.4 Operations training

If a system is not run properly, results are suspect and users cannot rely on the information provided. Operation includes everything from computer power-up to report delivery. Virtually anything outside of the user, at the terminal at his or her desk, can be thought of as the domain of the operations organization. Operations loads the data media, starts the various applications, monitors throughput, puts paper in the printer, delivers reports to their intended recipients, and keeps the operational environment sufficient for the processing load being demanded by the developers and users. Training in this area encompasses an extremely wide range of activities. And, of course, there is a correspondingly wide range of potential problems if the personnel are not properly and completely trained in their functions.

In the early days of computer centers, the operations group had to contend with only the running of the jobs. The jobs were generally run in the order in which they were submitted, and the reports were placed in a mailbox-like slot for someone to retrieve. As the computing industry has matured, the complexity of the computer center activities has increased many fold. Multiple processors are running multiple jobs, many of which were submitted at the same time with multiple priorities. These, in turn, may be generating multiple outputs on multiple media. Operations personnel must be knowledgeable in job sequencing, computing hardware operation, data entry and validation, report distribution, remote job entry and computing, security, job control languages, defect reporting and correction, long-range and short-range facilities planning, space allocation, safety, and a multitude of other considerations. Training must be provided in most of these fields, since on-the-job training often takes too long for a new person to become proficient and productive.

In some cases, generally in very large or very small data centers, on-the-job training is feasible. In a large shop, new employees are assigned to small, specialized tasks such as tape or disk loading and unloading. They are then rotated through the various tasks until they have learned them all. A small shop usually has a simple, small-scale computer whose operation can be learned quickly. A small shop also has a correspondingly small set of applications with which to deal. The bulk of computer centers, however, usually include multiple central processing units or servers, distributed printer stations, dial-up and Internet equipment, and several types of data media. When experienced personnel cannot be hired, they must be trained by the organization.

Software quality practitioners should monitor the operations activity and the levels of training present within it. Close coordination with the manager of the operations area will ensure that proper training is provided to the operations personnel.

7.2.5 Education delivery

Various educational needs are met in different ways, but there are six major methods of delivering the needed education. Each of the following methods is applicable to one or more of the education and training needs discussed so far:

  1. On-the-job or hands-on experience;

  2. Formal classes;

  3. Seminars and workshops;

  4. Videotapes and demonstrations;

  5. Conferences and user group meetings;

  6. Web-based courses.

Developer education should include all the methods that are suited to the individuals' needs. On-the-job experience is the slowest method for most development tasks, but it can be of value to the new employee who has had some formal education in computer programming, computer science, or the specific application area being developed. Formal classes, either in an actual atmosphere classroom, via the World Wide Web, or through less formal events such as seminars, workshop, or conferences, are valuable to both the learning of new applications areas and the gaining of familiarity with features of new development environments. Languages are best learned through a formal classroom experience coupled with hands-on exercises. New design techniques are often the subject of seminars or workshops. Demonstrations can be used to show how new equipment, such as a workstations or desktop terminals, is to be utilized.

Support personnel have much the same educational requirements as do the developers, though in different areas, of course. The methods that seem to best serve support education are also similar to the developers. Classrooms are appropriate for operating system and language familiarization, as well as database operation. For highly experienced personnel, seminars and workshops are sometimes sufficient. If the subject to be learned is an extension of a system already in place in the organization, hands-on experience and demonstrations can be used.

User education can sometimes be provided with demonstrations or in-house seminars, or even on-the-job learning if the system is simple or similar to or an extension of existing systems. New, large-scale systems frequently need formal classroom education when the range of user opportunities is wide or there is much user system interaction. In the latter case, hands-on experiences are justified as well. Videotapes are less usefulunless they are an adjunct to demonstrations or formal classroom presentations.

Operations training is almost always a series of demonstrations of the proper way to perform a particular task. This method is usually enhanced by hands-on or on-the-job experiences. For new equipment, formal classroom and videotapes presentations are often appropriate. When new environment systems (operating systems, languages, database management systems, and the like) are being installed, more formal training is needed, and the classroom may again be the preferred method. Finally, hands-on experience and demonstrations will be an almost regular part of the routine in a large data center as additional data storage media are installed and enhancements to the environment are made.

Once more, it should be made clear that the role of the software quality practitioner in the training of personnel is monitoring and reporting the status of the various training situations. The actual delivery of the education and training is normally the responsibility of the education department or the individual group, such as development or operations. The software quality practitioner keeps management aware of the need for education and training and their status. Table 7.1 suggests typical types and sources of training and the recipients for whom they may be suited. There are no hard and fast rules; each organization must use the means at its disposal.

Table 7.1: Training Needs and Sources

Training Need

Recipient

Training Source

Application area

Developer

Classroom/Web

Design methods

Developer

Classroom/Web/Vendor

 

Quality group

Demonstration

Operating systems

Developer

Classroom/Web/vendor

Database management systems

Data administrator

Vendor

Language

Developer

Classroom/Web

Testing

Tester

Seminar/on-the-job training

SQS

Quality group

Seminar

 

Developer

Demonstration

Operation

Operator

Demonstration

Application use

User

Demonstration/classroom/Web

 

Customer service

Classroom/Web

Networks

Developer

Seminar/demonstration

 

User

Demonstration

7.2.6 Education wrap-up

While rarely provided by the software quality practitioner, education is a necessary step in the provision of a quality product. It is one of the elements of the SQS that is most often delegated to another organization within the company.

Fluency of the programming and coding personnel in the language in which the system is being written is very important. So, too, is familiarity with the background environment to be used during the development.

Training for the support environment must not be overlooked either. Systems programming (the operating systems and compiler-assembler software), database administration, and the testing group should be thoroughly trained in their tasks. Software quality practitioners must not forget themselves in ensuring that all software personnel have adequate knowledge in their responsibilities.

If the users of a system do not have the proper education in its use, the system may perform inadequately and be seen as less than acceptable. The operations staff must also be schooled in the operation of the system in order for it to supply the expected outputs.

The software quality practitioner must keep management aware of the needs for training and education.



Practical Guide to Software Quality Management
Practical Guide to Software Quality Management (Artech House Computing Library)
ISBN: 1580535275
EAN: 2147483647
Year: 2002
Pages: 137
Authors: John W. Horch

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net