Re: "Selling" a code-audit.

Javier Blanque <[email protected]> Wed, 22 Sep 2004 09:28:35 -0300
Newsgroups gmane.comp.security.programming
Message-ID <[email protected]>
I think the final goal of code auditing is helping to make better code.
In the long term, it is more important a successful project with robust 
code than a successful 'code-audit'.
The code-auditing must promote robust code, defensive programming and 
'teaching lessons', not to detect guilty people, and the guidelines for 
this are under the 'common sense' label. We can learn the lesson of 
Quality assurance from other industries, the japanese car industry 
revolutionized productivity with the 'Zero-defect' initiative, of each 
member of the team -and the company- being a Quality Auditor, instead 
of supervising the project 'after the facts'.
- Take the problem before it is born, then it is easier to deal with, 
and it resolves itself, paraphrasing Lao-Tzu.
- Start early in the development process: it is better if one starts 
working with the team before the project begins,  and is part of it 
(being everyone informed of our auditing or supervising activities). 
One is better positioned if is part of the team - even at the risk of 
losing some objectivity -.
- One could anticipate the problems by way of suggesting 'A  
methodology', a set of rules or 'best practices' to the developers at 
the beginning, this will reduce the 'stress' level of the participants, 
and make them more collaborative. And fewer defects will be detected, 
because there are less, not by problematic relationship with the team 
and obscurity.
- Auditing must be like 'a movie' which helps in building the project, 
instead of a 'post-mortem' picture of what was wrong. Of course there 
will be situations when there is no alternative than do a post analysis 
of what went wrong, but we need to keep focus on the long term, and use 
the pareto's law (80/20) for an approach.
- We need to support development methodologies which promote 
peer-review, pair programming, such as 'eXtreme Programming' or XP, 
which in general are more robust practices and better at 'defensive 
programming', are more proactive methodologies, and easier to follow 
too. And when dealing with a team which have such practices, they will 
not be 'at a defensive position' because they will  see you as part of 
the process, and as part of their team. Then the whole team (including 
the code auditor) will be successful.
Best regards,
Javier Blanqué

> -----Original Message-----
> From: Yvan Boily [mailto:[email protected]]
> Sent: segunda-feira, 30 de agosto de 2004 14:45
> To: [email protected]
> Subject: "Selling" a code-audit.
>
>
> One of my primary responsibilities with my employer is performing code
> audits; so far I have been fairly effective in a technical capacity,
> however
> on almost every single code audit I have participated in I have
> received
> hostile responses from the development team.  I have tried a variety of
> approaches to develop a stronger rapport with the development team,
> however
> in spite of my best efforts I find that going into a code audit I am
> already
> fighting against preconceptions about why the code audit is being
> performed.
>
>
> I understand that many people feel threatened when work they have done
> is
> criticized; what I need to know is how I can minimize this and coax the
> development teams into being more interactive than defensive.  Any
> pointers?
>
> Yvan Boily
>