21.08.2013 Views

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

Software Engineering for Students A Programming Approach

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

378 Chapter 30 ■ Project management<br />

There are approaches that can help in a situation like this. They use a process model<br />

that involves small steps. These tasks are typically as small as an hour or a day. If something<br />

goes wrong with a small task, it can easily be rectified, but if something goes<br />

wrong during a task that takes months, it is hard to fix.<br />

Second scenario: a task takes longer than expected or will take longer than expected.<br />

This is similar to the above case, but here the developer is still around. If the activity is<br />

on the critical path, the deadline has already been missed. There is a huge temptation<br />

either to put additional people on the project or to ask the current people to work extra<br />

hours or to ask everyone to work faster. It is dangerous to give into any of these tactics.<br />

The likelihood is that, later, another task will overrun, compounding the problem.<br />

Here, again, if the tasks are small, the damage is small.<br />

Third scenario: the client asks <strong>for</strong> changes. The scale of changes must, of course, be<br />

assessed. However, it is unlikely that the effect is to reduce work. More likely, additional<br />

work is needed to provide additional functionality. Worse, significant changes are needed<br />

to existing design and code. Now it is natural to want to please the client, and it<br />

may be that the new work is full of interest and challenge, but the only answer here is<br />

to confront the client with the effects on cost and deadlines. The client can then decide<br />

whether to pursue the change, and incur the penalties or perhaps substitute the new<br />

request <strong>for</strong> an old.<br />

SELF-TEST QUESTION<br />

30.5 A meal is in preparation. It looks as if it will be late. What do you do?<br />

30.7 ● Managing people<br />

<strong>Software</strong> is created by living, breathing people. However splendid the tools and techniques,<br />

software development relies on human creativity. There have been many<br />

attempts to analyze the problems of software projects and suggest in<strong>for</strong>mal ways of creating<br />

a successful project team. However well organized the team, there are always<br />

in<strong>for</strong>mal processes at work – both individual and group. A project manager needs an<br />

awareness of these processes and needs to know what can be done to avoid weakening<br />

a team and what can be done to improve a team.<br />

One extreme school of management sees people as inherently lazy and needing to<br />

be controlled. They need to be told clearly what to do, given frequent deadlines and<br />

threatened with the consequences of poor per<strong>for</strong>mance. The opposite is the belief that<br />

people are motivated by rewards such as respect, praise and money.<br />

Any project faces the dilemma of control versus autonomy. Can the team members<br />

be trusted to do a good job with the minimum of supervision? Are mechanisms required<br />

to ensure that team members are per<strong>for</strong>ming? In a factory production plant, such as<br />

a car assembly line, the task that each team member per<strong>for</strong>ms is rigorously specified<br />

and timed to a fraction of a second. The degree of control is total and high levels of

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!