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.

These are qualified by the statement that while there is value in the items on the<br />

right, the items on the left are valued more. Thus agile methods do not throw out the<br />

baby with the bath water; they simply give precedence to certain choices.<br />

The first value recognizes that individual creativity and group collaboration are more<br />

effective than following a prescriptive methodology. The second value recognizes that<br />

software is code, not the accompanying documentation. The third value recognizes that<br />

a good relationship between the clients and the developers is more important than<br />

arguing about contracts. The fourth value prioritizes users’ changing needs rather than<br />

adhering to some meaningless inflexible plan.<br />

Twelve supporting “statements” give guidance on achieving the four core values:<br />

1. our highest priority is to satisfy the customer through early and frequent delivery<br />

of software<br />

2. deliver working software frequently, from a couple of weeks to a couple of<br />

months, with a preference <strong>for</strong> the shorter timescale<br />

3. working software is the primary measure of progress<br />

4. welcome changing requirements, even late in development<br />

5. business people and developers work together daily throughout the project<br />

6. build projects around motivated individuals. Give them the environment and support<br />

they need, and trust them to get the job done.<br />

7. the most efficient and effective method of conveying in<strong>for</strong>mation to and within a<br />

development team is face-to-face conversation<br />

8. the best architectures, requirements and designs emerge from self-organizing<br />

teams<br />

9. continuous attention to technical excellence and good design enhance agility<br />

10. agile processes promote sustainable development. The sponsors, developers, and<br />

users should be able to maintain a constant pace indefinitely<br />

11. simplicity – the art of maximizing the amount of work not done – is essential<br />

12. at regular intervals, the team reflects on how to become more effective, then tunes<br />

and adjusts its behavior accordingly.<br />

We shall see how these can be put into practice shortly, when we look at extreme<br />

programming.<br />

Tools <strong>for</strong> agile methods<br />

26.2 The agile manifesto 331<br />

Many people believe that appropriate software tools are vital to successful software<br />

projects. Agile methods take an independent attitude to tools and use whatever tools<br />

are useful, particularly the simplest tools available. This might mean a computer aided<br />

software engineering (CASE) tool but it also includes non-computer tools. Here are<br />

examples.<br />

Sketches can be made on paper, using color as appropriate <strong>for</strong> all sorts of diagrams,<br />

in<strong>for</strong>mal and more <strong>for</strong>mal (such as UML diagrams). A scanner or digital camera can<br />

record the results <strong>for</strong> computer storage.

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

Saved successfully!

Ooh no, something went wrong!