Program design tools · Outils de conception de programme
| English | Français |
|---|---|
| structure chart/ˈstrʌktʃə tʃɑːt/ | organigramme |
| state-transition diagram/steɪt trænˈsɪʃn ˈdaɪəɡræm/ | diagramme de transition d'état |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocode |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | décomposition |
| subroutines/ˈsʌbruːtiːnz/ | sous-programmes |
| parameters/pəˈræmɪtəz/ | paramètres |
| top-down design/tɒp daʊn dɪˈzaɪn/ | conception top-down |
| states/steɪts/ | énonce |
The year software became engineering
- In October 1968, fifty of the world's leading programmers met in Garmisch, Germany, to discuss why large programs were failing: late, over budget, unreliable. They coined a phrase for what was missing: software engineering.
- The complaint was simple. Builders draw before they build. Engineers calculate before they cut. Programmers were typing code before anyone had drawn what the program was.
- The drawings that came out of that decade are the ones you will use in the design stage: the structure chart 结构图, which shows how a program is broken into parts, and the state-transition diagram 状态转换图, which shows how it behaves.
- This lesson is how to read them, how to construct them, and how to turn a structure chart into pseudocode.
L'année où le logiciel est devenu ingénierie
- En octobre 1968, cinquante des meilleurs programmateurs du monde se sont réunis à Garmisch, en Allemagne, pour discuter de la raison pour laquelle les gros programmes échouaient : retardés, hors budget, peu fiables. Ils ont inventé une expression pour désigner ce qui manquait : ingénierie logicielle.
- La plainte était simple. Les constructeurs tracent avant de construire. Les ingénieurs calculent avant de découper. Les programmateurs tapaient du code avant que quiconque n'ait dessiné ce que devait faire le programme.
- Les schémas sortis de cette décennie sont ceux que vous utiliserez dans la phase de conception : le diagramme de structure 结构图, qui montre comment un programme est découpé en parties, et le diagramme de transition d'états 状态转换图, qui montre son comportement.
- Cette leçon explique comment les lire, comment les construire, et comment transformer un diagramme de structure en pseudocode.
What design decides
- Analysis said what the program must do. Design decides how: the data structures, the algorithms, the modules and the interface.
- The design stage produces drawings a programmer can code from: a flowchart for the logic of one algorithm, pseudocode 伪代码 for the same thing in text, a structure chart for the modules, and a state-transition diagram for the behaviour.
- Each tool answers a different question, and the exam asks which one fits.
One algorithm's logic, drawn before it is coded
Ce que la conception décide
- L'analyse a dit quoi le programme doit faire. La conception décide comment : les structures de données, les algorithmes, les modules et l'interface.
- La phase de conception produit des dessins auxquels un programmeur peut coder : un fluxlogique pour la logique d'un algorithme, du pseudocode 伪code pour la même chose en texte, un diagramme de structure pour les modules, et un diagramme de transition d'états pour le comportement.
- Chaque outil répond à une question différente, et l'examen demande lequel convient.
Logique d'un seul algorithme, dessinée avant d'être codée
Software process lab · Laboratoire de processus logiciel
Classify development examples by the stage or tool they belong to. · Classez les exemples de développement par étape ou outil auquel ils appartiennent.
The structure chart
- A structure chart shows the hierarchical decomposition 分解 of a program into modules, its subroutines 子程序, and the parameters 参数 passed between them. This top-down design 自顶向下设计 breaks one large problem into smaller sub-problems, each of which becomes a module.
- Each module is a rectangle. A line joins a caller, above, to the module it calls, below. Modules on the same level are called from left to right.
- Small arrows beside the lines carry data: a parameter passed down into the module, a result returned up to the caller. A diamond marks a selection, a curved arrow a loop.
Hierarchy on the lines, data on the arrows
Le diagramme de structure
- Un diagramme de structure montre la décomposition hiérarchique 分解 d'un programme en modules, ses sous-routines 子程序, et les paramètres 参数 passés entre eux. Cette conception top-down 自顶向下设计 divise un grand problème en sous-problèmes plus petits, chacun devenant un module.
- Chaque module est un rectangle. Une ligne relie un appelant, situé au-dessus, au module qu'il appelle, situé en dessous. Les modules au même niveau sont appelés de gauche à droite.
- De petites flèches à côté des lignes transportent les données : un paramètre passé vers le bas dans le module, un résultat renvoyé vers le haut vers l'appelant. Un losange marque une sélection, une flèche incurvée une boucle.

Hiérarchie sur les lignes, données sur les flèches
A structure chart shows: · Un organigramme hiérarchique montre :
A structure chart is the hierarchical breakdown into modules, with parameters down and results up. · Un organigramme hiérarchique est une décomposition hiérarchique en modules, avec les paramètres vers le bas et les résultats vers le haut.
Breaking a problem into modules from the top down is called: · Décomposer un problème en modules de haut en bas s'appelle :
Top-down design produces a modular solution. · La conception de haut en bas produit une solution modulaire.
Worked example: read the signatures off the chart
GetEmployeereceives nothing and returns an employee ID:FUNCTION GetEmployee() RETURNS INTEGER.CalculateBonustakes the sales figure down and sends the bonus back:FUNCTION CalculateBonus(Sales : REAL) RETURNS REAL.CalculateTaxtakes the gross pay and returns the tax. Every arrow on the chart is a parameter or a return value in the header; a header with a parameter the chart does not show is wrong.
Exemple résolu : lire les signatures depuis le diagramme
CalculatePay
/ | \
GetEmployee CalculateBonus CalculateTax
returns: takes: sales takes: gross
employeeID returns: bonus returns: tax
GetEmployeene reçoit rien et retourne un ID employé :FUNCTION GetEmployee() RETURNS INTEGER.CalculateBonusprend la valeur des ventes vers le bas et renvoie la prime vers le haut :FUNCTION CalculateBonus(Sales : REAL) RETURNS REAL.CalculateTaxprend le salaire brut et retourne l'impôt. Chaque flèche sur le diagramme est un paramètre ou une valeur de retour dans l'en-tête ; un en-tête avec un paramètre que le diagramme ne montre pas est incorrect.
On a structure chart, a small arrow pointing down from the caller into a module shows a ____ passed to it. · Sur un organigramme hiérarchique, une petite flèche pointant vers le bas depuis l'appelant vers un module indique un ____ qui lui est passé.
Downward arrows are parameters going in; upward arrows are results returned. Together they give the module's header. · Les flèches vers le bas sont les paramètres entrants ; les flèches vers le haut sont les résultats retournés. Ensemble, elles forment l'en-tête du module.
Worked example: construct a structure chart
- A program reads a student's marks, calculates the average, and outputs a grade. Draw a structure chart.
- Top module:
ProcessStudent. Below it, left to right:ReadMarks, which returns the array of marks;CalculateAverage, which takes the marks array down and returns the average;OutputGrade, which takes the average down and returns nothing. - Three things score: the hierarchy with the main task at the top, the sub-tasks in the order they run, and named parameters on the arrows in the right direction. An unlabelled arrow is half a mark at best.
Exemple résolu : construire un diagramme de structure
- Un programme lit les notes d'un étudiant, calcule la moyenne et affiche une note. Dessinez un diagramme de structure.
- Module supérieur :
ProcessStudent. En dessous, de gauche à droite :ReadMarks, qui retourne le tableau de notes ;CalculateAverage, qui prend le tableau de notes vers le bas et retourne la moyenne ;OutputGrade, qui prend la moyenne vers le bas et ne retourne rien. - Trois éléments rapportent des points : la hiérarchie avec la tâche principale en haut, les sous-tâches dans l'ordre d'exécution, et les paramètres nommés sur les flèches dans le bon sens. Une flèche non étiquetée vaut au maximum mi-point.
From structure chart to pseudocode
- The top module becomes the main program; each rectangle below it becomes a procedure or function whose header is read off the arrows; the main program calls them in left-to-right order.
- A returned value means a
FUNCTION … RETURNS; a module that returns nothing is aPROCEDURE. The parameter list is exactly the downward arrows.
Du diagramme de structure au pseudocode
- Le module supérieur devient le programme principal ; chaque rectangle en dessous devient une procédure ou une fonction dont l'en-tête se lit sur les flèches ; le programme principal les appelle de gauche à droite.
PROCEDURE ProcessStudent()
DECLARE Marks : ARRAY[1:10] OF INTEGER
DECLARE Average : REAL
Marks ← ReadMarks()
Average ← CalculateAverage(Marks)
CALL OutputGrade(Average)
ENDPROCEDURE
- Une valeur retournée signifie un
FUNCTION … RETURNS; un module qui ne retourne rien est unPROCEDURE. La liste des paramètres correspond exactement aux flèches descendantes.
Put the steps of designing a program with a structure chart in order. · Mettez les étapes de la conception d'un programme avec un organigramme hiérarchique dans l'ordre.
Top down: task, sub-tasks, data flow, headers, calls. The chart is finished before the first line of code. · De haut en bas : tâche, sous-tâches, flux de données, en-têtes, appels. Le diagramme est terminé avant la première ligne de code.
A module whose structure-chart arrows show a value returned upwards should be written as a PROCEDURE. · Un module dont les flèches de l'organigramme hiérarchique montrent une valeur retournée vers le haut doit être écrit comme une PROCÉDURE.
A returned value makes it a FUNCTION … RETURNS. A PROCEDURE returns nothing. · Une valeur retournée en fait une FONCTION … RETOURNE. Une PROCÉDURE ne retourne rien.
The state-transition diagram
- A state-transition diagram documents the behaviour of a system: the states 状态 it can be in and the events that move it from one state to another.
- Each state is a circle or rounded box; each transition is an arrow labelled with the event that causes it, sometimes with the action taken. A marker shows the start state.
- It suits systems that wait for events and react: a vending machine, a traffic light, a door lock, a user interface.
Every state, every event, every arrow
Le diagramme de transition d'états
- Un diagramme de transition d'états documente le comportement d'un système : les états 状态 auxquels il peut se trouver et les événements qui le font passer d'un état à un autre.
- Chaque état est un cercle ou une boîte arrondie ; chaque transition est une flèche étiquetée avec l'événement qui la provoque, parfois avec l'action entreprise. Un marqueur indique l'état initial.
- Il convient aux systèmes qui attendent des événements et y réagissent : un distribute automatique, un feu de signalisation, une serrure de porte, une interface utilisateur.

Chaque état, chaque événement, chaque flèche
A state-transition diagram shows: · Un diagramme à transitions d'état montre :
States are circles; transitions are event-labelled arrows. Ideal for vending machines, locks, traffic lights. · Les états sont des cercles ; les transitions sont des flèches libellées par des événements. Idéal pour les distributeurs automatiques, les serrures, les feux tricolores.
What does a state-transition diagram show? Select all · tout that apply. · Que montre un diagramme à transitions d'état ? Sélectionnez tous ceux qui s'appliquent.
States, labelled transitions and the start marker. Timing is not part of the diagram. · États, transitions libellées et marqueur de départ. La temporisation ne fait pas partie du diagramme.
Worked example: read the door-lock diagram
- The lock opens on the code 2, 5, 9. Start in Locked. Pressing 2 moves to One digit correct; pressing 5 from there moves to Two digits correct; pressing 9 from there moves to Unlocked.
- Any other key from any of the waiting states returns to Locked: the diagram shows those arrows too, and a diagram that leaves them out has a gap. What happens if 2 is pressed while Unlocked? If no arrow says, the design has not decided.
- That is what the diagram is for: every state must say what happens on every event, so the missing transitions are found on paper and not by a customer.
Exemple résolu : lire le diagramme de verrouillage de porte
- Le verrou s'ouvre sur le code 2, 5, 9. Commencer en Verrouillé. Appuyer sur 2 passe à Un chiffre correct ; appuyer sur 5 depuis là passe à Deux chiffres corrects ; appuyer sur 9 depuis là passe à Déverrouillé.
- Toute autre touche depuis l'un des états d'attente retourne à Verrouillé : le diagramme montre aussi ces flèches, et un diagramme qui les omet présente une lacune. Que se passe-t-il si 2 est appuyé alors que Déverrouillé ? Si aucune flèche ne l'indique, la conception n'a pas tranché.
- C'est précisément à cela que sert le diagramme : chaque état doit spécifier ce qui se produit lors de chaque événement, afin que les transitions manquantes soient identifiées sur papier et non par un client.
A state-transition diagram makes missing or unhandled transitions easy to spot, because every state and the events between them are laid out. · Un diagramme à transitions d'état rend facile de repérer les transitions manquantes ou non gérées, car tous les états et les événements entre eux sont disposés.
Seeing every state and event reveals cases you have not handled — e.g. an unexpected second coin in a vending machine. · Voir tous les états et événements révèle les cas non gérés — par ex. une deuxième pièce inattendue dans un distributeur automatique.
Choosing the tool
- To show how a program is broken into modules and what passes between them: a structure chart.
- To show how a system behaves over time in response to events, especially a machine or an interface with modes: a state-transition diagram.
- To show the step-by-step logic of one algorithm: a flowchart or pseudocode. Say which and why.
Choisir l'outil
- Pour montrer comment un programme est découpé en modules et ce qui transite entre eux : un organigramme fonctionnel (structure chart).
- Pour montrer comment un système se comporte dans le temps en réponse à des événements, notamment une machine ou une interface avec des modes : un diagramme de transition d'état.
- Pour montrer la logique étape par étape d'un seul algorithme : un organigramme ou du pseudocode. Dire lequel et pourquoi.
Match each design tool to what it shows. · Reliez chaque outil de conception à ce qu'il montre.
Each tool views the design differently — structure (modules), behaviour (states), flow (flowchart) or steps (pseudocode). · Chaque outil voit la conception différemment — structure (modules), comportement (états), flux (organigramme) ou étapes (pseudocode).
A traffic-light controller must respond to a timer and a pedestrian button. Which design tool documents its behaviour best? · Un contrôleur de feu tricolore doit répondre à une horloge et à un bouton piéton. Quel outil de conception documente son comportement le mieux ?
Red, red-and-amber, green, amber are states; the timer and the button are events. A structure chart would show the modules, not the behaviour. · Rouge, rouge-et-ambre, vert, ambre sont des états ; l'horloge et le bouton sont des événements. Un organigramme hiérarchique montrerait les modules, pas le comportement.
Marks that slip away
- A structure chart is not a flowchart. It shows hierarchy and parameters, not the sequence of decisions inside a module.
- Label every arrow with the name of the parameter or result and point it the right way. A bare arrow says nothing.
- A state is a condition the system is in, waiting; an event is what happens to it. "Press 5" is an event, not a state.
- The pseudocode headers must match the chart: same parameters, same return values, same order of calls.
Pièges qui font perdre des points
- Un organigramme fonctionnel n'est pas un organigramme. Il montre la hiérarchie et les paramètres, pas la séquence des décisions à l'intérieur d'un module.
- Étiqueter chaque flèche avec le nom du paramètre ou du résultat et la diriger dans le bon sens. Une flèche nue ne signifie rien.
- Un état est une condition dans laquelle se trouve le système en attente ; un événement est ce qui lui arrive. « Appuyer sur 5 » est un événement, pas un état.
- Les en-têtes du pseudocode doivent correspondre au schéma : mêmes paramètres, mêmes valeurs de retour, même ordre des appels.
You've got it
- a structure chart shows top-down decomposition into modules, with the parameters passed down and the results returned up on labelled arrows
- read the pseudocode headers off it: downward arrows are the parameter list, an upward arrow makes it a
FUNCTION … RETURNS, and the main module calls left to right - a state-transition diagram shows the states and the events that move between them, and exposes the transitions nobody has decided
- decomposition → structure chart; behaviour → state-transition diagram; one algorithm's logic → flowchart or pseudocode
Vous avez compris
- un organigramme fonctionnel montre la décomposition top-down vers des modules, avec les paramètres passés vers le bas et les résultats retournés vers le haut sur des flèches étiquetées
- lire les en-têtes du pseudocode dessus : les flèches descendantes sont la liste des paramètres, une flèche ascendante en fait un
FUNCTION … RETURNS, et le module principal appelle de gauche à droite - un diagramme de transition d'état montre les états et les événements qui permettent de passer de l'un à l'autre, et expose les transitions dont personne n'a décidé
- décomposition → organigramme fonctionnel ; comportement → diagramme de transition d'état ; logique d'un seul algorithme → organigramme ou pseudocode