Difference between revisions of "CRV2 CodeReviewAgile"

From OWASP
Jump to: navigation, search
m
m
Line 4: Line 4:
 
==Some definitions about Agile==
 
==Some definitions about Agile==
  
...
+
The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management.
  
Agile Development is well suited for code review, as two of its best practices are "peer programming" and "peer review". AD incorporates code review in itself
+
Agile has some key practices that could affect the way the code is reviewed.
  
==Peer Programming==
+
Agile Development is well suited for code review, as two of its key practices are "pair programming" and "peer review". AD incorporates code review in itself
  
This technique consists of ...
+
Agile blurs the difference between developing and testing, and so it does with code review. It is not an external activity.
 +
 
 +
 
 +
 
 +
==Pair Programming==
 +
 
 +
This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.
  
 
==Peer Review==
 
==Peer Review==
Line 16: Line 22:
 
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.
 
This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.
  
==LifeCycle==
+
==Life Cycle==
 
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.
 
AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.
  
Line 30: Line 36:
  
 
==continuous integration==
 
==continuous integration==
it can trigger static code analysis
+
it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.
  
  
Line 43: Line 49:
 
....
 
....
  
==Domaing Driven Design==
+
==Domain Driven Design==
  
 
....
 
....
 +
 +
==Refactoring==
 +
 +
Refactoring is the art of changing the code with out changing its behavior. The problem is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.
 +
 +
References:
 +
 +
http://martinfowler.com/articles/continuousIntegration.html

Revision as of 21:00, 19 June 2013

Charly, remember that it's "code review guide", not "testing guide"


Some definitions about Agile

The Agile name is an umbrella for quite a lot of practices that range from programming, to testing, to project management.

Agile has some key practices that could affect the way the code is reviewed.

Agile Development is well suited for code review, as two of its key practices are "pair programming" and "peer review". AD incorporates code review in itself

Agile blurs the difference between developing and testing, and so it does with code review. It is not an external activity.


Pair Programming

This technique is quite controversial, but when its adopted it has the benefits of making better code, as there is one programmer supervising cooperatively the other one's work. If both programmers know this guide, they will apply it continuously.

Peer Review

This one is enforced by the usage of tools like .... that ask another user for a code review before commiting to the versioning system.

Life Cycle

AD tries to keep the code review as near as possible to the development phase, there is no such thing as develop, test, code review cycle.


If you are going to review an Agile Team project code, the best thing that you can do is give this guide to that Team as early as possible and most of your work will be done for you.


Clean Code and "Smells"

The role of testing

It is so fundamental, that the xDD pervades Agile, test first, test earlier

continuous integration

it triggers the tests and often static code analysis too. it makes detection of integration problems arise very quickly.


The role of automatic static code analysis in the Agile Methodologies

Test Driven Development

It aims at code simplicity due to the need of making it testeable

Behavior Driven Development

....

Domain Driven Design

....

Refactoring

Refactoring is the art of changing the code with out changing its behavior. The problem is that thanks to the heavy testing, you can trust that the interface does not change, but behind it, the code can be very volatile. You have to review the code continously, another argument for peer review and automatic static analysis.

References:

http://martinfowler.com/articles/continuousIntegration.html