Task Definition: Task V.29 Define the reengineering scope
V.29.1 Define reengineering objectives;
V.29.2 Examine the existing application in the context of current business requirements and process;
Begin Task V.29.2
V.29.2.1 Identify existing application software;
V.29.2.2 Identify existing data;
V.29.2.3 Identify existing technical Infrastructure;
End Task V.29.2
V.29.3 Examine existing software descriptive information for completeness, consistency, correctness and correspondence to the executable application;
V.29.4 Conduct feasibility analysis;
end Task Definition Task V.29
Task Definition: Task V.30 Develop a reengineering plan
V.30.1 Develop reengineering strategy;
V.30.2 Identify methods and tools for reengineering;
V.30.3 Develop cost/effort estimate for the reengineering;
V.30.4 Establish reengineering project duration and resource requirements;
V.30.5 Derive enhancement schedule and strategy;
V.30.6 Develop a Project Plan for the reengineering;
end Task Definition Task V.30
Task Definition: Task V.31 Assess project and technical risks
V.31.1 Review technology and project risks associated with the reengineering task;
V.31.2 Identify potential technical side effects that reengineering application may cause for interoperable systems;
V.31.3 Assign risk probabilities to each risk and side effect;
V.31.4 Estimate risk/side effect impact;
V.31.5 Determine high priority risks/side effects;
V.31.6 Develop plan for mitigating, monitoring and managing risk;
V.31.7 Review risks with management/customer;
end Task Definition Task V.31
Task Definition: Task V.32 Extract engineering information from existing system
V.32.1 Analyze existing documentation;
begin Task V.32.1
repeat until (all existing documents have been evaluated)
do while (portions of the document remain to be reviewed)
V.32.1.1 Review design documentation;
case of: design description
design description = data design
if data structures description are missing or incomplete
then note this section for revision or reverse engineering;
else
check for conformance to operational code;
note deficiencies in description;
endif
design description = architectural or class design
if program architecture or class description are missing or incomplete
then note this section for revision or reverse engineering;
else
check for conformance to operational code;
note deficiencies in description;
endif
design description = component-level or messaging design
do while module descriptions remain to be evaluated
if module description is missing or incomplete
then note this section for revision or reverse engineering;
else
check for conformance to operational code;
note deficiencies in description;
endif
enddo
design description = interface design
if interface description is missing or incomplete
then note this section for revision or reverse engineering;
else
check for conformance to operational code;
note deficiencies in description;
endif
endcase
enddo
endrep
V.32.1.2 Review user and operational documentation;
V.32.1.3 Note deficiencies in design and/or operational information;
end Task V.32.1
V.32.2 Extract design data and create appropriate models;
V.32.3 Model existing program architecture or class hierarchy;
V.32.4 Extract procedural design;
V.32.5 Extract technical infrastructure products;
V.32.6 Integrate extracted products;
V.32.7 Build reverse engineered documentation;
V.32.8 Review all reverse engineered products;
end Task Definition Task V.32
Task Definition: Task V.33 Forward engineer the application
V.33.1 Refine analysis model to reflect enhancement to be implemented as part of forward engineering;
V.33.2 Build prototypes, if required;
V.33.3 Reengineer an analysis model with enhancements;
begin Task V.33.3
case of: analysis approach
analysis approach = structured analysis
repeat until (all data object, relationships, attributes are defined)
33.3.1 Reengineer a data model using appropriate notation;
33.3.1.1 Identify data objects and control items that require change;
33.3.1.2 Define new data objects required for enhancement
33.3.1.3 Indicate connections among objects and items;
33.3.1.4 Specify attributes for revised and new data objects;
33.3.1.5 Identify the relationships associated with each connection;
33.3.1.6 Develop or revise an entity relationship diagram, if required;
review the data model internally;
review the data model with the customer;
endrep
repeat until (data flow representation is complete)
33.3.2 Reengineer a functional model using appropriate notation;
33.3.2.1 Revise the "context level" data flow model, if required;
33.3.2.2 Evaluate existing DFDs and define the domain of change;
33.3.2.3 Use grammatical parse on revised statement of scope for the enhancement
33.3.2.4 Refine data flow model in domain of change;
33.3.2.5 Develop process specifications (PSPECs) for new transforms (functions) at lowest data flow level;
33.3.2.6 Revise process specifications (PSPECs) for modified transforms (functions) at lowest data flow level;
review the revised data flow model internally;
review the revised data flow model (top levels only) with the customer;
endrep
repeat until (data flow representation is complete)
33.3.3 Reengineer a behavioral model using appropriate notation;
33.3.3.1 Make a list of "events" that drive the system;
33.3.3.2 Indicate those system states that are externally observable;
33.3.3.3 Develop a top-level state transition model that shows how the product moves from state to state;
33.3.3.4 Refine the state transition model;
review the behavioral model internally;
review the behavioral model with the customer;
endrep
analysis approach =object-oriented analysis
do while (class model needs refinement)
repeat until (all classes are defined)
33.3.1' Identify new classes to accommodate any requested enhancement;
33.3.1'.1 Identify classes/objects using grammatical parse of the enhanced software scope;
33.3.1'.2 Use inheritance to create enhanced classes ;
33.3.1'.3 Define relationships between classes;
33.3.1'.4 Define aggregate classes, as appropriate;
33.3.1'.5 Specify the class hierarchy;
review the class model internally;
review the class model with the customer;
endrep
repeat until (all attributes are defined)
33.3.2' Specify attributes and operations for each class;
33.3.2'.1 Specify attributes for each class by identifying generic information that is relevant to all instances;
33.3.2'.2 Identify the methods (operations) that are relevant to each class;
review the class model internally;
review the class model with the customer;
endrep
repeat until (class hierarchy are defined)
33.3.3' Reengineer class hierarchy using appropriate notation;
33.3.3'.1 Specify public vs. private class attributes and methods;
33.3.3'.2 Describe object behavior;
review the class model internally;
review the class model with the customer;
endrep
enddo
33.3.4 Specify technical constraints and validation criteria;
33.3.5 Integrate technical infrastructure products;
33.3.6 Conduct formal technical reviews (FTRs) of model;
33.3.7 Make revisions as required;
33.3.8 Create requirements documentation (form will vary with project) using models as input;
33.3.9 Begin preliminary test planning;
endcase
end Task V.33.3
V.33.4 Design reengineered system;
begin Task V.33.4
case of: design approach
design approach = structured design
repeat until (all data structures are defined)
33.4.1 Design or modify data structures based on analysis model;
33.4.1.1 Develop a data structure for each new data object;
33.4.1.2 Modify existing data objects, as required;
33.4.1.3 Modify database schema, If required;
33.4.1.4 Specify restrictions associated with each data structure;
review the data design internally;
endrep
repeat until (program architecture is defined)
33.4.2 Reengineer program architecture;
33.4.2.1 Map reengineered data flow model into a program architecture;
33.4.2.2 Partition the architecture both vertically and horizontally and develop a revised structure chart;
review the architectural design internally;
endrep
repeat until (all program modules are described)
33.4.3 Describe new or revised program modules;
33.4.3.1 Adapt PSPECs (task 18.3.2.4) to become processing narratives for each new or revised module;
33.4.3.2 Develop description of each new or revised module interface;
33.4.4 Develop procedural (detailed) design for each new or revised module;
33.4.4.1 Develop a list of processing steps, based on processing narrative developed in Task 33.4.3.1;
33.4.4.2 Use stepwise refinement to develop a processing algorithm;
33.4.4.3 Apply "proof of correctness" techniques to verify correctness of the procedural design;
review the procedural design internally;
endrep
design approach = object-oriented design
repeat until (all subsystems are defined)
33.4.1' Design each subsystem for the reengineered application
33.4.1'.1 Establish the level of concurrency for the problem
33.4.1'.2 Allocate subsystems to processors
33.4.1'.3 Allocate system functions to tasks
33.4.1'.4 Define methods for managing global resources
33.4.1'.5 Establish system control structure
33.4.1'.6 Define mechanisms for initiation, termination and error handling
review the system design internally;
endrep
repeat until (object design is complete)
33.4.2' Engineer reusable components corresponding to the class structure;
if reusable classes can be acquired from the existing application
then adapt them to the reengineered requirements;
else {reusable classes are not available}
33.4.2'.1 Design classes in the problem domain;
33.4.2'.2 Design classes for the human-computer interface;
33.4.2'.3 Design classes for data management;
33.4.2'.4 Design classes for task management;
endif
33.4.3' Reengineer object structure;
33.4.3'.1 Translate attributes into corresponding data structures;
33.4.3'.2 Design algorithms for each method, apply steps noted in Task 33.4.4;
33.4.4' Reengineer message structure;
33.4.3'.1 Review the class relationship model developed in Task 33.3.1'.2;
33.4.3'.2 Define messages associated with each relationship;
33.4.3'.3 Create a message template [Booch, 1992];
33.4.3'.4 Consider message synchronization issues;
review the system design internally;
endrep
33.4.4 Specify revised interface design, if required;
33.4.5 Modify design documentation (form will vary with project) using the enhanced design model as input;
33.4.5 Conduct formal technical reviews (FTR) of model;
33.4.6 Make revisions as required;
endcase
end Task V.33.4
V.33.4 Design reengineered system;
begin Task V.33.4
case of: design approach
design approach = structured design
repeat until (all data structures are defined)
33.4.1 Design or modify data structures based on analysis model;
33.4.1.1 Develop a data structure for each new data object;
33.4.1.2 Modify existing data objects, as required;
33.4.1.3 Modify database schema, If required;
33.4.1.4 Specify restrictions associated with each data structure;
review the data design internally;
endrep
repeat until (program architecture is defined)
33.4.2 Reengineer program architecture;
33.4.2.1 Map reengineered data flow model into a program architecture;
33.4.2.2 Partition the architecture both vertically and horizontally and develop a revised structure chart;
review the architectural design internally;
endrep
repeat until (all program modules are described)
33.4.3 Describe new or revised program modules;
33.4.3.1 Adapt PSPECs (task 18.3.2.4) to become processing narratives for each new or revised module;
33.4.3.2 Develop description of each new or revised module interface;
33.4.4 Develop procedural (detailed) design for each new or revised module;
33.4.4.1 Develop a list of processing steps, based on processing narrative developed in Task 33.4.3.1;
33.4.4.2 Use stepwise refinement to develop a processing algorithm;
33.4.4.3 Apply "proof of correctness" techniques to verify correctness of the procedural design;
review the procedural design internally;
endrep
design approach = object-oriented design
repeat until (all subsystems are defined)
33.4.1' Design each subsystem for the reengineered application
33.4.1'.1 Establish the level of concurrency for the problem
33.4.1'.2 Allocate subsystems to processors
33.4.1'.3 Allocate system functions to tasks
33.4.1'.4 Define methods for managing global resources
33.4.1'.5 Establish system control structure
33.4.1'.6 Define mechanisms for initiation, termination and error handling
review the system design internally;
endrep
repeat until (object design is complete)
33.4.2' Engineer reusable components corresponding to the class structure;
if reusable classes can be acquired fro the existing application
then adapt them to the reengineered requirements;
else {reusable classes are not available}
33.4.2'.1 Design classes in the problem domain;
33.4.2'.2 Design classes for the human-computer interface;
33.4.2'.3 Design classes for data management;
33.4.2'.4 Design classes for task management;
endif
33.4.3' Reengineer object structure;
33.4.3'.1 Translate attributes into corresponding data structures;
33.4.3'.2 Design algorithms for each method, apply steps noted in Task 33.4.4;
33.4.4' Reengineer message structure;
33.4.4'.1 Review the class relationship model developed in Task 33.3.1'.2;
33.4.4'.2 Define messages associated with each relationship;
33.4.4'.3 Create a message template [Booch, 1992];
33.4.4'.4 Consider message synchronization issues;
review the system design internally;
endrep
33.4.4 Specify revised interface design, if required;
33.4.5 Modify design documentation (form will vary with project) using the enhanced design model as input;
33.4.5 Conduct formal technical reviews (FTR) of model;
33.4.6 Make revisions as required;
endcase
end Task V.33.4
end Task Definition Task V.33
Task Definition: Task V.34 Construct a deliverable
repeat until (deliverable is finalized)
if deliverable is non-executable then
DPP: develop appropriate documentation;
else {source code is to be generated}
do while (new or revised modules remain to be coded)
V.34.1 Select program components to be coded;
V.34.2 Code in the appropriate programming language;
V.34.3 Conduct code walkthroughs (FTR) of selected components;
V.34.4 Make revisions as required;
enddo
endif
endrep
end Task Definition Task V.34
Task Definition: Task V.35 Verify and validate the deliverable
V.35.1 Create a test plan and procedure to accommodate the reengineered application;
Begin Task V.35.1
repeat until (test strategy is finalized)
35.1.1 Review validation criteria and existing test plan, if one has been written; modify to accommodate the reengineered application;
Begin Task V.35.1.1
35.1.1.1 Review the test plan to determine if project schedule provides completed modules when needed for testing;
35.1.1.2 Modify the test plan to conform to the actual module completion dates;
35.1.1.3 Review validation criteria to ensure that requirements changes have been accommodated;
35.1.1.4 Add new classes of tests, as required;
End Task V.35.1.1
35.1.2 Describe the integration strategy for the enhancement;
Begin Task V.35.1.2
35.1.2.1 Select order of functional implementation for the enhancement;
35.1.2.2 Define integration strategy for the enhancement;
35.1.2.3 Design clusters (builds) and indicate where stubs/drivers will be required;
parallel activity: CreateTestSoftware
do while (stubs and drivers remain to be developed)
analyze requirements/interfaces for stubs and drivers;
design stubs and drivers;
generate code for stubs/drivers;
test stubs and drivers to ensure accurate interfaces and operation;
DPP: create operating instructions for stubs and drivers;
enddo
endparallel
35.1.2.4 Consider regression testing requirements and indicate where regression tests are to be used;
35.1.2.5 Specify special testing resources;
End Task V.35.1.2
35.1.3 Identify program components that require unit testing;
Begin Task V.35.1.3
35.1.3.1 Define criteria for selection of unit test candidates;
35.1.3.2 Determine whether unit tests can be appropriately scheduled;
35.1.3.3 Estimate resources required to conduct unit testing;
end Task V.35.1.3
end Task V.35.1
endrep
V.35.2 Design white-box tests;
Begin Task V.35.2
repeat until (white box test cases are designed)
35.2.1 Review module procedural design to determine most appropriate white- box method for new and revised modules;
35.2.1.1 Compute module cyclomatic complexity, if this has not already been done;
35.2.1.2 Isolate all independent logical paths;
35.2.1.3 Isolate all loops;
35.2.2 Design basis path tests;
35.2.2.1 For each independent path, examine component interface to determine inputs that will force module to execute that path.
35.2.2.2 Specify output values/conditions that are expected;
35.2.2.3 Indicate any special testing considerations;
35.2.3 Design loop tests;
35.2.3.1 For each loop specify type;
35.2.3.2 For each independent path, examine component interface to determine inputs that will force module to execute loops as required by loop test criteria;
35.2.3.3 Specify loop exit values/conditions that are expected;
35.2.4 Design other white-box tests
35.2.4.1 Consider efficacy of data flow testing and design tests if appropriate;
35.2.4.2 Consider efficacy of brach-relational operator testing and design tests if appropriate;
35.2.4.3 Consider efficacy of other white-box tests and design tests if appropriate;
endrep
end Task V.35.2
V.35.3 Design black-box tests;
Begin Task V.35.3
repeat until (black box test cases are designed)
35.3.1 Review existing black box tests to determine those that are applicable to the enhanced system;
35.3.1.1 Examine architecture to isolate modified component clusters (builds) that are candidates for black-box testing;
35.3.1.2 Isolate local requirements for each program cluster;
35.3.1.3 Review broad program requirements and test classes specified during analysis activities;
35.3.2 Design black-box tests for each new or revised component cluster for use during integration testing;
35.3.2.1 Define equivalence classes for data that flow into the cluster;
35.3.2.2 Define boundary values for data that flow into the cluster;
35.3.2.3 Specify corresponding equivalence class and boundary value tests;
35.3.2.4 Specify expected output;
35.3.3 Design black-box tests for the enhanced program as a whole;
35.3.2.1 Define equivalence classes for data that flow into the program;
35.3.2.2 Define boundary values for data that flow into the program;
35.3.2.3 Specify corresponding equivalence class and boundary value tests for the program;
35.3.2.4 Specify expected output;
endrep
end Task V.35.3
V.35.4 Conduct white-box and black-box tests with product enhancement refinements;
Begin Task V.35.4
35.4.0 Review all test cases to ensure that adequate test coverage has been achieved. Make revisions as required;
repeat until (white box tests have been executed)
35.4.1 Execute a white box test case;
35.4.1.1 Compare expected and actual results;
35.4.1.2 Note discrepancies;
35.4.1.3 Record all errors for later correction or immediate action. Create an error log;
parallel activity: debugging
do while (errors remain to be corrected)
diagnose error symptom;
if cause of error is known then
35.4.2 Correct error;
invoke Task V.35.4.1;
35.4.3 Modify source code and design model based on debugging changes. Create a change log;
35.4.4 Review (FTR) all substantive changes for side effects;
else {cause of error is not known}
invoke Task V.35.2 to exercise code connected to symptom;
ask colleagues to assist in diagnosis;
endif
enddo
endparallel
endrep
repeat until (black box tests have been executed)
35.4.5 Execute a black box test case;
35.4.5.1 Compare expected and actual results;
35.4.5.2 Note discrepancies;
35.4.5.3 Record all errors for later correction or immediate action. Create an error log;
parallel activity: debugging
do while (errors remain to be corrected)
diagnose error symptom;
if cause of error is known then
35.4.6 Correct error;
invoke Task V.35.3.4;
35.4.7 Modify source code and design model based on debugging changes. Create a change log;
35.4.8 Review (FTR) all substantive changes for side effects;
else {cause of error is not known}
invoke Task V.35.3 to exercise code connected to symptom;
ask colleagues to assist in diagnosis;
endif
enddo
endparallel
endrep
end Task V.35.4
V.35.5 Conduct regression tests;
V.35.6 Prepare all reengineered documentation;
V.35.7 Develop a strategy for re-introduction of the software;
Begin Task V.35.7
V.35.7.1 Define system integration strategy and initiate system integration testing.
V.35.7.2 Establish customer integration and live-test strategy.
V.35.7.3 Revise and implement customer training, as req'd.
end Task V.35.7
V.35.8 Create a Software Release Package.
Begin Task V.35.8
35.8.1 Ensure that all documents, data and programs are placed under formal configuration control (see Chapter 5, Umbrella Activity U.4)
35.8.2 Construct a set of deliverables for the customer.
35.8.3 Define a set of internal documentation for technical reference.
35.8.4 Develop a System Support Plan(large projects only).
35.8.5 Apply final SQA procedures to ensure completeness.
35.8.6 Write release memo.
End Task V.35.8
V.35.9 Roll-out reengineered application to each customer;
end Task Definition Task V.35
Task Definition: Task V.36 Evaluate the reengineered deliverable
V.36.1 Deliver product to each customer;
V.36.2 Define feedback mechanisms;
V.36.3 Refine help-desk to accommodate multiple customer locations;
V.36.4 Conduct training and provide implementation support;
V.36.5 Collect and analyze customer feedback;
end Task Definition: Task V.36
Use Browser "back" arrow or return to APM Process Design Language Description