01.01.2015 Views

UML Weekend Crash Course™ - To Parent Directory

UML Weekend Crash Course™ - To Parent Directory

UML Weekend Crash Course™ - To Parent Directory

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

82<br />

Saturday Morning<br />

a way that the Use Case alone could not. This closer look will, as you’ll see in subsequent sessions,<br />

open doors to further analysis of the system and ultimately to the design.<br />

Probably the key lesson to learn here is the necessity of tackling the important questions<br />

and issues early, when you have the best chance to come up with the best possible solution.<br />

All too often, developers leave these questions until they’re working on the code, when<br />

many of the big issues are easily lost in the mountain of details and the requirements are<br />

expressed in a form that is alien to most users.<br />

Why you should care about Use Case scenarios<br />

In some situations, a Use Case is simple enough that the narrative is more than ample to<br />

explain all the issues that define its proper execution. But in many other Use Cases, the<br />

logic can become troublesome. Many of the applications we work on are complex and require<br />

significant scrutiny. That is one reason why the <strong>UML</strong> provides a whole set of tools rather<br />

than just one.<br />

In addition to addressing complexity, you need some way to test the accuracy and completeness<br />

of the Use Cases. Unfortunately, for many projects, developers often hold off testing<br />

until the end of the project, when they’re short on time and focused on the solution<br />

rather than the requirements. Or worse yet, there is no time for testing at all, so final<br />

tweaking happens in production.<br />

Speaking of requirements, did you know that the overwhelming majority of litigation<br />

regarding software projects is based on misunderstandings over requirements In a recent<br />

abstract regarding his participation in litigation over software projects, Capers Jones of<br />

Software Productivity Research had this to say:<br />

“The clients charge that the development group has failed to meet the terms of the contract<br />

and failed to deliver the software on time, fully operational, or with acceptable quality.<br />

The vendors charge that the clients have changed the terms of the agreement and<br />

expanded the original work requirements.”<br />

Furthermore, the problems that Mr. Jones refers to here are on projects where there is a<br />

contract. Consider how much worse the situation can become where the requirements<br />

process is less formal!<br />

If you’ve ever worked in a quality-assurance group, or even worked with one, you know<br />

how frustrating the tester’s role can be. Think about how the tester’s challenge changes<br />

when she’s able to create a test plan at the beginning of the project instead of waiting until<br />

the end. Then testing can take place in small increments throughout the project, instead of<br />

in a massive, difficult, and frustrating process at the end (if there is time to test at all).<br />

This is why scenarios have taken on an increasingly important role in the requirements<br />

phase. But what happened to other tools like screen layouts and prototypes They are still<br />

valuable, and in some cases provide a great way for users to visualize what you are trying to<br />

express in words and diagrams. The challenge is that the layouts themselves don’t explain<br />

how they’ll be used and why.<br />

Another liability with prototypes is that they give the false impression that the application<br />

is nearly complete. This makes sense because the user only works with the interface. <strong>To</strong><br />

users, the interface is the application. But you know that there is a lot more to it, including

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

Saved successfully!

Ooh no, something went wrong!