Program design tools · Ferramentas de projeto de programa
| English | Português |
|---|---|
| structure chart/ˈstrʌktʃə tʃɑːt/ | gráfico de estrutura |
| state-transition diagram/steɪt trænˈsɪʃn ˈdaɪəɡræm/ | diagrama de transição de estado |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocódigo |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | decomposição |
| subroutines/ˈsʌbruːtiːnz/ | subrotinas |
| parameters/pəˈræmɪtəz/ | parâmetros |
| top-down design/tɒp daʊn dɪˈzaɪn/ | design top-down |
| 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.
O ano em que o software tornou-se engenharia
- Em outubro de 1968, cinquenta dos principais programadores do mundo se reuniram em Garmisch, Alemanha, para discutir por que grandes programas estavam falhando: atrasados, fora do orçamento, confiáveis. Cunharam uma frase para o que faltava: engenharia de software.
- A reclamação era simples. Construtores desenham antes de construir. Engenheiros calculam antes de cortar. Programadores estavam digitando código antes de alguém ter desenhado o que o programa seria.
- Os desenhos que saíram daquela década são os que você usará na etapa de design: o gráfico de estrutura 结构图, que mostra como um programa é dividido em partes, e o diagrama de transição de estado 状态转换图, que mostra seu comportamento.
- Esta aula ensina como lê-los, como construí-los e como transformar um gráfico de estrutura em 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
O que o design decide
- A análise disse o que o programa deve fazer. O design decide como: as estruturas de dados, os algoritmos, os módulos e a interface.
- A etapa de design produz desenhos que um programador pode codificar a partir deles: um fluxograma para a lógica de um algoritmo, pseudocódigo 伪 código para a mesma coisa em texto, um gráfico de estrutura para os módulos e um diagrama de transição de estado para o comportamento.
- Cada ferramenta responde a uma pergunta diferente, e o exame pergunta qual se encaixa.
A lógica de um algoritmo, desenhada antes de ser codificada
Software process lab · Laboratório de processo de software
Classify development examples by the stage or tool they belong to. · Classifique exemplos de desenvolvimento pela etapa ou ferramenta a que pertencem.
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
O gráfico de estrutura
- Um gráfico de estrutura mostra a decomposição hierárquica 分解 de um programa em módulos, seus subrrotinas 子程序 e os parâmetros 参数 passados entre eles. Este design top-down 自顶向下 divide um grande problema em subproblemas menores, cada um se tornando um módulo.
- Cada módulo é um retângulo. Uma linha conecta um chamado, acima, ao módulo que ele chama, abaixo. Módulos no mesmo nível são chamados da esquerda para a direita.
- Pequenas setas ao lado das linhas carregam dados: um parâmetro passado para baixo no módulo, um resultado retornado para cima ao chamado. Um losango marca uma seleção, uma seta curva um loop.

Hierarquia nas linhas, dados nas setas
A structure chart shows: · Um diagrama de estrutura mostra:
A structure chart is the hierarchical breakdown into modules, with parameters down and results up. · Um diagrama de estrutura é a decomposição hierárquica em módulos, com parâmetros para baixo e resultados para cima.
Breaking a problem into modules from the top down is called: · Dividir um problema em módulos de cima para baixo é chamado de:
Top-down design produces a modular solution. · O design top-down produz uma solução 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.
Exemplo resolvido: ler as assinaturas do gráfico
CalculatePay
/ | \
GetEmployee CalculateBonus CalculateTax
returns: takes: sales takes: gross
employeeID returns: bonus returns: tax
GetEmployeerecebe nada e retorna um ID de funcionário:FUNCTION GetEmployee() RETURNS INTEGER.CalculateBonusleva a cifra de vendas para baixo e envia o bônus de volta:FUNCTION CalculateBonus(Sales : REAL) RETURNS REAL.CalculateTaxleva o salário bruto e retorna o imposto. Cada seta no gráfico é um parâmetro ou valor de retorno no cabeçalho; um cabeçalho com um parâmetro que o gráfico não mostra está errado.
On a structure chart, a small arrow pointing down from the caller into a module shows a ____ passed to it. · Em um diagrama de estrutura, uma pequena seta apontando para baixo do chamador para um módulo indica um ____ passado para ele.
Downward arrows are parameters going in; upward arrows are results returned. Together they give the module's header. · Setas para baixo são parâmetros entrando; setas para cima são resultados retornados. Juntas, elas formam o cabeçalho do 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.
Exemplo resolvido: construir um gráfico de estrutura
- Um programa lê as notas de um aluno, calcula a média e exibe uma nota. Desenhe um gráfico de estrutura.
- Módulo superior:
ProcessStudent. Abaixo dele, da esquerda para a direita:ReadMarks, que retorna a matriz de notas;CalculateAverage, que leva a matriz de notas para baixo e retorna a média;OutputGrade, que leva a média para baixo e não retorna nada. - Três coisas pontuam: a hierarquia com a tarefa principal no topo, as subtarefas na ordem em que rodam e parâmetros nomeados nas setas na direção certa. Uma seta sem rótulo vale no máximo meia pontuação.
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.
De gráfico de estrutura para pseudocódigo
- O módulo superior torna-se o programa principal; cada retângulo abaixo torna-se um procedimento ou função cujo cabeçalho é lido nas setas; o programa principal as chama na ordem da esquerda para a direita.
PROCEDURE ProcessStudent()
DECLARE Marks : ARRAY[1:10] OF INTEGER
DECLARE Average : REAL
Marks ← ReadMarks()
Average ← CalculateAverage(Marks)
CALL OutputGrade(Average)
ENDPROCEDURE
- Um valor retornado significa um
FUNCTION … RETURNS; um módulo que não retorna nada é umPROCEDURE. A lista de parâmetros são exatamente as setas para baixo.
Put the steps of designing a program with a structure chart in order. · Organize os passos para projetar um programa com um diagrama de estrutura em ordem.
Top down: task, sub-tasks, data flow, headers, calls. The chart is finished before the first line of code. · Top-down: tarefa, sub-tarefas, fluxo de dados, cabeçalhos, chamadas. O diagrama está terminado antes da primeira linha de código.
A module whose structure-chart arrows show a value returned upwards should be written as a PROCEDURE. · Um módulo cujas setas do diagrama de estrutura mostrem um valor sendo retornado para cima deve ser escrito como PROCEDURA.
A returned value makes it a FUNCTION … RETURNS. A PROCEDURE returns nothing. · Um valor retornado torna-o uma FUNÇÃO … RETURNS. Uma PROCEDURA não retorna 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
O diagrama de transição de estado
- Um diagrama de transição de estado documenta o comportamento de um sistema: os estados 状态 em que ele pode estar e os eventos que o movem de um estado para outro.
- Cada estado é um círculo ou caixa arredondada; cada transição é uma seta rotulada com o evento que a causa, às vezes com a ação tomada. Um marcador mostra o estado inicial.
- Adequa-se a sistemas que esperam eventos e reagem: uma máquina de vending, um semáforo, uma fechadura, uma interface do usuário.

Todo estado, todo evento, toda seta
A state-transition diagram shows: · Um diagrama de transição de estado mostra:
States are circles; transitions are event-labelled arrows. Ideal for vending machines, locks, traffic lights. · Estados são círculos; transições são setas rotuladas com eventos. Ideal para máquinas de venda automática, fechaduras, semáforos.
What does a state-transition diagram show? Select all · todos that apply. · O que um diagrama de transição de estado mostra? Selecione todos os que se aplicam.
States, labelled transitions and the start marker. Timing is not part of the diagram. · Estados, transições rotuladas e o marcador inicial. O tempo não faz parte do 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.
Exemplo resolvido: leia o diagrama da fechadura
- A fechadura abre com o código 2, 5, 9. Inicie em Travada. Pressionar 2 move para Um dígito correto; pressionar 5 a partir daí move para Dois dígitos corretos; pressionar 9 a partir daí move para Desbloqueada.
- Qualquer outra tecla de qualquer um dos estados pendentes retorna a Travada: o diagrama mostra essas setas também, e um diagrama que as omite tem uma lacuna. O que acontece se 2 for pressionado enquanto estiver Desbloqueada? Se nenhuma seta especificar, o design não decidiu.
- É por isso que serve o diagrama: cada estado deve dizer o que acontece em cada evento, para que as transições ausentes sejam encontradas no papel e não pelo cliente.
A state-transition diagram makes missing or unhandled transitions easy to spot, because every state and the events between them are laid out. · Um diagrama de transição de estado facilita identificar transições ausentes ou não tratadas, pois todos os estados e os eventos entre eles estão dispostos.
Seeing every state and event reveals cases you have not handled — e.g. an unexpected second coin in a vending machine. · Ver todos os estados e eventos revela casos que você não lidou — por exemplo, uma segunda moeda inesperada em uma máquina de venda automática.
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.
Escolhendo a ferramenta
- Para mostrar como um programa é dividido em módulos e o que passa entre eles: um gráfico de estrutura.
- Para mostrar como um sistema se comporta ao longo do tempo em resposta a eventos, especialmente uma máquina ou interface com modos: um diagrama de transição de estado.
- Para mostrar a lógica passo a passo de um algoritmo: um fluxograma ou pseudocódigo. Diga qual e por quê.
Match each design tool to what it shows. · Combine cada ferramenta de projeto com o que ela mostra.
Each tool views the design differently — structure (modules), behaviour (states), flow (flowchart) or steps (pseudocode). · Cada ferramenta vê o projeto de forma diferente — estrutura (módulos), comportamento (estados), fluxo (diagrama de fluxo) ou passos (pseudocódigo).
A traffic-light controller must respond to a timer and a pedestrian button. Which design tool documents its behaviour best? · Um controlador de semáforo deve responder a um temporizador e a um botão de pedestre. Qual ferramenta de projeto documenta melhor seu comportamento?
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. · Vermelho, vermelho-e-amarelo, verde, amarelo são estados; o temporizador e o botão são eventos. Um diagrama de estrutura mostraria os módulos, não o comportamento.
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.
Marcas que escapam
- Um gráfico de estrutura não é um fluxograma. Ele mostra hierarquia e parâmetros, não a sequência de decisões dentro de um módulo.
- Roteie cada seta com o nome do parâmetro ou resultado e aponte na direção correta. Uma seta sem rótulo não diz nada.
- Um estado é uma condição em que o sistema está, à espera; um evento é o que acontece com ele. "Pressionar 5" é um evento, não um estado.
- Os cabeçalhos do pseudocódigo devem corresponder ao gráfico: mesmos parâmetros, mesmos valores de retorno, mesma ordem de chamadas.
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
Entendeu?
- um gráfico de estrutura mostra decomposição top-down em módulos, com os parâmetros passados para baixo e os resultados retornados para cima em setas rotuladas
- leia os cabeçalhos do pseudocódigo dele: setas para baixo são a lista de parâmetros, uma seta para cima torna-se um
FUNCTION … RETURNS, e o módulo principal chama da esquerda para a direita - um diagrama de transição de estado mostra os estados e os eventos que movem entre eles, e expõe as transições que ninguém decidiu
- decomposição → gráfico de estrutura; comportamento → diagrama de transição de estado; lógica de um único algoritmo → fluxograma ou pseudocódigo