Comment les exigences sont-elles déterminées dans les projets logiciels open source?


11

Dans le développement de logiciels d'entreprise, il est courant que les exigences soient déterminées par le biais d'un processus formel aboutissant à la création d'un certain nombre de documents d'exigences. Dans le développement de logiciels open source, cela semble souvent absent. Par conséquent, ma question est: comment les exigences sont-elles déterminées dans les projets logiciels open source?

Par «déterminer les exigences», je veux simplement dire «déterminer quelles fonctionnalités, etc., devraient être développées dans le cadre d'un logiciel spécifique».


12
Je pense qu'il convient de souligner que de nombreux projets Open Source ont été développés par des organisations (entreprises et établissements universitaires), plutôt que par des groupes de contributeurs individuels. Et en tant que tel pourrait avoir une fonction formelle de PM / Besoin.
MaximR

Ceci est une partie essentielle de ma thèse en attente. Merci de le demander!
R Claven

Réponses:


8

Les projets open source ont parfois des flux intenses de commentaires des utilisateurs, et parfois les entreprises paient simplement pour planifier et mettre en œuvre certaines fonctionnalités (en embauchant leurs propres développeurs ou les développeurs originaux).

Si votre projet compte 100 utilisateurs, vous pouvez probablement développer ce qui est le plus amusant à coder.

Si votre projet compte 100 000 utilisateurs, vous avez probablement déjà une liste des problèmes que la plupart des utilisateurs souhaitent corriger dans la prochaine version, et une liste des principales fonctionnalités N que les utilisateurs demandent dans votre outil de suivi des problèmes et continuent de poser des questions sur les forums.

Grâce à ces commentaires, vous pouvez rédiger des documents d'exigences pour votre équipe principale, créer des feuilles de route pour aider les contributeurs indépendants à comprendre votre vision et espérer que certains des 100 000 utilisateurs enverront des correctifs.


7

Je suis open source depuis que j'ai entendu parler de linux pour la première fois vers 1995, et je ne me souviens pas avoir entendu le mot «conditions» utilisé dans ce contexte.

Eric Raymond a un bon essai, The Cathedral and the Bazaar , dans lequel il parle de "gratter ses propres démangeaisons". Si vous essayez de résoudre un problème auquel vous êtes personnellement confronté, vous n'avez pas besoin de vous référer aux documents d'exigences pour savoir si vous l'avez résolu ou non.

Ce même essai parle également d'écouter vos utilisateurs, ce qui est un bon conseil pour tout le monde, pas seulement pour les projets open source. Les projets open source ont tendance à être méritocratiques, donc «celui qui écrit le code, établit les règles», plus ou moins.


6

Dans le développement de logiciels d'entreprise, il est courant que les exigences soient déterminées par le biais d'un processus formel aboutissant à la création d'un certain nombre de documents d'exigences.

D'après mon expérience, cela est beaucoup plus courant lors du développement basé sur des contrats, en particulier lorsqu'une entreprise externe fait le développement pour votre entreprise, et il y a un besoin juridique pour un contrat. Mais de nombreuses autres entreprises contrôlent leur développement interne par leurs propres employés d'une manière différente:

  • communication informelle

  • listes d'exigences / bogues / problèmes / tickets priorisés (et ce n'est certainement pas une invention de la communauté "agile")

C'est la même manière que la plupart des projets open source fonctionnent - car il n'y a pas besoin de contrat formel, personne ne se soucie d'élaborer de gros documents détaillés et formels, juste de petites listes indolores de fonctionnalités manquantes ou des tickets collectés dans un problème tracker à résoudre.


5

Si le problème est commun comme, par exemple, l'écriture d'un compilateur ou d'un navigateur, les exigences sont à peu près données sous la forme de normes linguistiques, de systèmes d'exploitation cibles et de matériel cible, etc.

Pour des choses comme GNU Emacs, qui est beaucoup de choses pour beaucoup en plus d'atteindre parfaitement son objectif initial d'être un éditeur de texte, je pense que les exigences avaient du sens en raison de l'immense portée pour l'étendre. Les discussions, les courriels, les groupes de discussion, l'édition de code, le contrôle de version viennent à l'esprit. Un chercheur travaille sur Emacspeak. Je pense que des choses similaires peuvent être dites des navigateurs et d'autres choses qui permettent des extensions.

Si le logiciel rattrape une fonction qui n'est disponible que dans les logiciels non open source, l'exigence est à peu près donnée à nouveau.

ÉDITER:

Lorsque le logiciel open source passe à la maintenance et que moins d'exigences d'origine restent non satisfaites, la plupart des exigences peuvent provenir de bogues, doivent s'adapter à de nouvelles plates-formes telles que les processeurs multicœurs et d'autres matériels qui offrent de meilleures performances lorsqu'ils sont exploités, etc.

Dans un projet entièrement basé sur la recherche comme le GNU Hurd, je pense que les exigences proviennent des résultats de la recherche et des articles.

Pour résumer,

  • au démarrage, les exigences relatives aux logiciels qui tentent de résoudre des problèmes courants peuvent provenir de documents normatifs

  • pour les logiciels qui rattrapent les autres logiciels existants, les exigences sont susceptibles de produire tout ou la plupart des fonctionnalités du logiciel existant et quelques autres fonctionnalités que les développeurs / utilisateurs trouvent intéressants d'avoir

  • pour les projets de recherche, les articles et autres publications pourraient fixer les exigences

  • en maintenance, les bugs, le besoin de s'adapter à des environnements plus récents peuvent être une source majeure d'exigences


En lisant votre réponse pour la première fois, je n'ai pas pu la rattacher à la question. Mais nous pourrions dire qu'une sorte de problème est un facteur clé dans la manière dont les exigences sont formulées. Dans un tel cas, votre réponse est prometteuse. En attente de mises à jour.
alehro

4

Je ne sais pas avec certitude, mais une fois la suggestion est d'utiliser une méthodologie de type Agile, où les exigences sont soulevées sous forme de tickets (ou "cartes"), en utilisant quelque chose comme JIRA, chaque ticket représentant une fonctionnalité ou une exigence. Chaque ticket pourrait ensuite être décomposé en d'autres tickets représentant des unités de travail plus petites.

Quant à savoir ce qu'une application ou un logiciel devrait faire, la réponse simple est de "parler aux autres développeurs". :) "Parler" dans ce cas pourrait signifier une liste de distribution par e-mail, un forum ou même IRC, tout ce qui permet aux gens de différents fuseaux horaires et emplacements géographiques de discuter.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.