University of Leicester

CO7206: Quiz #3 (8%)

Dec 12th, 2003

 

·         Important Advice: Do not write more than needed to answer a question. For example, if I ask what are the risks in this reengineering project and you write all the risks that can exist in the world, this works against you in marking because you failed to distinguish those risks that the question text directs to. 

 

1.       Reengineering Management: (2%)

XYZ Ltd. is a leading company in paper industry. They have developed their own ERP* system and have been running it successfully for years. The system is written in RPG and runs on an IBM AS/400 and uses a DB2 database. After the initial development and deployment of the system, the management moved 4 of the development team members to other tasks, leaving 1 full time and 1 part time staff to maintain the system. Due to fierce competition, XYZ decided to do a major business process reengineering (BPR) effort to cut costs and increase productivity. This would require some key changes to the business processes of the company. Consequently, a major change is needed in the supporting IT environment, especially the ERP system. The company formed an IT committee to study the available options; whether to buy a ready-made ERP system or reengineer the existing one. In order to implement the BRP plan on time, the top management asked the committee to finish the report in 1 month. Then the chosen solution will be implemented over the subsequent 6 months. This will be done by a project team of the current system 1.5 maintainers, plus an external expert that will be hired on a 6 months contract.

 

The IT committee needs to evaluate the costs, risks and practical issues involved in both options. This includes evaluating the current status of the exiting system and its evolution history. The system was maintained over the last period of time by a number of different IT staff. Maintenance records and document upgrades were done if time permits, otherwise priority was giving to implementing the change requests.

 

As an expert on reengineering, what are the potential risks in this project that you would inform the management of, if you were asked for advice?

 

*Enterprise Resource Planning (ERP) - An information system or process integrating all manufacturing and related applications for an entire enterprise. ERP systems permit organizations to manage resources across the enterprise and completely integrate manufacturing systems.

 

·          Using the Reengineering Project Failure Report of the SEI and based on the case description above, one can see that the main potential risks are:

 

o        Management predetermines technical decisions: “…the top management asked the committee to finish the report in 1 month. Then the chosen solution will be implemented over the subsequent 6 months. This will be done by a project team of the current system 1.5 maintainers, plus an external expert that will be hired on a 6 months contract” This is too much control from the management. Before even picking a solution and studying its cost, management had decided how long and how much human resources the solution should take to be deployed.

 

o        The system does not seem to be under enough control: “…Maintenance records and document upgrades were done if time permits, otherwise priority was giving to implementing the change requests.” This suggests that a lot of the system’s change history was never recorded. This means that the cost, impact and risk of change for the major changes required by the BRP will be difficult to estimate or judge, especially that the system was maintained by different people.

 

o        Misuse of external contractors: “…This will be done by a project team of the current system 1.5 maintainers, plus an external expert that will be hired on a 6 months contract.” It is unclear from the question why an external contractor will be hired, since the expertise needed for reengineering already exists, as it was developed all in-house in the first place. The reason may be that the available manpower is insufficient. However, hiring a contractor for only 6 months period has the risk of the contractor lacking commitment to the long-term maintainability and well being of the ERP system. This requires a strong reengineering process that ensures all the work done is done right and well documented.

 

o        Inadequate planning: “…Then the chosen solution will be implemented over the subsequent 6 months. This will be done by a project team of the current system 1.5 maintainers, plus an external expert that will be hired on a 6 months contract.” It takes more than a management decision to plan a reengineering project. It is clear from this case that insufficient planning was done. First, a solution need to be decided, before allocating resources to the project. Otherwise, resource allocation might not be done properly. Second, it is unreasonable to allocate manpower that is already working full time to do another job fulltime, unless enough analysis is done to estimate the workload of the current maintenance staff during the reengineering project.

 

 

2.       Clone Detection: In this figure (from Semantic Designs Inc.), the horizontal axis represents the release number and the vertical axis represents the % of duplicated code. The four series represent the four software subsystems of one single large system that had four releases over a period of three years. Discuss why the % of clones exhibits the trend represented by this figure. (2%)

 

·          As discussed in the lecture, it seems that

o        At the beginning (release 1), the system is developed from scratch. There is little similar code to copy and paste.

o        As new releases (releases 2 and 3) were developed, there is more and more code to copy and duplicate. It is easier and faster to make a clone of an existing code fragment and adapt it than writing new code.

o        As the program matures (release 4) and assuming a sensible evolution process is in place, programmers/maintainers realize that the program may grow wild and it must be put under control by cleaning the code, clone elimination, refactoring, etc., which results in reducing the % of duplicate code in last release.

o        This explains the trend shown on the diagram, which is: initially there are not many clones; then the % of duplicate code increases significantly and then it starts to decrease steadily, but was not back to the level of the first release.

 

3.       TXL: Write a TXL program that does the following: (4%)

 

·          Given this Matrix Grammar

 

define matrix

        [list  vector] | [vector] ', [matrix]

end define

 

define vector

        [NL][repeat number]

end define

 

define program

        [matrix] + [NL] [matrix] | [matrix]

end define

 

·          Write a program for matrix addition that takes this input

 

1           2           3,

4           5           6

+

1           2           3,

4           5           6

 

and produces this output

 

2           4           6,

8           10         12

 

·          Assume that a function called addVec exists. This function adds two vectors and returns the result vector.

·          So, basically you need to write:

·          The rule that implement the matrix addition

·          Any additional rules or changes to the grammar that are needed to support this.

 

·          A working program that compiles and runs is not necessary, but you can use TXL to verify your ideas if you like. But please add comments, explanations, etc. to help me understand your program.

 

o        One Possible Answer:

 

% Program for Matrix Addition by Mohammad El-Ramly

% last updated Jan. 6 / 2003

% Input: 1 2 3, 4 5 6 + 10 10 10, 100 100 100

% Output: 11 12 13, 104 105 106

 

define matrix

        [list  vector] | [vector] ', [matrix]

end define

 

define vector

        [NL][repeat number]

end define

 

define program

        [matrix] + [NL] [matrix] | [matrix] | [vector] ', [program]

end define

 

function main

    replace [program]

         P [program]

    by

        P [addMatrix]

end function

 

 

function addMatrix

    replace [program]

       Mat1 [matrix] '+ Mat2 [matrix]

    deconstruct Mat1

        v1 [vector] ', restMat1 [list vector]

    deconstruct Mat2

        v2 [vector] ', restMat2 [list vector]

    deconstruct v1

        N1 [repeat number]

    deconstruct v2

        N2 [repeat number]

    construct newP [program]

       restMat1 '+ restMat2

    by

       N1 [addVec N2] ', newP [addMatrix] 

end function

 

function addVec N2 [repeat number]

    replace [repeat number]

        N1 [repeat number]

    deconstruct N1

        num1 [number] rest1 [repeat number]

    deconstruct N2

        num2 [number] rest2 [repeat number]

    by 

        num1 [+ num2]     rest1 [addVec rest2]

end function

 

o        Example Input 1 Tried with This Program:

1 2 3,

4 5 6

+

10 10 10,

10 10 10

 

The Output:

11 12 13,

14 15 16,

 

o        Example Input 2 Tried with This Program:

61 17 18 9 10, 61 17 18 9 10, 61 17 18 9 10, 61 17 18 9 10,

+

10 100 1000 10000 100000, 10 100 1000 10000 100000, 10 100 1000 10000 100000, 10 100 1000 10000 100000,

   

The Output:

 

71 117 1018 10009 100010,

71 117 1018 10009 100010,

71 117 1018 10009 100010,

71 117 1018 10009 100010,