Processos de software

Atividades, cascata, iteração, incrementos, espiral, reutilização e fases do RUP.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

A equipa tem dez semanas para entregar a aplicação de salas. Se construir todos os ecrãs antes de experimentar a confirmação concorrente, pode descobrir demasiado tarde que a solução não preserva a regra. O processo organiza quando esclarecer requisitos, construir, validar e rever decisões.

Um processo de software define atividades, responsabilidades, resultados e formas de acompanhar o trabalho de desenvolvimento e manutenção. Um modelo de processo simplifica essa organização para discutirmos a sua estrutura.

Atividades e artefactos

Todos os processos precisam de tratar quatro atividades fundamentais:

AtividadePerguntaExemplo de resultado
EspecificaçãoO que deve o sistema fazer e respeitar?Requisitos e critérios de aceitação
Desenho e implementaçãoComo vamos organizar e construir a solução?Modelos, decisões e código
ValidaçãoA solução responde às necessidades?Resultados de testes e feedback
EvoluçãoO que muda depois de entrar em uso?Alterações verificadas e novas versões

Um artefacto é um resultado do trabalho, como um modelo ou um incremento executável. A atividade produz ou altera esse resultado. Um papel identifica responsabilidades; a mesma pessoa pode assumir vários papéis.

As atividades podem repetir-se e mudar de ordem. Ao testar um protótipo, podemos descobrir que um requisito estava errado e regressar à especificação.

Planeamento preditivo e adaptativo

Num processo orientado por um plano, a equipa planeia antecipadamente uma parte significativa das atividades e acompanha os desvios. Isto ajuda a coordenar dependências, aprovações e compromissos conhecidos.

Num processo ágil, a equipa planeia de forma incremental e usa entregas e observações frequentes para adaptar o trabalho. Há objetivos, planos e documentação, com mais detalhe à medida que o conhecimento melhora.

Podemos combinar um orçamento e marcos de aprovação com iterações curtas. A escolha depende da estabilidade dos requisitos, do risco, do acesso a utilizadores e das obrigações de demonstração de conformidade.

Cascata e modelo V

Na cascata, o modelo apresenta fases distintas de requisitos, desenho, implementação, testes e operação. Idealmente, uma fase termina antes de a seguinte avançar. É mais fácil planear quando os requisitos são conhecidos e estáveis; alterações tardias podem obrigar a rever artefactos já aprovados.

O modelo V relaciona decisões com os testes que as verificam. A leitura faz-se em V: descemos nas decisões e subimos na verificação.

Lado esquerdo, decisãoLado direito, verificação correspondente
Requisitos e cenários de aceitaçãoTestes de sistema e de aceitação
Arquitetura e interfacesTestes de integração
Desenho detalhado de unidadesTestes de unidade

Na aplicação, a regra contra sobreposição aparece nos requisitos. O teste de sistema tenta duas reservas concorrentes. O desenho do repositório orienta testes de unidade da condição de sobreposição. A mensagem útil é preparar a verificação enquanto definimos a solução, em vez de pensar nos testes só no fim.

Não confundas uma figura sequencial com a afirmação de que as equipas reais nunca regressam a uma fase anterior.

Iterativo e incremental

Iterar é voltar a trabalhar uma solução para a melhorar. Incrementar é acrescentar capacidade ao produto. São ideias diferentes que podemos combinar.

Na aplicação de salas, cada entrega conserva o que já funciona e acrescenta uma capacidade:

VersãoCapacidade utilizávelFeedback possível
1Consultar disponibilidadeOs horários apresentados correspondem às salas?
2Consultar e reservarO estudante compreende confirmação e conflito?
3Consultar, reservar e cancelarConsegue corrigir um engano antes do início?

São incrementos porque a capacidade disponível aumenta, e o feedback de uma versão pode mudar as prioridades da seguinte. Se revemos três vezes o protótipo do mesmo ecrã de reserva, temos iterações sem ainda ter acrescentado funcionalidade utilizável; um incremento também pode passar por várias iterações antes de ser entregue.

O desenvolvimento incremental permite receber feedback cedo e adiar requisitos incertos. Exige atenção à estrutura: acrescentar funcionalidades continuamente sem rever o desenho pode tornar cada alteração mais cara. Também pode não servir uma substituição que precisa de todas as funcionalidades antes de entrar em operação.

Espiral e risco

Na espiral, cada ciclo identifica objetivos e alternativas, avalia riscos, desenvolve e valida uma solução e prepara o ciclo seguinte. O trabalho é orientado pelo risco, não apenas por uma lista de funcionalidades.

Suponhamos que a aplicação depende de uma API de horários cuja qualidade desconhecemos. Antes de desenhar todos os ecrãs, fazemos uma experiência curta para verificar disponibilidade, formato dos dados e tempos de resposta. O resultado ajuda a decidir se usamos a API, uma cópia local ou outra solução.

Definimos a pergunta e o limite de tempo antes da experiência. Assim sabemos que incerteza o protótipo tem de resolver e quando já temos informação para decidir.

Integração e configuração

Também podemos construir um sistema a partir de componentes existentes. Procuramos soluções, avaliamos a sua adequação, ajustamos requisitos quando isso faz sentido, configuramos e integramos os componentes, e validamos o resultado.

Reutilizar autenticação pode reduzir código próprio. Continuamos a ter de verificar compatibilidade, licenças, atualizações, proteção de dados e comportamento quando o serviço falha. A integração passa a ser uma parte central do trabalho.

RUP

O Rational Unified Process, RUP, é iterativo e incremental, orientado por casos de uso e centrado na arquitetura. Foi desenvolvido em conjunto com a UML. Os casos de uso conduzem o trabalho desde a análise de requisitos até aos testes do sistema: cada caso descreve uma interação com resultado observável, e os testes do sistema verificam essas interações. Organiza o tempo em quatro fases:

FaseObjetivo principalEvidência para avançar
Inception, conceçãoDelimitar visão, âmbito, viabilidade e riscosProblema e casos críticos entendidos
Elaboration, elaboraçãoEstabilizar a arquitetura e reduzir riscos principaisArquitetura avaliada nos cenários críticos
Construction, construçãoDesenvolver e testar os incrementosProduto cumpre os critérios definidos
Transition, transiçãoColocar o produto em usoEntrega, apoio e feedback dos utilizadores

Uma fase pode conter várias iterações. As disciplinas atravessam as fases com intensidades diferentes.

DisciplinaConceçãoElaboraçãoConstruçãoTransição
Requisitosfortemédiabaixabaixa
Desenhobaixafortemédiabaixa
Implementaçãoquase ausentemédia, protótipos de riscofortebaixa
Testebaixomédio, avalia arquiteturaforteforte, feedback de uso

Lê a tabela por linhas e colunas: a fase responde a «em que momento e com que objetivo dominante?», e a disciplina responde a «que tipo de trabalho estamos a realizar?». Priorizar casos de uso pertence à disciplina de requisitos, mesmo quando ocorre durante a elaboração. Identificar atores começa na conceção e pode continuar ao refinar os casos na elaboração; não é uma atividade exclusiva de uma fase.

Elaboração não significa só desenhar, tal como construção não significa só programar; a fase indica o objetivo dominante, não a única atividade permitida. Para as reservas concorrentes, a elaboração pode incluir código e testes de um protótipo do mecanismo de confirmação, pois queremos provar que a arquitetura resolve o risco antes de construir funcionalidades que dependem dela.

Valores ágeis e escolher um processo

Uma equipa tem dois objetivos: substituir um sistema obrigatório com regras conhecidas e explorar uma nova forma de procurar salas. Pode planear migração e conformidade com marcos claros, enquanto testa a pesquisa em ciclos curtos com estudantes.

Os quatro valores do Manifesto Ágil orientam esta escolha:

  • Indivíduos e interações acima de processos e ferramentas.
  • Software em funcionamento acima de documentação extensa.
  • Colaboração com o cliente acima de negociação de contratos.
  • Responder à mudança acima de seguir um plano.

Os itens da direita têm valor; os da esquerda valem mais. Na escolha do processo, pesamos características do projeto: falar semanalmente com o responsável pelas salas vale mais do que aprovar um documento de 40 páginas sem contacto, e mostrar a consulta real de disponibilidade vale mais do que descrever todos os ecrãs futuros. Mas “ágil é sempre melhor” não explica como cumprir uma auditoria, tal como “o contrato exige datas” não obriga a esperar pelo fim para receber feedback. O Scrum organiza esses ciclos com requisitos escritos como histórias com aceitação, e o XP acrescenta as práticas técnicas que os sustentam.

Exercícios

Duas formas de avançar

A equipa redesenha três vezes o mesmo protótipo de pesquisa, sem entregar nova capacidade. Depois acrescenta reserva a uma versão que já consultava salas. Classifica cada mudança.

Pista

Pergunta se melhorámos a mesma solução ou acrescentámos capacidade.

Solução

As três revisões são iterações. Acrescentar reservas é um incremento da capacidade do produto. A construção desse incremento também pode envolver várias iterações.

Confere a tua resposta:

  • Identifiquei iteração na revisão do mesmo protótipo.
  • Identifiquei incremento ao acrescentar reservas.
  • Expliquei que as ideias podem coexistir.

Erros frequentes

Não uses iterativo e incremental como sinónimos. Entrega frequente não diz, por si só, o que foi acrescentado.

Voltar à explicação
Código na elaboração

Durante a elaboração do RUP, a equipa implementa um pequeno serviço para testar reservas concorrentes com duas tentativas em simultâneo. Está a saltar indevidamente para construção? Justifica e diz que evidência esperas do protótipo.

Pista
Uma fase do RUP não corresponde a uma única atividade.
Mais uma pista

A elaboração precisa de avaliar a arquitetura nos cenários críticos.

Solução

Não. A elaboração pode incluir implementação e testes para estabilizar a arquitetura. O protótipo testa o risco de concorrência antes de desenvolver as funcionalidades dependentes. A evidência esperada é uma confirmação e uma recusa em duas tentativas concorrentes, com uma só reserva nos dados. A fase é identificada pelo objetivo predominante, não pela ausência de código.

Confere a tua resposta:

  • Expliquei que disciplinas atravessam as fases.
  • Liguei o protótipo à redução de risco arquitetural.
  • Descrevi a evidência que mostra o risco reduzido: duas tentativas concorrentes produzem uma confirmação e uma recusa.

Erros frequentes

Não confundas as fases do RUP com departamentos estanques de requisitos, desenho, código e teste.

Voltar à explicação
Planear o conhecido e investigar o incerto

A escola tem uma data fixa para substituir a aplicação antiga e regras de migração conhecidas. A nova API de horários ainda pode devolver dados incompletos. Propõe uma forma de organizar o trabalho e uma experiência inicial, sem escolher um nome de processo como justificação suficiente.

Pista

As duas partes do projeto têm graus diferentes de incerteza.

Mais uma pista

Que observação te faria aceitar ou rejeitar a API como fonte de disponibilidade?

Solução

Planeamos migração, validação dos dados e marcos de aprovação com a data conhecida. Antes de depender da API, fazemos uma experiência delimitada que compara horários de salas de teste com uma fonte de referência e regista falhas e latência. Se faltarem dados críticos, revemos a fonte ou o âmbito. Podemos trabalhar em iterações e orientar o primeiro ciclo pelo risco; os compromissos conhecidos continuam a exigir planeamento.

Confere a tua resposta:

  • Mantive marcos e critérios para a migração com data fixa.
  • Propus experimentar a API antes de assumir toda a integração.
  • Defini uma pergunta e um resultado que orientam a decisão seguinte.

Erros frequentes

Não adies o risco para a integração final. Não afirmes que iterações dispensam datas e planos, nem que uma data fixa proíbe feedback.

Voltar à explicação
O mesmo trabalho em momentos diferentes

A equipa já delimitou a visão. Agora prioriza casos de uso e implementa um protótipo para decidir se a arquitetura suporta leitores de bilhetes sem rede. Meses depois, prepara a instalação e o apoio aos utilizadores. Identifica a disciplina de priorizar casos de uso, a fase predominante do protótipo e a fase da preparação da entrega. «Priorizar casos de uso é elaboração» responde à pergunta sobre a disciplina? Justifica.

Pista

Separa o tipo de trabalho do objetivo predominante da fase.

Solução

Priorizar casos de uso pertence a requisitos. O protótipo reduz uma incerteza arquitetural, por isso corresponde ao objetivo da elaboração. Instalação e apoio fazem parte da transição. Dizer apenas «elaboração» não identifica a disciplina: requisitos, desenho, implementação e teste podem coexistir nessa fase. A prioridade dos casos também pode ser revista noutros momentos; não fica encerrada por terminar a conceção.

Confere a tua resposta:

  • Associei priorizar casos de uso à disciplina de requisitos.
  • Associei a experiência arquitetural à elaboração e a preparação da entrega à transição.
  • Expliquei que a atividade de requisitos não é exclusiva de uma fase.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.