Home Page

SDLC Course

Manage Project

Define Project

Design System Architecture

Design Components

Develop Components

Integrate System

Deploy System

Revise System

What's New

Contact Us

Favorite Links

About Us

CHAPTER 4

PROGRAM AND HUMAN JOB DEVELOPMENT

4.0 Introduction

The purpose of this stage is to transform the complete design into executable manual jobs and computer programs which mat be tested. The process of synthesizing procedural practices into job descriptions can occur independently of the program developmental effort and has no necessary precedence. This stage should be used as a guide for the programmer, the person responsible for defining manual jobs, and for the manager of such personnel. It should be used as a checklist for activities that must be performed, accompanied by some guidance on possible methods for solving those activities. There are no flowcharting, coding standards, etc., as these do not conform to the purpose of this manual. Only in very rare cases would any activity described here be considered as being optional

In many system development efforts, the development of the manual portion of the subsystem is overlooked and ignored in the shadow of the programming effort. This is a serious oversight because computer programs can only be as effective as the manual processing which they support.

It is generally true that the most normal cause of automated system failure can be traced to the man/machine interface points of the system, and, therefore, this area requires extreme care. Only in special cases where there is very little manual interface to the system, to where this is very specialized (such as for engineers using conventional FORTRAN), may the manual process be downgraded.

This stage covers the process of verifying the program specifications produced in Detail Design, producing coding diagrams, coding the programs, compiling and desk checking the programs, and, finally, debugging the programs to the point at which they may be turned over to those responsible for systems testing. This process will involve several people with normally one person having the primary responsibility. The other people will assist him and review his work.

The techniques of structured programming mentioned in 3.6 may be used. They will not be effected unless the structured programming approach was used at the detailed design level. Considerable training is required in order that programmers can fully utilize such techniques. In many cases structured programming may only be used in a modified form for various reasons including the limitations of the programming languages used. In any case, common sense should be used to guide the way in which structured programming is to be implemented.

The major concern in programming is that it be accomplished efficiently and yet thoroughly. Any good means of saving programming time, such, as automatic coding, program generation, desk debugging, flowcharting, and documentation aids should be considered and applied wherever possible.

Special care is called for in the case of multi-programming and multiprocessing due to the increased complexity of the programming effort. This is also true of programming for communications systems.

Before actually starting program development, it is advisable to check the completeness and clarity of the program specification in order to lessen repetitive efforts due to later additions and changes.

Distinction should be made between control and processing module flowcharts. The control flowcharts forms part of the program definition and facilitates the logical division of the complete program into modular parts. These parts consist of routines and subroutines (processing logic) for which detailed flowcharts are prepared as required. Then routines and subroutines are then written in a modular fashion; each part constructed so that it is as independent as possible, allowing for program segmentation.

Advantages of this modular arrangement are that:

· It allows division of work within one program

· It furthers the standardization of problem solutions, both in logic and in coding

· Corrections are limited to one subroutine only, irrespective of the frequency of recurrences of the subroutine concerned in a program

· Each modular part of the program can be changed independently

· It facilitates segmentation into overlay structures

· It facilitates testing

The activities included in this stage are for a large-scale system effort; for smaller efforts, some may be combined or omitted. In this event, all activities not conducted should be noted by memorandum (including in the Project File) accompanied by reasons for omission. Activities included in development are to:

· Synthesize position descriptions for personnel subsystems (4.1)

· Establish personnel and environmental requirements (4.2)

· Develop detailed program flowcharts (4.3)

· Code programs (4.4)

· Prepare Source decks and compile/assemble programs (4.5)

· Prepare program (module) debug data (4.6)

· Debug programs (4.7)

· Prepare program and human job development report (4.8)

The specific products developed by these activities, and included in the Project File are:

· Personnel position descriptions

· Personnel performance standards

· Personnel assessment procedures

· Job specifications

· Skill and knowledge requirements

· Personnel staffing requirements

· Training course outline

· Recruiting and selection criteria

· Work aids

· Human environment specifications

· Program control module flowcharts

· Detailed program (module) flowcharts

· Coded programs

· Program source decks

· Checked program compilations assemblies

· Object program modules

· Branch point analysis charts

· Program debug data

· Debugged programs

· Program debug results report

· Program and human job development report

 

 

Exhibit 4.0-A. Suggested Program and Human Job Development Activity Network.

 

 

4.1 4.2

 

 

 

4.5 4.4 4.5 4.7 4.8

 

 

4.6

4.1 Synthesize position description for personnel subsystems

4.2 Establish personnel and environment requirements

4.3 Develop detailed program flowcharts

4.4 Code programs

4.5 Prepare source decks and compile assembly programs

4.6 Prepare program (module) debug data

4.7 Debug program

4.8 Prepare program and human job development report

 

 

4.1 Synthesize position descriptions for personnel subsystems

In this activity, the procedures developed in Detail Design are grouped into position descriptions for personnel. A position or job is defined as the workload (in terms of procedures) assigned to one man in the proposed system. There may be one or more procedures involved in one personnel position description, or one procedure may be divided into several positions, depending on the size and complexity of the procedures. The grouping of procedures should be along logical, functional lines; that is, personnel should not be expected to accomplish too many varied procedures, especially if they require different hardware, work aids, computer interfaces, skills, or locations. The more complex the procedures, the more this becomes true. These procedures include those relevant to conversion.

The important factors to remember when creating these descriptions are:

· Similar procedural patterns,

· Compatible time cycles,

· Same or similar inputs or input sources,

· Continuity of procedures,

· Even workloads,

· Consistent level of procedural skill requirements.

Included in these position descriptions are expected levels of job performance. These standards must be defined in such a way as to render them objectively measurable in the light of administrative requirements. They also have an important bearing on the design of training, and are used in developing job performance assessment procedures. The performance standards will relate directly to the methods of quality and quantity control devised for the subsystem. The weighing of the various standards will differ somewhat from position to position for the reason that throughput is most important in some cases, while, in others, accuracy of output is most important.

Important components of performance standards are:

· Throughput,

· Accuracy,

· Clarity,

· Completeness

· Consistency.

· Reasonability.

Each worker must be assessed continuously with respect to quantity and quality of work produced. In the present activity, procedures are also developed for measuring performance in accordance with the performance standards. This may include not only development and validation of work sample measures, supervisor rating forms, and other manual procedures, but also the development of computer logic to automatically assess performance.

The performance standards will be used to make projections of the numbers and types of personnel needed. Whenever possible, they should be written so that the effects of trade-off between numbers and skill or experience level can be easily make. Thus, the throughput of an experienced keyboard operator may be twice that of a person who has only recently been trained. It is important that the standards be realistic so that the staffing projections will have a minimum amount of change when the standards are revised.

The total package that would constitute a job specification for an employee would include:

· Position description,

· Procedural descriptions,

· Procedural flowcharts,

· All forms required,

· Personnel performance standards,

· Personnel assessment procedures.

4.1.1 Methods

1. Group procedures according to the function performed (e.g., visual checking of EDP requests).

2. Take each group of procedures and subdivide them according to skill and knowledge requirements. A group should then require a limited amount of skills and knowledge at a consistent level. If a procedure group is to small to occupy one man for one day, go back to step 1 and combine with other groups.

3. If there are still procedure groups to large to be performed by one man, subdivide them on the basis of judgment and on the same or similar inputs or outputs, until all procedure groups are of on man-day size.

4. Edit and re-orient procedure groups on the basis of task continuity and even work loading.

5. Iterate these steps until suitable and approved personnel position descriptions evolve.

6. For each human job, estimate the minimum and expected throughput requirements for both new and experienced personnel. State the possible causes and impact of variance from the estimates.

7. State the degree of accuracy required in the performance of the jobs. State what error rates will be allowed, if any , State any applicable completeness criteria (e.g. partially completed forms). State any expected or allowed consistency variations, if appropriate.

8. Identify any possible bottlenecks and state how they can be eliminated or reduced in impact.

9. Where possible, express the ways and means of measuring the above criteria for each specific position. The measurement tools should be easy to apply, directly understandable by both the person doing the measurement, and appear reasonable to all concerned.

10. Collect all appropriate documentation for the position to form a job specification.

4.1.2 Products

· Job specifications,

· Personnel position descriptions (see Exhibit 4.1-A).

· Personnel performance standards (see Exhibit 4.1-B).

· Personnel assessment procedures (see Exhibit 4.1-C).

4.1.3 Background

· Procedural descriptions (3.1),

· Procedural diagrams (3.1),

· Procedural practices (3.1),

· Manual operating forms (3.2),

· Computer I/O layouts (3.2),

· Human engineering analysis documents (2.8).

 

Exhibit 4.1-A. Example of a Personnel Position Description.

 

1. Procedures: forms distribution; forms ordering

a. These procedures have related time cycle requirements and similar patterns.

b. These procedures provide inputs to each other.

c. These procedures are mutually interdependent.

2. Depending on the volume of supply activity, the task may be performed by one or more persons. If more than one clerk is required, it is recommended that the division be made by types of forms, rather than by breaking down each procedure separately, per person.

3. The task duties are fully described by combining the procedural descriptions.

4. Skills and knowledge:

_____________________________________________________________________________

Distribution Ordering Forms

___________________________________________________________________________________________________________________________________________________________

Company/system

Knowledge of organization T E T

Objectives of organization A A A

Problem areas T T T

Forms

Users T E T

Suppliers E T T

Other locations T T T

Requisitions T E T

General

Human relationships A A A

Standards and procedures T T T

Ledgers and inventory control T T T

_____________________________________________________________________________

T - through: A - average; E - elementary

_____________________________________________________________________________

 

 

 

 

Exhibit 4.1-B. Example of a Personnel Performance Standard.

1. Will fill all forms requisitions within four hours of receiving the request.

2. Will keep a ledger showing weekly, monthly, quarterly, and annual totals for those who have received supplies of forms.

3. Will re-order those forms which have reached the pre-determined re-order level.

4. Will propose monthly charges for the re-ordering of stock for the purpose of adjusting levels, depending upon forms usage.

5. Will maintain on-hand and re-order stock levels.

 

 

 

Exhibit 4.1-C. Example of Personnel Assessment Procedures

 

1. All requisitions not filled within four hours will be considered as poor performance, unless the reason for non-performance was beyond the control of the Supply Clerk.

2. Quarterly inventories will be made, and the stock compared with the ledger totals. More than two percent variance will be considered as being poor control.

3. Stock levels will be checked on a random basis, and, if below the re-order point and no re-order has been submitted this will be judged as being poor performance.

4. If a form remains in an "overstock" condition, and no recommendations has been made for its reduction in quantity, or its elimination, then this will be evidence of poor performance.

5. The general neatness and organization of the forms supply room, ledgers and other paperwork, will be examined as a measure of performance.

6. Complaints, or statements of appreciation, will be considered as evidence of performance after these have been validated. If a sudden requirement for a form depletes the stock, and the clerk arranges for a temporary loan from another source to meet the demand, this will be taken as evidence of good performance.

7. Assistance provided by the clerk to personnel in the filling out of requisitions for forms will be considered as measure of performance, as will his general impression made upon the users; i.e., being helpful, courteous etc.

 

 

 

4.2 Establish personnel and environmental requirements

In this activity, initial estimates are made of the types and numbers of personnel required by the system. The numbers required will be considerably more tentative at this stage than the corresponding estimates of skill, knowledge, and aptitude requirements. The former estimates depend on a accurate operating statistics, such as volumes, frequencies, and peaks, where the latter can be developed in large measure through reference to Procedural Practices and Personnel Position Descriptions.

The Personnel Position Descriptions are analyzed and detailed lists are developed of skill and knowledge requirements for each job. Training and/or recruiting programs will be established from these lists; therefore, attention to detail is important.

The initial estimates involve combining the expected volume of work with personnel performance standards; errors in either can lead to staffing problems. The estimates should be based on a time-phased basis, and not on the final totals expected. The transfer of personnel from positions which will later be eliminated should be included in the estimates. The additional personnel requirements for the conversion and implementation period must be considered, in addition to the personnel who will be required for normal system operation. Based on the numbers of personnel required and there associated skills and knowledge, the needs for training, personnel selection, and work aids are developed.

Training and personnel selection are closely related activities. If skilled and experience personnel are selected, the training costs and requirements will be much less; however, in many cases:

· Personnel with the desired training and experience are not available, are expensive, or are not familiar with the company.

· Personnel displaced by the new system are available for training in new positions.

· Organizational policy will require internal filling of positions, if at all possible.

Training requirements will tend to fall into three broad categories:

· System orientation at all levels - an established framework within which various positions exists.

· Specific position training - detailed training to enable a person to accomplish his assigned job.

· Cross-position training.

The training plan must establish the requirements in all areas and state how these requirements are to be met. The plan will have to recognize both short and long range training requirements.

Potential types of training available are:

· Formal classroom courses

· Workshops

· Video tape courses

· On-the-job training

· Programmed instruction courses

· Computer-aided instruction (CAI).

These may be used separately, or in combination, depending on the particular requirements. As training courses require time to develop and test, the activity must be begin as soon as possible after the need is identified. Sources for training courses and materials are:

· Existing courses within the organization

· Manufacturer-provided courses and materials

· companies that specialize in providing training or training materials,

· colleges and universities.

The training program should be built as an integrated whole. Probably some training will be done in-house, and some from outside. Training is a recurring activity that will extend throughout the life of both the system and the individual.

A training specification should be built around the "behavioral objectives" that can be determined. These

objectives should be as specific and measurable as possible and be directly related to the task the trainee is to perform upon completion of training. The measure of a training program is not how well trainees do on tests but how well they perform after completion of training.

Not all personnel who are satisfactory performers are adequate teachers. On-the-job training should be carefully controlled and have a syllabus and behavioral objectives similar to those of any other course of instruction.

Selection of personnel within the company has certain advantages:

· It aids in solving problems created by displacement of personnel.

· It aids in maintaining employee morale.

· It allows employees to change their line of work while remaining within the organization.

· Fewer problems in adjustment to the company’s operating methods can occur.

· There is a better chance that the qualifications of a present employee will be known in detail, Including his attitudes and work habits.

In selecting personnel, one has to be able to discover those who are:

· Capable of filling the position (after necessary training),

· Interested in filling the position

· Within any restrictive criteria (age, salary, etc.)

· Available.

The determination of capability is a difficult problem and requires a full understanding of the requirements of a position. Too often the selection criteria overqualified for a position, resulting in dissatisfied employees. Some ways of assessing capabilities are by:

· Aptitude tests,

· Employment record,

· Previous training,

· Interviews

· Recommendation.

Aptitude tests can never be the sole criterion for selection. They are merely indicative and do not measure such critical factors as initiative, perseverance, etc.. In addition, only a few positions have aptitude tests which achieve any reasonable measure of reliability. Personnel resumes and other employment records are apt to be inflated and must be treated with care. Usually it is easier to evaluate the employment record of a person within the company as against someone hired from outside. Previous training, including university, is an indicator but it may only prove the person t be a good student, not necessarily a good worker, and vice versa. Interviews can be quite useful if they are conducted by a person qualified both as an interviewer and in regard to the position to be filled. If the interviewer does not understand the position, he cannot ask the right questions or evaluate the replies. Recommendations also must be carefully evaluated. The more specific they are, and the more confidence that is to be placed in the person who wrote them, then the more valuable they are. Thus, determination of capability is a difficult and time consuming task that should not be sighted.

A recruiting program within the company can be initiated by general announcements and requests to supervisors and others for the names of prospective personnel. In both cases, positive inducements will usually have to be offered to supervisors if they are to release and/or recommend good personnel rather than try to remove "deadwood" from their section. The announcement should be clear as to:

· the nature of the position,

· the requirements of the position,

· how to apply for the position.

Recruiting from outside the company be done by:

· personal contacts,

· newspaper advertisements,

· advertisements in professional journals,

· recruitment at technical schools, universities, etc.,

· use of employment agencies.

Some, or all, of these methods may be used singly or in combinations. The personal contacts of employees within the organization should be utilized, since they may know people who are qualified. In all cases, time delays must be expected in order to:

· specify training requirements

· acquire or develop needed training courses and/or materials

· prepare internal and/or external recruiting material

· await position announcements and responses

· evaluate responses

· acquire personnel for training and/or position performance

Necessary work aids for defining the training requirements for the positions should be described. Work aids infer any aid that is available to the person during the course of her performance of an assigned task. This may be a document, mechanical device, or a specifically designed device for the improvement of task performance.

In addition, detailed human engineering specifications are prepared for those system operations which require the presence of people. Too, often, the environment in which people work has a negative effect on their performance. It is better to adjust the environment to human needs rather than force people to attempt to adjust to the environment. The majority of people operate best within a rather narrow range of conditions as regards temperature, sound, etc., and exposure beyond those ranges can bring a lower performance.

In general, these specifications cover:

· Facilities description

· Environmental controls

· Equipment considerations

· Work aids

· Safety.

In many cases the facilities, environmental control, etc., are in existence and cannot readily be modified. If they do not meet the requirements, then the cost of altering them should be related to the cost of degraded performance by having to operate in an unsatisfactory environment. The goal is to create an environment which will reduce human errors and not create irritation and frustration. In some cases, very minor corrections can drastically improve worker productivity.

The special requirements of equipment such as:

· power requirements

· special flooring for heavy loads and cables

· unique environmental controls: temperature, humidity, dust, etc.

· space for entrances, location, etc.

These requirements are considered here only insofar as they impose environmental constraints. In some cases, the needs for equipment are more severe than those for people and can impose constraints, such as a ban on smoking in computer rooms.

4.2.1 Methods

1. On the basis of volume estimates and transactions per day (estimates included in the job specification) predict the personnel requirements for each task description.

2. For each job, list the specific types and levels of skills and knowledge required for the job. For example, the chief accountant might be required to have an elementary knowledge of programming.

3. On the basis of skill and knowledge requirements and number of jobs that require them, appropriate training, hiring, etc., can be determined. For example, a training course would not be developed if only on or two people required that specific training.

4. Determine general system orientation training required for the various levels of personnel and the types of personnel and the types of training needed that are common to many positions.

5. For each specific personnel position description, determine the training requirements in terms of behavioral objectives. In some cases, this will require training of each of several procedures comprising a personnel job description.

6. Clearly define the training requirements and specify how they should be met: i.e. by formal course, programmed instruction, etc. . Determine and evaluate potential internal or external sources for the training.

7. If formal training is required, select a course, or develop one. In both cases, apply stringent criteria to ensure that the selected or developed courses are relevant to the needs of the positions(s).

8. Prepare an overall training outline of all courses and instructional material available to employees. Prepare detailed course outlines, specifying purpose, prerequisites, contents, and evaluation criteria.

9. Prepare work aid descriptions for positions requiring the development of the aids.

10. Develop selection criteria for personnel to fill positions and determine

11. Determine evaluation criteria for training, work aids, and recruitment procedures.

12. Prepare and carry out recruiting programs, if required.

13. Make a list of the required equipment with requirements for space, power, environmental control, etc. Relate space-consuming work aids to their equipment. Make a list of required personnel and space requirements for those personnel.. Allow for anticipated growth rates in the system design.

14. Using function flow diagrams, personnel position descriptions, etc., and the organizational structure, establish the relationships between the various groups of people and equipment. If there is a reproduction control point, it should be related to the physical equipment location. Groups of people who interact frequently should be located near each other. Relate supply and distribution requirements to the men and machines affected.

15. Estimate space and environmental requirements. Using building plans, allocate space for as near optimal human usage as possible. Certain parts of the allocation may be rigid due to equipment or other constraints. If required, suggest changes in existing or planned buildings or rooms.

4.2.2. Products

· Skill and knowledge requirements (see Exhibit 4.2-A).

· Personnel staffing requirements (see Exhibit 4.2-B).

· Training courses (see Exhibit 4.2-C).

· Recruiting and selection outlines (see Exhibit 4.2.-D and 4.2-E).

· Work aids.

· Human environmental specifications:

- office, equipment, l about

- traffic flow analysis

- completed checklists specifying requirements (see Exhibit 4.2-F)

4.2.3. Background

· Procedural diagrams (3.1).

· Procedural practices (3.1).

· Personnel position descriptions (4.1).

· Personnel performance standards (4.1).

· Job specifications (4.1).

· Human engineering analysis documents (2.8).

· Manual operating forms (3.2).

· Layouts and other descriptions of existing facilities to be used or modified.

· Work aid descriptions (3.1).

· Company personnel resources.

· Company training resources.

· Outside training resources.

· Outside personnel resources.

 

Exhibit 4.2-A. Example of Skill and Knowledge Requirements.

Position

Type of personnel

Skills, Knowledge, Experience

Project Manager

Senior data processing expert

Basic Leadership qualities.

Through knowledge of project management techniques

Through knowledge of the PACs operations.

High ability in the area of quality control.

Appropriate technical knowledge.

PACS Coordinator

Project planning expert

Special experience and knowledge in project planning in project planning.

Through knowledge of PMACS.

Experience as a project manager.

Ability in working well together with senior personnel.

Basic knowledge of the overall organizational goals, procedure and structure.

PMACS Operations Supervisor

EDP operations staff

Through knowledge of PMACS.

EDP operations procedures.

Clerical operations procedures.

Basic knowledge of the overall organization goals, procedures and structure

 

 

 

Exhibit 4.2-B. Example of Personnel staffing Requirements.

Personnel

     

Availability for work

Task

 

Processing

 

Month 1

Month 2

Month 3

Month 4

Description

Document

Standard

Expected Volume

Add

Total

Add

Total

Add

Total

Add

Total

PMACS Coordinator

Procedure PM21

Supervise, monitor and assist in all project planning

17 Projects with 10% growth/year

1

1

0

1

0

1

0

1

PMACS Operations Supervisor

Procedure PM22

Supervise all operational aspects of PMACS. Process and correct all errors

2 project plans, 125 time sheets per week

1

1

0

1

1

2

0

2

Project Manager

Procedure PM20

Manage all projects using PMACS system

17 projects, 12 project managers and 125 employees

0

12

0

12

2

14

1

15

     

Totals:

2

14

0

14

3

17

1

18

1. Conversion is scheduled for four (4) months beginning 1 January 1975.

2. PMACS supervisor and PMACS coordinator will be brought from present system and phased into conversion.

3. All project managers will have to be trained on new systems, especially planning and control procedures, as well as procedures to be followed to correct errors.

Estimated training: PACS Coordinator: 4 weeks

PMACS Operations Supervisor: 2 weeks

Project Managers: 1 week

4. Delay in training will delay conversion.

5. Overtime will be required, especially when planning new projects.

6. At end of conversion, programmers will be used for maintenance of new system.

 

 

Exhibit 4.2-C. Example of Training Course Outline

2.6 COBOL

2.6.1 PURPOSE To teach the student how to effectively program in Common Business Oriented Language (COBOL) to solve typical data processing problems.

2.6.2. PREREQUISITES 1. Approval of supervisor and assistant chief of EDP depart- ment to take the course.

2. Satisfactory completion of the basic IBM/370 assembly language course.

3. Completion of the IBM Programmed Instruction Course in COBOL.

2.6.3 COURSE OUTLINE 3 weeks

1. Introduction, entrance, test, and overview (1 day).

2. COBOL Input/Output Processing (1 day).

3. Identification and Environment Division (1 day).

4. Data Division (2 day).

5. Procedure Division (2 days).

6. Written Test, Review, Write Program Assignment I (1 day).

7. COBOL Debugging Language, Program Assignment II (1 day).

8. Report Writer Feature (1 day).

9. SORT Feature, Program Assignment III (1 day)

10. Source Program Library Feature, Program Assignment IV (1 day).

11. Special Features and Techniques (1 day).

12. Programming Problem V. General Review (1 day).

13. Complete all Programming Problems (1 day).

14. Final review and end of course examination. Critique of course by students. Explication of any problem areas uncovered by tests and/or program-problems.

2.6.4 REMARKS 1. All test problems will have been approved by EDP department as being relevant to their needs, present or projected.

2. The student will be evaluated on:

a. Number of complies to reach a clean compile.

b. Whether the program accomplishes what is set forth in the program specifications provided to the student.

c. The number of runs required to achieve successful results.). The manner in which he documents his programs.

e. Results of written tests.

f. Classroom participation.

 

 

Exhibit 4.2-D. Example of Interview Forms.

The checklist should be completed immediately after the interview.

DATE OF INTERVIEW: TIME START: TIME END:

Where interview took place: _____________________________________________________________________________

_____________________________________________________________________________

Reason for interview: __________________________________________________________________________________

Referenced Applicable Documents: _______________________________________________________________________

Person being interviewed:

Full name : ___________________________________________________________________________

Mailing Address: ___________________________________________________________________________

_______________________________________________________________________________________________

Phone: Office ___________________________________ Home __________________________________

Interviewer: Name: _____________________________________________________________________________

Organizational Element: _____________________________________________________________

Phone: _____________________________________________________________________________

Personal Data: ________________________________________________________________________________________

A. Punctual: ________________________________________________________________________________________

B. Appearance: ______________________________________________________________________________________

C. Ability to communicate and express himself: ___________________________________________________________

___________________________________________________________________________________________________

D. Attitude: ________________________________________________________________________________________

E. Job Stability: ____________________________________________________________________________________

F. Reason for making position change: __________________________________________________________________

G. Overall Impression: _______________________________________________________________________________

Technical Data: ______________________________________________________________________________________

A. Experience: ____________________________________________________________________________________

B. Education: ____________________________________________________________________________________

C. Expression of competence in terms of answering questions presented by interviewer: _______________________

__________________________________________________________________________________________________

D. Other: _________________________________________________________________________________________

Any attachment detailing technical competence: ____________________________________________________________

Recommended Action: __________________________________________________________________________________

Signature: __________________________________________________ Date: _____________________________

 

 

Exhibit 4.2-E. Example of Employment Application.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To Be Supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Exhibit 4.2-F. Example of Facilities and Environmental checklist.

 

Checklist

1. Can all equipment be reached for repair?

2. Can all equipment be reached for normal use?

3. Have congestion points in the flow of people been eliminated?

4. If an upper limit to the number of people in a given area is imposed by air conditioning or similar constraints, has this been accounted for in the layout?

5. Have work flow analyses been performed to minimize:

· Conflicting movement of people

· Distances traveled in normal work

· Backtracking

6. Have communications installation points been designed with work requirements as a controlling factor?

7. Are sufficient desk, chairs, cabinets, available and properly designed for the work to be accomplished?

8. Are offices and partitions designed so that:

· Traffic flow is not disrupted,

· Distractions are minimized.

9. Are sufficient washrooms available and easily reached?

10. Is a special smoking area available for those who may not smoke in their normal place of work?

11. Are supply cabinets, rooms, etc., located so as to be accessible for those needing supplies?

12. Are reproduction facilities located so as to be accessible but not cause congestion points?

13. Are all space consuming job aids accounted for in the layout?

14. Is the type and intensity of lighting adjusted to the type of work being performed? Special provision should be made spot lighting, when required for detailed work?

15. Are there excess noise levels: The requirements for sound absorption will vary depending on the type of work being performed and on the potential sources of noise.

16. Is the temperature range correct?

17. Is the humidity and dust content, etc., correct for the working environment?

18. Are appropriate work aids provided?

19. Are the following available:

· An automatic alarm system in the event of fire

· Fire extinguishing equipment compatible with the type of equipment; e.g.. CO2 for electrical fires

· Emergency ventilation to prevent personnel from being overcome by smoke inhalation

· Well marked evacuation routes?

20. Are first aid kits available, and are telephone numbers for fire, medical, and police assistance

prominently displayed?

21. Are there fire-resistant materials for floors, walls, etc.?

22. Are there special storage areas for materials which are highly inflammable, or which may produce poisonous gases?

23. Is there special protection for easily damaged items such as:

· Grounded and shielded electrical equipment (if necessary)

· Power lines, including electric typewriters, so positioned that they cannot be tripped over or damaged by supply trolleys or similar equipment

· Master control switches placed at the emergency exits, to make them readily accessible?

 

4.3 Develop detailed program flowcharts

This activity can be considered as being optional in certain cases. Conditions governing the need for a detailed flowchart care:

· The length of the routine to be coded.

· The complexity of the routine to be coded - measured by such factors as:

- number of branches,

- Number of switches,

- Number of decisions,

- Complexity of decisions,

- Number of ways in which a routine can be exited,

- Variety of processes occurring in the routine, etc.

· Policy decisions of ECP management,

· Whether the flowchart will also be the coda,

· Criticality of the routine,

· The language in which the program will be coded.

A detailed flowchart will approximate the instruction level and be complete enough to guide the coder in the performance of his task. Although each block does not have to represent an instruction, certain blocks should never be combined with other blocks; i.e., decision, input/output, or pre-defined processes.

All the rules which apply to program logic flowcharting apply to this activity, but at a more detailed level.

There is certain software available which can be of assistance to the programmer; one type comprises sets of programs which generate flowcharts from special input cards. Such charting programs have the disadvantage of manually prepared flowcharts. The other type of charting program is that which accepts source deck as input and produces flowcharts ( and frequently some level of logic analysis as output). This type of flowcharting cannot be used initially, but, if the final flowcharts are to be made in this way, then the initial flowcharts can concentrate upon program logic rather than on the neatness, etc., of the drawings, as they will not form part of the final product. Furthermore, it is easier to update computer-produced flowcharts as the new deck can be flowcharted without the manual re-drafting of many sheets.

After preparation of the detailed flowcharts, both these, and the higher level logic flowcharts, should be thoroughly checked prior to coding. Such checking is frequently neglected - lack of time being the standard excuse. However, desk checking of flowcharts is an essential part of flowcharting. Savings resulting from thorough checking are not immediately obvious, but costs of failing to check thoroughly will become all too obvious.

Some advantages of careful desk checking of flowcharts are;

· Timely discovery of basic errors, reducing unnecessary coding and testing effort.

· A better understanding of the program (module) so that errors which might have remain undetected are found during testing.

· The elimination of duplication of operations with consequent savings.

· A continued assurance that the program (module) to be coded is in conformity with the original specifications.

· Maintenance of the modular philosophy of design which can easily become compromised.

At this point, the assistance of another person is very useful. As much as one may examine one’s own work, complete oversights tend to remain undiscovered. The cases not accounted for in writing the program will probably be those not tested for during the testing process. Another person may perceive oversights directly because of his fresh viewpoint.

In order to fully desk check the flowcharts, it will be necessary to have some test data to use in following through the logic of the program (module). This is the first point at which to prepare test data at a detailed level. As the number of conditions that can be manually checked is limited, this set of test data should be carefully selected.

4.3.1 Methods

1. Develop the program control module (PCM) flowchart. This flowchart provides the control and sequence events for all "worker" routines in the program. It should link only to closed subroutines and provide routing logic only. As such, it represents the entire logic of the program in a marco way.

2. Develop a separate row for each recognizable subroutine starting each at the top of the page. Each student should be closed: i.e., able to be linked to/from any point I the program. Show all decision points and I/O commands. Develop the flow down and to the right of a page. Always use standard flowcharting symbols. Be sure to express the exact method of execution. Coding from this flowchart should be almost mechanical.

3. Re-check the flowchart to be sure that all connectors link, number sequences are valid, pages are labeled and numbered, and that the chart is properly referenced to other charts. Labels to be used in coding should be developed and shown on the chart, where possible. Make sure that all data items, files, records, and work areas have been coordinated with the person who is coding the data areas.

4. If at all possible, find a qualified associate to assist in desk checking.

5. Check the formal structure of the flowchart: does it conform to conventions, is it legible, etc.? Check the overall logic structure of the flowchart for conformance to the general logic flow. Check the detailed structure of the flowchart.

6. Give particular care to checking the I/O structure of the program. Check that the program will always terminate in a proper manner. Review the subroutines to make certain that the modular structure had not been compromised. Check all sequence and page numbering.

7. After careful thought, prepare a limited set of test data and use those data to exercise the logic of the program.

8. Make all necessary corrections, adding notes to the flowchart where needed.

9. If necessary, correct the logic flowcharts after approval.

4.3.2 Products

· Program control module flowcharts (see Exhibit 4.3-A)

· Detailed program (module) flowcharts (see Exhibits 4.3-B and 4.3-C).

4.3.3. Background

· Program logic flowcharts (3.6).

· Program decision tables (3.6).

· Program matrices (3.6).

· File record layouts (3.3).

· Data base conversion logic (3.3).

 

 

Exhibit 4.3-A. Example of Program Control Module Flowchart.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To be supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Exhibit 4.3-B. Example of a Program (Module) Flowchart.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To be supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Exhibit 4.3-C. Example of Flowchart Desk Checking Checklist.

General

· Is the program structure modular throughout?

· Are the flowcharts drawn in strict conformance with the standard rules for flowcharting?

· Are all flowcharts clear and readable?

· Are all labels and data objects coded in accordance with standards?

· Are all charts clearly identified as to author, project, page, etc.?

Logic structure

· Is there a clear start and end for each routine? Clear entry and exit(s)?

· I s all initialization required for each routine (e.g., registers, switches, etc.)

· accomplished prior to start of processing of that routine?

· Are all areas reinitialized properly?

· Does each routine have:

- Initialization

- Process

- Means of definite termination?

· Is inadvertent fall through to another routine impossible?

· Are I/O operations consistent with each other?

· Have provisions been made for :

- Read or write errors,

- Duplicate recorder,

- Special I/O characteristics (e.g., re-writes with IBM 360/OS BISAM reads)?

· Is program termination clear and well defined with all files being closed prior to termination?

· Have all input processing activities been completed prior to closing files?

· Are initial and final runs through loops processed correctly?

· Are closed subroutines protected against being altered by other routines?

· Are appropriate explanatory notes available?

Detail structure

· Does each decision box have at least two alternatives with each possible test result represented by a flow line?

· Is every possible condition checked for by decision sequences: i.e. if checking for "l" or "2" or "3", does a line exist for the case where there is some other value?

· Do both flow lines have both an origin and a termination box?

· Do process boxes have one and only one exit and all boxes have only one entrance?

· Are all quantities used on the right-hand side of formula, in decision boxes, or as output data.

· Are the instructions detailed enough so that the coder will know what he had to code without having written the instructions in computer language?

· Is each detail flowchart prepared reflected as a module on the logic flowcharts?

· Does each module flowchart modify only itself and data areas? It must not modify other modules.

· Each module will be reviewed for:

- replacement by standard (common) routine,

- possible logical subdivision or combination with other modules,

- the possibility that it can become a common routine.

· Are all data items identified by data catalog names or ID’s? The same will be true for files and records.

· Are temporary work area labels coordinated with person preparing data areas?

Exhibit 4.3-C. Example of Flowchart Desk Checking Checklist (Continued).

· Is program simplicity emphasized (does it seldom use complex, hard to modify logic)?

· Are complex nested dependencies avoided when possible?

· Is the use of control measures (e.g., block counts, record counts, control totals, etc.), emphasized?

· Are all conditions checked in decision points? Do not assume that direct flow is correct; i.e., if a switch is supposed to be "A", or "B", the condition "not equal to A" does not guarantee it is "B".

· Are notes or comments used to facilitate understanding? Brief comments on flow charts can be expanded during coding.

· Are console messages avoided if at all possible?

· If detected errors are to be output, are clear explanatory messages included?

· If registers must be used, is particular care taken to avoid conflicting assignment and use?

· Is the same labeling scheme used as that for the general logic flowcharts?

 

 

 

4.4 Code program

Coding should not begin until the detailed program flowcharts, HIPO diagrams or other program specification documentation has been completed and checked. The activity of coding these detailed program specifications will provide another validation check of these specifications at an item level, as coding frequently reveals minor flaws in logic. Unfortunately, coding rarely reveals major logic or design errors.

Before commencing, the coder must understand not only which language is to be used but also;

· The specific version of the language

· The release of the applicable operating system

· The computer and peripheral configuration to be used with any special restriction e.g., no applications program can directly write to the printer)

· The standards for using the language that the organization has established

· Restrictions on language use for internal or policy reasons (e.g., a limit on nested loops)

· Standards for filing out coding sheets.

Perhaps the most important control for ensuring good coding is to have a comprehensive and useful set of coding standards within the organization, plus a method for ensuring that these are followed.

It is very important that consistent and effective use be made of notes or comments. Each routine should have at least a brief explanation of what it does. If non-standard solutions or specialized coding techniques are used, they must be careful and fully explained and justified. The coded program with the note or comment statements should be as self-explanatory as possible with reference to no other document.

Immediate optimization should not usually be attempted. Normally, optimization is more effective after successful assembly or compilation, when the machine instructions are known. The exceptions are when core size is known to be critical, when certain routines will be used many times, and when the optimization technique is direct and well understood. An example of the latter is converting an external decimal in the input record to an internal decimal or binary field a the beginning of extensive arithmetical computations. In general, the straightforward coding approach will be the most immediately effective, as well as easing future maintenance and modification efforts. For several languages, optimizing programs are available which can be applied to either source code or object code.

When writing in assembly language, relative addressing should be used with care. Such addressing tends to make the program very difficult to read and understand. Additionally, it is easier to disturb such a scheme when modifications are made than when labels are used. than when labels are used.

Common routines of any type should be coded once and then placed in a special source library from which they may be copied by means of appropriate control cards or terminal commands.

The labels on the routines will reflect those used in the flowcharts. The labeling convention is such that one can proceed backwards from the coding, to the flowchart, to the program descriptions. All subroutine labels will indicate the routine in which they are included. Sequence number all coding.

The data areas to be used in a program should be coded initially. Al I/O and data base work areas should be coded in the item level. Adherence to system-wide labeling conventions is important, as well as the use (where possible) of data areas previously coded as standard throughout the system. As any time when a data file, set, table, or work area is used in more than one program, the coding should be identical in all programs concerned. It is often beneficial to code one standard set of file descriptions and work areas for use in all programs within a subsystem. All data areas should be set to specific initial values.

In coding data areas, particular care must be given to the special requirements of a particular language. Some problems areas are… areas are:

· Requirements for alignment of certain data areas

· Setting initial values

· Re-defining the same area in several ways

· Fields that must be repeated a variable number of times

· File definitions

· Edit masks

· Field descriptions

· Special features

In some languages there is a distinction between global and local variables. Where this facility is available, it should be used to increase the modularity of the program.

The responsibility for the structure and coding of file descriptions may reside in personnel other than those who are coding programs. This function of "data base management" may be very important for control and efficiency within the organization.

The first section of program logic to be coded should be the control module, or root segment. This module will contain other overall logic of the program and determine the sequence of events. It should be strictly modular in concept and consist primarily of a sequence of calls to other logic modules. The calls will be actual software calls to program modules, or merely branches to routines, depending on whether the program is core resident in its entirety or not. The branch would be simple "branches" or "branch and links" in assembly language., or would be ‘PERFORMS’ in COBOL. The program control module should contain no processing logic.

The next coding function is to develop the I/O routines required to service the program, Considerations are:

· Device type

· Accessing methods

· File organization

· Buffering method mused

· Return codes

· Operating system

- language used

- the relationships between the I/O requirements

Whenever possible, the I/O routines should be in the same language as the remainder of the program. However, in some areas, this will not be possible; e.g. where a higher level language cannot read or write to a particular device type, use a certain access method, etc.. some I/O routines will have to be written with great care because of required dependencies; e.g., in S/360 OS COBOL a "BISAM" read requires a "REWRITE". Care should be taken to ensure that all fatal error return codes will be recognized and processed.

Following I/O handling, the remainder of the program logic modules may be coded. The principal point to remember in coding the processing logic is to follow the detailed program specifications exactly. Whenever more efficient or correct coding indicates a variation from the detailed program specification, it must be altered to reflect the variation.

Error handling should be coded separately for four main reasons:

· It is important that correction procedures be uniform.

· It is important that all errors be tested in the same way.

· It is important that errors be transmitted to the user in a consistent manner.

· Errors will be handled more thoroughly if they are processed in one place.

4.4.1 Methods

1. Review the program specification information available in detail and all instructions on the use of, and restrictions on, the programming language(s) to be used.

2. Develop a list of the data base records, data pass areas, tables, and work areas required for the particular program concerned.

3. If common areas are to be used by various programs, they should be on a permanent file and coded once. These descriptions then can be copied into the correct position when compiling the remainder of the data area by appropriate control cards.

4. Code the remainder of the areas. Label all the items within the areas to the lowest addressable level. Use particular care with the type of notation and edit mask required: e.g., alphabetic, numeric, signed, etc.. Use only the labels specified in the data catalog for system resident data. If any new date requirements arise, add by means of proper updating procedures to the data catalog.

5. Check that all areas have been coded in accordance with the conventions of the language.

6 Code Control Module Routines:

· Code initialization and routine housekeeping (file opens, switch initialization, etc.).

· Code branches or calls to processing logic routines. Use branches in assembly language and PERFORMS in COBOL to link to processing logic. If the routines are not core resident and must be called, use the appropriate software calls.

· The control module should contain no processing logic and appears merely as a list of links to other routines.

· Double check the sequence of processing logic linkages.

· Insert clear and comprehensive comments or notes for each link explaining the nature and purpose of each worker logic routine.

· Make sure that all lines are sequence numbered, as well as pages.

7. Code I/O Routines:

· Code each I/O activity separately.

· Code access key development where appropriate.

· Sequence check any input that could be out of sequence.

· If the data management system is such that return codes are supplied, be sure to check for all possible types of returns.

· Check for duplicate records if the possibility exists: i.e., more than one record with the same access key.

· Code end-of-the-file conditions for all input files.

· For direct access files, check to see if the record is already in core before attempting another access. This can be a real time saver.

· Be sure to close all files at end-of-job.

· Double check the linkages between the I/O routines and the other routines that call on the them for I/O.

8. Code Processing Routines:

· Code instructions following the detailed program flowchart. Post back any corrections to the flowchart.

· Code with care: accuracy is more important than speed.

· Check to determine that all data areas being used have been coded, and code if necessary.

· Write comments and notes with the instructions as they are being written in order to avoid confusion later.

· Sequence number coding lines.

· Check carefully for accuracy, consistency, uniqueness, and clarity of labels.

· Double check linkages between processing routines and between these routines and I/O and error handling routines.

9. Code Error Handling Routines:

· Code for all conceivable errors. It is the highly unlikely errors that usually cause the most problems.

· Code for each error as a subroutine and maintain control at all times. Never let a detected

· error automatically terminate processing. If processing is to be determined, do so explicitly.

· Clearly indicate the source and status of any error to the user.

· As a principle,, notify the user of all positive completions of a transaction, and of all errors and non-completion.

· Post error messages to the printer or video screen, with hard copy if possible. Console printouts have a way of getting lost and confusing operators.

· Be careful to provide error messages that will describe the error fully and clearly. The receiver of the message should be able to identify the source of error immediately.

· After processing an error, be sure to return control to the proper place; e.g., be sure that a data base record gets re-written to the file, if appropriate.

10. When the coding of all elements of the program is completed, the developer should desk check for the following:

· Have all elements been coded?

· Are the coding sheets correct?

· Does the coding have appropriate labels?

· Appropriate comments?

· Are data descriptions standard?

· Are there appropriate sequence numbers:

· Are all branches resolved and are other linkages correct?

· Are all instructions complete and in proper format?

· Does the coding follow the flowchart?

· Are all interfaces to the operating system and other programs correct?

· Are register and index usage correct?

· Are switches properly set, re-set, tested?

· Are all I/O operations complete?

· Are program start and end operations correct?

· Is there logic repetition or inefficient coding?

· Are all messages clear and understandable?

· Have all errors been accounted for?

· Are they consistently and efficiently processed?

· Is there minimum disruption to the system operation?

· Are the "fatal" errors fail-safe?

4.4.2 Products

· Coded programs (modules) (see Exhibit 4.4-A.):

- Coded data areas,

- Coded program control module (PCM).

- Coded I/O routines,

- Coded processing logic routines.

- Coded error handling routines.

4.4.3 Background

· Data catalog (2.4).

· Data item descriptions (2.4).

· Program logic flowcharts (3.6).

· Program decision tables (3.6).

· Program matrices (3.6).

· Specified common routines (3.7).

· Program control (module) flowcharts (4.3).

· Detailed program (module) flowcharts (4.3).

· Computer I/O and interface layouts (3.2).

· File record layouts (3.3).

· Data pass area and intermediate file layouts (3.5).

· Internal error detection and correction specifications (3.4).

· Fallback recovery and reconstruction specifications (3.4).

· Relevant programming language and other reference manuals.

Exhibit 4.4-A. Example of Coding Checklist.

1. Do not start coding until the detail program flowcharts have been completed.

2 Review the language to be used with all applicable manuals and restrictions.

3. Review the applicable organizational standards for coding in that language.

4. Check that the hardware requirements of the program (e.g., store capacity, number of I/O units) do not exceed that made available by the computer center.

5. Check that all restrictions on instructions applicable to a specific machine and operating system are observed.

6. For ease of coding, follow the modularity concept used in the program design and layout . Using this approach in coding reduces the apparent complexity of the coding problem - that is, the coding is accomplished module by module.

7. Link the flowchart and the code as follows:

a. Mark all deviations from the normal flow (transfers or skips) with slashes on the corresponding flow lines.

b. Mark the locations of data in memory boxes.

c. Describe coding tricks (special techniques) in notation boxes.

d. Label the first instruction of each routine to correspond wit the label on the flow diagram.

8. In transcribing to coding sheets;

· Leave some lines blank on the program coding sheet for additional statements.

· Increment sequence numbers so that statements can be inserted with out re-sequencing.

· In general, when handwritten data must be keypunched, special care must be taken to eliminate possibility of misinterpreting the characters. Apply the following rules:

- Letter Q should be written as Q

- Letter O should be written as Æ

- Digit 0 should be written as 0

- Letter Z should be written as Z, (please check)

- Digit 2 should be written as 2

- Letter l should be written as I

- Digit 1 should be written as 1

- Digit 7 should be written as 7

- Letter S should be written as S

- Digit 5 should be written as 5

- Letter U should be written as U

- Letter V should be written as V

 

 

 

 

4.5 Prepare source decks and compile/assemble programs

The accuracy and completeness of the transition from coding sheets to punched cards or other media is not entirely the responsibility of keypunch and verifying personnel. Unclear instructions, illegible writing, and us of standards other than those normally used for coding for that department can all lead to errors to errors. Furthermore, the programmer is responsible for checking that all preparation is correctly performed.

Completion of coding to a final, fully prepared source deck can be a time consuming process. to reduce the time required, it is recommended that the programmer submit coding to keypunching in small groups to 20 to 40 sheets at a time. This will impose a more regular requirement on the keypunch and verifying operations. Checking the accuracy of the keypunching operations. checking the accuracy of the keypunching operation will be easier if done in small groups, and corrections can be submitted a errors are detected, so that the final step will involve only the corrections for those sheets. When a large and continuing amount of keypunching is needed, it is useful to notify the keypunch section so that they can schedule the keypunching.

Prior to submission of the source deck for complication, certain control cards must be prepared. Three types of control cards may be involved in compiling:

· Compiler control cards,

· Source image library control cards,

· Special purpose program control cards,

Most compilers allow a variety of options to be used when compiling. The use of the options may require additional machine time and more output, but with an increase in information available. Each source deck should be examined to determine the appropriate options.

It is necessary that the same operating system and compiler be used for system development as for system operation. It is desirable that it be accomplished on the same machine on which the programs will normally operate.

It is awkward and inefficient to have to load the entire source deck more than once. In the case of programs of great length, the chances of damage to the cards or out-of-sequence conditions increase greatly. Source image libraries should be used if possible. Two of the uses are duplicating sections of code that have been previously created and making corrections with only change cards and control cards. The former is useful when many programs need common routines or identical file descriptions as these can be added to the source deck without having to re-keypunch. The latter allows small correction decks to be used and reduces card handling with its possibilities of errors. Initial source decks, updated with corrections, should be retained for back up at least during development.

The most common type of special purpose programs used at compile time are automatic flowcharting packages which produce flowcharts based on the actual coded program and provide additional information such as cross indexes, diagnostics, etc.. These programs may be used for both analysis and documentation’s.

After each compilation or assembly, the programmer should carefully check the output produced. Some of the sources of errors are found in:

· Coding:

- Wrong instruction,

- Incorrectly written instruction,

- Illegal instruction format.

· Keypunching:

- misreading,

- transposition errors,

- mis-punching.

- Logic

In some cases, in addition to mechanical errors, there may have been misuse of the instruction set or erroneous logic from the program flowcharts.

The computer-provided aids at this stage are generally two:

· Complier/assembly aids in the forms of:

- Diagnostic error messages

- Object level data area descriptions

- The object level code produced (and some compliers will give the assembly language instructions).

- other.

· Special purpose program aids:

- Diagnostics and error messages

- Computer-produced flowcharts

- Various cross-reference listings

- Other.

It is necessary that the programmer should make the maximum use of aids provided to him. Both compilier/assemblers and special purpose programs will provide source listings which can be visually checked. In both cases, sequence numbers will normally be checked on request.

The complier/assembler diagnostic errors should be examined in detail. In many cases, one error can cause others to be generated (e.g., an incorrectly spelled label will cause all instructions using that label in proper spelling to be flagged as an error). The programmer must be careful to ensure that the source of the error has been properly identified as there are cases when the error message can be caused by several conditions.

Warning level error messages should not be suppressed as they can be "fatal" in some cases. It is possible that the condition is intended by the programmer and that the final version of the program will continue to have the warning error messages (e.g., deliberate truncation by moving a longer field into a shorter one).

The compiler option showing object-level coding or object-level data allocations should be used on the first compilation. Such an output is mainly useful for checking the way in which the compiler translates certain critical instructions, alignment of certain data areas or their relative displacement, or the efficiency of the code produced.

Assemblers normally give cross-reference listings as do special purpose programs. The details of these cross-reference listings vary, but, they usually allow one to determine where each name is used and whether some data names are used or not. These listings assist in tracing problems caused by errors in the data names or descriptions. They are also useful for making changes, as the affected instructions are readily identified.

The special purpose programs can produce flowcharts at various levels of detail from the source coding. These can be quite useful in determining whether or not the source code actually reflects the original flowcharts. Sometimes associated diagnostics are provided, such as flagging routines which do not have exits or which cannot be reached.

For reasons similar to those given in the desk checking of flowcharts, it is very useful if another programmer assists in desk checking compilations/assemblies. There is an additional reason in that the other programmer may more readily identify whether the wrong instruction has been used or the instruction improperly formatted.

Two or three compilations (for a short program) should be sufficient to remove all errors detectable by the compiler/assembler or special purpose programs. The length and complexity will affect the number of compilations. Each compilation requires programmer and computer time which becomes irretrievably lost between submission of the compilation and receipt of the results. To ensure maximum efficiency, the results of the compilation must be carefully and thoroughly analyzed. When corrections must be made, particular care should be taken to ensure that new errors are not created when correcting those discovered.

In some cases the program may be keypunched but rather entered via a terminal by the programmer or project librarian. The same degree of care should be taken in preparing the program before entry at a terminal as is done in preparing for keypunching. The use of a terminal can lead to poor programming practices unless very carefully controlled. When proper preparation is done and use care in entry is made, programming and checking via a terminal can increase programmer productivity.

4.5.1. Methods

1. Re-check coding sheets for accuracy and clarity. Re-write any characters that are unclear. Make sure that all pages are numbered and that the originators name and department appear on each sheet.

2. Prepare the transmittal sheet and submit to keypunching, together with the coding sheets. Make sure that the deck is interpreted and verified, and that there is an 80/80 listing of the deck.

3. Check the punching and re-submit any cards in error or any sheets which failed to be keypunched. When all cards are correct, set them in proper sequence and mark the tops as appropriate.

4. Analyze the requirements for compiler/assembler options. Do the same for source image library and special purpose programs. Prepare the required control cards.

5. Submit the required decks and a prepared transmittal sheet, as approved, to the scheduler. When several complies are expected and approximate run times are known, give warning to the operations scheduling personnel in advance.

6. Examine results for all diagnostic and error messages provided by compiler/assembly and special purpose programs. Look for errors that do not generate error messages. Check the completeness

and sequencing of the compilation/assembly, Check against coding sheet and original flowcharts for errors. Check particularly for any routines that may not have been entered or data areas that may not have been used.

7. Correct all errors to update source deck or source image library. Have corrections keypunched and verified. Review corrections to ensure that no additional errors have been created.

8. Repeat the cycle until compilation is clean. If more that three compilations/assemblies must be run, there may be either serious errors in the original design or coding, or carelessness involved. If there are serious design errors, the earlier activities should be repeated before attempting further compilations.

9. In addition to the author, have another person analyze the program.

10. Using elementary test data, exercise program logic. The reviewer can play the part of the machine. He starts from the beginning of the program and determines the instructions called for by the simulated input. This process must be "mechanical" without regard to the author’s intentions.

11. All errors are logged on the listing by the author and corrections are made, where possible, "on the spot". Further, correct any appropriate supporting documentation.

12. Catalog the program on the source image library, where appropriate. Retain the most current listing, most current output of special purpose programs, and original source deck with corrections as added.

4.5.2 Products

· Program source decks (see Exhibits 4.5-A-4.5-C).

· Checked program compilations/assemblies.

· Object modules (optional).

4.5.3 Background

· Detailed program (module) flowcharts (4.3).

· Coded programs (4.4.).

· Vendor compile/assemble JCL.

Exhibit 4.5-A. Example of Keypunch Transmission.

From: Department: ______________

Section: ______________

Individual requesting: ______________

Individual approving: ______________

__________________________________________________________________

To: Keypunch Control Sections (if more than one):

Operation: _____________ Date In: ______ Initial: ____ Date Out: ______ Initials: ____

Control: _____________________________________

Keypunching: _____________________________________

Verification: _____________________________________

__________________________________________________________________

Priority and Schedule

Priority Assigned by Requester: ______________________________________________

Desired Date Completed: _________________ Last Date Acceptable: ____________

Priority Assigned by Keypunch Control: _______________________________________

Due Out Date: ___________________________________________________________

If due out date is later than last acceptable date, the requestor must be informed.

__________________________________________________________________

Input Description:

Total Number of Pages: _____________ Pages Numbered ________ to __________

Total Number of Cards to be Keypunched: ______________________________________

Type of Input to be Punched (COBOL Coding Sheets, Order Form, Etc.)..............................

__________________________________________________________________

Special Information:

Type of Keypunch Expected (IBM 029, etc.): _____________________________________

Interpret Output: _________ None: ________ 1-60: ________ Full Card: _______

Special Characters/Punch Combinations: _______________________________________

80/80 Listing Required: _________________________________ Verification: ________

Other: __________________________________________________________________

 

 

 

Exhibit 4.5-B. Example of Source Data Checklist.

The following checks should be made after keypunching and verification are complete:

1. Compare the 80/80 source listing with the coding sheets. Look for:

- Omitted lines

- Out of sequence cards

- Transpositions in numeric fields

- Data punched in wrong columns

- Incorrect transcriptions such as l for 1

- Incorrect punching or multi-punch characters

- Misspellings or omitted letters from alphabetical items: this can be particularly true when COBOL words are similar but not the same as an English word.

2. Using a felt tip pen mark the top of the source deck with a diagonal line. This will assist in detecting an out of sequence condition created by improper card handling.

3. Mark the first and last cards of the source deck.

4. Write the number of the program on the tope of the deck.

5. If operating room procedures allow use of cards of difference colors, then use separate colors for debut inserts, dummy routines and job control cards.

6. Check for any bent or otherwise damaged cards.

7. Before submitting the deck for the first compilations, re-check the deck for completeness. It is recommended that a second person validate that the program is ready for compilation.

 

 

 

Exhibit 4.5-C. Example of Find Compilation Desk Check Checklist.

1. Use earlier checklists: i.e., in 4.3 and 4.4.

2. Test cases must be reviewed and added to if necessary.

3. Check initialization and re-initialization of:

- Switches,

- Indicators,

- Work areas,

- Accumulators,

- Registers.

4. Check file conditions particularly when and how opened and closed.

5. Check changes in storage and work areas as related to processing.

6. check processing of first and last records of every file.

7. Check data base updates giving particular emphasis to methods that have particular requirements, such as Index Sequential.

8. Check values of modified addresses or constants.

9. Check counter positions in loops particularly for exceeding presumed maximum values.

10. Check arithmetical routines for overflow, wrong sign, etc.

11. Check error handling in detail as to both detection of errors and their processing.

12. Carefully "walk through" all program logic using test data.

 

 

 

4.6 Prepare Program (Module) Debug Data

The preparation of program (module) debugging data is primarily the responsibility of the

programmer. The purposes of these data are to:

· Execute every routine,

· Execute every instruction,

· Remove the inherent bugs created during coding and source preparation,

· Test the limits of arithmetical and edit instructions,

· Test the correctness of the internal program (module) logic.

It is important that the programmer should know the correct output for given input. Some debug data may be prepared that will not be analyzed in detail prior to use: i.e., some output from a test data generator.

There are at least four means of preparing debut data which can be used singly, or in combination:

· Branch point analysis,

· General analysis,

· Test data generators,

· Samples from existing files or inputs.

Branch point analysis (bubble chart) is an especially good tool for ensuring that all routines are completely executed. The purposes of this method is to assist in:

· Checking program logic,

· Preparation of test data,

· Ensuring that all routines are debugged.

The mechanism involved is to create a branch point analysis chart (bubble chart) describing all the possible paths through the program and noting (as bubbles) all the branch points (with routine names). As this chart is being created, certain errors may be found, such as:

· Routines not entered,

· Routines entered but never exited,

· Closed loops,

· Improper entrance to or exit from a routine.

After completion , this chart can be used to assist in the preparation of debug data for the program module. The programmer starts at the beginning of the program and bubble chart and prepares data which forces each branch to be taken. As the data are coded for a particular routine (satisfying all paths through the routine). the bubble for that routine is color coded on the bubble chart. When the chart bas been completely color coded, the programmer knows that every routine has been entered from every routine that can branch to it.

In conjunction with branch point analysis, other means of analysis may be used. The program can be separated into its smaller modules and special conditions coded to test the logic of each small set of instructions, especially data generated by the analysis of the flowcharts during their debugging for some of the detailed program debugging. Program specifications and file descriptions should be reviewed for information to create debug data.

The more complex the file structure, the more careful the analysis of the I/O routines will have to be. Edit routines should be tested for random input information, as well as the standard information they are designed to handle. For instance,, what would happen if gross errors occurred in data input, such as some cards from another input stream being read?

Test data generators can only be used effectively when a careful analysis has taken place. Normally, the analysis is then used to specify the contents of the input parameters which are then prepared as input to the test data generator. The value of the test data generator is that it produces many output records with varying combinations of the parameterized input. However, the output of a test data generator is that it produces may output records with varying combinations of the parameterized input. However, the output of a test data generator will depend upon the quality of its input.

If samples of existing files or inputs are to be used, analysis must still take place. In the case of large files, the sample can only be a small subset of the file in question. Such samples are usually extracted by use of utility programs, and the analysis must ensure that the selected records are a true statistical sample 9 of the file or input in question.

Frequently, debug date will be prepared by some combinations of these techniques. The requirements for different type of programs may make some specific approach more useful than others. Conversion programs, in those file may be as described in the documentation because of errors in the present update programs, or for other reasons (one can sample manual data and transcribe selected records into conversion input, if necessary).

Data at this level are not prepared to test volume capacity or timing features. It is possible that significant timing results will occur as a byproduct for very badly designed procession or I/O routines.

4.6.1 Methods

1. If branch point analysis is to be used:

· Use the current correct compilation/assembly listing as a basis.

· Create a bubble with the first routine label on it.

· Draw lines to other bubbles which represent all possible exits from the first routine and label those bubbles. Do not forget that a routine can be exited by going to the next sequential instruction.

· In turn, draw lines from each bubble to succeeding bubbles until the lines converge at the end-of-run routine. If lines must flow backwards n the network (as a loop). indicate this with an arrow.

· Insert the routine labels in all the appropriate bubbles.

· Check that every routine label in the program is in the bubble chart. Ensure that all possible entrances and exits from each routine are accounted for, not only those planned. Correct any errors in the program that are brought to light during preparation of the chart.

· Code input debug data that satisfy the logic of the program and explore every unique path (line on the bubble chart) through the program.

· As the data are coded for a particular routine (satisfying all paths through the routine). the bubble for

· that routine is color coded, the portion of debug data is complete.

2. To perform other analyses to generate test data:

· Use all available test data inputs from previous activities.

· Review program specifications and accompanying developed documents for debug requirements.

· Review program routines for data that will test all conditions involving those routines.

· Prepare expected results for each set of data inputs.

· Code required debug data.

3. To utilize a test data generator:

· Review the specifications of the logic of the test data general to see whether it will be of assistance for the particular program.

· Use the results of the previous analysis to prepare parameter input cards for the test data generator.

· Re-check test data generator logic to ensure that it will not produce to much data. A test data generator can produce floods of output.

· Prepare lists of expected results for those input combinations which have been analyzed.

4. To select samples from existing files or manual data:

· Determine whether a requirement for samples from an existing file or manual data base exists.

· With the assistance of personnel who know present files, and personnel who know statistical procedures, prepare input for an extract program which will select a representative sample. Ensure that the sample has statistical validity: selecting every on-the-records may not be a satisfactory technique.

· Prepare input cards for the extract program and have the program extract desired information. In these cases, it is probably impractical to have an item-by-item list of extracted records as this would be to lengthy. If practical, have the listing prepared.

· If the sample is from a manual data base, have these records coded for input and list the coded input. This will be a partial test of the manual procedures and forms and other information in the Project File.

4.6.2 Products

· Program debug data.

· Branch point analysis chart (see Exhibit 4.6-A).

4.6.3 Background

· Detailed program (module) flowcharts (4.3).

· Program control (Module) flowcharts (4.3).

· Checked program compilations/assemblies (4.5).

· Program logic flowcharts (3.6).

· Program decision tables (3.6).

· File record layouts (3.3).

Exhibit 4.6-A. Example of Branch Point Analysis.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To be supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.7 Debug Programs

This activity is begun after a completely coded program has been compiled without error and job control is complete. The program may consist of one or more load modules. All possible functions and conditions contained in the program must be checked out, utilizing the branch point analysis chart prepared in the previous activity. He is where the rigorous debugging of an individual program occurs. It is almost impossible for later systems testing and acceptance testing to cover every line of coding in every program, so it is the programmer’s responsibility to ensure that not only will his program stand up under later testing, but also, that it will not fail at some future date during a production run. This is the phase of testing where every instruction within the program is exercised and where the verification of internal consistency within the program is made.

The debugging scheme follow the programming scheme in that it is modular. That is, the testing begins with t he control module and subsequent fashion. However, the program is not normally tested in conjunction with other programs at this stage.

The debug data used are those contrived by the programmer in the previous activity and are not meant to appear "real" so much as being exhaustive. This activity is normally performed by the originating programmer.

If the program is large enough to warrant it, the program module debugging can be performed concurrently with the coding of other modules, thus shortening the total time required to complete a program.

The major points to stress are:

· Make sure the logic is internally sound.

· Determine the efficiency of the internal logic.

· Make sure there are no "dead-ends" within a program.

· Place special emphasis on data modification instructions.

Normally, this activity can be started immediately following the first "clean" compilation. Only dummy files representing those files to be used in production are required.

The first portion of debugging the total program is to ensure that the load modules can be called in and executed properly. Temporary interface coding may be required, such as a branch-to-end right after loading and starting execution. All legal sequences of module (load) calls should be checked to ensure that the proper sequences execute in the same order.

Next to be debugged is the calling in of the software required for I/O processing and the program’s file definitions. When possible, this activity may be performed prior to coding completion of processing (worker) modules. It is important to have the I/O checked in a program before starting to test processing logic, thus avoiding confusing results. Quite often, the majority of the problems encountered in debugging a program center around the I/O. Points to remember are:

· Were all files opened and closed properly?

· Were all records processed, especially the first and last?

· Was the file sequence preserved?

Once the I/O processing and control logic are validated, the processing logic modules may be debugged using the ore complete set of data. The most frequent problem here is the failure to recognize and deal with all the error and exception conditions that might occur.

It may be necessary to have special training on debugging techniques and on how to use core dumps to identify problems. Normally one should not have to use the "DUMP" option to identify errors and this option should be used only when necessary as dumps require considerable printing.

Most programming languages have debugging facilities that can be very useful if used with care (they generate extra coding and increase run time). In COBOL there are "EXHIBIT", "TRACE" and similar facilities available which can be very useful to the programmer.

There are packages available which can be used in testing individual programs or modules. These packages provide an environment, within which isolated programs or modules can be tested as if they were in their intended software environment.

What is referred to in this book as "debug programs" is sometimes referred to as "unit testing". The purpose is the same, that is to began subsystem testing with units that have been thoroughly checked out so that the emphasis can be on testing the interfaces between these units. If this activity is not properly carried out prior to subsystem testing than the subsystem test will become disrupted by minor errors within the units which are not related to the important question of interfacing. This will cause the testing schedule to be disrupted and considerable extra costs.

4.7.1 Methods

1. Create dummy modules to be used to test the sequencing of the program control module.

2. Debug the program control module and verify that the specific modules care called in the proper sequence. This also verifies the link-edit process.

3. Create dummy files with a few test records per file to be read into the program. The test records can be coded with fictitious data that can easily be recognized, and which readily distinguishes individual fields within a record.

4. If necessary, temporarily modify coding, nullifying other routines so that each I/O routine is entered. Replace the proper dummy modules with the I/O modules to be tested.

5. Using a core dump or output file print, inspect the positing of each field within a record. Compare the values of each field with a listing of the dummy file.

6. Execute closing I/O routines, as well as opening routines.

7. Create additional dummy test records on the files used for I/O routine testing. A small number of well thought out conditions will suffice to guide in the creation of these records.

8. Ensure that the correct manipulation of data has been accomplished by the modules being checked.

9. Running time will be observed so that inefficient routines can be detected and corrected.

10. Prepare debug data containing irregularities and illegal conditions for which the results have already been calculated.

11. Ask for the assistance of the designer in the case of questionable results where the program module specifications appear to have been followed.

12. Check produced output against layouts and samples provided by program specifications.

13. Do not jeopardize the timeliness of the total project by unnecessary volume testing at this point.

14. The dummy files previously set up must be replaced by the more comprehensive data generated during the previous activity. As significant amount of time is required to plan and prepare these data, but the importance of this cannot be over-emphasized.

15. As each condition is checked out, check it off on the branch point analysis chart by appropriate color coding, if this chart was prepared.

16 f live data are available, it should only supplement the total debug data used. Data prepared for system testing should not be used.

17. do not cut any aspect of the checkout by assuming that the coding must be correct because similar coding has worked in the past.

4.7.2 Products

· Debugged programs.

· Program debug results report (see Exhibits 4.7-A and 4.7-B).

4.7.3 Background

· All program documentation

· Program debug data (4.6).

· Branch point analysis chart (4.6).

· Program source decks (4.5).

· Object modules (optional) (4.5).

Exhibit 4.7-A. Example of Results of Debugging Log.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To be supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Exhibit 4.7-B. Example of Test Aids Analysis.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(To be supplied)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.8 Prepare Program and Human Job Development Report

During this stage, both new materials has been produced and changes have been made to existing documentation. The extent of change may range from almost none, to a re-designing of the major subsystem. In all cases, the documentation must be revised to ensure that the description of the system continues to be accurate and complete. Corrections to documentation in the form of revisions should have been made during the activity that identified the for revision.

During this activity, all changes should be reviewed from different, but complementary, pints of view:

· the effect of changes on system design,

· the maintenance of documentation requirements.

All changes made to the system during this stage should be identified, and their impact on the overall system re-assessed, to ensure that:

· they are consistent with overall system objectives,

· they have caused no performance degradation when related to any portion of the system.

Economic, technological and operational studies will be reviewed and, where necessary, modified to reflect the changes.

Design documentation is then updated to reflect all changes to the system identified during

review. The project File will now:

· accurately reflect the current status of the design,

· have all required documents,

· have no discrepancies, ambiguities, or contradictions in the documentation.

After all other activities at this stage have been completed, the final report can be prepared. In addition to describing the system as it currently stands, the report should highlight those changes introduced during this stage that will have an impact on the system’s planned performance.

The report has two main sections caused by the natural division of the activities at this stage, namely:

· personnel related information,

· program (module) related information.

Prior to this activity, all the products are considered as being working papers and are highly subject to change. The program and Human Job Development Report is a final, technical report that should reflect the system as concrete following full development. changes to this report should be few and made only after careful consideration. The report should be reviewed by all affected parties and approved by management.

4.8.1 Methods

1. Review all changes which have taken place during activities of this stage in the light of their impact on the system. Look for possible negative interactions that may have been caused by separate changes, causing a cumulative impact.

2. If any problem with one or more changes is identified, it should be submitted to the appropriate personnel for review and action.

3. Review all documentation affected by changes and ensure that it has been correctly and fully documented to reflect the changes.

4. Produce an outline for the contents of the final report according to company standards. The outline should allow for the distribution of the work on sections of the report to members of the team.

5. Plan the production of the various components of the report with the various members of the development team.

6. Produce a draft of the report. Depending on the size and complexity of the system, the size of the report may vary from a few, concise pages to an extensive publication of many volumes.

7. Prepare a report of the programming and task synthesis effort according to company policy.

8. Submit to affected parties and management for review.

4.8.2 Products

· Program and Human Job Development report (see Exhibit 4.8-A).

4.8.3 Background

· All documentation in the project file.

Exhibit 4.8-A. Programming and Human Job Development Report Outline.

This document will have varied users with varied needs and should be prepared so that it may be

segmented for the user’s connivance. It should have the following structure.

Title sheet.

Foreword.

Table of contents.

Objectives. This section should cover the objectives of this stage and state how they were accomplished.

Management Summary. This section is prepared for management and should be as concise as possible, and include:

· What has been accomplished.

· Comparison of schedule and resource estimates with actual dates and resources costs.

· High level summary of changes affecting system design and performance.

· Summary of personnel related information.

Personnel Information:

· Combined staffing, recruitment, and training schedules.

· Combined personnel information file

- Positions,

- Performance standards,

- Assessment procedures,

- Skill and knowledge requirements.

Program Documentation:

· System/subsystem specification.

· Program specification (each program).

Sections for each program:

Identification:

· Title,

· Acronym/ID.

· Author.

Introduction:

· Background:

- How this program fits into the system/subsystem.

- A glossary of terms and abbreviations unique to this specification.

· Objectives:

- A brief functional description of the program and what the program is supposed to achieve.

General considerations:

· Hardware: minimum configuration required.

· Operating system: specific operating system (including version and release number) expected.

· Programming languages (languages used, giving version number and source).

· Other programs used (utility packages such as sorts or common routines and special programs called by this program).

· Compatibility: other hardware/software on which the program can be executed.

· Expandability: any features restricting modification and any expected expansion requirements.

· Maintainability: any special features or unusual programming that may create maintenance problems.

Processing characteristics:

· A narrative description of program operation. Any special techniques used will be noted here. In general, this should be related to the accompanying flow diagrams. The explanation may include formulae which explain concisely some aspect of the processing.

· Inputs:

- A detailed description of all inputs to the program, including data formats and files as related to the data catalog. The source for inputs should be specified.

· Outputs:

- Description of outputs specifying medium, formats and units as for inputs.

- Description of outputs.

· Files:

- List of all permanent files accessed by the program, including: medium, device, read, write and access method.

- List of all temporary files as above.

· Processing:

- Related processing to flowcharts and listings by routine names. Emphasize the modular program arrangement.

- Description of main processing functions in readily understandable language.

- Throughput times.

· Operating instructions:

- General,

- Setup,

- Takedown.

Constraints:

· Any operating restrictions peculiar to this program.

Fallback and recovery procedures.

Debug procedures.

References:

· A bibliography of related documentation used to prepare this specification.

Appendices:

· Flowcharts

· Compiler listings,

· Special purpose program outputs,

· Input layouts and descriptions,

· Output layouts and descriptions,

· Debug data listings and associated documentation.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This page is intentionally left blank.