1. Mode Graphique
    1. 1- Principes fondamentaux
      1. Processus de conception
      2. Caractéristiques d'un grand logiciel
        1. Haute performance
        2. Facilité d'utilisation
        3. Aspect attractif
        4. Fiabilité
        5. Adaptabilité
        6. Interoperabilité
        7. Mobilité
      3. Principes de conception
        1. Principes (1)
        2. Principes (2)
        3. Principes (3)
      4. Pensez aux utilisateurs
        1. Compatibilité internationale
        2. Accessibilité aux handicapés
        3. Etendre l'interface
      5. Priorités
    2. 2- L'expérience du Mac
      1. L'environnement
        1. L'environnement (1)
        2. L'environnement (2)
      2. Les technologies
        1. Les technologies (1)
        2. Les technologies (2)
        3. Les technologies (3)
        4. Les technologies (4)
      3. Installation et mises à jour
        1. Packaging, installation
        2. Les assistants
    3. 3- L'interface Aqua
      1. Entrées utilisateur
        1. La souris
        2. le clavier
          1. Fonction des touches
          2. Raccourcis-clavier
          3. Navigation au clavier
        3. Sélection
        4. Edition de texte
      2. Glisser-déposer
        1. Glisser-Déposer (1)
        2. Glisser-Déposer (2)
      3. Le texte
        1. Les fontes
        2. Le style
      4. Les icônes
        1. Genres et familles d'icônes
        2. Création des icônes
        3. Icônes des barres d'outils
        4. Images propres au système
      5. Les pointeurs
      6. Les menus
        1. Comportement des menus
        2. Conception des menus
        3. La barre de menus
          1. Les menus (1)
          2. Les menus (2)
          3. Les menus (3)
        4. Menus contextuels et du Dock
      7. Les fenêtres
        1. Type et apparence
        2. Eléments
          1. Barre de titre
          2. Barre d'outils
          3. Barre de recherche
          4. Barre latérale
          5. Barre inférieure
          6. Les Tiroirs
        3. Comportement des fenêtres
          1. Comportement (1)
          2. Comportement (2)
          3. Superposition
          4. Défilement
        4. Les panneaux
          1. Les panneaux
          2. Panneaux transparents
          3. Autres panneaux
      8. Les dialogues
        1. Types de dialogues
        2. Aspect et comportement
      9. Fenêtres de dialogues
        1. Recherche, Préférences, Ouverture
        2. Enregistrement
        3. Choix, Impression
      10. Les contrôles
        1. Contrôles du cadre
          1. Contrôles en capsule
          2. Contrôles hérités
        2. Les boutons
          1. Boutons poussoirs
          2. Boutons en icônes
          3. Boutons de recherche
          4. Boutons de gradient, et d'aide
          5. Boutons à champfrein
          6. Boutons ronds
        3. Contrôles de sélection
          1. Boutons radio
          2. Cases à cocher
          3. Contrôles segmentés
          4. Boutons et menus pop-Up
          5. Menus Action
          6. Boîtes de combinaison
          7. Contrôles de chemin
          8. Puits, sélection de date
          9. Menus pop-down
          10. Glissières
          11. Contrôles pas-à-pas et placards
        4. Indicateurs
          1. Indicateurs de progression
          2. De niveau, de capacité
          3. D'estimation, de pertinence
        5. Contrôles de texte
          1. Champs d'entrée
          2. Champs à jeton
          3. Champs de recherche
          4. Listes de défilement
        6. Contrôles de visualisation
          1. Triangles d'affichage
          2. Boutons d'affichage
          3. Vues en liste
          4. Vues en colonnes
          5. Vues éclatées
          6. Vues à onglets
        7. Contrôles de groupage
          1. Séparateurs
          2. Boîtes de groupage
        8. Règles de disposition
          1. Dans le corps de la fenêtre
            1. Fenêtre de préférences
            2. Fenêtre à onglets
            3. Alerte, Dialogue
          2. Contrôles réduits et mini
            1. Contrôles réduits
            2. Mini contrôles
          3. Groupement des contrôles
          4. Positionnement dans la barre inférieure
      11. Glossaire
        1. Entrées en anglais
          1. 1- A à C
          2. 2- D à H
          3. 3- I à R
          4. 4- S à Z
        2. Entrées en français
          1. 1- A à C
          2. 2- C à G
          3. 3- I à P
          4. 4- P à Z
        3. `
    4. 4- Les leçons de Lion
      1. L'environnement de Mac OS X
      2. Principes fondamentaux
      3. L'expérience utilisateur
        1. Règles de conduite (1)
        2. Règles de conduite (2)
        3. Règles de conduite (3)
        4. Règles de conduite (4)
        5. Règles de conduite (5)
        6. Règles de conduite (6)
      4. Les technologies d'Apple
        1. Les technologies (1)
      5. -->
  2. Mode Commande

Caractéristiques d'un "grand" logiciel (1)




1- La performance

La performance, c'est la perception par l'utilisateur de la vitesse de réaction et de l'efficacité du logiciel, et elle en conditionne le succès. Si le logiciel paraît lent, les utilisateurs ne sont pas enclins à l'acheter. Un logiciels dont les algorithmes sont optimisés peut paraître lent s'il met trop de temps à répondre à l'utilisateur.

Les développeurs sont donc invités à tenir compte des facteurs qui influencent la performance, dans la conception et l'implantation de leur programme :
• Identifier les problèmes de performance à l'aide de mesures, pas de suppositions ; utiliser les outils fournis par Apple, comme Shark, et utiliser les données receuillies pour identifier les problèmes et les résoudre. Il est possible de mettre en place son propre ensemble de mesures.
• Se préoccuper des performances dès le début du cycle de développement, et se fixer des objectifs. Comparer les mesures pendant le développement, et si la performance se dégrade, prendre immédiatement les mesures de correction nécessaires.
• Utiliser les APIs les plus récentes, qui fournissent les meilleurs solutions et tirent avantage des dernières technologies
• Choisir les technologies appropriée à la tâche entreprise : les objets distribués Cocoa sont plus faciles à utiliser, mais pour une meilleure performance du réseau, leur préférer le framework CFNetwork et les sockets BSD.
• Utiliser des threads pour améliorer l'exécution du code ; les threads permettent le parallèlisme sur les systèmes mutli-processurs, et fournissent des gains de performance appréciables.
• Eviter l'interrogation régulière des périphériques (polling) ; les APIs récentes fournissent des fonctions de rappel (callback) pour notifier des modifications de conditions de façon asynchrone, et évitent au CPU de perdre son temps.
• Supprimer les opérations d'entrées/sorties inutiles, notamment sur les disques magnétiques ou optiques. Réduire ces opérations procure des gains de performances considérables.
• Utiliser au mieux le système de mémoire virtuelle de Mac OS X.
• Ne charger les ressources que quand on en a besoin, et les conserver alors en mémoire cache.
• Utiliser le format d'exécutable Mach-O, qui est utilisé par tous les frameworks du système. Délaisser le format CFM (Code Fragment Manager) qui est dépassé.


Commentaires

Pour un développeur, respecter ces consignes n'est pas une sinécure : au delà du code de sa propre application, cela l'entraîne nécessairement sur des chemins de traverse (pour en avoir une idée, suivez les liens de la page d'Apple), et l'oblige à connaître un grand nombre d'APIs et de frameworks. C'est une tâche extrêmement difficile, qui est bien dominée par les ingénieurs d'Apple, mais, avec les modifications incessantes des APIs, rend le travail du développeur compliqué et périlleux.

titre

La roulette de la mort.

Sur mon MacPro 8 cœurs avec 12 Go de mémoire vive, je ne ressens pas trop ces problèmes de performance en utilisant les applications, sauf pendant le démarrage, et lors des interventions intempestives et fréquentes de la roulette multicolore qui s'invite à la fête pour des temps parfois très longs (10 à 15 secondes). John Siracusa explique l'irruption de la roulette multicolore par un cœur saturé par le thread principal. Cela se produit le plus souvent lors des accès au système de fichiers, et démontre que HFS+ n'est plus à la hauteur des besoins actuels. Même Apple est incapable de résoudre ces problèmes, tant qu'elle n'aura pas enfin mis en place un nouveau système de fichiers, plus robuste et mieux conçu ; l'abandon de ZFS par Apple a peut-être de bonnes raisons, mais il ne fait que retarder la solution à un problème de performance inadmissible sur un système comme Mac OS X.

Les applications d'Apple ne sont pas non plus exemptes de problèmes de performance ; le cas le plus typique est iPhoto. Les 89 photos qui résident actuellement sur ma bibliothèque iPhoto utilisent environ 180 Mo. Ces mêmes photos rangées dans le système de fichiers occupent autour de 120 Mo. Un défaut de performance de l'ordre de 30 %, qui s'explique par le système de fichiers aberrant utilisé par iPhoto (pour en avoir un aperçu, faites un Ctrl-Clic sur votre bibliothèque iPhoto, et choisissez "Afficher le contenu du paquet" dans le menu contextuel). 89 photos, ce n'est pas la lune ; imaginez la place mémoire gâchée si vous en avez des milliers ! C'est pourquoi, en ce qui me concerne, je ne conserve pas mes photos dans iPhoto, mais dans un dossier Photos de ma partition Media ; je ne reporte (momentanément) dans iPhoto que les photos sur lesquelles je veux travailler, pour les en retirer dès que c'est terminé.