Usine De Développement : vos méthodes de production d'applications

yoannyoann Membre
février 2010 modifié dans Objective-C, Swift, C, C++ #1
Salut tout le monde,

Je viens de lire un article plutôt intéressant sur Octo Talks portant sur une "Usine De Développement" pour leurs projets iPhone et les différents concepts qu'ils ont jugé bon de mettre en place chez eux pour améliorer la création d'application iPhone.

Voici l'article : http://blog.octo.com/monter-une-usine-de-developpement-iphone/

Je serais curieu de savoir comment chacun est organisé de son coté ? Pour ma part c'est beaucoup du "à  l'arache"... J'ai mon Redmine + SVN de fonctionnel, je crée les accès à  mes clients sur leur projet hébergé derrière mon ADSL en pleine campagne et c'est parti, avec ça j'arrive à  maintenir un certain degré de fonctionnement mais j'ai consience que ce n'est pas vraiment la bonne méthode quand on travail avec d'autres ^^

Alors comment ça se passe chez vous ? (Si vous pouvez en parler bien entendu ;-)

Si vous avez des solutions de build + test unitaire automatique différents de ce qui est mis en avant par Octo n'hésitez pas à  partager :-)

Réponses

  • AliGatorAliGator Membre, Modérateur
    19:11 modifié #2
    Salut Yoann,

    En effet très bon article... rédigé par "colionel", membre de pommedev :P
    Il nous avais proposé de publier cet article également sur pommedev... et on s'était montré intéressé.
    Sauf que j'ai un peu laissé trainé par manque de temps de m'en occuper, et alex était un peu occupé aussi, donc heu mes excuses publiques à  colionel :P

    Après du coup on pensait ouvrir un sujet pour discuter justement de ce sujet, tu nous as devancé yoann :)
  • DrakenDraken Membre
    19:11 modifié #3
    Très intéressant, en effet !


  • wiskywisky Membre
    19:11 modifié #4
    En Effet, je ne savais pas que cela était "si simple" à  mettre en place.
    Par contre il n'a pas mensionné le fait d'ecrire le code des tests unitaires avant d'écrire les fonctions (méthode agile) ;)
  • AliGatorAliGator Membre, Modérateur
    19:11 modifié #5
    Heu quand on fait de l'Agile, on est pas forcé de faire du TDD, si ? Ce ne sont pas deux méthodologies distinctes ? (Qui peuvent tout à  fait cohabiter bien sûr... ou pas)
  • wiskywisky Membre
    19:11 modifié #6
    C'est deux méthodes différentes, je me suis un peu mélangé les pinceaux !
    Elle ne sont pas incompatible ;)
  • AliGatorAliGator Membre, Modérateur
    19:11 modifié #7
    Ah, tu me rassures, c'est bien ce qu'il me semblait :D
  • yoannyoann Membre
    19:11 modifié #8
    Dans l'idée de l'intégration continue, quelqu'un a testé le support Xcode de CruiseControl ou même de Maven (qui a un plugin d'après ce que je vois sur le web)
  • NeoPhoenixNeoPhoenix Membre
    19:11 modifié #9
    Dans ma vision du développement sur iPhone, une application voit le jour au coeur de petites équipes.
    Avant de mettre en place un quelconque "process" dans une équipe, il convient de mesurer précisément ce qu'apporte ce process aux développeurs pour qu'ils puissent créer une application de qualité.
    Dans un monde (peut être idéal) ou une équipe se forme à  partir de personnes compétentes et motivées, il vaut mieux laisser un peu de chaos et ne pas rigidifier la façon de travailler (souvent uniquement dans le but de rassurer un manager).

    Je travaille actuellement pour un gros éditeur de logiciel français (sud IDF) et j'observe chaque jour les effets pervers d'avoir un dev contrôlé par des process.

    J'ajoute également un lien vers le manifeste agile : http://agilemanifesto.org/ pour ceux que ça intéresse  ;)
  • yoannyoann Membre
    19:11 modifié #10
    dans 1266009718:

    Dans ma vision du développement sur iPhone, une application voit le jour au coeur de petites équipes.
    Avant de mettre en place un quelconque "process" dans une équipe, il convient de mesurer précisément ce qu'apporte ce process aux développeurs pour qu'ils puissent créer une application de qualité.
    Dans un monde (peut être idéal) ou une équipe se forme à  partir de personnes compétentes et motivées, il vaut mieux laisser un peu de chaos et ne pas rigidifier la façon de travailler (souvent uniquement dans le but de rassurer un manager).

    Je travaille actuellement pour un gros éditeur de logiciel français (sud IDF) et j'observe chaque jour les effets pervers d'avoir un dev contrôlé par des process.

    J'ajoute également un lien vers le manifeste agile : http://agilemanifesto.org/ pour ceux que ça intéresse  ;)


    Tout dépend le contrôle en question. Des outils tel que hudson et des règles de commit vérifié et non juste énnoncé sont pas si mal pour le développement.
  • erisereriser Membre
    février 2010 modifié #11
    oups edit:


    c'est pas possible de remplacer hudson par Automator pour l'integration continue ?
  • yoannyoann Membre
    19:11 modifié #12
    dans 1266062669:

    oups edit:
    c'est pas possible de remplacer hudson par Automator pour l'integration continue ?


    Ouch, c'est violent comme idée !!

    Le principe d'Hudson c'est de compiler à  chaque fois et surtout de synthétiser les erreurs etc. Par contre trouver un équivalent plus adapté aux projets Xcode ça doit se faire j'imagine
  • remoozremooz Membre
    19:11 modifié #13
    Article très intéressant. Merci de nous le faire partager.

    Développant seul pour l'instant, je le met de côté pour un futur travail d'équipe.
  • NeoPhoenixNeoPhoenix Membre
    19:11 modifié #14
    dans 1266014150:

    Tout dépend le contrôle en question. Des outils tel que hudson et des règles de commit vérifié et non juste énnoncé sont pas si mal pour le développement.


    Je ne connais pas encore hudson, je me renseigne :)

    Concernant la vérification des règles avant commit, tout dépend de ce qui est traqué. Un exemple de règle automatique pour du C++ : "tout pointeur doit être testé avant d'être utilisé". Dans les faits ça se traduit en : un pointeur est testé != NULL avant de faire appel à  une méthode. Si le pointeur est nul, on n'appelle pas la méthode. Conséquence : le soft ne plante pas, mes le programme par en vrille et ne rempli pas ses fonctions.
  • yoannyoann Membre
    19:11 modifié #15
    Comme règle de commit ça serait plus alerter quand un commit est fait et que ça ne compile plus ou que ça ne passe plus les test unitaire.

    Après on peut rajouter tout ce qui est analyse statistique du code sur la redondance, le style d'indentation, etc.
  • kettchkettch Membre
    19:11 modifié #16
    dans 1265839809:

    Dans l'idée de l'intégration continue, quelqu'un a testé le support Xcode de CruiseControl ou même de Maven (qui a un plugin d'après ce que je vois sur le web)


    CruiseControl marche assez bien pour builder avec Xcode. Le reporting d'erreurs est juste un petit peu brouillon, car l'output de xcodebuild n'est pas très facile à  parser proprement.

    Globalement, je suis plutôt d'accord avec ce qu'énonce l'article. Dans mon contexte (développement multi-plateformes : Windows + Mac/iPhone + Consoles) avec plusieurs dizaines de développeurs), j'ai vécu l'avant et l'après CruiseControl, et ça change la vie ! Maintenant, je peux taper sur les dev Windows quand ils committent n'importe quoi, sans avoir à  attendre 1 semaine :P

    Hormis ça, le fait de pouvoir sortir une version régulière, toute packagée, sans qu'un développeur s'y colle, est une bénédiction. La machine fait tout comme une grande, et sort les versions au rythme souhaité. Personnellement, je ne m'imaginerais pas builder une version tous les jours sur mon MBP, ne serait-ce que parce que la build prend 2 heures...

    Quant à  la question des tests, il est toujours intéressants de faire tourner des tests unitaires régulièrement, mais ça ne fait pas tout. S'imaginer que parce qu'une batterie de tests passe à  100%, tout est OK, ce serait une illusion. Mais ça permet d'éliminer des régressions assez faciles à  détecter...

    Après, sur une équipe de 2 / 3 personnes, c'est peut-être overkill, mais à  partir d'un certain nombre de devs, ça devient intéressant !
  • GeraldGGeraldG Membre
    19:11 modifié #17
    Bonjour,

    Comme le dit Kettch, avoir une système de build automatisé dans un environnement hétérogène (iPhone + autres plateformes) est bénéfique pour s'assurer qu'on a toujours du code qui builde dans le source control.
    Lancer une série de tests unitaires pour tracker les régressions, c'est encore mieux....
    Générer un installer à  tout moment, c'est génial...

    Quand on s'arrête à  ça, c'est parfait (et encore c'est ni une condition nécessaire, ni une condition suffisante de réussite).
    On parle tout de même d'iPhone où les équipes de dév sont souvent constitués maxi de 3 personnes...

    ...D'où la suite de mon message (qui peut être vu comme une disgression mais prenez-le plus comme un Disclaimer ;-) ), ATTENTION AUX ABUS.

    Pour avoir travaillé à  la fois dans des équipes "100% free style" et d'autres purement issues de l'industrie lourde,il ne faut pas croire que les méthodes de ces dernières vous assure une productivité accrue et une qualité du soft.
    Il existe un juste milieu qui rend à  la fois a) les développeurs heureux et b) un soft bon.

    J'insiste sur ce fait, car les jeunes ingés qui sortent de l'école ont justement le complexe de l'Industrie versus l'Artisanat ("ouais avant je codais dans mon garage, maintenant je vais bosser sérieusement...").
    J'ai assisté à  des dérives inquiétantes des méthodes "industrielles" où "Le process" comme on dit là  bas est institué comme un moyen détourné pour fliquer les gens et les déposséder de leur savoir faire.
    La politique du chiffre (ceux qui connaissent les feuilles excel avec du rouge et du vert savent de quoi je parle) fait partie de ces dérives : un soft qui ne plante jamais est un soft bon...OK mais sinon l'ergo du soft, c'est comment ? Passez votre chemin :)

    Du coup la terminologie "Usine de Développement" me fait très peur. Les développeurs deviennent le corps ouvrier de Zola (j'exagère un peu non ? Allez faire un tour à  l'intérieur d'un certain éditeur français, qui se proclame justement une "Software Factory", et vous verrez que je ne suis pas très loin de la vérité).

    Dans le manifeste Agile, il y a 2 postulats qu'il ne faut jamais oublier:
    1. Individuals and interactions over processes and tools
    2. Responding to change over following a plan.

    J'ai tenté de les suivre dans les projets où j'avais le total contrôle des opérations: j'ai toujours eu des résultats bien supérieurs à  ceux promus dans l'industrie traditionnelle.

    Gérald.
  • AliGatorAliGator Membre, Modérateur
    19:11 modifié #18
    Je plussoie pour les méthodes Agile moi aussi ;)
  • yoannyoann Membre
    19:11 modifié #19
    Histoire de préciser, j'ai mis le terme Usine de Développement en rapport avec l'article d'Octo.

    Pour ma part ce que je trouve très intéressant c'est la partie build automatique et régulier. Pour moi l'intérêt n'est pas de fliquer, surtout quand on est 3, mais d'avoir un suivit automatisé de ce que l'ont fait. àŠtre prévenu régulièrement si un fichier est oublié dans le SVN etc ça évite de perdre bien des heures. C'est surtout ça que je vois d'intéressant la dedans.

    Je suis plus issue du free style pour ma part, et a vrai dire les software factory où bosse les amis ne me tente vraiment pas du tout... Ce que je trouve intéressant c'est de prendre le meilleur des deux :-)
Connectez-vous ou Inscrivez-vous pour répondre.