Lecture 3.
Lecture 3.
Lecture 3.
ECONOMICS
DEPARTMENT: DIGITAL
TECHNOLOGIES AND
APPLIED INFORMATION SCIENCE
PROFESSOR SHAHNAZ SHAHBAZOVA
Introduction
In this lecture, we first investigate why management of software projects is much
more complex than managing many other types of projects.Subsequently, we outline
the main responsibilities and activities of a software.Project manager. Next, we
provide an overview of the project planning and provide an overview of the risk and
configuration management activities.
Team Structure
Team structure addresses organisation of the individual project teams. Let us
examine the possible ways in which the individual project teams are organised. In
this text, we shall consider only three formal team structures—democratic, chief
programmer, and the mixed control team organisations, although several other
variations to these structures are possible. Projects of specific complexities and sizes
often require specific team structures for efficient working.
Chief programmer team:
In this team organisation, a senior engineer provides the technical leadership and is
designated the chief programmer. The chief programmer partitions the task into
many smaller tasks and assigns them to the team members. He also verifies and
integrates the products developed by different team members. The structure of the
chief programmer team is shown in Figure 3.15. The chief programmer provides an
authority, and this structure is arguably more efficient than the democratic team for
well-understood problems. However, the chief programmer team leads to lower
team morale, since the team members work under the constant supervision of the
chief programmer. This also inhibits their original thinking. The chief programmer
team is subject to single point failure since too much responsibility and authority is
assigned to the chief programmer. That is, a project might suffer severely, if the chief
programmer either leaves the organisation or becomes unavailable for some other
reasons.
Democratic team:
The democratic team structure, as the name implies, does not enforce any formal
team hierarchy . Typically, a manager provides the administrative leadership. At
different times, different members of the group provide technical leadership. In a
democratic organisation, the team members have higher morale and job
satisfaction. Consequently, it suffers from less manpower turnover. Though the
democratic teams are less productive compared to the chief programmer team, the
democratic team structure is appropriate for less understood problems, since a
group of developers can invent better solutions than a single individual as in a chief
programmer team. A democratic team structure is suitable for research-oriented
projects requiring less than five or six developers. For large sized projects, a pure
democratic organisation tends to become chaotic. The democratic team organisation
encourages egoless programming as programmers can share and review each
other’s work. To appreciate the concept of egoless programming, we need to
understand the concept of ego from a psychological perspective. Most of you might
have heard about temperamental artists who take much pride in whatever they
create. Ordinarily, the human psychology makes an individual take pride in
everything he creates using original thinking. Software development requires original
thinking too, although of a different type. The human psychology makes one
emotionally involved with his creation and hinders him from objective examination
of his creations. Just like temperamental artists, programmers find it extremely
difficult to locate bugs in their own programs or flaws in their own design. Therefore,
the best way to find problems in a design or code is to have someone review it.
Often, having to explain one’s program to someone else gives a person enough
objectivity to find out what might have gone wrong. This observation is the basic
idea behind code walk throughs to be discussed in Chapter 10. An application of this,
is to encourage a democratic teams to think that the design, code, and other
deliverables to belong to the entire group. This is called egoless programming
because it tries to avoid having programmers invest much ego in the development
activity they do in a democratic set up. However, a democratic team structure has
one disadvantage—the team members may waste a lot time arguing about trivial
points due to the lack of any authority in the team to resolve the debates.
Mixed control team organisation
The mixed control team organisation, as the name implies, draws upon the ideas
from both the democratic organisation and the chief-programmer organisation.. This
team organisation incorporates both hierarchical reporting and democratic set up.
The mixed control team organisation is suitable for large team sizes. The democratic
arrangement at the senior developers level is used to decompose the problem into
small parts. Each democratic setup at the programmer level attempts solution to a
single part. Thus, this team organisation is eminently suited to handle large and
complex programs. This team structure is extremely popular and is being used in
many software development companies.