Management and Evolution: Part Five
Management and Evolution: Part Five
Management
and Evolution
The final part of the Worktext is concerned with the evolution of
software systems after they have been delivered to the customers. The
topics discusses general problems of software maintenance and explains
why this in an expensive process. This is also concerned with the
management of people involved in the software process. Other topics are
concerned with quality management, quality improvement and how to
deliver the system.
Contents
1. Managing People
2. Quality Management
3. System Delivery
4. Software Maintenance
This part discusses the management of people on cognitive and social factors.
Cognitive Fundamentals
Memory organization
Software systems are abstract entities and engineers must remember their
characteristics during the development process. The retention of information in the
memory depends on the memory structure. This seems to be hierarchical with three
distinct, connected areas as shown in Figure 5.1.1.
From senses
75
Short-term memory
Short-term memory
Figure 5.1.1
Human
Long-term memory
memory
(Large capacity, slow access
organization
Knowledge modeling
Motivation
76
One of the roles of project managers is to motivate the people who work for
them. Maslows (1954) suggested that people are motivated by satisfying their needs
and that need can be arranged in a series of levels as shown in Figure 5.1.2.
Self
Figure 5.1.2
reali
Human needs zati
hierarchy on
need
s
Esteem needs
Social needs
Safety needs
Physiological needs
1. Task-oriented who are motivated by the work they do. in software engineering,
they are technicians who are motivated by the intellectual challenge of software
development.
2. Self-oriented who are principally motivated by personal success and
recognition. They are interested in software development as a mean achieving
their own goals.
3. Interaction-oriented who are motivated by the presence and actions of co-
workers. As software development becomes more user-centered, interaction-
oriented individuals are becoming more and more involved on software
engineering.
Management implications
New knowledge
Working memory
Existing knowledge
Figure 5.1.3
Problem Long-term memory
solving
Training
Motivating people
To motivate their staff, managers have to recognize that there are three
factors to be considered. These are the satisfaction of needs, the development of a
cohesive group and the organization of work so that people are assigned task
according to their skills and abilities.
Project staffing
One of the roles of a project manager is to choose staff to work on the project. In
exceptional cases, project managers can appoint the people who are the best suited to be
job irrespective to their other responsibilities or budget considerations.
78
If a manager has some choice of staff who can work on the project, there are a
number of factors which may be used to influence the decision who to appoint (Table
5.1.1).
Table 5.1.1
Factor Explanation Factors that
Application domain For a project to develop a successful system, influence the
experience the developers must understand the decision on
application domain. selecting staff
Platform exercises May be significant if low-level programming
is involved. Otherwise, not usually a critical
attributes.
Programming Normally only significant for short-duration
language experience projects where there is insufficient time to
learn a new language.
Educational May provide an indicator of the basic
background fundamentals which the candidate should
know and of their ability to learn. This factor
becomes increasingly irrelevant as engineers
gain experience across a range of project.
Community ability Very important because of the need for
project staff to communicate orally and in
writing with other engineers, managers and
customers.
Adaptability Adaptability may be judge by looking at the
different types of experience which
candidate have had. This is an important
attribute but often very difficult to assess.
Personality Again, an important attribute but difficult to
assess.
The decision on who to appoint to a project is usually made using three types of
information:
Group working
79
In reality, most software engineers work in teams which vary in size from two to
several hundred people. In a study undertaken by IBM (McCue, 1988), the proportion of
time spent in various activities is shown in Figure 5.1.4.
Non-Productive activities
20%
Figure 5.1.4
Distribution of a software engineer’s time.
Group composition
Leaders are normally appointed and report to the overall project manager.
However, the appointed leader may not be the real leader of the group as far as
technical matters are concerned. The group members may look to another group
member for leadership. He or she may be the most technically competent engineer
or may be a better motivator than the appointed group leader.
Group cohesiveness
In a cohesive group, members think of the group as more important than the
individuals in it. Members of a well-led, cohesive group are loyal to the group. They
identify with group goals and with other group members. They attempt to protect
80
the group, as an entity, from outside interference. This makes the group robust and
able to cope with problems and unexpected situations. The group can cope with
change by providing mutual support and help.
Group communication
Group organization
Software engineering team sizes should normally have no more than eight
members. When small teams are used, communication problems are reduces.
Complex communication structures are not required.
For a big project which cannot be tackled by a single team in the time
available, multiple teams must be used. They should work independently with each
team tackling a significant part of the project in an autonomous way.
Introduction to Software Engineering | For CICT Classroom Use Only
81
Working environment
There is a real and significant cost in failing to provide good working conditions.
When people are unhappy about their working conditions, staff turnover increases. More
costs must therefore be expended on recruitment and training. Software projects may be
delayed because of lack of qualified staff.
Quality management is not therefore just concerned with ensuring that software is
developed without faults and conforms to its specification.
82
Improve process No
Quality
OK?
Yes
Quality managers must ensure the quality of the software process that is
used. This involves:
Quality reviews
Table 5.2.1
Introduction
Types of to Software Engineering | For CICT Classroom Use Only
review 83
Review type Principal purpose
Design or program To detect detailed errors in the design or
inspection code and to check whether standards have
been followed. The review should be driven
by a checklist of possible errors.
Progress reviews To provide information for management
about the overall progress of the project.
This is both a process and a product review
and is concerned with costs, plans and
schedules.
Quality reviews To carry out a technical analysis of product
components or documentation to find faults
or mismatches between the specification and
the design, code or documentation. It may
also be concerned with broader quality
issues such as adherence to standards and
other quality attributes.
1. A quality function in that they are part of the general quality assurance
procedures used in the organization.
2. A project management function whereby they provide information to
management about progress.
3. A training function in that engineers explain their design and justify their
design decisions.
84
Arrange place
and time
Hold review
On the completion of the review, the actions are noted and forms recording
the comments and actions are signed by the designer and the review chairman. All
comments should be considered along with other written submissions to the review
team. Comments should be classed under one of three categories:
1. No action. Either the comment was factually incorrect or the review decided
that the cost of rectifying the problem was unjustified.
2. Refer for repair. The review detected a problem and asked the document
originator or designed to fix that problem.
3. Reconsider overall design. The best way to solve an identified problem is to
change the overall design of the system or process.
Software standards
One of the most important roles of the quality assurance team is the
development of product and process standards. Product standards define
characteristics that all product components should exhibit; process standards
define how the software process should be conducted.
85
Documentation standards in a software project are particularly important as
documents are the only tangible way of representing the software and the software
process. Documents produced according to appropriate standards have a consistent
appearance, structure and quality. Documents make the software process visible so
must be consistent and readable.
86
Training
Two types of people use a system: user and operators. A user exercises the
main system functions to solve the problem described by the requirements
definition document. Thus a user is a problem solver for the customer. The operator
sometimes called computer operator if the operator’s function include powering up,
configuring the device, or performing other tasks that relate to the equipment
rather than to the system operation. Table 5.3.1 contains examples of user and
operator functions.
Table 5.3.1
User and operator functions
Types of training:
Training aids:
87
Demonstration and classes. Demonstrations and classes add
individualization to training, and the users and operators respond
positively. They are usually organized as a series of presentations, so
that each class in the series teaches one functions or aspect of the
system. This can be more flexible and dynamic than paper or online
documents.
Expert user. Sometimes, it is not enough to see a demonstration or
participate in a class. You need a role model to convince you that you
can master the system. In this case, it is useful to designate one or
more users and operators as ‘experts’. The experts are trained in
advance of other users and then used as demonstrators or helpers in
a classroom.
Documentation
o User Manuals. This is a reference guide or tutorial for a system user. The
manual should be complete and understandable, so sometimes it
presents the system to user in layers, beginning with the general purpose
and progressing to detailed functional description.
o General System Guide. Its audience is the customer, rather than the
developer. This is similar to a system design document; it describes a
solution to a problem in terms the customer can understand. In addition,
the general system guide depicts the system hardware and software
configuration and describes the philosophy behind the system’s
construction.
5.4 Software Maintenance
Introduction to Software Engineering | For CICT Classroom Use Only
88
The process of changing a system after it has been delivered and is in use is called
software maintenance. The changes may involve simple changes to correct coding errors,
more extensive accommodate new requirements. Maintenance therefore, is the context,
really means evolution. It is the process of changing a system to maintain its ability to
survive.
There are three different types of software maintenance with very blurred
distinctions between them:
It is difficult to find up-to-date figures for the relative effort devoted to these
different types of maintenance. A survey by Lientz and Swanson (1980) discovered that
about 65% of maintenance was perfective, 18% adaptive and 17% corrective as shown in
Figure 5.4.1/ similar figures were posted by Nosek and Palvia (1990) 10 years later. It is
therefore reasonable to assume that the current figures are about the same.
Corrective Maintenance
17%
Adaptive Maintenance
18%
Perfective Maintenance
65%
Table 5.4.1
Maintenance Activities effort distribution
Maintenance
Introduction to Software Engineering | For CICT Classroom Use Only
89
Maintenance activities are similar to those of development: analyzing requirements,
evaluating system and program design, writing or rewriting code, testing changes, and
updating documentations. Thus, the people who perform maintenance – analysts,
programmer, and designer – have similar roles. However, because chnages often require an
intimate knowledge of the structure and content of the system’s code, programmers play
much large role in maintenance than they did in development.
Who performs maintenance? The team that developes a system is not always used
to maintain the system once it is operational. Often, a separate maintenance team is
employed to ensure that the system runs properly.
Responsibilities of the Maintenance Team. Maintaining a system involves all
members of the maintenance team. Typically, users, operators, or customer
representative approach the maintenance team with a comment or problem. The
maintenance analyst or programmer determine which part of the code are affected
by the comment or problem, how the design is affected by any resulting changes,
and how much it will cost to implement a change. Thus the maintenance team works
with the system to accomplish several tasks:
90
Programmers Effectiveness;
Product12%; 9% 10%;
Quality;
7%
Programmers Time
Availability; 8%; 6%
Perfective Maintenance; 65%;
Corrective Maintenance; 50%
17%; 13%
Table 5.4.2
Maintenance effort distribution
Maintenance Cost
Maintenance cost vary widely from one application domain to another. For business
application systems, maintenance costs were broadly comparable with system
development cost. It is cost-effective to invest effort when designing and implementing a
system to reduce maintenance cost. Adding functionality after delivery involves an
extensive understanding and analysis activity.
Figure 5.4.3 shows how over all lifetime cost may decrease as more effort is
expended during system development to produce a maintenable system.
System 1
System 2
Table 5.4.3
Development and maintenance costs
Introduction to Software Engineering | For CICT Classroom Use Only
91
The Principal Technical and Non-technical factors which affect maintenance
92
Non-technical factors Technical factors
Table 5.4.1
Maintenance Cost
93
EVALUATION NO. 05
1. What factors should be taken into account when selecting staff to work on a
software development project? Explain your answer.
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
Introduction to Software Engineering | For CICT Classroom Use Only
94
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
4. A colleague who is a very good programmer produces software with a low number
of defects but consistently ignores organizational quality standards. How should the
managers in the organization react to this behavior?
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
5. Give an example of a system for which user training and operator training are the
same. Discuss your answer.
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
95
6. The user of an automated system need not be familiar with the computer concepts.
However, knowledge of computers is beneficial for most operators. In what case
should the user of an automated system be unaware of the underlying computer
system? Is the lack of awareness a sign of good system design? Give examples to
support your answer.
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
7. Explain why the structuring facilities offered by programming language such ADA
are likely to lead to more maintainable programs
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
Introduction to Software Engineering | For CICT Classroom Use Only
96
8. Explain why maintenance programming may be more challenging than
development.
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
_________________________________________________________________________________________________
97
BIBLIOGRAPHY
http://www.acm.org/about/se-code
98
Course Syllabus
Course Number: CS 28
Course Title: Introduction to Software Engineering
Course Credit: 3 Units (5 hours per week)
Course Prerequisite: CS
Department: Computer Science Department
School: Eastern Samar State University – Salcedo Campus
Semester & School Year: 2nd Semester S.Y. 2011 – 2012
Course Description:
This course introduces more about ways how to build quality software
systems, its specification, development, management and evolution. This is
designed to provide information about capabilities, limitations and useful information
in planning, producing of good quality software that would meet engineering
standards.
Course Objectives:
This course aims to expose students to the different approaches on designing
and developing good quality software. Accordingly, they are expected to attain the
following:
1. Increase insight and awareness on the University and Department’s mission,
vision, goals and objectives.
2. Conceptualized and provide deeper understanding of the basic concepts of
software engineering.
3. Conceptualized, plan and design/build high quality system/software.
4. Develop and attain knowledge and skills on the use of different approaches
and techniques in planning a new software/system.
5. Develop values and work ethics expected in an ICT professional.
Course Policies:
1. To ensure successful completion of the course, students are expected to
arrive for class on time and to remain in class until the end of the class
session. The students are considered dropped from the class after
99
missing 20% of the total number of hours required for the subject.
2. All students are expected to behave with academic honesty. It is not
academically honest to misrepresent another person’s work as your
own, to take credit for someone else’s words or ideas, to obtain
advanced information on confidential test materials, or to act in a
way that might harm another student’s chances for academic success.
These students will automatically have a grade of 5.0 after three (3)
offenses of academic dishonesty.
3. Assignments, Projects and Exercises should be submitted on the set deadline.
Late assignments, projects and exercises will be deducted accordingly.
4. All students are expected to take Major Exams (Mid-term/Finals) on the
specified day. In general, no make – up test or re-test will be given
except when circumstances warrant but with valid supporting
documents shall be presented.
5. Individual and group activities will be part of the class participation. Students
should participate actively or get involved in group dynamics and other
group assignments.
6. All students are expected to attend classes in the prescribed uniform.
7. Other course policies will be based on the student’s handbook.
Course Outline:
100
Project Rules
Course Requirement:
At the end of the course student should conceptualize and plan a system that
101
Suggested Readings:
102