Software Engineering_Chapter5(1)
Software Engineering_Chapter5(1)
• Plan-driven development
• Risk management
• Managing people
• Teamwork
2
Software project management
• Concerned with activities involved in ensuring
that software is delivered on time and on
schedule and in accordance with the
requirements of the organisations developing
and procuring the software.
4
Software management distinctions
• The product is intangible.
– Software cannot be seen or touched. Software project
managers cannot see progress by simply looking at the
artefact that is being constructed.
• Many software projects are 'one-off' projects.
– Large software projects are usually different in some
ways from previous projects. Even managers who have
lots of previous experience may find it difficult to
anticipate problems.
• Software processes are variable and organization
specific.
– We still cannot reliably predict when a particular software
process is likely to lead to development problems.
5
Factors influencing project management
• Company size
• Software customers
• Software size
• Software type
• Organizational culture
7
Management activities
• Reporting
– Project managers are usually responsible for reporting
on the progress of a project to customers and to the
managers of the company developing the software.
• Proposal writing
– The first stage in a software project may involve writing a
proposal to win a contract to carry out an item of work.
The proposal describes the objectives of the project and
how it will be carried out.
8
Plan-driven development
• Plan-driven or plan-based development is an approach to
software engineering where the development process is
planned in detail.
11
Project plan supplements
Plan Description
Configuration Describes the configuration management
management plan procedures and structures to be used.
Deployment plan Describes how the software and associated
hardware (if required) will be deployed in
the customer’s environment. This should
include a plan for migrating data from
existing systems.
Maintenance plan Predicts the maintenance requirements,
costs, and effort.
Quality plan Describes the quality procedures and
standards that will be used in a project.
Validation plan Describes the approach, resources, and
schedule used for system validation.
12
The planning process
• Project planning is an iterative process that starts when
you create an initial project plan during the project
startup phase.
13
The project planning process
14
Risk management
15
Risk management
• Risk management is concerned with identifying risks
and drawing up plans to minimise their effect on a
project.
• Software risk management is important because of
the inherent uncertainties in software development.
– These uncertainties stem from loosely defined
requirements, requirements changes due to changes in
customer needs, difficulties in estimating the time and
resources required for software development, and
differences in individual skills.
• You have to anticipate(expect) risks, understand the
impact of these risks on the project, the product and
the business, and take steps to avoid these risks.
16
Risk classification
• There are two dimensions of risk classification
– The type of risk (technical, organizational, ..)
• Risk analysis
– Assess the likelihood and consequences of these risks;
• Risk planning
– Draw up plans to avoid or minimise the effects of the risk;
• Risk monitoring
– Monitor the risks throughout the project;
19
The risk management process
20
Risk identification
• May be a team activities or based on the individual
project manager’s experience.
– Organizational risks.
– People risks.
– Requirements risks.
– Estimation risks.
21
Examples of different risk types
Risk type Possible risks
Estimation The time required to develop the software is underestimated. (12)
The rate of defect repair is underestimated. (13)
The size of the software is underestimated. (14)
Organizational The organization is restructured so that different management are
responsible for the project. (6)
Organizational financial problems force reductions in the project
budget. (7)
People It is impossible to recruit staff with the skills required. (3)
Key staff are ill and unavailable at critical times. (4)
Required training for staff is not available. (5)
Requirements Changes to requirements that require major design rework are
proposed. (10)
Customers fail to understand the impact of requirements changes. (11)
Technology The database used in the system cannot process as many transactions
per second as expected. (1)
Reusable software components contain defects that mean they cannot
be reused as planned. (2)
Tools The code generated by software code generation tools is inefficient. (8)
Software tools cannot work together in an integrated way. (9)
Risk analysis
• Assess probability and seriousness of each risk.
23
Figure 11-5. Sample Probability/Impact
Matrix
24
25
Risk types and examples
Risk Probability Effects
• Avoidance strategies
– The probability that the risk will arise is reduced;
• Minimization strategies
– The impact of the risk on the project or product will be
reduced;
• Contingency plans
– If the risk arises, contingency plans are plans to deal with
that risk; 28
What-if questions
• What if several engineers are ill at the same time?
31
Risk monitoring
• Assess each identified risks regularly to decide
whether or not it is becoming less or more probable.
32
Risk indicators
Risk type Potential indicators
Estimation Failure to meet agreed schedule; failure to
clear reported defects.
Organizational Organizational gossip; lack of action by senior
management.
People Poor staff morale; poor relationships amongst
team members; high staff turnover.
Requirements Many requirements change requests;
customer complaints.
Technology Late delivery of hardware or support software;
many reported technology problems.
Tools Reluctance by team members to use tools;
complaints about CASE tools; demands for
higher-powered workstations.
33
Managing people
34
Managing people
• People are an organisation’s most important assets.
35
People management factors
• Consistency
– Team members should all be treated in a comparable
way without favourites or discrimination.
• Respect
– Different team members have different skills and these
differences should be respected.
• Inclusion
– Involve all team members and make sure that people’s
views are considered.
• Honesty
– You should always be honest about what is going well
and what is going badly in a project.
36
Motivating people
• An important role of a manager is to motivate the
people working on a project.
• Motivation means organizing the work and the
working environment to encourage people to work
effectively.
– If people are not motivated, they will not be interested in
the work they are doing. They will work slowly, be more
likely to make mistakes and will not contribute to the
broader goals of the team or the organization.
• Motivation is a complex issue but it appears that
their are different types of motivation based on:
– Basic needs (e.g. food, sleep, etc.);
– Personal needs (e.g. respect, self-esteem);
– Social needs (e.g. to be accepted as part of a group).
37
Human needs hierarchy
39
Personality types
• The needs hierarchy is almost certainly an over-
simplification of motivation in practice.
• Self-oriented.
– The work is a means to an end which is the achievement of
individual goals - e.g. to get rich, to play tennis, to travel…
• Interaction-oriented
– The principal motivation is the presence and actions of
co-workers. People go to work because they like to go to
work.
41
Motivation balance
• Individual motivations are made up of elements
of each class.
42
Teamwork
43
Teamwork
• Most software engineering is a group activity
– The development schedule for most non-trivial software
projects is such that they cannot be completed by one
person working alone.
• A good group is cohesive and has a team spirit.
The people involved are motivated by the success
of the group as well as by their own personal goals.
• Group interaction is a key determinant of group
performance.
• Flexibility in group composition is limited
– Managers must do the best they can with available
people.
44
Group cohesiveness
• In a cohesive group, members consider the group
to be more important than any individual in it.
• The advantages of a cohesive group are:
– Group quality standards can be developed by the group
members.
– Team members learn from each other and get to know
each other’s work; Inhibitions caused by ignorance are
reduced.
– Knowledge is shared. Continuity can be maintained if a
group member leaves.
– Refactoring and continual improvement is encouraged.
Group members work collectively to deliver high quality
results and fix problems, irrespective of the individuals
who originally created the design or program.
45
The effectiveness of a team
• The people in the group
– You need a mix of people in a project group as software
development involves diverse activities such as
negotiating with clients, programming, testing and
documentation.
• The group organization
– A group should be organized so that individuals can
contribute to the best of their abilities and tasks can be
completed as expected.
• Technical and managerial communications
– Good communications between group members, and
between the software engineering team and other project
stakeholders, is essential.
46
Selecting group members
• A manager or team leader’s job is to create a
cohesive group and organize their group so that
they can work together effectively.
47
Assembling a team
• May not be possible to appoint the ideal people to work on
a project:
49
Group organization
• The way that a group is organized affects the decisions
that are made by that group, the ways that information is
exchanged and the interactions between the
development group and external project stakeholders.
– Key questions include:
• Should the project manager be the technical leader
of the group?
• Who will be involved in making critical technical
decisions, and how will these be made?
• How will interactions with external stakeholders
and senior company management be handled?
• How can groups integrate people who are not co-
located?
• How can knowledge be shared across the group?
Group organization
• Small software engineering groups are usually
organised informally without a rigid structure.
53
Group communications
• Group size
– The larger the group, the harder it is for people to
communicate with other group members.
• Group structure
– Communication is better in informally structured groups
than in hierarchically structured groups.
• Group composition
– Communication is better when there are different
personality types in a group and when groups are
mixed rather than single sex.
• The physical work environment
– Good workplace organisation can help encourage
communications. 54
Key points
• Good project management is essential if software
engineering projects are to be developed on schedule and
within budget.
55
Key points
• Risk management involves identifying and assessing project
risks to establish the probability that they will occur and the
consequences for the project if that risk does arise. You
should make plans to avoid, manage or deal with likely risks if
or when they arise.
57