Best Practices for Software Projects -
Prototyping
This year's newsletters will focus on best practices for Software
Development Projects. Each month will cover a different best practice
technique. This month focuses on improving requirements gathering with the
use of prototyping.
|
Newsletter
Sponsored by Software Planner |
|
http://www.SoftwarePlanner.com
Sign up for a free 2 week trial and you are entered to
win a
FREE HP Pocket PC |
|
Software Planner (http://www.SoftwarePlanner.com)
helps improve the quality of software releases and decrease software
maintenance costs by providing you with tools for managing all phases of the
software lifecycle. Software Planner tracks customer requirements, test
cases, defects, support tickets, appointments and to-do lists, and allows
you to share documents and hold threaded discussions. Fully web-based
and integrated with email.
|
Best Practices for Software
Projects - Prototyping
The most critical part of
software development and project management is to ensure that you first agree
with your client on the requirements and the scope of the project. If this
is not done well, your project has very little chance of succeeding.
Since everything in the software lifecycle is driven from requirements,
all follow-on tasks to the requirements gathering will be flawed if the
requirements are not correct.
A technique for improving the
requirements gathering process is prototyping. With prototyping, your team
works with the client to collect their requirements, normally done during JAD
(Joint Application Development) sessions. As requirements are collected,
your technical team should develop prototypes of the screens, reports, processes
and the associated workflow. Once developed, the JAD participants can
tangibly see that you have (or have not) captured their requirements accurately.
Discussions by JAD participants will refine the prototypes until you have
reached agreement on the exact requirements.
Below are the advantages to prototyping:
- provides early feedback on the
requirements when the cost of making changes is low
- provides buy-in from client and JAD
members to ensure that everyone agrees to the requirements
- provides visible progress,
improving team moral and sense of accomplishment
- reduces project timeline because
requirements are solidified up front, allowing programmers to architect a
better solution that enhances code reuse
- lowers defect rates because of
clear requirement definition
- quickens the ability for new team
members to get up-to-speed on the project, as everything is well defined
The best way to demonstrate prototyping
is from a real-life example. Recently, we implemented a time sheet system
for a client that was delivered on-time and on-budget. The names of the
client and sensitive information have been removed. Here is how we did it:
- JAD Sessions - Initially, we
held JAD sessions with the client. Because this was a
fairly small project, the JAD participants were the client's project
manager, and 2 of the end-users. From our team, we had the project
manager and the software architect attend the meeting. The project
manager was responsible for setting up and running the meetings as well as
putting all the documentation together. The software architect was
responsible for putting together the prototypes and aiding the project
manager in putting together the documentation. The JAD session consisted of
3 meetings that spanned over one week.
- JAD Session 1 -
Prior to meeting, the client sent us some rough requirements that consisted
of time sheet layouts for salaried vs. hourly employees and a short
description of how each person would be using the time sheet system. Our
project manager called the client project manager and discussed the
requirements in detail and talked about workflow. Then the project
manager and software architect worked together to create a first draft of
the requirements without any prototypes. Here is a copy of the initial
requirements document we put together and discussed in JAD Session 1:
http://www.pragmaticsw.com/newsletters/JADVIL0039a.pdf
Notice that this document does not have any prototypes, it just explains the
time sheet system in general terms.
In JAD Session 1, we
reviewed the requirements with the client to ensure we had captured their
requirements and workflow accurately. At the conclusion of the
meeting, another follow-on meeting was scheduled for 2 days later and we
promised a prototype.
- JAD Session 2 -
Prior to the meeting, our project manager worked with the software architect
to develop a prototype based on the feedback from JAD Session 1.
The software architect used Microsoft FrontPage to create the prototype (but
could just have easily used Adobe Photoshop or Dreamweaver). Here is a
copy of the requirements document we put together and discussed in JAD
Session 2:
http://www.pragmaticsw.com/newsletters/JADVIL0039b.pdf
Notice that this is the same document used in JAD Session 1, but contains
screen shots and other information about the prototype. It discusses
the behaviors of each function, etc. In JAD Session 2, we reviewed the
prototype with the client to ensure we had captured their requirements and
workflow accurately. At the conclusion of the meeting, a final
follow-on meeting was scheduled for 2 days later and we promised an estimate
and a workflow prototype.
- JAD Session 3 -
Prior to the meeting, our project manager worked with the software architect
to develop a workflow prototype based on the feedback from JAD Session 2.
The software architect used Macromedia's RoboDemo to create the workflow
prototype and also put together a detailed deisgn so that he could estimate
the total effort. Here is a copy of the requirements document we put
together and discussed in JAD Session 3:
http://www.pragmaticsw.com/newsletters/JADVIL0039c.pdf
Notice that this is the same document used in JAD Session 2, but
contain links to a workflow prototype, shows screen shots of the prototype
and also contains a Detailed Design. This allowed us to provide the
client with a fixed price estimate for doing the project. At the
conclusion of JAD Session 3, the client gave us final approval to
move forward.
As you can see, creating prototypes can dramatically increase
your chances of delivering on-time and on-budget. As development began, we
used Software Planner (http://www.softwareplanner.com)
to track project deliverables and defects found during the testing process.
Below are some
helpful templates to aid you in developing software solutions on-time and
on-budget:
About the Author
Steve Miller is the President of Pragmatic Software (http://www.pragmaticsw.com). With over 20 years of experience, Steve
has extensive knowledge in project management, software architecture and test
design. Steve publishes a monthly newsletter for companies that design and
develop software. You can read other newsletters at
http://www.PragmaticSW.com/Newsletters.htm. Steve's email is
steve.miller@pragmaticsw.com.
|