IA e tecnologia

Análise e modelagem de sistemas: o que acontece antes da primeira linha de código

Capa do artigo: Análise e modelagem de sistemas: o que acontece antes da primeira linha de código
EM VÍDEOSistema bom não começa no códigoEm menos de um minuto, por que todo sistema sob encomenda deveria passar por análise e modelagem antes da programação.

Quando alguém encomenda um sistema, a expectativa costuma ser ver telas logo na primeira semana. Faz sentido: tela é a parte visível. Mas o que define se um sistema vai funcionar bem por anos acontece antes, numa etapa que o cliente quase nunca vê: a análise e a modelagem.

Eu sou desenvolvedora fullstack e desenvolvo sistemas e SaaS sob encomenda. Neste artigo, mostro o que acontece nessa etapa, com um exemplo de sistema de agendamento para clínica, e deixo uma lista de perguntas para você usar ao contratar qualquer desenvolvedor.

O que é análise e modelagem de sistemas

Análise é entender o problema: como o negócio funciona hoje, quem vai usar o sistema, o que cada pessoa precisa fazer e quais regras não podem ser quebradas. Modelagem é transformar esse entendimento em modelos, quase sempre diagramas, que descrevem o sistema antes que ele exista.

A comparação mais honesta é com a construção civil. Ninguém sério começa uma casa pelas paredes: primeiro vem a planta, depois a obra. No software, os modelos cumprem o papel da planta. Eles permitem discutir, corrigir e aprovar o projeto enquanto mudar ainda é barato.

Por que essa etapa economiza dinheiro

Barry Boehm e Victor Basili, dois nomes clássicos da engenharia de software, reuniram em 2001 as conclusões de décadas de estudos sobre defeitos em software. Uma das principais: encontrar e corrigir um problema depois que o sistema foi entregue costuma custar muitas vezes mais do que resolvê-lo na fase de requisitos e projeto. Em sistemas grandes e críticos, eles falam em diferenças de até 100 vezes; em sistemas menores, a diferença é menor, mas continua existindo.

O motivo é simples. No papel, mudar uma regra é apagar uma seta. Com o sistema no ar, a mesma mudança pode mexer no banco de dados, nas telas, nos relatórios, nos dados já cadastrados e na rotina de quem usa.

As 4 etapas antes de programar

1. Levantamento de requisitos

Requisitos são as necessidades que o sistema precisa atender. Eles se dividem em dois tipos:

  • Requisitos funcionais: o que o sistema faz. Exemplo: "o paciente pode remarcar a consulta até 24 horas antes".
  • Requisitos não funcionais: como o sistema precisa se comportar. Exemplo: "só a recepção e o profissional responsável veem os dados de contato do paciente" ou "a agenda precisa abrir rápido no celular".

O levantamento é feito com conversas, observação da rotina e análise de planilhas, formulários e sistemas que já existem. A norma internacional ISO/IEC/IEEE 29148 trata justamente desse processo, que a engenharia de software chama de engenharia de requisitos.

A regra de ouro: requisito bom pode ser testado. "O sistema deve ser fácil" não é requisito. "Uma consulta deve ser marcada em até três toques no celular" é.

2. Casos de uso

Um caso de uso descreve uma interação completa entre uma pessoa (o ator) e o sistema para atingir um objetivo. "Agendar consulta" é um caso de uso; "clicar no botão azul" não é.

Para cada caso de uso, descrevo o caminho principal e os desvios: o que acontece se o horário for ocupado no meio do processo? E se o paciente não tiver cadastro? Esses desvios são exatamente os pontos em que sistemas mal planejados quebram.

3. Modelagem com diagramas

Com requisitos e casos de uso definidos, o sistema é desenhado. A linguagem padrão para isso é a UML (Unified Modeling Language), mantida pelo Object Management Group (OMG). A UML tem mais de uma dezena de tipos de diagrama, mas no dia a dia de um sistema sob encomenda poucos fazem a maior parte do trabalho:

DiagramaResponde à perguntaQuando uso
Casos de usoQuem usa o sistema e para quê?Sempre, no início
ClassesQuais informações o sistema guarda e como se relacionam?Sempre, antes do banco de dados
AtividadesQual é o passo a passo de um processo?Fluxos com decisões e exceções
SequênciaEm que ordem as partes do sistema conversam?Integrações, pagamentos, notificações
ImplantaçãoOnde cada parte do sistema roda?Sistemas com várias peças e serviços

4. Validação com o cliente

O modelo só vale se o cliente se reconhece nele. Nesta etapa, apresento os diagramas e os fluxos em linguagem simples e caminhamos juntos por situações reais: "uma paciente liga para remarcar, o que acontece?". É aqui que aparecem frases como "ah, mas aqui a gente faz diferente". Cada uma delas, descoberta nesta etapa, é retrabalho evitado.

Exemplo: um sistema de agendamento para clínica

Para deixar concreto, um exemplo fictício e simplificado: uma clínica com três profissionais quer um sistema de agendamento.

Alguns requisitos levantados:

  • O paciente agenda pelo celular, escolhendo profissional e horário livre;
  • A recepção vê a agenda de todos e pode marcar, remarcar e cancelar;
  • Cada profissional vê só a própria agenda e registra o atendimento;
  • O sistema envia lembrete antes da consulta e registra a confirmação;
  • Dados de pacientes são dados pessoais e, em muitos casos, dados de saúde: acesso restrito por perfil, conforme a LGPD.

Desses requisitos sai o diagrama de casos de uso. Ele mostra, numa imagem, quem faz o quê:

Diagrama de casos de uso com os atores paciente, recepção e profissional ligados a agendar consulta, remarcar ou cancelar, confirmar presença, gerenciar agenda e registrar atendimento
Diagrama de casos de uso do exemplo. O lembrete é incluído automaticamente em todo agendamento.

Depois vem o diagrama de classes, que organiza as informações que o sistema guarda. Ele é a base do banco de dados:

Diagrama de classes com Paciente, Consulta, Profissional e Horário disponível, e os status possíveis de uma consulta
Diagrama de classes simplificado. Os status da consulta já respondem a perguntas que o cliente nem tinha feito.

Repare no que o desenho revela. Ao listar os status da consulta, surge a pergunta: falta conta como atendimento para o financeiro? E consulta cancelada com menos de 24 horas? Decisões como essas, tomadas no modelo, custam uma conversa. Descobertas depois do lançamento, custam uma reforma.

Engenharia reversa: quando o sistema já existe

Nem todo projeto começa do zero. Muitas vezes o cliente já tem um sistema, uma planilha cheia de fórmulas ou um software antigo que precisa evoluir. Nesses casos, faço o caminho inverso: a engenharia reversa.

Analiso o que existe, as telas, os dados e as regras escondidas no código ou nas fórmulas, e reconstruo os modelos a partir disso. O resultado é um mapa do sistema atual, que mostra o que funciona, o que está duplicado e o que ninguém mais usa. Só depois disso faz sentido decidir entre evoluir, reorganizar ou reconstruir.

Perguntas para fazer antes de contratar um sistema

Use esta lista com qualquer desenvolvedor, inclusive comigo:

  1. Como você vai levantar os requisitos? Vai conversar com quem usa o sistema no dia a dia?
  2. Vou ver algum modelo ou protótipo antes da programação começar?
  3. Como serão tratados os casos de exceção, como cancelamentos, erros e falta de internet?
  4. Quem pode ver cada informação? Como fica a proteção de dados?
  5. O que acontece quando eu precisar de uma mudança depois de pronto?
  6. Os dados e as contas ficam no nome da minha empresa?

Se a resposta para a segunda pergunta for "não precisa, já começo programando", desconfie. Rapidez no início, sem modelo, costuma virar lentidão e custo no meio do projeto.

Como eu trabalho em sistemas sob encomenda

Todo sistema que desenvolvo passa por essas etapas: requisitos, casos de uso, modelos e validação com o cliente antes da primeira linha de código. Só depois vêm a programação da interface, do servidor e do banco de dados, os testes e a implantação. Se você está pensando em um sistema ou SaaS para o seu negócio, veja como funcionam os projetos sob encomenda.

Perguntas frequentes

O que é análise e modelagem de sistemas?

É a etapa em que o sistema é entendido e desenhado antes de ser programado. A análise identifica quem usa, o que cada pessoa precisa fazer e quais regras não podem falhar; a modelagem transforma isso em diagramas que descrevem o sistema.

Qual a diferença entre requisito funcional e não funcional?

Requisito funcional descreve o que o sistema faz, como permitir que o paciente remarque uma consulta. Requisito não funcional descreve como ele deve se comportar, como restringir quem vê cada dado ou abrir rápido no celular.

Para que serve a UML?

A UML é uma linguagem padrão de diagramas para descrever sistemas de software. Ela permite discutir e validar o funcionamento do sistema com o cliente e com a equipe antes da programação.

Modelar o sistema deixa o projeto mais caro?

A modelagem tem custo, mas costuma reduzir o custo total. Estudos clássicos de engenharia de software mostram que corrigir um problema depois da entrega custa muitas vezes mais do que corrigi-lo nas fases de requisitos e projeto.

O que é engenharia reversa de software?

É analisar um sistema que já existe para reconstruir seus modelos e regras. Serve para entender um software antigo antes de evoluí-lo, reorganizá-lo ou substituí-lo.

Fontes

  1. Boehm, B.; Basili, V. Software Defect Reduction Top 10 List. IEEE Computer, 2001
  2. ISO/IEC/IEEE 29148:2018: Requirements engineering
  3. Object Management Group: especificação da UML
  4. Sommerville, I. Software Engineering (site oficial do livro)
  5. Lei nº 13.709/2018 (LGPD)
Aline Flores trabalhando no notebook
QUEM ESCREVEU

Aline Flores

Programo desde os 15 anos e tenho formação em Análise e Desenvolvimento de Sistemas. Boa parte da minha experiência está em projetos para a área da saúde, como psicologia e psiquiatria. Crio sites rápidos, com SEO e GEO, sempre com domínio e contas no nome do cliente.

Conhecer minha história ↗
WhatsApp