Agile : a different philosophy

novembre 25, 2015

Agile : a different philosophy

In a traditional Project, plan what you expect to happen :

– Enforce that what happens is the same as what is planned
Directive management
Control, control, control

– Use change control to manage change
Change Control Board
Defect Management

 

In an Agile Project, plan what you expect to happen with detail appropriate to the horizon ;

– “Control” is through inspection and adaptation
Reviews and Retrospectives
Self-Organizing Teams

– Use Agile practices to manage change:
Continuous feedback loops
Iterative and incremental development
Prioritized backlogs

0

Agile terminology

novembre 25, 2015

Agile terminology

– Caves and common

– Governance

– Intrinsic quality

– Product knowledge

– Reflection or retrospective

– Refactoring

– Code refactoring

– Standards

– Technical debt

– Vertical-market software

Caves and common

The XP phrase ‘caves and common’ refers to the creation of two zones for team members. The common area is a public space where osmotic communication and collaboration are largely at play. The caves is a private space is reserved for private tasks that require an isolated and quiet environment. For the common area to work well, each team member should be working on one and the same project. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

Governance

Highsmith defines agile project governance as « making decisions in an uncertain environment. » [Agile Project Management: Creating Innovative Products – 2nd Edition. Jim Highsmith.]

Intrinsic quality

“Higher the technical debt means lower the intrinsic quality.” Intrinsic quality is an internal quality of the product, having good design and implementation improves the intrinsic quality and reduces the technical debts.

Intrinsic quality is required to deliver continuous value to the customer, it’s an internal quality of product which is not visible to the end user but needed to make product adaptable for future need.

Product knowledge

Cohn’s definition of product knowledge is knowledge about what features will or will not be developed in a project. [User Stories Applied: For Agile Software Development. Mike Cohn.]

Reflection or retrospective

During reflection or retrospectives, an agile team reserves time to reflect on the work it has completed with the objective of continuous improvement. In these self-assessment/team-assessment events, topics can include: lessons learned from successes and failures; team standards that worked, failed, or were not properly followed; and other areas of improvement. [Agile Retrospectives: Making Good Teams Great. Esther Derby, Diana Larsen, Ken Schwaber.]

Refactoring

A change that is made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior is referred to as…

Code refactoring

Code refactoring is method of improving working source code to make it more efficient, readable, extensible, maintainable and less complex. Through refactoring one is able to restructure source code modifying internal code without changing the external behavior. [Agile Retrospectives: Making Good Teams Great. Esther Derby, Diana Larsen, Ken Schwaber.]

Standards

– Aspirational standards

Aspirational standards are standards that every professional should strive to uphold, but are not compulsory. [PMI Code of Ethics and Professional Conduct. Project Management Institute.]

– Mandatory standards

Mandatory standards are required and often backed by law. [PMI Code of Ethics and Professional Conduct. Project Management Institute.]

Technical debt

Technical debt is not an XP practice. Technical debt is total sum of less than perfect design and implementation decisions in the product, technical debt needs to be monitored and controlled.

Sit together (XP advocates an open space big enough for the whole team).

Slack (XP recommends that in any plan it is better to include some minor tasks that can be dropped if you get behind. You can always add more stories later and deliver more than you promised.).

Energized (work only as many hours as you can be productive and only as many hours as you can sustain).

Technical debt is the total amount of less-than-perfect Design and implementation decisions in your project Team should strive to have minimum technical debts, and team should reduce technical debt by adapting refactoring practice of XP.

Vertical-market software

Vertical-market software includes solutions for many organizations within one industry (e.g., pharmaceutical software). Horizontal-market software includes solutions for many organizations in many industries (e.g., word processing software). [The Art of Agile Development. James Shore.]

0

Agile frameworks

novembre 25, 2015

Agile frameworks

Common frameworks or methodologies used within agile include: scrum, extreme programming (XP), lean software development, crystal, feature driven development (FDD), dynamic systems development method (DSDM), agile unified process (AUP). [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

Agile methods offer several benefits including faster time to market, more business value and improved stakeholder satisfaction.

For planning, agile does not recommend heavy upfront planning. Instead, it recommends an initial high-level plan which is re-visited on several occasions throughout the project.

Agile methods work well where there is uncertainty in the environment and the results are driven by people rather than process. Heavy-weight methods canvass formality and discipline in order to work the intricacies of the project.

In opposition, agile methods favor creativity, improvisation, and nimbleness to negotiate with project hazards. In addition, agile methods welcome change and alternately adapt to the new conditions. Heavy methods are more pessimistic at handling change and try to get all things worked out in the first instance.

Common frameworks or methodologies

Common frameworks or methodologies used within agile include: scrum, extreme programming (XP), lean software development, crystal, feature driven development (FDD), dynamic systems development method (DSDM), agile unified process (AUP). [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

AUP

Crystal methodologies

DSDM

FDD

Lean

Lean Software Development

Scrum

XP

Agile failures

The top 12 causes of agile failure (failure modes) according to Aaron Sanders :

– 1. A checkbook commitment doesn’t automatically cause organizational change or support.

– 2. Culture doesn’t support change.

– 3. Culture does not have retrospectives or performs them poorly.

– 4. Standards and quality are lost in a race to project closing.

– 5. Lack of collaboration in planning.

– 6. None or too many Product Owners.

– 7. Poor project leadership or scrum master that doesn’t place trust in the team and allow it to be self-organizing and self-disciplined.

– 8. No on-site agile promoter or coach.

– 9. Lack of a well built, high-performance team.

– 10. Accrued technical debt if strict testing standards are not upheld.

– 11.Culture maintains traditional performance appraisals where individuals are honored and the team aspect is lost.

– 12. Reversion to the traditional or ‘old-way’ of doing business occurs because change is hard.

[Coaching Agile Teams. Lyssa Adkins.]

0

Agile and XP (eXtreme Programming)

novembre 25, 2015

Agile and XP (eXtreme Programming)

Extreme programming (XP) is a programmer-centric agile framework that focuses on small, ongoing releases.

XP highlights several principles: pair programming, sustainable pace, ongoing automated testing, effective communication, simplicity, feedback, courage, collective ownership, continuous integration, energized work, shared workspaces, on-site customer representation, and the use of metaphor to describe concepts. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

XP is generally considered to be the originator of user stories. [User Stories Applied: For Agile Software Development. Mike Cohn.]

The best role for a customer in XP is to write well-defined user stories. [User Stories Applied: For Agile Software Development. Mike Cohn.]

Technical debt

Technical debt is not an XP practice.

Technical debt is total sum of less than perfect design and implementation decisions in the product, technical debt needs to be monitored and controlled.

Sit together (XP advocates an open space big enough for the whole team)

Slack (XP recommends that in any plan it is better to include some minor tasks that can be dropped if you get behind. You can always add more stories later and deliver more than you promised.)

Energized (work only as many hours as you can be productive and only as many hours as you can sustain.)

0

Agile and the framework Scrum

novembre 25, 2015

Agile and the framework Scrum

Srum is a framework that strives to facilitate the development of complex products quickly and efficiently, the adaptation of changing requirements, the delivery of working products incrementally. Scrum development includes three major phases: pre-game, game, and post-game.

Scrum emphasizes the use of product and sprint backlogs, iterative development (termed « sprints »), daily stand-up meetings (termed « scrums »), sprint reviews (demos) and reflection, and the use of information radiators such as task boards and burndown charts. [Ken Schwaber. Agile Project Management with Scrum. Chapter 1.]

 

Roles

The core roles in scrum are the product owner, scrum master and development team. [Ken Schwaber. Agile Project Management with Scrum. Chapter 1.]

 

Daily scrum meeting

Daily scrum meeting is the place where team collaborate and synchronize their work.

 

Sprint Retrospective

It is Sprint retrospective as at the end of sprint cycle, all the team members are required to look back and gauge the previous sprints.

 

Artifacts

In scrum we have 3 artefact which includes Product Backlog, Sprint Backlog and Increment of Product.

 

Pull system

In scrum we implement a pull system by creating sprint backlogs and preparing the task board using it, so the pull system implementation in scrum is done using sprint backlog , task board and daily stand-up.

 

Sprint

Short Sprint Cycles :

– Having shorter sprint would enable teams to deliver early and cycle of such deliveries would make it continuous delivery to the customer

– Sprint planning is there irrespective of the sprint period (2 weeks is early against 8 weeks)

 

0

Agile and Lean Software Development

novembre 25, 2015

Agile and Lean Software Development

Lean Software Development :

– Conceptual and perceived integrity

In lean software development, there are two forms of integrity: conceptual and perceived. Conceptual integrity is determined by the developers and is generally high if the product integrates well and functions as specified. Perceived integrity is judged by the customer and is high if the customer is happy with the product, first and foremost, and secondly if the product meets requirements. [Lean-Agile Software Development: Achieving Enterprise Agility. Alan Shalloway, Guy Beaver, James R. Trott.]

– Continuous improvement

Agile project management places strong emphasis on ‘continuous improvement.’ Continuous improvement processes are built into the agile methodology, from customers providing feedback after each iteration to the team reserving time to reflect on its performance through retrospectives after each iteration. Ongoing unit and integration testing and keeping up with technological/industry developments also play a part in the continuous improvement process. Continuous improvement is also a key principle in the lean methodology, where a focus of removing waste from the value stream is held. [The Art of Agile Development. James Shore.]

– 7 principles

The principles of lean software development are: Eliminate waste; Amplify learning; Decide as late as possible; Deliver as fast as possible; Empower the team; Build integrity in; See the whole. [Lean-Agile Software Development: Achieving Enterprise Agility. Alan Shalloway, Guy Beaver, James R. Trott.]

7 principles of Lean :

– Eliminate waste

– Amplify learning

– Decide as late as possible

– Deliver as fast as possible

– Empower the team

– Build integrity in

– See the whole

You may also read « Lean and waste »

0

Agile, Lean and waste

novembre 25, 2015

Agile, Lean and waste

What is waste ?

Waste comes in three main forms:

– Mura or waste due to variation

– Muri or waste due to overburdening or stressing the people, equipment or system

– Muda also known as the “seven forms of waste”

The 7 types of wastes are :

– Transportation,

– Inventory,

– Motion,

– Waiting,

-Over-production,

– Over-processing,

– Defects

Taxes are not one of the seven wastes. Taxes are regulatory obligation and could not be considered as waste.

The following are the wastes most commonly associated with Lean :

– Transportation: is there unnecessary (non-value added) movement of parts, materials, or information between processes?

– Waiting: are people or parts, systems or facilities idle – waiting for a work cycle to be completed?

– Overproduction: are you producing sooner, faster or in greater quantities than the customer is demanding?

– Defects: does the process result in anything that the customer would deem unacceptable?

– Inventory: do you have any raw materials, work-in-progress (WIP) or finished goods that are not having value added to them?

– Movement: how much do you move materials, people, equipment and goods within a processing step?

– Extra Processing: how much extra work is performed beyond the standard required by the customer?

Muda

Sometimes you will also hear “the disengagement of people » identified as a form of muda.

Muda comes in two flavors called Type-1 muda and Type-2 muda.

What’s the difference? In both cases it fails to meet all three criteria for value-added as defined by your customer.

– Type I muda — Non-value added, but necessary for the system to function. Minimize this until you can eliminate it.

– Type II muda — Non-value added and unnecessary. Eliminate this first!

Extra motion

If excessive or unnecessary emails and document get forwarded multiple times sometimes with large attachments due to multiple distribution groups, it constitutes waste of type motion.

Do not confuse with “Extra Transportation” which refers to unnecessary motion or movement of raw materials or goods such, as work-in-process (WIP) being transported from one operation to another.

Jidoka

Jidoka is a Japanese term used for autonomation means “intelligent automation” or “humanized automation.”

In practice, it means that an automated process is sufficiently “aware” of itself so that it will detect when the desired quality is produced, detect process malfunctions, detect product defects, stop itself and alert the operator.

A future goal of autonomation is self-correction.

Testing

In lean agile the testing is done to improve the process and quality. The testing activity should discover the causes of errors and eliminate them.

Root-cause analysis is part of the testing’s portfolio of work.

In lean we work with a principle-build quality so that the process should ensure we develop quality products, testing alone cannot ensure that we deliver good quality products to the user.

Product Champion

The term “product champion” to describe someone who makes the decisions about which products to create or enhance.

Product companies may use the term “program manager” or “product manager.”

IT organizations may call this role the “sponsor.”

Practical experience from the field suggests that the product champion role comprises a team of product managers, business stakeholders, business analysts, and client-facing personnel who are committed to providing the required service levels of feedback and validation so that the development organization can move quickly.

A primary goal of Lean is to optimize the whole with speed and sustainability. This can be summarized as “fast-flexible-flow,” which is the fundamental phrase used in Womack & Jones.

0

Agile and FDD (Feature Driven Development)

novembre 25, 2015

Agile and FDD (Feature Driven Development)

Feature driven development (FDD) uses a prescriptive model where the software development process is planned, managed, and tracked from the perspective of individual software features.

FDD uses short iterations of two weeks or less to develop a set amount of features.

The five step FDD process is: 1. Develop overall model; 2. Create the features list; 3. Plan by feature; 4. Design by feature; 5 Build by feature. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

The 5 steps of FDD

1. Develop overall model;

2. Create the features list;

3. Plan by feature;

4. Design by feature;

5 Build by feature.

[Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

0

Agile and DSDM (Dynamic Systems Development Method)

novembre 25, 2015

Agile and DSDM (Dynamic Systems Development Method)

Dynamic Systems Development Method (DSDM) is a structured framework that emphasizes a business perspective with a heavy focus on proving the ‘fitness’ or marketability.

Similar to scrum, DSDM has three major phases: initiating project activities, project life cycle activities, and closing project activities (i.e., similar to scrum’s pre-game, game, post-game).

The project life cycle has five stages: feasibility study, business study, functional model iteration, design and build iteration, and implementation. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

Phases

The 3 phases of DSDM :

– Initiating project activities

– Project life cycle activities

The project life cycle has five stages: feasibility study, business study, functional model iteration, design and build iteration, and implementation.

– Closing project activities

0

Agile Unified Process (AUP)

novembre 25, 2015

Agile Unified Process (AUP)

Agile Unified Process (AUP) is a simplified version of the Unified Process, or UP (UP itself is a more detailed framework for iterative and incremental software development).

AUP simplifies UP for the agile framework.

AUP projects use four phases: 1) inception, 2) elaboration, 3) construction, and 4) transition.

At the end of each short iteration, the team delivers a working product. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

 

0

Agile and Crystal Methodologies

novembre 25, 2015

Agile and Crystal methodologies

Crystal is a family of methodologies for a flexible and lightweight approach to software development. The family of methodologies is color coded to differentiate its members (e.g., clear, yellow, orange, red.) The color chosen depends on the level of effort required.

On one end of the spectrum is crystal clear, which is for smaller efforts, while crystal red is for larger efforts.

Life cycle :

The Crystal development process is cyclical/iterative. Its primary components are chartering, delivery cycles, and project wrap-up.

Chartering involves creating a project charter, which can last from a few days to a few weeks. Chartering consists of four activities: 1) Building the core project team, 2) performing an Exploratory 360° assessment, 3) fine tuning the methodology, and 4) building the initial project plan. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

– 4 activities
1) Building the core project team
2) performing an Exploratory 360° assessment
3) fine tuning the methodology
4) building the initial project

Crystal Clear :

Regardless of color, the crystal framework is cyclical and has three fundamental processes: chartering, delivery cycles, and wrap-up.

Crystal chartering includes building the team, doing an Exploratory 360, defining standards of practice for the team, and building the project plan.

In the delivery cycle, the crystal team iteratively develops, integrates, tests, and releases the product in iterations that last from one week to two months.

Like other agile frameworks, crystal includes collaborative events, like stand-up meetings and reflective improvement workshops.

In wrap-up the team concludes the project and holds a completion ritual where the team reflects on the entire project. [Agile Software Development: The Cooperative Game – 2nd Edition. Alistair Cockburn.]

Collocation

A high-performance agile team is one that is ideally collocated for osmotic communication and face-to-face interaction.

However, collocation isn’t always feasible in today’s multinational environment.

For distributed teams, several practices are available to provide the best form of effective communication in the absence of being collocated: team intranet sites, virtual team rooms, and video conferencing over e-mail when possible.

Geographic separation, especially on a world-wide scale, causes the team to consider language and cultural differences, and time zone differences. [The Art of Agile Development. James Shore.]

0

Avantages et inconvénients de la méthode XP (eXtreme Programming)

novembre 19, 2015

Avantages et inconvénients de la méthode XP (eXtreme Programming)

Extreme Programming apparaît comme la plus radicale des méthodes agiles.

Cette méthode se révèle particulièrement efficace dans le cadre de petits projets. XP réalise des applications de qualité grâce à la rigueur imposée sur les tests, qui plus est collent au désirs du client puisque celui-ci est intégré au projet de A à Z.

Aussi efficace qu’elle soit, la méthode XP n’est pas applicable dans tous les cas. Dans le cadre d’un projet de type forfaitaire où le prix, les délais et les besoins sont fixés, XP ne peut pas réellement être mise en œuvre. Le cas d’une équipe supérieure à une douzaine de personnes est un autre exemple où XP est difficilement adaptable car le nombre risque de ralentir, d’alourdir les procédures et de rendre la communication plus difficile et moins efficace.

Enfin, XP est sans doute une des plus contraignante des méthodes agiles, aussi bien pour le client que pour les développeurs. En effet, l’investissement demandé au client est très important puisqu’il doit déléguer une personne à temps plein sur le lieu où est développée l’application, avec toutes les conséquences que cela induit. En ce qui concerne les développeurs, la pratique de la programmation en binôme n’est pas forcément très bien ressentie par tous. Or un projet XP ne peut pas être un franc succès si tous ses participants n’adhèrent pas pleinement à la méthode. Avant de se lancer dans un tel projet, il faudra tout d’abord convaincre le client et motiver l’équipe ce qui n’est pas toujours aisé.

Avantages :

– Rapidité

– Réactivité

– Productivité

– Compétence

– Légereté

Inconvénients :

– Maintenance

– Blocage culturel

– Limite de taille

Documentation et communication

La façon classique de travailler en génie du logiciel favorise grandement la production de documentation (document de vision, de spécification, d’assurance qualité, de « configuration management », de métriques, etc.). Ainsi, ce concept est très difficile à accepter dans le domaine du génie Logiciel.

Le fait d’avoir le client en permanence sur le site de développement est très exigent et difficile à réaliser pour celui-ci. Ce n’est pas n’importe quelle compagnie qui est prête à sacrifier une personne à plein temps.

L’emphase sur la communication est un point très important qui favorise le bon développement d’un système adapté. « Plusieurs têtes valent mieux qu’une ! »

Ainsi le travail par paire (le pair programming) oblige les développeurs à bien comprendre leur code. Ils doivent être en mesure de pouvoir expliquer ce qu’ils font à leur paire. Mettre tous les programmeurs dans même pièce à aire ouverte est une très bonne idée qui permet une bonne communication. Fini les développeurs qui codent chacun dans leur coin.

Bien que le programmeur soit un peu réticent à accepter que le code qu’il fait ne lui appartient pas et que n’importe quel autre développeur à la permission de le modifier durant le projet, il y a cependant beaucoup de points positifs à cette méthode.

Un autre point important est l’abolition des heures supplémentaires. Souvent le problème du temps supplémentaire se fait sentir dans les équipes de développements. Selon la prémisse de XP, il ne doit pas avoir de semaine dépassant largement 40 heures d’ouvrage. En effet, c’est un point très important et qui permet d’avoir une bonne santé mentale et une vie sociale !

La communication sans délais avec le client, bien que demandant pour le client est très bon pour les développeurs. Ceux-ci ont besoin à plusieurs reprises d’avoir des réponses à leurs questions pour le bon déroulement du système.

Les tests sont aussi sans contre doute une nécessité. Autant les tests unitaires que les test de régression, cela doit être une pratique courante pour les développeurs. Classiquement lors de conception de logiciel l’habitude consiste à faire des tests à la fin du cycle de développement. Cela fait perdre beaucoup de temps, d’argents  et ne doit pas être une pratique courante.

Un autre point très intéressant, est de dégager la documentation non nécessaire pour les développeurs comme étant un requis du client et non une nécessité. En fait, plus souvent qu’autrement le développeur se retrouve à faire de la documentation à plein temps sur un logiciel qu’il développe ou qu’il doit développer. Souvent cette documentation ne sera jamais utilisée par les programmeurs. Donc, le fait de charger au client pour cette documentation extra de la même façon que pour des fonctionnalités logiciels est selon moi un bonne pratique.

Le changement

La méthodode XP permet au client de modifier ses spécifications en cours de route. Très utile lorsque le client n’a pas une idée ferme car il peut changer l’orientation que prend le projet à n’importe quel moment. Cela reflète plus la réalité que ce qui se fait chez les autres pratiques connues. Souvent lorsque le client décide de changer quelques fonctionnalités en cours de route : plusieurs documents doivent être modifiés, l’architecture doit être repensé, etc. Enfin tout un processus qui selon moi est très lourd se met en place et coûte très cher au client. XP par sa méthodologie logicielle allégée destinée à réduire le coût du logiciel est plus adapté à ce type de modification lors du développement du système

La productivité

La pratique XP est conçue pour une équipe de 2 à 10 personnes. Cela permet aux développeurs de bien connaître l’ensemble du projet qu’ils développent et aussi d’avoir une belle synergie au sain de leur équipe de développement.

En plus, elle favorise la productivité des développeurs car ils doivent toujours être alerte aux différentes questions de leurs pairs concernant le code qu’ils sont en train de faire. Comme le nom de cette méthodologie peu le laisser sous-entendre, « eXtrème Programming » elle pousse le développeur à l’extrême et l’oblige à donner sont « 110 pour cent. »

La livraison régulière des versions permet de motiver le client et le développeur. Tout le monde est en mesure de voir l’évolution du système. Le client peu enfin suivre cette évolution pendant que les développeurs bâtissent le logiciel. Ils n’ont plus à attendre des mois avant de voir leur logiciel en production. Chaque itération dure de 1 à 4 semaines ce qui donne un haut taux de « feedback ». Cela permet d’avoir assez rapidement des commentaires de la part du client. Ce processus permet d’avoir du code dynamique et continuellement en changement. Quiconque est en présence d’un bout de code très compliqué est encouragé et en mesure de le simplifier. Finalement, l’intégration du code plusieurs fois par jour force les développeurs à communiquer et à bien comprendre le fonctionnement et le processus de développement du système qu’ils bâtissent.

Le « eXtreme Programming » est une méthode qui ne propose rien de nouveau. Toutes les techniques utilisées sont déjà connues (utilisation de standards, utilisation des tests unitaires, utilisation de tests de régression, bonne communication, etc.).

Ce qui est très difficile à accepter dans les processus de XP est :

1. De ne pas documenter le code ;

2. De ne pas avoir de documentation externe ;

3. De dire que les tests unitaires sont plus importants que le code en soit.

Néammoins la méthode XP (eXtreme Programming) est une méthode ayant de l’avenir et qui devrait s’appliquer à tous les petits projets où le client n’est pas totalement sûr de ce qu’il veut.

1

Les rôles dans la méthode XP (eXtreme Programming)

novembre 19, 2015

Les rôles dans la méthode XP (eXtreme Programming)

La méthode XP décrit 7 rôles :

– Développeur

– Client

– Testeur

– Tracker

– Coach

– Consultant

– Big boss

Développeur

Il est l’élément principal d’un projet XP. En apparence, le développeur passe simplement son temps à écrire des lignes de code, rajouter des fonctionnalités, simplifier, optimiser son code. Mais son rôle ne se limite pas à cela. La principale qualité d’un développeur est sa capacité à communiquer. XP requiert aussi la capacité à travailler en binôme, aptitude qui n’est pas forcément requise pour d’autres types de projets. Enfin, un développeur doit s’habituer à la simplicité : construire la solution la plus simple et ne construire que ce qui est absolument nécessaire doit devenir un réflexe. Un développeur doit avoir d’autres compétences plus techniques : être capable d’écrire du code propre, de pratiquer le refactoring, de recourir aux tests unitaires, etc. Enfin, XP requiert du courage de la part des développeurs.

Client

Le client est l’autre moitié du duo essentiel dans l’approche eXtreme Programming. Le développeur sait comment programmer et le client sait quoi programmer. Pour un projet XP, le client doit apprendre à exprimer ses besoins sous forme de user stories, à leur donner un ordre de priorité et à dégager ce qui est essentiel et valorisant pour lui. Dans l’idéal, le client a à la fois le profil de l’utilisateur et une vision plus élevée sur le problème et l’environnement du business dans lequel le projet s’inclut. Le client doit aussi apprendre à écrire les cas de tests fonctionnels et faire preuve, lui aussi, de courage.

Testeur

Étant donné que les tests unitaires sont à la charge des développeurs, le testeur a pour rôle d’aider le client à choisir et à écrire ses tests fonctionnels. Le testeur n’est pas une personne isolée, chargée de mettre le système en défaut et d’humilier les développeurs : il s’agit juste d’une personne chargée de faire passer régulièrement la batterie de tests.

Tracker

C’est un peu la conscience de l’équipe. Son rôle est d’aider l’équipe à mieux estimer le temps nécessaire à l’implémentation de chaque user story et de garder un œil sur le planning en relation avec l’avancement réel du projet. C’est en quelque sorte l’historien et le rapporteur de l’équipe, chargé de collecter toutes les informations qui peuvent s’avérer utiles.

Coach

Le coach a la responsabilité globale de tout le processus. Son rôle est de recadrer le projet, d’ajuster les procédures. Toute la difficulté de sa tâche réside dans le fait qu’il se doit d’intervenir de la manière la moins intrusive possible. Au fur et à mesure de la maturation de l’équipe, sont rôle diminue et l’équipe devient plus autonome.

Consultant

La programmation en binôme rend assez peu probable l’existence de domaines de compétences dans lesquels seuls un ou deux membres de l’équipe ont des connaissances suffisantes. C’est une force car cela rend l’équipe très flexible mais c’est aussi une faiblesse car la volonté de simplicité se fait parfois au détriment de connaissances techniques très poussées. Quand le problème se présente, l’équipe a recours aux services d’un consultant. Le rôle d’un consultant est d’apporter à l’équipe les connaissances nécessaires pour qu’ils résolvent eux mêmes leur problème et non de leur apporter une solution toute faite.

Big boss

Le Big Boss apporte à l’équipe courage et confiance.

0

Le cycle de vie de la méthode XP (eXtreme Programming)

novembre 19, 2015

Le cycle de vie de la méthode XP (eXtreme Programming)

Les grandes lignes du cycle de vie d’un projet XP :

– Exploration

– Planning

– Itérations jusqu’à la 1ère release

– Mise en production

– Maintenance

– Mort

Exploration

Au cours de cette phase, les développeurs se penchent sur des questions d’ordre technique destinées à explorer les différentes possibilités d’architecture pour le système et à étudier par exemple les limites au niveau des performances présentées par chacune des solutions possibles. Le client de son côté s’habitue à exprimer ses besoins sous forme de user stories que les développeurs devront estimer en terme de temps de développement.

Planning

Le planning de la première release est fait de telle sorte qu’un système pourvu uniquement des fonctionnalités essentielles soit mis en production dans un temps minimum et soit enrichi par la suite. Le planning game dure un ou deux jours et la première release est en général programmée pour deux à six mois plus tard.

Itérations jusqu’à la 1ère release

C’est la phase de développement à proprement parler de la première version de l’application. Celle ci se fait sous forme d’itérations de une à quatre semaines.

Chaque itération produit un ensemble de fonctionnalités passant avec succès les tests fonctionnels associés. La première itération est dédiée à la mise en place de l’architecture du système. Ces itérations courtes permettent de détecter rapidement toute déviation par rapport au planning qui a été fait jusqu’à la sortie de la release. En cas de déviation, quelque chose est à revoir, soit au niveau de la méthode, soit au niveau des spécifications, soit au niveau du planning. Durant les itérations, de brèves réunions réunissent toute l’équipe quotidiennement pour mettre chacun au courant de l’avancement du projet.

Mise en production

Les itérations de cette phase sont encore plus courtes, ceci pour renforcer le feedback. En général, des tests parallèles sont conduits au cours de cette phase et les développeurs procèdent à des réglages affinés pour améliorer les performances (performance tuning). A la fin de cette phase, le système offre toutes les fonctionnalités indispensables et est parfaitement fonctionnel et peut être mis à disposition des utilisateurs.

Maintenance

Il s’agit dans cette phase de continuer à faire fonctionner le système désormais existant et de lui adjoindre les fonctionnalités secondaires qui avaient volontairement été laissées de côté jusque là. Le développement de nouvelles fonctionnalités sur un système déjà mis en production requiert une prudence accrue de la part des développeurs et cette phase est donc cruciale. A chaque nouvelle release, une nouvelle phase d’exploration rapide doit avoir lieu.

Mort

La fin d’un projet intervient quand le client n’arrive plus à écrire de user stories supplémentaires ce qui signifie que pour lui, tous ses besoins ont été satisfaits ou quand le système n’est plus capable de recevoir de modifications pour satisfaire de nouveaux besoins tout en restant rentable.

0

Les principes de base de XP (eXtreme Programming)

novembre 19, 2015

Les principes de base de XP (eXtreme Programming)

Les principes de base de la méthode XP sont :

– Feedback rapide

– Assumer la simplicité

– Changements incrémentaux

– Accueillir le changement à bras ouverts

– Un travail de qualité

– Apprendre à apprendre

– Faible investissement au départ

– Jouer pour gagner

– Communication ouverte et honnête

– Travailler avec et non contre les instincts de chacun

– Responsabilités acceptées

– Adaptation aux conditions locales

– Voyager léger

– Mesures honnêtes

 

 Feedback rapide

L’idée de base est issue de la psychologie de l’apprentissage : plus le retour suit de près une action, plus l’apprentissage qui en résulte est important. C’est pour utiliser au mieux cette caractéristique qu’eXtreme Programming préconise des itérations de courte durée et l’implication forte du client. Un retour rapide pour le développeur permet une correction ou un changement de direction plus rapide et un retour rapide vers le client lui permet de tester en permanence l’adéquation du système à ses besoins et au marché.

Assumer la simplicité

XP recommande de traiter tous les problèmes par la solution la plus simple possible, partant du principe qu’un travail propre, simple et minimal aujourd’hui est facile à améliorer par la suite.

Changements incrémentaux

Une série de petits changements progressifs est toujours bien plus sûre et bien plus efficace qu’un grand chambardement. Ceci est valable à plusieurs niveaux : dans un projet XP, l’architecture et la conception changent petit à petit, de même que le planning et la composition de l’équipe.

Accueillir le changement à bras ouverts

La meilleure stratégie est celle qui préserve le maximum d’options tout en apportant une solution aux problèmes les plus urgents.

Un travail de qualité

Parmi les quatre variables qui définissent un projet : taille, coûts, délais et qualité, la qualité n’est pas vraiment indépendante. Pour la réussite d’un projet, la qualité ne peut qu’être « excellente » si chacun aime le travail qu’il fait.

Apprendre à apprendre

Plutôt que de s’en remettre à des théories ou des idées reçues pour répondre aux questions comme : quelle quantité de tests est nécessaire ? combien de temps dois-je passer à retravailler et améliorer le code que j’ai écrit ? etc., mieux vaut apprendre à chacun à apprendre par soi même en fonction de chaque projet.

Faible investissement au départ

Allouer peu de ressources à un projet au départ force les clients et les développeurs à aller à l’essentiel et à dégager ce qui est réellement prioritaire et porteur de valeur.

Jouer pour gagner

L’état d’esprit dans lequel doit se placer une équipe XP peut être comparée à celui d’une équipe de rugby ou de basket : jouer pour gagner et non pour éviter de perdre.

Communication ouverte et honnête

Toute décision abstraite doit être testée. Dans cet ordre d’idée, le résultat d’une séance de conception ne doit pas être un modèle finalisé un peu parachuté, mais une série de solutions évoquées au cours de la séance. Il est essentiel que chacun puisse dire sans peur qu’une partie de code n’est pas optimale, qu’il a besoin d’aide, etc.

Travailler avec et non contre les instincts de chacun

Les gens aiment réussir, apprendre, interagir avec d’autres, faire partie d’une équipe, avoir le contrôle des choses. Les gens aiment qu’on leur fasse confiance. Les gens aiment faire un travail de qualité et voir leurs applications fonctionner. XP cherche à offrir à chacun des moyens d’exprimer ces qualités au cours du projet

Responsabilités acceptées

Il est nécessaire de donner à chacun la possibilité de prendre des responsabilités (par exemple, les développeurs se répartissent eux mêmes les tâches sur la base du volontariat). Cela permet d’éviter les frustrations dans le cas où les responsabilités sont imposées et non délibérément choisies.

Adaptation aux conditions locales

Adopter XP ne signifie pas prendre à lettre la méthode mais intégrer ses principes pour l’adapter aux conditions particulières de chaque projet.

Voyager léger

Un développeur a tendance à transporter beaucoup de choses inutiles. Un débat est soulevé à ce sujet à propos des règles de nommage. Si certaines sont utiles et même indispensables, d’autres sont probablement des contraintes inutiles ou non respectées. Les simplifier pour ne garder que celles qui sont essentielles et utilisées par tous, c’est voyager plus léger.

Mesures honnêtes

La volonté de contrôler le déroulement d’un projet conduit a évaluer, mesurer certains paramètres. Il faut toutefois savoir rester à un niveau de détail pertinent. Par exemple, il vaut mieux dire « cela prendra plus ou moins deux se- maines » que de dire « cela prendra 14 176 heures ».

0