University of Leicester
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,