MACAO > Démarche > Conception globale [Plan] > /
suite >
< retour

- Architecture fonctionnelle -

Une fonction est un traitement élémentaire exécuté par le logiciel pour atteindre un objectif demandé par un utilisateur. Une fonction n'est pas décomposable en sous-fonctions. On distingue deux catégories de fonctions. Les fonctions utilisateur et les fonctions techniques.
  • Les fonctions utilisateur qui sont directement tirées des cas d'utilisation et qui correspondent à des besoins élémentaires souhaités par les utilisateurs. Ce type de fonction fait toujours intervenir un utilisateur, soit en entrée pour saisir des données  (saisir une commande, créer ou modifier un client, supprimer un produit), soit en sortie pour produire des résultats (éditer une facture ou un état statistique, afficher une liste de clients ou le tarif d'un produit). Lorsque les deux cas peuvent se combiner, il faudra dissocier les fonctions. Par exemple si l'on veut éditer la liste des clients correspondant à certains critères qui doivent être fournis par l'utilisateur, on mettra en œuvre deux fonctions ; la première correspond à la saisie des critères et la deuxième à l'affichage des clients. Une fonction utilisateur est toujours liée à un seul cas d'utilisation.

    Nous distinguerons trois grandes catégories de fonctions utilisateur :
    • Les fonctions de présentation permettant d'éditer (affichage écran, impression...) les résultats souhaités par l'utilisateur avec différents formats.
    • Les fonctions de saisie permettant à l'utilisateur d'enregistrer des données provenant d'événements externes ou pour créer de nouveaux objets.
    • Les fonctions de mise à jour pour modifier des objets existants.

  • Les fonctions techniques sont des fonctions complémentaires permettant l'exécution des fonctions utilisateur. Ces fonctions sont généralement inconnues des utilisateurs mais doivent cependant être rattachées aux cas d'utilisation dans lesquels elles sont utilisées. Une fonction technique pourra être mise en œuvre dans plusieurs cas d'utilisation.

    On distinguera deux catégories de fonctions techniques :
    • Les fonctions de traitement correspondent à des opérations intermé­diaires que l'on souhaite isoler pour être utilisées à différents endroits du logiciel ou parce qu'il existe un composant logiciel externe qui pourra remplir cette fonction. Quelques exemples de fonctions de traitement : tri d'un fichier, reformatage de données qui précèdera ou suivra une fonction d'interfaçage, fonctions graphiques telles que grouper/dissocier ou déplacer (classes Swing ou MFC par exemple), méthodes des composants CORBA, COM ou EJB.
    • Les fonctions d'interfaçage permettent d'assurer les liens avec des outils logiciels externes. Il s'agit bien souvent de fonctions permettant de récupérer (après ou sans conversion) des données présentes dans des fichiers ou des bases de données existant par ailleurs et non gérés directement par le logiciel. Il peut s'agir également de produire des données destinées à d'autres logiciels qu'il faut formater convenablement (fonctions de post-traitement). A titre d'exemple on citera l'envoi de données dans un tableur, une messagerie ou un logiciel de GED pour archiver des résultats sous forme de documents.
Les fonctions techniques sont souvent obtenues à partir des recommandations ou des contraintes données par les acteurs. Par exemple un acteur peut exprimer le souhait que le temps de réponse à certaines interactions soit inférieur à 2 secondes. Pour répondre à cette contrainte, on pourra être amené à développer une fonction technique de tri ou plus généralement de préparation, qui sera exécutée avant ou pendant les fonctions utilisateur incriminées.

Indépendamment de ces deux catégories de fonctions on en distinguera à nouveau deux types, les fonctions événementielles et les fonctions batch.
  • Une fonction est dite événementielle si elle est exécutée lorsqu'un événement se présente (action d'un utilisateur, délai dépassé, événement interne généré par le logiciel ou le matériel). Si la fonction est directement lancée par l'utilisateur on parlera de fonction interactive. Les résultats éventuels d'une fonction événementielle sont communiqués immédiatement à l'utilisateur (au temps de réponse du système près).
  • Une fonction batch est exécutée automatiquement en dehors de la présence de l'utilisateur (souvent de nuit) et traite des ensembles de données appelés lots (on parle également de traitement par lots). Les résultats sont communiqués aux utilisateurs de façon différée.Par exemple, l'édition d'une facture client peut se faire au moment de la saisie de la commande, correspondante par une fonction événementielle déclenchée par la fin de saisie de la commande ou par une fonction batch qui éditera le soir les factures correspondant au lot des commandes reçues dans la journée.
En combinant les deux catégories et les deux types on obtient les quatre cas suivants :
  • les fonctions utilisateur événementielles avec, en particulier les fonctions interactives,
  • les fonctions utilisateur batch,
  • les fonctions techniques événementielles,
  • les fonctions techniques batch.
Notion de chaîne
Une chaîne est un ensemble de fonctions batch ayant même périodicité, même date d'exécution et s'enchaînant automatiquement à la suite d'un lancement initial unique.

Par exemple, une chaîne quotidienne (périodicité) de facturation clients lancée le soir à 19h (date d'exécution) peut comporter les fonctions suivantes : prise en compte d'une commande client (fonction utilisateur), recherche des informations client et produit (fonction de traitement), calcul de la facture (fonction de traitement), édition de la facture (fonction utilisateur), mise de la facture au format PDF (fonction d'interfaçage) et archivage en GED (fonction d'interfaçage).

Architecture fonctionnelle

Nous désignerons par architecture fonctionnelle la liste et la description précise de toutes les fonctions classées par cas d'utilisation.

Les fonctions utilisateur sont directement obtenues en décomposant les cas d'utilisation en activités. Chaque activité élémentaire correspond à une fonction.

Les fonctions d'interfaçage sont obtenues à partir de l'environnement technique du logiciel.

Les fonctions de traitement sont rajoutées afin d'assurer la cohérence de l'ensemble.

Lors de l'étape de conception globale dans laquelle nous nous situons, on peut être amené à découvrir de nouvelles fonctions utilisateur qu'il faudra faire valider par les acteurs concernés et qu'il faudra rajouter dans le CCU. Il peut d'ailleurs en être de même avec les cas d'utilisation mais de façon plus rare. L'important est que toute modification des besoins des utilisateurs soient systématiquement répercutés dans le CCU afin que ce dernier soit un reflet précis de la demande. Ce principe de rétroaction entre analyse et conception ne sera plus envisageable lors de l'étape de développement qui contiendra sa propre phase d'analyse pour chaque prototype.

Chaque fonction sera décrite par :

  • un code,
  • un nom court mais suffisamment précis pour identifier la fonction,
  • la description de sa logique sous une forme textuelle ou algorithmique,
  • un type : événementielle, interactive ou batch,
  • une catégorie : utilisateur ou technique,
  • un ou plusieurs cas d'utilisation de rattachement (un seul pour une fonction utilisateur),
  • une pré-condition éventuelle qui indique dans quel cas la fonction doit être lancée,
  • le ou les résultats produits,
  • une périodicité et une date d'exécution éventuelles pour les fonctions batch.
Codification des fonctions
Elles seront numérotées séquentiellement par cas d'utilisation. Le cas d'utilisation sera indiqué par son code ou par son nom abrégé.

Exemples : UC01-01 ou GesCli-01
Si une fonction apparaît dans plusieurs UC on la codifiera en remplaçant le numéro d'UC par une astérisque : UC*-n. La description de la fonction devra indiquer dans quels UC elle apparaît.

Remarques :
Pour un petit projet, le nombre total de fonctions peut se chiffrer à quelques dizaines (moins de 100), pour un projet de taille moyenne on peut en trouver quelques centaines (disons moins de 300). Pour les gros projets il faut s'attendre à près d'un millier de fonctions.

Rappelons que toutes les fonctions n'ont pas été découvertes lors de la conception globale où nous nous situons actuellement. Généralement, seulement une partie des fonctions utilisateur (60 à 70%) et une faible partie des fonctions techniques (10 à 20%) apparaissent à ce niveau. Toutes les autres seront découvertes plus tard, lors de la définition des prototypes.
suite >

TOUS DROITS RÉSERVÉS © 2008 JBCC