Site Archive (Complete)
Windows/.NET
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
TABLE OF CONTENTS
October 29, 2008
C3 Programming

Fostering better communications

(Page 1 of 2)
Shimon Rothschild
C3 programming is a process for fostering better communications between developers and other stakeholders.
Shimon is the founder of Great Budget Software. He can be contacted at shimon@greatbudget.com.


Most software projects fail because they don't meet stakeholder's minimum requirements, come in significantly over budget, or delivered significantly late. What these reasons for failure have in common is miscommunication that occurs when business analysts transfer business requirements to programmers, and programmers define for quality assurance when the software will be ready for testing.

To foster better communication, programmers need to take responsibility for ensuring that business requirements are correctly interpreted into software. C3 programming addresses this issue by explicitly assigning responsibility to the programmer. On a macro level, this is analogous to a function call, input, operations, and output. The inputs are a contract of expectations by business, and the output is expected results. Coding is the operation.

As Figure 1 illustrates, the software development lifecycle (SDL) is broadly broken up into four roles—business analysis, programming, quality assurance, and stakeholder acceptance—and every major SDL model (CMMI, Waterfall, TDD, Agile, and XP) encompasses these roles in this order:

  • The stakeholder is the "boss" and the other roles implement the stakeholder's vision.
  • The business analyst role is to make the vision practical and capture contradictions and gaps in the vision, as well as prioritizing the work.
  • Programming is the design and writing of software code to accomplish the work.
  • The quality assurance role validates that the software code meets specified minimum conditions.

[Click image to view at full size]

Figure 1: Software development lifecycle roles.

C3 programming is a process for fostering better communications among these roles. As Figure 2 illustrates, C3 programming specifies how to successfully write software by defining programming in terms of three phases:

  • Contract
  • Code
  • Close

[Click image to view at full size]

Figure 2: The three C's — contract, code, and close

Additionally, C3 programming defines two components in the programming role: Backward facing (that is, working with business analysis), and forward facing (working with quality assurance). These components focus on interfacing with other roles because better communication between roles results in fewer defects. The programmer reflects back to the business analyst the perceived business need as implemented with software, and before coding, the programmer defines for quality assurance the conditions under which the code is ready for testing. Interfacing with quality assurance is often implemented with Test-Driven Development (TDD). Ironically, the significantly more expensive errors are between the business analyst and programmer.

1 Communication | 2 C3 Programming Next Page
TOP 5 ARTICLES
No Top Articles.
DR. DOBB'S CAREER CENTER
Ready to take that job and shove it? open | close
Search jobs on Dr. Dobb's TechCareers
Function:

Keyword(s):

State:  
  • Post Your Resume
  • Employers Area
  • News & Features
  • Blogs & Forums
  • Career Resources

    Browse By:
    Location | Employer | City
  • Most Recent Posts:



    MICROSITES
    FEATURED TOPIC

    ADDITIONAL TOPICS

    INFO-LINK



     



    Related Sites: DotNetJunkies, SD Expo, SqlJunkies