Program design tools · Herramientas de diseño de programas
| English | Español |
|---|---|
| structure chart/ˈstrʌktʃə tʃɑːt/ | gráfico de estructura |
| state-transition diagram/steɪt trænˈsɪʃn ˈdaɪəɡræm/ | diagrama de transición de estado |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocódigo |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | descomposición |
| subroutines/ˈsʌbruːtiːnz/ | subrutinas |
| parameters/pəˈræmɪtəz/ | parámetros |
| top-down design/tɒp daʊn dɪˈzaɪn/ | diseño de arriba hacia abajo |
| states/steɪts/ | afirma |
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.
El año en que el software se convirtió en ingeniería
- En octubre de 1968, cincuenta de los programadores más destacados del mundo se reunieron en Garmisch, Alemania, para discutir por qué los programas grandes estaban fallando: retrasados, con sobrecostos presupuestarios y poco fiables. Acuñaron una frase para lo que faltaba: ingeniería de software.
- La queja era simple. Los constructores dibujan antes de construir. Los ingenieros calculan antes de cortar. Los programadores escribían código antes de que alguien hubiera dibujado cómo sería el programa.
- Los diagramas que surgieron de esa década son los que utilizará en la etapa de diseño: el diagrama de estructura 结构图, que muestra cómo se divide un programa en partes, y el diagrama de transición de estados 状态转换图, que muestra su comportamiento.
- Esta lección explica cómo leerlos, cómo construirlos y cómo convertir un diagrama de estructura en pseudocódigo.
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
Lo que decide el diseño
- El análisis determinó qué debe hacer el programa. El diseño decide cómo: las estructuras de datos, los algoritmos, los módulos y la interfaz.
- La etapa de diseño produce dibujos a partir de los cuales un programador puede codificar: un diagrama de flujo para la lógica de un algoritmo, pseudocódigo 伪代码 para lo mismo en texto, un diagrama de estructura para los módulos y un diagrama de transición de estados para el comportamiento.
- Cada herramienta responde a una pregunta diferente, y el examen pregunta cuál es la adecuada.
Lógica de un algoritmo, dibujada antes de ser codificada
Software process lab · Laboratorio de procesos de software
Classify development examples by the stage or tool they belong to. · Clasificar ejemplos de desarrollo según la etapa o herramienta a la que pertenecen.
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
El diagrama de estructura
- Un diagrama de estructura muestra la decomposición 分解 jerárquica de un programa en módulos, sus subrutinas 子程序 y los parámetros 参数 que se pasan entre ellos. Este diseño de arriba hacia abajo 自顶向下设计 divide un problema grande en subproblemas más pequeños, cada uno de los cuales se convierte en un módulo.
- Cada módulo es un rectángulo. Una línea une un llamador (arriba) con el módulo que llama (abajo). Los módulos en el mismo nivel se llaman de izquierda a derecha.
- Pequeñas flechas junto a las líneas transportan datos: un parámetro pasado hacia abajo al módulo, un resultado devuelto hacia arriba al llamador. Un rombo marca una selección; una flecha curva indica un bucle.

Jerarquía en las líneas, datos en las flechas
A structure chart shows: · Un diagrama de estructura muestra:
A structure chart is the hierarchical breakdown into modules, with parameters down and results up. · Un diagrama de estructura es la descomposición jerárquica en módulos, con parámetros hacia abajo y resultados hacia arriba.
Breaking a problem into modules from the top down is called: · Dividir un problema en módulos de arriba hacia abajo se llama:
Top-down design produces a modular solution. · El diseño de arriba hacia abajo produce una solución modular.
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.
Ejemplo resuelto: leer las firmas del diagrama
CalculatePay
/ | \
GetEmployee CalculateBonus CalculateTax
returns: takes: sales takes: gross
employeeID returns: bonus returns: tax
GetEmployeeno recibe nada y devuelve un ID de empleado:FUNCTION GetEmployee() RETURNS INTEGER.CalculateBonustoma la cifra de ventas hacia abajo y devuelve el bono hacia arriba:FUNCTION CalculateBonus(Sales : REAL) RETURNS REAL.CalculateTaxtoma el pago bruto y devuelve el impuesto. Cada flecha en el diagrama es un parámetro o un valor de retorno en el encabezado; un encabezado con un parámetro que el diagrama no muestra es incorrecto.
On a structure chart, a small arrow pointing down from the caller into a module shows a ____ passed to it. · En un diagrama de estructura, una pequeña flecha apuntando hacia abajo desde el invocador hacia un módulo indica un ____ que se le pasa.
Downward arrows are parameters going in; upward arrows are results returned. Together they give the module's header. · Las flechas hacia abajo son parámetros que entran; las flechas hacia arriba son resultados devueltos. Juntas forman el encabezado del módulo.
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.
Ejemplo resuelto: construir un diagrama de estructura
- Un programa lee las calificaciones de un estudiante, calcula el promedio y emite una calificación. Dibuje un diagrama de estructura.
- Módulo superior:
ProcessStudent. Debajo, de izquierda a derecha:ReadMarks, que devuelve el arreglo de calificaciones;CalculateAverage, que toma el arreglo de calificaciones hacia abajo y devuelve el promedio;OutputGrade, que toma el promedio hacia abajo y no devuelve nada. - Tres cosas obtienen puntuación: la jerarquía con la tarea principal en la parte superior, las subtareas en el orden en que se ejecutan y parámetros nombrados en las flechas en la dirección correcta. Una flecha sin etiqueta vale como máximo medio punto.
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.
Del diagrama de estructura al pseudocódigo
- El módulo superior se convierte en el programa principal; cada rectángulo debajo se convierte en un procedimiento o función cuyo encabezado se lee de las flechas; el programa principal los llama en orden de izquierda a derecha.
PROCEDURE ProcessStudent()
DECLARE Marks : ARRAY[1:10] OF INTEGER
DECLARE Average : REAL
Marks ← ReadMarks()
Average ← CalculateAverage(Marks)
CALL OutputGrade(Average)
ENDPROCEDURE
- Un valor devuelto significa
FUNCTION … RETURNS; un módulo que no devuelve nada es unPROCEDURE. La lista de parámetros son exactamente las flechas hacia abajo.
Put the steps of designing a program with a structure chart in order. · Ordenar los pasos para diseñar un programa con un diagrama de estructura.
Top down: task, sub-tasks, data flow, headers, calls. The chart is finished before the first line of code. · De arriba hacia abajo: tarea, sub-tareas, flujo de datos, encabezados, llamadas. El diagrama está terminado antes de escribir la primera línea de código.
A module whose structure-chart arrows show a value returned upwards should be written as a PROCEDURE. · Un módulo cuyos arrows del diagrama de estructura muestren un valor devuelto hacia arriba debe escribirse como una PROCEDURE.
A returned value makes it a FUNCTION … RETURNS. A PROCEDURE returns nothing. · Una devolución de valor lo convierte en una FUNCTION … RETURNS. Una PROCEDURE no devuelve nada.
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
El diagrama de transición de estados
- Un diagrama de transición de estados documenta el comportamiento de un sistema: los estados 状态 en los que puede estar y los eventos que lo mueven de un estado a otro.
- Cada estado es un círculo o caja redondeada; cada transición es una flecha etiquetada con el evento que la causa, a veces con la acción tomada. Un marcador muestra el estado inicial.
- Es adecuado para sistemas que esperan eventos y reaccionan: una máquina expendedora, un semáforo, un candado, una interfaz de usuario.

Cada estado, cada evento, cada flecha
A state-transition diagram shows: · Un diagrama de transición de estados muestra:
States are circles; transitions are event-labelled arrows. Ideal for vending machines, locks, traffic lights. · Los estados son círculos; las transiciones son flechas etiquetadas con eventos. Ideal para máquinas expendedoras, cerraduras, semáforos.
What does a state-transition diagram show? Select all · todos that apply. · ¿Qué muestra un diagrama de transición de estados? Seleccione todos los que correspondan.
States, labelled transitions and the start marker. Timing is not part of the diagram. · Estados, transiciones etiquetadas y marcador de inicio. La temporización no forma parte del diagrama.
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.
Ejemplo resuelto: leer el diagrama del candado
- El candado se abre con el código 2, 5, 9. Comienza en Locked. Presionar 2 pasa a One digit correct; presionar 5 desde allí pasa a Two digits correct; presionar 9 desde allí pasa a Unlocked.
- Cualquier otra tecla desde cualquiera de los estados de espera devuelve a Locked: el diagrama muestra esas flechas también, y un diagrama que las omite tiene un vacío. ¿Qué sucede si se presiona 2 mientras está Unlocked? Si ninguna flecha lo dice, el diseño no ha decidido.
- Eso es para lo que sirve el diagrama: cada estado debe decir qué sucede en cada evento, para que las transiciones faltantes se encuentren en papel y no por un cliente.
A state-transition diagram makes missing or unhandled transitions easy to spot, because every state and the events between them are laid out. · Un diagrama de transición de estados facilita detectar transiciones faltantes o no manejadas, porque todos los estados y los eventos entre ellos están dispuestos.
Seeing every state and event reveals cases you have not handled — e.g. an unexpected second coin in a vending machine. · Ver cada estado y evento revela casos que no has manejado — p. ej., una segunda moneda inesperada en una máquina expendedora.
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.
Elegir la herramienta
- Para mostrar cómo se divide un programa en módulos y qué pasa entre ellos: un diagrama de estructura.
- Para mostrar cómo se comporta un sistema a lo largo del tiempo en respuesta a eventos, especialmente una máquina o una interfaz con modos: un diagrama de transición de estados.
- Para mostrar la lógica paso a paso de un algoritmo: un diagrama de flujo o pseudocódigo. Diga cuál y por qué.
Match each design tool to what it shows. · Relacione cada herramienta de diseño con lo que muestra.
Each tool views the design differently — structure (modules), behaviour (states), flow (flowchart) or steps (pseudocode). · Cada herramienta ve el diseño de manera diferente: estructura (módulos), comportamiento (estados), flujo (diagrama de flujo) o pasos (pseudocódigo).
A traffic-light controller must respond to a timer and a pedestrian button. Which design tool documents its behaviour best? · Un controlador de semáforo debe responder a un temporizador y a un botón peatonal. ¿Qué herramienta de diseño documenta mejor su comportamiento?
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. · Rojo, rojo-ámbar, verde, ámbar son estados; el temporizador y el botón son eventos. Un diagrama de estructura mostraría los módulos, no el comportamiento.
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.
Puntos que se pierden
- Un diagrama de estructura no es un diagrama de flujo. Muestra jerarquía y parámetros, no la secuencia de decisiones dentro de un módulo.
- Etiqueta cada flecha con el nombre del parámetro o resultado y apúntala en la dirección correcta. Una flecha desnuda no dice nada.
- Un estado es una condición en la que se encuentra el sistema, esperando; un evento es lo que le sucede. "Presionar 5" es un evento, no un estado.
- Los encabezados del pseudocódigo deben coincidir con el diagrama: mismos parámetros, mismos valores de retorno, mismo orden de llamadas.
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
Lo has logrado
- un diagrama de estructura muestra la descomposición de arriba hacia abajo en módulos, con los parámetros pasados hacia abajo y los resultados devueltos hacia arriba en flechas etiquetadas
- lee los encabezados del pseudocódigo de él: las flechas hacia abajo son la lista de parámetros, una flecha hacia arriba lo hace
FUNCTION … RETURNS, y el módulo principal llama de izquierda a derecha - un diagrama de transición de estados muestra los estados y los eventos que los conectan, y expone las transiciones que nadie ha decidido
- descomposición → diagrama de estructura; comportamiento → diagrama de transición de estados; lógica de un algoritmo → diagrama de flujo o pseudocódigo