![]() |
Site Archive (Complete) | |||
|
ABOUT US |
CONTACT |
ADVERTISE |
SUBSCRIBE |
SOURCE CODE |
CURRENT PRINT ISSUE |
NEWSLETTERS
|
RESOURCES
|
BLOGS
|
PODCASTS
|
CAREERS
|
||||
October 29, 2008
C3 ProgrammingFostering better communicationsShimon 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 rolesbusiness analysis, programming, quality assurance, and stakeholder acceptanceand every major SDL model (CMMI, Waterfall, TDD, Agile, and XP) encompasses these roles in this order:
[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:
[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.
|
|
||||||||||||||||||||||||||||
|
|