views:

144

answers:

8

Hiya,

I'm looking for a book that tells you how to split up a software (or anything; doesn't have to be software-specific) task or project into discrete chunks, and helps elucidate all the issues and nuances that aren't apparent when you just start programming.

Should I get a book on use cases? If so, what?

What I'm looking for is a book that can help me go from a simple story like "The user wants to be able to specify an email address for themselves, or specify that they don't have an email address" to a UI diagram, along with a list of coding tasks, and testing requirements (so writing unit tests becomes very straightforward).

I'm tired of starting on a task only to be flummoxed in the middle of it because it wasn't thought through properly.

Thanks!

A: 

While not specific to software, the PMI's PMBOK is a great overview on how the project planning process works.

PMBOK

JonnyD
Probably overkill for what the OP wants.. as it focuses less on tasks but risk and good governance of projects (i write this as i'm filling out my PMI exam application)
Mark Nold
+4  A: 

"Code Complete" is a book that contains a great deal of information on planning projects, specifically different ways to plan, including the use of pseudo-code, among other ways of approaching it.

Matthew Talbert
A: 

Try the books in the XP Series on extreme programming -- I seem to recall Extreme Programming Installed in particular having a good discussion of these types of issues.

Richard Dunlap
A: 

Steve McConnell's book Rapid Development: Taming Wild Software Schedules is used in my university's undergraduate course on Software Engineering Process and Project Management. It's very much a companion to Code Complete. CC deals with the coding issues, while Rapid Development talks about management issues.

Thomas Owens
A: 

Scott Ambler's The Object Primer is also a useful overview for the topics you mention.

Richard Dunlap
A: 

I liked this one: Software Engineering - A Practioner's Approach. It goes over different aspects of software engineering (not only implementation).

Cătălin Pitiș
A: 

I highly recommend looking into mindmapping - here's a good book: Mapping Inner Space: Learning and Teaching Visual Mapping

and open source mindmapping tool: FeeMind

but don't get stuck in wrestling with any software - you can use crayons. mindmapping is sort of a WBS (work breakdown structure) and sort of free formed organized thinking. When breaking a BIG application (project) to smaller pieces you often find that you have repeated functionality down different branches, very defined and very undefined areas and external interactions to make the system work...graphically representing this with some pics also helps

meade
+1  A: 

Since you are (also) looking for an easy path from user stories/ use cases to test cases you might find BDD and frameworks like StoryQ interesting, as it convert your use cases to a number of unit tests.

Kasper