Change Management

Site: Saylor Academy
Course: CS302: Software Engineering
Book: Change Management
Printed by: Guest user
Date: Friday, February 4, 2022, 6:16 PM

Description

A critical component of project monitoring and control is change management. As business requirements and operating environments change all the time, the project manager has to manage change throughout the software development cycle from acquisition, supply, development, operation, and then maintenance. The guiding principles, techniques, and tools for change management are discussed in this chapter.

Introduction

Nothing is rarer in information systems development than an application without changes. Users forget requirements and remember them late in the design. The business changes. Bugs get fixed and require documentation. Change occurs in all phases and all levels of application development. Procedures to manage change, therefore, are necessary to maintain sanity and order on the project team. 

The three major types of change in an application's life cycle-requirements, software, and documentation-are discussed in this chapter. For each, the importance of the change management techniques is discussed. Then, for each, techniques for managing changes are developed. At the end of the chapter, automated tools are identified for collaborative work, documentation, reverse engineering, and code management. First, we discuss the importance of designing for maintenance, regardless of the environment, architecture, or item being developed.



Source: Sue Conger, https://learn.saylor.org/pluginfile.php/236045/mod_resource/content/2/The%20New%20Software%20Engineering.pdf
Creative Commons License This work is licensed under a Creative Commons Attribution 3.0 License.

Designing for Maintenance

Applications are usually in production for an average of eight years. Many applications are much older, having been patched and modified regularly for 10 or even 20 years. Applications that are flexible enough to withstand years of modification are designed with change in mind. That is, regardless of the methodology, independent modules with local effects are developed. 

Programs with 10,000 lines of, for instance, COBOL procedure code, rarely are modified easily. Usually, they are such spaghetti, that if they ever work, it is due to good luck. Frequently, change is precarious and likely to cause problems in untouched parts of the program. 

In this section, we discuss the techniques used in designing for maintenance. The first, reusable libraries, have been used widely in the aerospace industry. Because cost savings can now be demonstrated from reusable libraries, they are moving into other industry segments. Reusable modules are complete programs that perform some complete function. The next section relates methodology to maintenance effort and discusses how each methodology attempts to provide for maintenance. Finally, CASE tools are related to maintenance and change.

Reusability

Reusability is a property of a code module such that the module can be used, as is, by several applications. In designing for reuse, the goal is to identify modules for potential reuse. The two most popular methods of implementing code reuse are program templates and reusable modules.

Program templates consist of standard code that performs a simple function. For instance, there are three basic types of business programs: report, edit/ validate, and file update. For a report, there are standard sections for reading file data, formatting the data, and writing the report (see Figure 18-1). Reading and writing can be standardized regardless of the data definition for input. The formatting of data must be customized. In writing the report, there are sections of code for beginning-of-page, body-of-page, and end-of-page. There may be sections for beginning-of-report and end-of-report, too. The report program might or might not have an internal sort routine that changes the sequence of the input file.

Templates can be developed to describe the 12 or so most common variants of the three basic types of programs. For instance, a report program is developed with and without sorts. COBOL or some other procedural language is used to define the standard versions and the only items left to the application programmer are procedures specific to the application.

The templates are stored as read only modules in a library. When a new use is defined, the module to be used is copied and given a new name. The newly named module is then modified and customized for its current use. 

The advantage of a template is that a finite number of variations are developed and then are modified as needed for a specific use. There is little or no maintenance on the templates once they are developed, and only a few new templates per year would ever be developed. The number of support staff could be close to zero.

A template is a partial program that is completed for a particular application. A reusable module is a small, single function, well-defined, and standardized program module that can be used as a called routine, or as a copy book in COBOL. For instance, a date edit routine might be developed as a reusable module (see Figure 18-2). 

When a reusable module is desired, a library of reusable modules is studied to determine which ones fit the application's needs. For reusable modules that do fit an application, the individual module code is examined to verify that it performs as required. Then the module is called at the appropriate place in the application's processing. 

Each application team determines which modules it might have that could be reused in its own or in other applications. Then the modules are singled out for special development as independent routines. The finished module is quality assurance tested by the librarians to ensure that it performs as documented. The librarian is an expert in reusable standards, quality assurance testing, and code management techniques. Eventually, the code is stored in a reusable library whose contents are published for application developers' use.

Publication of reusable library contents can be awkward. Paper might be too voluminous to be useful or cost-effective. Electronic publication requires indices to assist users in identifying potential modules for their use. The indices might include keywords to describe function, language, date of development, type of input, and so on. If indices are not coded to capture the essential characteristics of the modules, they are useless.

The amount of organizational support required to maintain reusable libraries has been the major impediment to reusable library adoption in most industries. Librarians test, store, and maintain references to the modules in the reusable library. A large number of modules, for instance over 1,000, makes maintenance of the library integrity and accuracy a major task. Locating modules for use is also a major task. Librarians become specialized in performing these functions. Without proper organizational support, reusable libraries soon become unused and useless. 

The arguments for reuse are substantial. As much as 75% of all code on a typical business application is redundant, and therefore, a candidate for reuse. Database descriptions, program procedure templates, and individual modules are all candidates for reuse that can save companies time and money in application development. The more reused code, the less extensive the custom code developed, the less extensive the testing required, and the less the cost of the application.

          Identification Division.
                        Program-1 D. ABCVIDADD.
                        Environment Division.
                        Configuration Section.
                        Source-Computer.   IBM-3080.
                        Object-Computer.   IBM-3080.
                        File Section.
                           Select Input-File from UR-D0001 as RPTIN.
                           Select Report-File from UR-P001 as RPTOUT.
                        File Division.
                        Input Section.
                        FD	        Input-File
                           Block contains 100 records.
                           Record contains 400 characters.
                        01	        Input-File-Record	    Pic x(400).	
                        FD	        Report-File
                           Block contains 1 record.
                           Record contains 132 characters.
                        01	        Report-File-Record	    Pic x(132).	
                        Working-Storage Division.
                        01	        Miscellaneous-counters.
                                    05     Page-Count	            Pic 99	    value zero.
                                    05	   Line-Count	            Pic 99	    value zero.
                                    05     Input-record-count	    Pic 9(7)	    value zero.
                                    05     Output-record-count	    Pic 9(7)	    value zero.
                                    05     End-of-file-marker	    Pic 9	    value zero.
                                           88 End-of-file		            value 1.
                                           88 Not-end-ot-file		            value 0.
                        ********
                        01	        Copy Input-File-Description statement goes here.	
                        ********
                        01	        Report-Headers.
                                    05	  Header-01.
                                          10 Filler	            pic x(45)	    Value spaces.
                                          10 H1	                    pic x(23)	    value
                                            Company Standard Header’.	
                                          10  Filler	            pic x(15)	    value spaces.
                                          10	Date	            pic x(8)        value spaces.
                                     05	  Header-2.
                                          10  Filler	            pic x(45)	    Value spaces.
                                          10  H1	            pic x(23)	    value
                                             'Report Standard Header'''.	
                                          10  Filler	            pic x(15)	    value spaces.
                                          10  Time
                                              15    Hour	    pic xx	    value spaces.
                                              15    Filler	    pic x	    value
                                              15    Hour	    pic xx	    value spaces.
                                              15    Filler	    pic x	    value
                                              15    Hour	    pic xx	    value spaces.
                                              
                                              
                    

FIGURE 19-1  Partial COBOL Program Template for a Report


                

                
          Linkage Section.
                      01	        In-Date.
                                  05         In-Date-Month        pic xx.
                                  05	       In-Date-Day	        pic XX.
                                  05	       In-Date-Year	        pic XX.
                      01	        Errors.
                                  05         Err-table occurs x times.
                                             10 Err                pic 9 comp.
                      Procedure Division.
                      Link.
                                  Enter linkage.
                                  Entry Link-date-edit using in-date, errors
                                  Enter COBOL.
                      Initialize.
                                  Move zeros to Errs.
                      Check-Numencs
                                  If In-Date-Mo not numeric move 1 to err(1).
                                  If In-Date-Day	not numeric move 1 to err(2).
                                  If In-Date-Year	not numeric move 1 to err(3).
                                  If err(1 ) - 1 or err(2) = 1 or err (3) = 1 go to End-Test
                      Check-values
                                  If In-Date-Day > 0 
                                              continue
                                  else
                                              move 1 to err(4).
                                  If In-Date-Year > 1992
                                              and In-Date-Year < 2015
                                              continue

      

FIGURE 18-2 Reusable COBOL Module for Date Edit

Methodology Design Effects

In this section, we discuss the suitability of reusable libraries and program templates to the three classes of methodologies. Because of the encapsulation of data and function in object orientation, object methods are best suited to the large scale development of reusable modules. The other methodologies, process and data, can use program templates and reusable modules, but such modules are not identified as naturally as with objects. 

Object methods are best suited to reusable components because the design method results in small, single function modules automatically. The method assumes that only data needed for a function will be available to it when it is called. Thus, the entire method assumes and strives for modules that are potentially reusable. When a module is identified in object analysis as being invoked from multiple calling objects, it is automatically targeted as potentially reusable. Further analysis determines if the functionality is identical for all users. If the functionality is the same, the module becomes locally reusable. 

The step from local reuse to organizational reuse is small, with the criteria being the number of other applications needing the function. Here too, object methods are more amenable to identifying reusable functionality at the analysis stage than the other methodologies. Think back to Chapter 11, in which we developed the table of actions (or functions) and the objects to which they were attached (see Table 18-1). It is at this stage that reuse is identified. When an action has more than one object attached, they are examined to determine whether the same action is performed for each. If both objects use the action identically, they are labeled potentially reusable.

 
			else
				move 1 to err(5).
			If In-Date-Month = 2
				If In-Date-Year = (1992 or 1996 or 2000 or 2004 or 2008 or 2012)
					   If In-Date-Day < 30
						      go to End-Test
                                           else move 1 to err(6)
			else
            			If In-Date-Day < 29
            					      go to End-Test
                                else move 1 to err(7)
                        else
                                If In-Date-Month = (4 or 6 or 9 or 11 )
            			           If In-Date-Day < 31
            					      go to End-Test
else move 1 to err(8) else If In-Date-Month = (1 or 3 or 5 or 7 or 10 or 12) If In-Date-Day < 32 go to End-Test else move 1 to err(9) else move 1 to err(10). End-Test. Enter linkage. Return. Enter COBOL.

FIGURE 18-2 Reusable COBOL Module for Date Edit (Continued)


Then, the potentially reusable actions are used to search the reusable library to see if similar actions in reusable form already exist. When a match is found, the reusable module code is examined to determine its fit to the current need. Based on the closeness of fit, the designers choose to design their own module or use the reusable module. The reusable module can be used as it exists or can be customized to exactly fit the application. The point is that the analysis action is matched to a reusable action at the logical level. Only when the logical actions match, the physical implementation is then examined for its appropriateness. When many such logical level matches are found, the time savings in analysis, design, and implementation can be considerable. 

It has long been held that structured and modular design reduces maintenance effort by facilitating the definition of understandable chunks of analysis and designs. Modular design, in turn, is then applied to program modules. The designer uses his or her experience, applying the principles of information hiding, minimal coupling and maximal cohesion, to develop single function modules. In this manner, the nonobject methodologies are more brute force methods of developing modules with object-like properties. While the nonobject methodologies rely on personal designer knowledge, such knowledge also is more important in object methods than is commonly recognized at present. The results in nonobject methodologies, though, are less uniform and less likely to cause ready recognition of reusable components than object methods. Therefore, reusable component libraries are most likely to be effective and widely used in object-oriented environments.

TABLE 18-1 Sample Actions with Related Objects


Verb from Paragraph


Space


Process Name


Objects-Action*

is entered

S

EnterCustPhone

Customer, Data entry (DE)

to create

S

CreateOrder

Order (R)

are displayed

S

DisplayOrderVOO

Order VOO (D)

are entered

S

EnterBarCode

VOO (DE)

are retrieved

S

RetrieveInventory

VideoInventory (R)

are displayed

S

DisplayInventory

VideoInventory (R)

Computes

S

ComputeOrderTotal

Order (Process)

is entered

S

EnterPayAMt

Order (DE)

is computed

S

ComputeChange

Order (P)

*Actions are (R)ead, (W)rite, Data Entry (DE), (D)isplay (P)rocess in memory, (PR)int

* Actions are (R)ead, (W)rite, Data Entry (DE), (D)isplay (P)rocess in memory, (PR)int


The opposite situation is true of program templates. The nonobject methods, because they are used mostly for COBOL applications, can take advantage of program template libraries easily and effectively. As much as 60-80% of all COBOL code is boilerplate, that is, code which does not vary from one program to another. The boilerplate can be standardized and provided as program templates. 

With object methods, the boilerplate in an object package is minimal but still can be standardized. The remaining code is either reused or customized. The types of COBOL template programs, for instance, a report with a sort, do not exist in the same form as objects. There might be a report object and there might be a sort object, and both might be reusable, but the code for using either object is most likely provided by custom developed code.

Role of CASE

Computer Aided Software Engineering (CASE) tools are critical to maintaining applications at the functional level rather than at the code level. The argument for CASE runs something like this. The 40-20-40 rule applies to software engineering application development. The rule states that 40% of the work is performed during feasibility, analysis, and design; 20% is during coding; and the remaining 40% is during testing (see Figure 18-3).

The 80-20 rule also applies (see Figure 18-3). According to this rule, 20% of the development work is performed during the original application development. The other 80% is performed during maintenance. This ratio holds because maintenance is a much longer period of an application's life. 

Putting these two rules together, to gain substantive productivity increases we need to reduce time spent on coding, testing, and maintenance more than we need to reduce the time spent on analysis and design. CASE that covers analysis and design only reduces the time spent on documentation and maintenance of documents. CASE that includes database schema generation and code generation further reduces the coding, testing, and maintenance activities. Fully integrated CASE tools, I-CASE (see Chapter 3 and Automated Tools section of this chapter), that interface with code generators, support all of these productivity improvements. With I-CASE tools, maintenance changes are reflected in the requirements for an application. The requirements are, in turn, used to regenerate the database schemas and code for the application. Thus, the changes take place at the logical level and are automatically generated by the CASE tool at the physical level. The capability to do all application maintenance in this way is not here yet but should be before the new century.


FIGURE 18-3 Application Life Cycle Time Distribution


A more futuristic feature of CASE tools will be the ability of the tool to recognize reusable analysis and design fragments, rather than relying on humans to recognize reusable code fragments. Purchasable options of the CASE tools will include intelligent options to detect feature and function similarities across applications. The fragments would then be imported from the original library to the using application library (or repository). Very intelligent CASE will be able to recognize a design fragment, logically link to the base definition of the reused item, and use already operational code modules. This level of intelligent CASE that could manage the use of reusable code may surface in our lifetimes, but not soon.

Application Change Management

IMPORTANCE

Applications frequently undergo redesign. Three typical conditions for redesign are assignment of a new management team, a project that is chronically over budget, late, and full of bugs, and the loss of the user-owner confidence that the SEs understand their needs. Even without drastic redesign, reviews (e.g., for user agreement or quality assurance) frequently turn up items that were originally compromised or rethought several times before final version agreement. The history of decisions and the reasoning about decisions is rarely kept as part of project notes. But, any project manager and SE can tell you that they frequently rehash the same arguments and reasonings over and over, even reaching the same conclusions. 

In a paper-based work environment, keeping track of the history of decisions is not practical; so much paper would be generated that finding anything becomes impossible. In a CASE environment, or in an imaging environment, maintaining the history of application decisions electronically becomes a manageable, and sometimes desirable, activity. The ability to recall reasoning through a decision, whether it is logical or political, can save time and provide continuity between managers.

Finally, changes in the business, legal requirements, or stakeholders in the application can all necessitate legitimate changes to application designs. Knowing the history of decisions sometimes makes them more palatable and easier to convey to staff. For instance, being able to relate a change of design to a developing business situation helps those who must cope with the change appreciate the business of the application. If the change is to keep a valued customer or increase competitiveness in a new area, the systems developers are more likely to be enthusiastic about shifting design.

Changes can be to requirements, designs, programs, interfaces, hardware, or purchased software. Most changes are initiated from within the organization developing the application, but might be motivated by some outside event, such as a change in laws. Using change controls protects the development team from user whims while allowing for action on legitimate requests. The idea that a specification is frozen, meaning not changeable after it is accepted as complete, motivates users to be as complete in their thinking as possible. 

Designs do not stay frozen forever. Usually, once an application begins coding, no changes are implemented until the application becomes operational. Then the project manager, SE, and user review the backlog of requests to develop priorities and plan the changes. Some changes may be so critical that the design is unfrozen to add the crucial functionality, regardless of the phase of development.


Change Management Procedures

Change control management is in effect from the time the work product is accepted as complete until the project is retired. First, baseline work products that are to be managed are identified. A baseline work product is a product that is considered complete and that is the basis for other, current work by the project development team. A baseline document would be, for instance, the functional requirements specification after it is accepted by the user. 

A history of change request file actions for a functional specification are listed here as an example.

1. Create Open Request 

2. File Impact Statement 

3. File Approval of Schedule and Cost signed by User/Owner

4. Complete Project Manager's Check List for the Change 

5. File Documentation relating to changes. If documentation or programs changed, identify date and items updates completed. If procedures or training changed, identify dates at which revisions were operationalized. 

6. File Close Request Form Approved by User/Owner 

7. Summarize Dates, Durations, and Costs

First, the baseline document is frozen, then change requests are added, but no action is taken. The fourth request, for example, might be urgent and receive immediate attention. When the functional specification is updated to accommodate the change, it is again frozen and the work continues. The three previous requests might have been added to the application if they did not significantly alter it. They may just as likely be ignored until after the application is implemented. 

Changes can be classified in several ways. First, they can be classified by type as eliminating defects, improving performance, or changing functionality. Second, changes can be classified as required or optional. Third, change can be classified by priority as emergency, mandatory with a required end date, mandatory with an open end date, or low priority. Usually, eliminating defects is a required emergency, while changing functionality is required mandatory maintenance, and improving performance is optional and might have any priority.

Knowing the change request classification determines whether it is subject to change control or not. Emergency changes usually circumvent the change control procedures in that the activities might all be followed but they are documented after the change is complete. All other change types should be required to comply with change controls. 

For example, changes to functional requirements can occur at any time, but once the functional requirements specification is approved, it is frozen until the application is operational. Changes are subject to change control: they are added to a change request list for future consideration unless given an emergency designation.



Project # ___________________________

 

Project Name _______________________

 

CHANGE CONTROL REQUEST

Initiator ____________________________

Date ________________________________

Department ________________________

Request # ___________________________

 

 

Reason for Request

 

 

 

 

 

Description of Change

 

 

 

 

 

Documents Affected

Category of Change

Func. Spec.           __________

A.   Reqts.                    ___________

Interface               __________

B.   Design                    ___________

Design                   __________

C.   Code                       ___________

Mod. Spec.           __________

D.   Interface                ___________

Code                      __________

E.    Hardware              ___________

Operations           __________

F.    Other                      ___________

User Doc.              __________

 

 

 

 

 

Class of Change

 

Emergency       __________

 

Mandated        __________

 

Enhancement  __________

 

Other                 __________

 

 

 

Initiator

Date

 

 

Owner

Date

Project Manager

Date

FIGURE 18-4 Sample Change Request Form


A procedure for change control (listed below) requires that a formal request for a change is submitted by the user to the project manager (PM). 

1. User sends the project manager and owner (if different person) a Change Request form (see Figure 18-4).

2. Project manager and SE develop an impact statement. At this time, the project manager's Check List is used to identify all work actions and changes relating to the request. 

3. The Change Request is discussed with the User/Owner to establish priority, schedule, and cost changes.

4. Agreement is formalized and User/Owner approval of schedule and cost changes is obtained. 

5. Using the impact statement, application and all related documentation are changed. Implement the change. As tasks are complete, check off the task on the project manager's Check List. 

6. User/Owner approval to close the request is obtained and the request is closed.

The PM and SE define the schedule and cost impacts of the change (see Figure 18-5). The changes are then discussed with the user. Based on the negotiation with the user, the change is assigned a priority for action, and the cost and schedule are changed. 

The request, expected date of action, schedule change, and cost increments are added to a project history file. The changes may be monitored by a Change Control Clerk, a person charged with maintaining project history and change control records, and with issuing a monthly change control report. A Change Control File contains all requests, correspondence, and documentation about changes. An Open Change Request is created when the request is made and a change number is assigned. The open change request stays on file until the request is completed, closed, and reported.

As the change is made, affected items are updated, including the appropriate documentation, code, training, and so forth (see Figure 18-6). A project manager's check list is used to check off required actions. The new documentation is filed with the Change Control Clerk who distributes it to all interested parties. 

The completion date for the change is entered in the Change Control File. The change is identified as closed in the next status report and the open request is removed from the Change Control File.

Depending on the organization, the IS executive might want to track change requests for projects to identify success in meeting requests. Overall costs of changes for a year are used as one indicator that an application is a candidate for either retirement or reengineering. In such cases, both costs and volumes of change requests are tracked through the change control process. Summary reports by project of the changes over a given period, or comparing periods (e.g., a current period compared to the same period last year) can be developed. Three such reports are shown as Figures 18-7 through 18-9 for total cost by type, cost and schedule impacts, and change requests, respectively.

Historical Decision Logging

At the beginning of the project, the project manager and SE decide to use tools to store the decision process. This means that either electronic group meetings are used or that a written version of meetings and decisions is maintained and stored in word processed form. With electronic meetings, the electronic transcripts are maintained. With manual recording, the old version is updated and renamed when a document changes. For instance, functional specifications for ABC might be named ABCFSmmddyy, where ABC is the company, FS abbreviates Functional Specification, and mmddyy is the date. The date portion of the name would change for every major change of the document. The change management procedure in the next section would be followed.

Documentation Change Management

  • Documentation changes should be identified by a change table of contents at the beginning of each document. The change table of contents includes the effective date, affected sections of the document, and a summary of the change (see Figure 18-10). The purpose of the change table of contents is to summarize all changes for the reader. 

Changes should be redlined in the text to identify the changed portion. If the old information is important, it may be moved to a footnote, dated, and labeled as a previous version. An example of this type of documentation change is shown in Figure 18-11. Keep in mind that you also keep the old version of the document for history.

 

 

     Project # ___________________________

 

     Project Name ______________________

 

CHANGE CONTROL IMPACT ASSESSMENT

 

 

Date _________________

 

 

Request # ___________

 

 

     Impact of Change Request

 

 

 

 

 

     Impact

 

     Type

Cost

Person Days

Business Days

Budget Control

 

     A.

_______

_______

_______

Initiation Date

____________

     B.

_______

_______

_______

Request #

____________

     C.

_______

_______

_______

Amount

____________

     D.

_______

_______

_______

Approval Date

____________

     E.

_______

_______

_______

 

 

     F.

_______

_______

_______

 

 

     Total

_______

_______

_______

 

 

 

 

 

 

     STATUS

Scheduled

Completion

Actual

Completion

     Initiated Date

__________

__________

     Analysis Date

__________

__________

    Development Date

__________

__________

    Testing Date

__________

__________

     Implementation         Date


__________


__________

 

 

     Comments:

 

 

 

 

 

     Initiator

Date

 

 

     Owner

Date

Project Manager

Date

FIGURE 18-5 Sample Change Request Impact Form

 

 

Project # ___________________________

Date _________________

Project Name _______________________

Request # _____________

PROJECT MANAGER CHANGE CONTROL CHECK LIST

 

DEVELOPMENT

 

Required

Completion Date

1. QA/Documentation Review

______________

___________________

2. Update Source Document(s)

______________

___________________

3. Update Baseline Document(s)

______________

___________________

4. Update Program Specifications

______________

___________________

5. Revise Code

______________

___________________

6. Update User Documentation

______________

___________________

7. Update Operations Documentation

______________

___________________

8. Other: _______________________

______________

___________________

     _____________________________

 

 

 

 

 

IMPLEMENTATION

 

Required

Completion Date

1. Baseline Documents Update

______________

___________________

2. Requirement Change

______________

___________________

3. Design Changes

______________

___________________

4. Programming Changes

______________

___________________

     Pgm #’s ____, ____, ____

______________

___________________

                    ____, ____, ____

______________

___________________

5. Unit Testing

______________

___________________

6. System/Regression Testing

______________

___________________

7. Interface Changes

______________

___________________

8. Operations Changes

______________

___________________

9. Other: _______________________

______________

___________________

      ____________________________

 

 

 

 

 

Comments:

Initiator

Date

 

 

Owner

Date

Project Manager

Date


FIGURE 18-6 Project Manager's Change Check List

 

CHANGE CONTROL ANALYSIS BY TYPE

PROJECT-TO-DATE

Number and Cost of Change by Type

Application Name

#

A    Cost

#

B   Cost

#

C   Cost

#

D Cost

#

E   Cost

#

F   Cost

#

G Cost

Total #

Cost

1. Branch Pilot

60

$.45.6

1

$ 2.6

--

--

--

--

3

$40.7

--

--

--

--

64

$ 88.9

2. Securities Transfer

17

--

--

--

2

--

--

--

--

--

--

--

--

--

19

--

3. Settlements

16

36.0

11

18.6

--

--

--

--

--

--

2

.5

--

--

29

55.1

4. Float allocation

--

--

3

6.0

16

$11.0

--

--

3

.4

1

$10.0

--

--

23

27.4

Total

93

$81.6

15

$27.2

18

$11.0

--

--

6

$41.1

3

$10.5

--

--

135

$171.4

 

Change Type Legend
A.      Requirements/Design
B.      Application Programs/Testing
C.      Documentation
D.      Hardware
E.      Purchased Software
F.       Interfaces
G.      Application Support


Notes: Costs in thousands

Changes with no cost are planned maintenance.

 


FIGURE 18-7 Summary Report of Change Costs

 

CHANGE CONTROL COST/SCHEDULE IMPACT*                                 Month of May 1994

 

 

Current Month

Year-to-Date

Project-to-Date

Application

Cost

Schedule

Cost

Schedule

Cost

Schedule

1. Branch Pilot

--

--

S 488

24

$ 88.9

39

2. Securities Transfer

$ 15.0

8

15.0

8

25.0

14

3. Settlements

   111.0

64

111.0

64

2250

140

Total

$126.0

72

$174.8

96

$338.9

193



* All data based on Submission Date

  Cost in thousands

  Schedule in Business Days

 

FIGURE 18-8 Summary Report of Cost and Schedule Impacts


 

 

CHANGE CONTROL COST/SCHEDULE IMPACT*                                 Month of May 1994

 

 

Current Month

Year-to-Date

Project-to-Date

Project Name

S

P

A

D

O

C

S

P

A

D

O

C

S

P

A

D

O

C

1. Branch Pilot

--

--

--

--

--

--

6

1

4

1

1

3

64

1

51

12

25

26

2. Securities Transfer

 3

 --

 1

 1

 22

 1

 18

 3

 6

 12

 22

 1

 18

 3

 6

 12

3. Settlements

 16

 --

 3

 4

 16

 9

 7

 --

 3

 4

 16

 9

 7

 --

 3

 4

Total

 19

10 

-- 

 42

 11

 29

 4

 10

 19

 102

 11

 76

 15

 34

 42

 

LEGEND

S      Submitted

P      Pending

A      Approved

D      Disapproved/Cancelled

O      Open

C      Completed


FIGURE 18-9 Summary of Change Requests

 

CHANGE PAGE

Page No.

Reason for/description of change

Date

1-48

Original issue

11/4/93

AH

Audit review and Revisions

1/3/94

1-2.22

Corrections and revisions to reflect organization changes

2/6/94

6. 9, 37-44

Describe imaging interface

6/394

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FIGURE 18-10 Sample Document Change Table of Contents

Software Management

Introduction 

Two of the roles of the SE in software management are to recommend what type of maintenance should be performed and to select code maintenance software. These are discussed in this section.

Types of Maintenance

The types of maintenance are minor modifications, restructuring, reengineering, or rebuilding. Minor modifications are changes to existing code and can be any of the project manager classifications discussed above. Restructuring is the redevelopment of a portion of an application with a bridge to the old application. Reengineering is the reverse analysis of an old application to conform to a new methodology, usually Information Engineering or object orientation. Reengineering is also known as reverse engineering. Rebuilding is the retirement and redevelopment of an application.

To select the appropriate type of maintenance, several questions are asked (see Figure 18-12). First, ask if the software works. If the answer is no, you retire the old application. Then you reengineer and rebuild it using a methodology. If the answer is yes, you continue to the next question: Does the application have a high maintenance cost? If the maintenance cost is low, the answer is no; then do a simple revision. If the answer is yes, immediately restructure the parts that do not work, and reengineer the entire application as part of on-going work.

Functional Specification Settlements

 

1/15/94

Page 22

...

The settlements system uses relational database design techniques and fully normalized data entities 1 The database design is fully documented in Figure 2-1. The diagram shows the 17 entities used m settlements processing and the relationships between them Each entity and its descriptive attributes are fully described in the data dictionary attached as Appendix 1; they are also available on-line through both IEF, the CASE tool being used for the application, and Project- Notes, the on-line help tool.

...

 

 

 

_____________

1 Prior to January. 1994. a nonnormalized, relational approach to the data was used. This resulted In a loss of data integrity that necessitated strict enforcement of relational theory to comply with audit requirements for the application.

FIGURE 18-11 Sample Documentation Change with Old Contents



FIGURE 18-12 Decision Tree for Selecting the Maintenance Type

Reengineering

Reengineering is the analysis and design of an existing application to bring it into conformance with a methodology. When the application conforms to a methodology, it is rebuilt. To reengineer program code, the code first must be structured. Code restructuring can be done by automated tools. The restructured code from all programs in an application is entered into a CASE tool with reverse engineering capabilities. 

Code restructuring also can be done manually. If no CASE products are used, the code is analyzed and the underlying data and process structures are mapped into a methodology. If Information Engineering is used, for instance, an entity relationship diagram (ERD) and a process data flow diagram (PDFD) are first developed for each program. Then, the diagrams are consolidated across programs to develop application ERDs and PDFDs. A data dictionary to document diagram contents is developed. The ERD is normalized and compared to the automated data to determine the extent of deviation from the normalized state. If the denormalized state was for performance purposes (this is an example of the importance of a historical file of design decisions), then problems with data integrity resulting from the denormalization should be noted for correction. Finally, the detailed process diagrams are used to develop a process hierarchy diagram. The hierarchy diagram is matched to the real organizational functions to determine the extent of application function redesign required.

If the methodology is object-oriented, the code modules are classified by object type and function. If multiple objects call a function, it is classified as reusable and set aside for further analysis. After module classification, the extent to which the code matches a true object design is determined. Reusable modules are evaluated to ensure that they perform single functions, hide information, and use minimal coupling techniques. For minor deviation from the object method, individual modules or object types are reengineered to bring them into conformance with object tenets. For major deviation, the application is reengineered and redeveloped using object techniques.

Configuration Management

Introduction 

In the mainframe world, one disk storage device can hold 10,000 or more different data files; large projects develop hundreds of program modules every year; and programmers may manage several different versions of code modules at one time. To support multiple users across different platforms might require multiple operational versions and variations of code modules, and they all have to be maintained. Configuration management is the identification, organization, and control of modifications to software built by a programming team. Code library management software provides a means to identify and manage the baseline for program code modules. The baseline is the official version of a code module that is in production use at any time. Two types of code libraries and the application types they support are discussed in this section. Derivations, which identify each module's history, are included in the discussion. 

Configuration management addresses problems originally present in large COBOL applications but are equally useful for the more complex environments of object and distributed software. A programmer might keep several copies of a program and personally track which is in production at any one time. The problem with individual programmers maintaining their own copies is that eventually their multiple copies will diverge and knowing which is the most current can be a problem. Trusting individuals to be good librarians is asking for errors. 

Assume next that one official version of programs exists. If several people are performing maintenance tasks on the one version of a program, a high probability exists that the changes of one person will interfere with the changes of the other person. Either the changes of one will be cancelled by being overwritten by the other, or one person will have to wait while the other makes the changes. Both situations lead to delays and are error prone.

In the complex world of distributed systems and multiple hardware/software platforms, different versions of the same software might be present. The only differences might be to accommodate platform idiosyncrasies, but such differences imply multiple versions of software that can cause maintenance problems. When a general change is made, somehow it must be verified as being made to all versions for all platforms. Specific changes for each platform must also be accommodated to allow fixing of bugs or changes that only affect one type of hardware. 

Configuration management that consists primarily of code library management software plus manual procedures supports both single and multiple versions of programs to control for different platforms, evolving functionality, and debugging of software changes.

Types of Code Management

The most common code management procedure is the creation of derivations. The two code management types are for versions and variations. They can all be supported in the same software library or can be in separate libraries. Each type serves a different purpose.


Derivation 

A derivation is a list that identifies the specific versions of multiple modules that were linked to create a load module or joint memory resident work unit. The purpose of a derivation is to allow tracing of errors that might be due to vendor software. All software used to create a load unit are specifically identified with vendor, version, and last installation date. The sample shown in Figure 18-13 identifies specific platform, operating system, compiler, for creation of a work unit, and the dates of the creation of each stage. If a problem were found, for example, a rounding error occurs in computing interest, the error is traced backward through the development software to find the problem. The program is checked first, then the compiler, then the operating system, and so on. Let's say, for instance, that a new version of the compiler was installed one week before this module's creation, and that, upon inspection, the rounding algorithm used only allowed four decimal places to real numbers. If more than four places are needed, a new compiler would be required.

The difference between a load module and joint memory resident work unit is in the dynamism of the processes. A load module is a compiled version of one or more source code modules that have been compiled and link-edited together, forming the load module. Compilation translates a module from source code to object (assembler) code. Linkage editing resolves references to other modules by replacing Call references with relative memory addresses, thus joining related modules for processing as a single work unit (see Figure 18-14). 

A joint memory resident work unit is a series of load modules that work together in a dynamic, real-time environment. Linkage editing creates static modules that are fixed until the next linkage edit process. In real-time application environments, one goal of the procedures is to relieve the need to freeze specific module references until they are needed in operation. This liberates programmers from the linkage editing process but can create chaos when an error occurs and must be traced. Both situations require maintenance of derivations. 

Recording of derivations requires precise identification of the software, option, code inputs, responsible person, and date that a load module was created (see Figure 18-15). The level of detail for derivations should match each process a module undergoes from source code to load unit. This means that if the translation is from source code to load unit, there are two derivations. If the translations are from source to object to load unit, there are three derivations. All software used in creating the derivation is recorded, including the compiler, linkage-editor, and so on, and their versions. Derivation maintenance provides an audit trail for software and is the only way that errors can be guaranteed to be traceable.

Work Unit Name: ________________

Creation Date: __________________

Date

Time

Software

Options

Code Module

Person

2/1/93

2:53a

Cob 88. 2.1

Defaults

STL1001

A. Biyon

2/1/93

2:54a

Cob 88. 2.1

Defaults

STL1002

A. Biyon

2/1/93

2:56a

Cob 88. 2.1

Defaults

STL1003

A. Biyon

2/1/93

2:58a

Cob 88. 2.1

Defaults

STL1004

A. Biyon

2/1/93

2:59a

Cob 88. 2.1

Defaults

STL1005

A. Bryon

2/1/93

3:00a

LinkEdit 88. 3.7

Defaults

STL1001,

STUCKE

STL1003.

STL1004.

STL1005

object

A. Bryon

 Comments:


 

FIGURE 18-13 Sample Derivation


Delta Version 

Delta means difference. A delta file is a file of differences between versions of a program. Versions are multiple copies of a single program that represent incremental changes.

When a delta version is kept, the main program logic is maintained once. Then, the delta version is applied to the main logic, with specific lines of code being replaced to derive the delta (see Figure 18-16). The advantage of using a delta strategy is that changes in functionality affect only the original code. The disadvantages are that loss or corruption of the original also affects all deltas, and that delta references based on code line numbers can lead to errors when the original changes.


FIGURE 18-14 Compile and Link Edit


Many software librarians and operating system editors work on the delta version principle. For instance, the Unix editor maintains delta versions of changes to text files, which includes program code. Using line numbers as the reference point, the original is stored. As changes are made, changed lines are kept plus new line numbers are appended in a delta file. When the file is referenced, the original is loaded into memory, then the deltas are applied until the memory version reflects all changes. 

When using a delta version, then, it is important to create a new file periodically to save storage and processing time for delta overlays. This minimizes the extent to which you are making changes to changes. To create the new file, you save the old file with a new name. Renaming modules is necessary to create a permanent version of the program with deltas incorporated into the saved version. Maintaining many renamed versions can cause errors in remembering the most current version, too.


Variation Storage 

Variations are alternative, interchangeable program modules created for multiple environments or purposes. For instance, you might create an IBM PS/2 version of a program and a Novell Netware 386 version of a program. The functionality is the same, but specific modules are different to support the specific hardware/software platform. 

Variations in a COBOL environment, for instance, might have a different interface for users in the United States and users in South America. Variations in an Ada environment, as another example, might be for performing the same process using integers or using real numbers.

Item Definition

Date

Date when the derivation was created

Time

Time of day when the derivation was created

Software

Specific software used to create the derivation

Options

Software options selected or defaults

Code Module

Name of input module(s)

Person

Person executing the derivation create

Hardware

Machine ID if there are multiple machines

Installation

Location or other installation ID when there are multiples

FIGURE 18-15 List of Requirements for Recording Derivations


Variations are named rather than numbered because there is no meaningful relationship between variations (see Figure 18-17). The name of each variation should reflect what makes it different. For instance, the names PS2S0RT (for PS/2 sort routine) and N386S0RT (for Netware 386 sort routine), would be good variation names because they identify both the platform and the function of the variation.

Configuration Management Procedures

Strict configuration management requires that one person (or group) on each development and maintenance project be assigned as the project librarian. The project librarian is the only person authorized to write into the baseline library for the project. The procedure is summarized below.

1. File baseline code module. 

2. Allow checkout for read-only purposes to individuals needing access. For instance, test team needs access for testing. 

3. Allow chargeout for update to authorized programmers. 

4. Monitor that chargeout items are returned. 

5. Notify testers of chargein items for testing. 

6. Verify that the text preamble to code identifies the change, date, programmer, and lines of code affected. 

7. Chargein the item, refiling the module. 

8. If derivations are used, file the derivation with project documentation.

When a project is in the code and unit test stage, the project librarian establishes an application library. As each module is unit tested and moves into subsystem and integration testing, the programmer's final version is given to the project librarian for addition to the library. 

Error fixes, changes during testing, and maintenance changes are all managed the same way. The programmer tells the librarian she or he is checking the module out for update, and the librarian keeps track of this fact. The code is copied out of the library and into the programmer's own workspace. The charges are made and unit tested. Upon completion of the unit test, the programmer gives the module and documentation to the librarian for reentry to the library.

The librarian checks that no other changes have been made during the time the programmer has the module out for update. If not, the module is rewritten into the library. 

Depending on the library software used, additional features allow the librarian to issue a chargeout against a module. A charge-out causes a lock to be placed on the module such that no other chargeouts for update may be performed until the lock is removed. When the changed version of the code module is reentered into the library, a charge-in occurs. A charge-in is the updating of a charge-out module to remove the lock. The more intelligent the software, the more actions taken during charge-in. For instance, some library software packages initiate a regression test when a chargein action is, taken.


FIGURE 18-16 Delta Version Development


The disadvantage to having a formal project librarian is that the librarian becomes indispensable. The risk is that the librarian might become a bottleneck to updating the production library. For instance, if one person is the librarian, he or she might be called for jury duty and be out of work for several weeks. During that time, unless another librarian is named, no updates can be performed.

Automated Tools for Change Management

There are different classes of automated tools for each type of change management. Each class of tools is discussed separately in this section.

Collaborative Work Tools

Collaborative work tools support group decision making and facilitate the development and historical maintenance of project decisions. Collaborative tools have developed out of research programs in group decision making at the Universities of Arizona and Minnesota in collaboration with IBM. Relatively primitive software of the 1980s for facilitating meetings has blossomed into a new industry for facilitating group work. Xerox Palo Alto Research Center (PARC) is a major contributor of new technology to this industry. 

The specific technologies involved range from the relatively familiar, like electronic mail, or e-mail, to the exotic, for instance, media space clear boards that change our concepts of being there (see Table 18-2). Many of the technologies are emerging, but the emergence is at such a rapid rate that by the new century we will routinely use many of these technologies at work, if not at our homes.


FIGURE 18-17 Variation Development


Media space technology allows several participants to sit on opposite sides of a clear glass board display that has electronics imbedded in it. The board can display computer images, text, and graphics as well as reflect hand-drawn notes and graphics of the meeting participants. The most effective use at the moment is between two people who both have clear access to the board. Clear boards allow people to see both the work and the co-worker, minimizing attention shift time. At the moment, the technology requires the people to be co-located, that is, in the same room; but the intention is to provide video conferencing capabilities using clear boards that are mirror images, thus simulating the face-to-face experience with the added electronic board interface. Thus, the user sees both the face of the other participant( s) and the contents of the board simultaneously. By removing the limitations of both time and geography our concept of being there is altered. By removing these limitations, clear board technology facilitates group work. This technology was developed, in this country, at Xerox PARC.

A different type of product provides a text-based communication environment that supports group passing of messages with storage of reader comments. Such a product, Notes provides an e-mail feature with the capability of user-built discussion forums and other data-sharing features. These products allow the development of decisions, history of the process, and easy sharing of information within and between work groups.

TABLE 18-2 Collaborative Work Tools

Tool Vendor Functions

Cruiser®™

Bellcore

Morristown, NJ

A video windowing system that allows the user to cruise offices visually and, perhaps, initiate a visit. Uses telephone and video technologies.

Greyboard

NeXT Computer

Mountain View, CA

Multiuser drawing program

Groupkit

Dept, of Computer Science University of Calgary

Calgary, Alberta, Canada

Real-Time Conferencing Toolkit; requires Interviews Software, Unix running X-Windows

Notes

Lotus Development Corp.

MA

E-mail, group bulletin board, data sharing

Oracle Mail, Alert, Toolkit, and Glue

Oracle Corp.

Redwood City, CA

E-mail, application development, and application programming interfaces for LANs

Timbuktu™

Farallon Computing, Inc. Berkeley, CA

Sharing of single-user software among several users

Video Whiteboard

ACM SIGCH1 Proceedings ’91, pp. 315-322

Wall-mounted whiteboard that portrays shadow of the other user

VidcoDraw

ACM SIGCHI Proceedings ’90, pp. 313-320

Multiuser drawing program

Windows for Workgroups

Microsoft, Inc.

Belleview, WA

LAN-based windows sharing


Documentation Tools

Word processing tools, such as WordPerfect, are rapidly being replaced with more sophisticated and intelligent products for document development and maintenance (see Table 18-3). 

In the old days of the 1980s, word processors became sophisticated enough to support such functions as redlining, the identification of changes in documents by means of a vertical line drawn in the margin of the change area. Typical word processors that merely automate the document preparation, such as redlining, still require significant text manipulation and creation of multiple documents with redundant information. Newer tools are beginning to emerge in the workplace that will eventually become as important as word processing has been.

One drawback of serial, word-processed text is that ideas that interrelate to many different topics either have to be replicated or cross-referenced in some way. Hypertext software eliminates that need by allowing any number of associative relationships to be defined for a given text item. Hypermedia extend hypertext to support audio, video, image, graphics, text, and data. In hypermedia, these multiple technologies may all be interrelated and coresident in one environment. In addition, because these tools do not restrict the number of connections an item may have, and because they use mainstream computer technology, application documentation remains on-line and interactively available to all users. Of course, interactive availability also implies a need for hyperlibrary management to control changes to library contents.

TABLE 18-3 Documentation Maintenance Tools

Tool

Vendor

Functions

Folio Views

Folio

Provo, UT

Works with Word Perfect to provide multimedia support, highlighting and post-it type document annotation.

Hypertext™

Apple Computer

Cupertino, CA

Associative management of text and graphics

MS/Word

Microsoft, Inc.

Belleview, WA

Word processing

Word Perfect and

Word Perfect Mac

with Grammatik

Word Perfect Corp.

Orem, UT

Word processing plus grammar checking

Words and Beyond

Lundeen and Associates

Alameda, CA

Documentation production including text and graphics

Tools for Reverse Engineering of Software

Reverse engineering tools are rapidly becoming sophisticated enough that the needs for human intervention and extensive training to understand them are diminishing. Several CASE products support reverse engineering through the analysis of code to determine data and process structures that underlie the code (see Table 18-4). Individual programs are analyzed at this point. By the next century, whole applications will be able to be analyzed with intelligent functions pointing out inconsistencies and errors across the old 'spaghetti' code. All tools represented in this section are available in the market and are rated as usefully working products.

Tools for Configuration Management

Configuration management tools, commonly called software libraries or code libraries, have been around since the early 1970s (see Table 18-5). The more sophisticated, newer models make version and variation management simpler by supporting complex functions, such as conditional compilation.

Summary

To increase productivity in the application life cycle and reduce time spent in the code, test, and maintenance phases are important. To reduce the effort in these phases, applications should use change control, design for maintenance, use reusable libraries, and use code templates. Object methods are best suited to reusable libraries; nonobject methods are best suited to program templates. 

I-CASE is critical in reducing coding and testing through automatic code generation. I-CASE is also required to build intelligence to support reusable designs.

If managing application change, change control procedures and management are critical. Requirements, designs, programs, interfaces, hardware, or purchased software are all subject to change. Change management procedures track requests from initiation through implementation and allow management reporting of cost, types, and impacts of changes. 

Logging and management of historical decisions can be useful in volatile environments in which applications are subject to redevelopment. A historical decision log keeps track of arguments, reasoning, and rationales for decisions as they are made. After an application enters operation, documentation is still subject to change to reflect the current state of the application. A document table of contents summarizes all changes and the parts of the document affected by each change. Similarly, software documentation is kept in derivations to summarize the actual software and steps used to develop a load module or work unit. Configuration management is the use of software code libraries to manage the official, operational code modules of an application. Delta version and variation management are the principle techniques.

TABLE 18-4 Reverse Engineering Tools

Via/Renaissance

Tool

Vendor

Functions

ADW/Maintcnancc

Workstation

KnowledgeWare, Inc.

Atlanta, GA

Reverse engineering for information engineering: Entity-relationship diagrams

Process data flow diagrams

Bachman Series

Bachman Information Systems, Inc. Burlington, MA

Reverse engineering of data structures

Design Recovery

Intersolv, Inc.

Reverse engineering of program structure

Ensemble

Cadre Technologies, Inc.

Providence, RI

Reverse engineering charts, metrics, and design

Hindsight

Advanced Software Automation, Inc. Santa Clara, CA

Reverse engineering of C-language code: documentation, structure charts, complexity analysis

RE for IE

Texas Instruments, Inc. with

Price Waterhouse

Dallas, TX

Reverse engineering for information engineering: Entity-relationship diagrams

Process data flow diagrams

Smartsystem

Procase Corp.

Santa Clara, CA

Reverse engineering of C-language code: function call graphing, syntax and consistency checking

 

Viasoft, Inc.

Phoenix, AZ

Reverse engineering of data structures


TABLE 18-5 Software Configuration Management Tools

Tool Vendor Functions

Pandata

IBM

Armonk, NY

Software code library for IBM and compatible mainframes

Copylib

Data Administration, Inc.

Data management software—Allows viewing of file definitions from Librarian, Panvalet, and Copylibs, to locate occurrences and variations of data.

Data Expeditor

Pansophic Systems

Lisle, IL

Software code library for IBM and compatible mainframes

Librarian

Pansophic Systems, Inc.

Lisle, IL

Software code library for IBM and compatible mainframes