Solving Project Communication Problems
Download
Report
Transcript Solving Project Communication Problems
Solving Project
Communication Problems
Michael Smith, TeraTech, Inc.
[email protected]
http://www.teratech.com
301-424-3903 x110
Copyright TeraTech 2004
Overview
What is FLiP?
General Concepts
Why use FLiP?
Common client communication problems
and project snafus
Wireframing, Prototyping, Devnotes, Signoff
How to get started in your organization
Q&A
Speaker Information
Who am I?
Michael Smith
President of TeraTech, Inc Rockville MD
> http://www.teratech.com/
> ttWebReportServer, CFXGraphicserver
MDCFUG
CFUN-04
Fusebox Conf
Articles in CFDJ
Fusion Authority
Winner CFDJ award best consulting company,
runner up for training
More About Me
25 years programming
7 years with ColdFusion
4 years with Fusebox
Also work with SQL, JavaScript, HTML, VB,
Oracle, Access
Teach one-on-one and custom classes
On site and custom development
Fusebox and Process Methodology
What is FLiP
Fusebox Life cycle Process
Plans your development and client
communication
Contains
>
>
>
>
>
Wireframe
HTML Prototype + Devnotes
Sign off
Circuit mindmapping
Fusedocs
What FLiP achieves
Organize project process
Dramatically improves client-programmer
communication
Better management of client expectations
Improves programmer-programmer
communication
(Including communication with myself from
6 months ago!)
Benefits of Standardization
Better team communication
Cheaper maintenance
Fewer design time bugs
New team members can pick up code
faster
Save time thinking about how to organize
project
Why FLiP?
Works well in practice
Parts useable independently
Community support
“Fusebox began and continues to be guided by a
developer community concerned with making their
projects more successful, their clients happier, and
their own work less frustrating and more
rewarding.”
Fusebox has evolved…
Prior to Fusebox 3, the term, "Fusebox", meant both an
application framework and a set of "best practices" for web
software development.
Architectural Framework (Fusebox)
Development Methodology (FLiP)
1998: Fusebox 1 & 2
2001: Fusebox 3
With Fusebox 3, a clear distinction is made: Fusebox is an
application framework. FLiP is a lifecycle methodology.
Common Project problems
Poorly defined requirements
Scope creep
Communication problem between client and team
Code hard to understand
Non-working code
Changes hard to follow
Outdated code vs comments
Duplicated code - Reinventing the wheel
Inconsistent design approach
Random order of development process
Late requirements
FLiP goals
provide a structured approach to
determining what clients want
make it possible for developers to write
code once
give clients exactly what they want and
expect
document decisions made
determine acceptance testing before coding
overcome the Mythical Man-Month problem
More FLiP goals
support both traditional and distributed
team development
offer a structured documentation/
program definition language
scale from small and simple to large and
complex
support wide variety of developer skill
sets and levels
Two approaches - Traditional
Traditional
Many methodologies focus on writing code (and debugging),
which takes up the greatest amount of the project time.
Two approaches - FLiP
FLiP
FLiP spends a great deal of time on requirements, design, and
architecture, understanding that clients can only tell you what
they want when they see it.
Start
Traditional
Finish
In many methodologies,
the farther along the project
is, the fewer people can
contribute to it.
Start
Let's "FLiP" that around
Finish
With FLiP, as a project
progresses, more developers
can contribute to it.
The 3 stages of FLiP
Discovery
Design
Implementation
Requirements/Design
Fusebox Project Life Cycle
Wireframe
HTML Prototype
Prototype + Devnotes
Sign off
Architecture + Fusedoc
Final Code
Acceptance Test
FLiP diagram
Iterate
with user
Wireframe
Generate
Pages and Flow
Convert to fusebox skeleton
HTML Prototype
Iterate
with user
Graphics and fields,
Devnotes
Sign-off
Fusedoc
responsibilites, IO
Design
Database
Code Fuses
(OK vs make change
and resubmit
dsp, qry, act, lay, fbx
Fuseactions & Circuits
Test Fuses
Mark up fuseactions in printout
of prototype
testharness
Integration Test
Mindmap
Compare to prototype
Group fuseactions into
Circuits, indentify fuses
Deploy
Wireframe
Blueprint of project – compare to the
blueprint of a house
No layout or graphics
Focus on page flow and exits
Client can walk through site
Helps with estimating costs
Many tools available:
> sourceforge wireframetool
> Rebar
> Adalon's wireframe edition
Wireframe
Provides a text-only walkthrough of the
application from the client's POV
Can be done in front of the client
Helps concentrate on what the application
should do, rather than how it should
appear
Forms the basis for moving to the
prototype
You control the level of detail and time
spent
Sample wireframe
HTML Prototype
Is an iterative process whose end is an exact
replica of what the look and feel of the
application is
Guarantees that there is no
miscommunication
Requires no/very little code
Continues until both client and architect
agree that the prototype accurately and
completely reflects what will be delivered
A good prototype is an exact replica of
the finished application
The prototype
The deployed application
HTML Prototype
Exact layout and graphics for all pages
HTML and graphics will be reused in
CF code
Lets client see final site look and feel –
a photo album of future site. Can show
all users.
Clickable – can walk through site
Dummy data
Not the real thing! Compare artists
sketches to finished house.
Using DevNotes with the prototype
Provides a simple mechanism for placing a
context-sensitive, threaded messaging
system on the bottom of each prototype
page
Allows continuing communication to occur
during the prototyping process
Documents the process by which decisions
were made
Ensures that client requirements are not
lost
Devnotes
Let you add written comments attached to
each page
Tag in OnRequestEnd.cfm
Threaded discussion
Record of all changes made
Available from halhelms.com
Other flavors of DevNotes out there
Sample DevNotes
Each message identifies
who wrote it.
Message threads can be
removed when no longer
needed. Such threads are
removed from view, but
remain in the database.
The critical point of FLiP:
prototype freeze
Neither architecting nor coding begins until
the prototype is frozen
The prototype is only frozen when both client
and architect agree that the prototype fully
and completely represents what the finished
application will look like and do
Answers the question, "When do we begin?"
Answers the harder question, "When do we
end?"
Forms the basis for later acceptance testing,
eliminating the "moving goalposts" problem
Formal Sign Off
Client decides when prototype is close
enough to what they need
Sign off is formal end of changes
May bring up other needs or other parties
who have to see prototype
As pages are signed off DevNotes are frozen
Page ok: “Yes” or “No”?
> Do not use “Ok, With Changes”
Steps in architecting a Fusebox
application
1.
2.
3.
4.
5.
6.
7.
8.
9.
Identify fuseactions and XFAs that can be determined
from the prototype
Fill in fuseactions/XFAs that are non-visual
Group fuseactions into circuits
Determine fuses that can be reused or need to be written
Split fuseactions into query, action, display
Write Fusedocs for each fuse
Write fuses
Create test harnesses
Integrated/acceptance testing
Identifying Fuseactions in Prototype
Mindmap Circuits and Fuseactions
Circuit and Database design
Only design the site structure when sign-off
complete
Only design database when sign-off
complete
> Compare to doing at beginning
Use QuerySims to fake out database if DBA
is not finished with database design yet.
Fusedocs
All incoming and outgoing variables in
fuses (including XFAs) are declared in an
XML document known as a Fusedoc.
The Fusedoc sits at the top of every fuse
and is wrapped in CFML comment tags.
It is written before the code is written, and
provides a "contract" between the architect
and the fusecoder.
Fusedocs rules
1. “Include everything a coder needs to
write the fuse, and nothing more.”
Environment variables – request.dsn
No database schema
No file dependences
Only one fusedoc per fuse
Sample Fusedoc
<fusedoc name="act_ValidateLogin.cfm">
<responsibilities>
I check to see if the user can be authenticated. If so, I create a structure called
CurrentUser and return to the fusebox with XFA.goodLogin; else I create no
structure and return to the fusebox with XFA.badLogin.
</responsibilities>
<properties>
<history author="hal helms" date="02 May 2002">
Built to illustrate Fusedocs
</history>
</properties>
<io>
<in>
<string name="XFA.goodLogin" />
<string name="XFA.badLogin" />
<string name="userName" scope="form" />
<string name="password" scope="form" />
</in>
<out>
<structure name="CurrentUser" scope="Session"
optional="TRUE" onCondition="on XFA.goodLogin">
<string name="userID" />
<list name="userRoles" />
<string name="fullName" />
</structure>
</out>
</io>
</fusedoc>
How to get started in your organization
Start with the parts of FLiP you like
Can use any of wireframing, prototyping,
devnotes,sign-off or fusedoc independently
Don’t ask for formal permission – just start
using the part of FLiP you like best it on next
project
Explain roadmap of process to client and
benefits to them of communicating more
FLiP Summary
Better client – programmer communication
More client communication!
A picture is worth a 1,000 words, a
simulation is worth 1,000,000 words
Sign-off sheets used in acceptance testing
Sign off stops endless expensive
enhancements
Roles in software development
Client
Team
Programmer
The client likes the process…
They
> see what they will get before they get it
> can track progress by having known
deliverables
> pay less in time and/or money since there is
less risk to team
> Their expectations are managed better so
they are happier
The team likes the process…
They
> can leverage their investment in tools and
training
> distribute pieces of a project based on skill
sets and levels
> reduce overall risk of project failure
> develop faster and at a lower cost
> Lower stress level due to knowing where in
the process they are
The programmer likes the process…
The programmer
>
>
>
>
>
knows what they're building
can concentrate on writing code
has an active online community available
is able to reuse fuses and modules
enjoys coding again
How about a FLiP book?
Fusebox 3: Developing
ColdFusion Applications
by Jeff Peters and Nat
Papovich
Covers FLiP and
Fusebox framework
Full sample wireframe,
prototype and code for
thirdwheelbikes.com
Fusebox only book
Discovering Fusebox 3
by Hal Helms and John
Quarto-vonTivadar
Consise coverage of
Fusebox framework
No FLiP
Resources
Fusebox core files are freely available from
www.fusebox.org
Various sites have free tutorials, white papers,
sample code, etc.
>
>
>
>
>
>
>
www.halhelms.com
www.techspedition.com
www.grokfusebox.com
www.secretagents.com
www.bombusbee.com
www.fusium.com
Fusebox email list
Ready for some Fusebox training?
TeraTech offers classes in
> FB101 - Intro Fusebox
> FB201 – Intermediate Fusebox and FLiP
All classes are available at TeraTech training
center in Rockville MD or onsite at your
organization.
One-on-One and Project mentoring also
available
Questions?
Email me at
[email protected]
Portions of this presentation were provided by
Hal Helms at halhelms.com