Pular para conteúdo

Tópicos sobre o trabalho em software

O início da atuação de uma pessoa e de uma equipe em um novo trabalho, seja para a criação de um novo software, seja para a sustentação e evolução de software existente, demanda - além das óbvias habilidades específicas com software:

  • Entrosamento com a instituição e com as pessoas responsáveis pelo novo trabalho.
  • Compreensão gradual da dinâmica sistêmica na qual o software está inserido.
  • Reconhecimento gradual de stakeholders, dinâmicas de trabalho e demandas do público usuário do "software em desenvolvimento".
  • Leitura e interpretação da documentação escrita que estiver disponível. Maior envolvimento dos stakeholders, quando o conhecimento escrito for mais escasso.
  • Descoberta e gradual compreensão das regras de negócio e obrigações legais, se houver.
  • Descoberta de quais equipamentos, dispositivos, instalações de funcionamento, dependências e integrações com outros softwares.
  • Descobertas sobre os problemas já conhecidos, problemas já resolvidos e expectativas que devem ser atendidas.

Os tópicos a seguir objetivam contribuir para a consecução das demandas acima. Não estão restritos a uma categoria específica de profissional: desenvolvedores ( backend, fullstack, frontend ), analistas de testes, analista de requisitos, gerentes de projeto, scrum master, etc. Estão organizados em grupos temáticos, de forma a apoiar as primeiras abordagens e compreensões do novo trabalho a realizar - seja a construção de um novo software, seja a sustentação e evolução de software já existente - bem como a organização do "canteiro de obras" por parte dos trabalhadores.

Tópicos para a compreensão geral da tarefa

O propósito e a utilização do software

  • Qual o propósito deste software, o que faz, do que precisa para fazer e como é utilizado?
  • O software está sendo utilizado de acordo com o seu propósito?
  • Quais adaptações de uso estão sendo feitas?
  • Qual a o propósito dos componentes que serão trabalhados e como interferem no funcionamento do software?
  • Quais áreas de domínio, legislação e conhecimentos são necessários para entender sua operação?

Acesso e contexto de utilização

  • Quem pode usar esse software?
  • Quais permissões são necessárias?
  • Quais acessos intermediários são necessários (VPN, RDP, Teamviewer, virtualização)
  • É necessária a instalação em desktop?
  • Como é realizada a instalação em desktop?
  • É utilizado diretamente pelo usuário final? Através de telas gráficas? Navegador Web?
  • Quais as permissões e autorizações necessárias pelos utilizadores?
  • As permissões estão organizadas por módulos, por funcionalidade, por tela, por usuário?
  • Quem concede as permissões e como obter estas permissões?

Integração com outros softwares

  • É utilizado por outros softwares (via API, FTP, troca de arquivos, banco de dados compartilhado)?
  • Quais as configurações necessárias para que seja utilizado por outros softwares?
  • Quais as permissões para obter as configurações necessárias para integração com outros softwares?
  • De quais outros softwares este software depende para executar?
  • Depende de conexão com internet externa?
  • Depende de conexão intranet?
  • Acesso continuado a arquivos em rede?
  • Navegadores Web para tarefas secundárias?
  • Qual é a API de autenticação?
  • Execução remota de outros aplicativos?

As principais funcionalidades do software

  • Quais as principais funcionalidades deste software?
  • Quais funcionalidades serão desenvolvidas ou mantidas por nossa atual equipe? Existem outras equipes atuando nesta ou em outras funcionalidades? Como será o contato e a atuação conjunta?
  • Quais os conhecimentos de ordem prática, específicos de negócio, regulatório ou implícitos são necessários para compreender o que cada funcionalidade realiza? A equipe possui conhecimento prévio em tais assuntos?
  • Existe documentação descritiva das funcionalidades? Atualizada até qual data?
  • Quais os detalhes de cada funcionalidade estão caracterizados nos documentos: explicação breve sobre funcionamento; roteiro geral de utilização; dependências de outras funcionalidades; permissões envolvidas; restrições e configurações; telas de usuário, se houver; API, se houver; modelos de dados ?
  • Quais pessoas na organização podem facilitar a explicação destas funcionalidades? Quais pessoas a organização designou para a intermediação? Quais os meios e procedimentos para contatar estas pessoas? O acesso pode ser informal ou deve ser formal?
  • Os artefatos de código envolvidos com cada funcionalidade são conhecidos? Estão atualizados? São mantidos em controle de versão?
  • Existe codificação em banco de dados relacionado a estas funcionalidades (realização, infra, suporte)?

As entradas de dados que o software processa

  • Quais as entradas de dados este software aceita?

Exemplos: preenchimento manual - registro a registro - em telas do tipo formulários; arquivos do tipo texto, imagem, vídeo, áudio, planilhas, outros formatos; fluxo continuado de bytes (streaming);

Os dados que o software processa

!TODO Em progresso

A documentação que descreve o software e os problemas conhecidos

!TODO Em progresso

Tópicos para o desenvolvimento de software

Especificamente, para o trabalhador ligado às tarefas de desenvolvimento e sustentação do software, é necessário ainda:

  • Configuração da estação de trabalho para as tarefas de desenvolvimento
  • Acesso aos códigos-fonte, configurações e outros artefatos relevantes.
  • Configurações, instruções de uso e softwares destinados à guarda dos artefatos produzidos
  • Configurações, instruções de uso e softwares destinados ao reporte de trabalho realizado e reporte de horas trabalhadas

Configuração da estação de trabalho para as tarefas de desenvolvimento

!TODO Em progresso

Acesso aos códigos-fonte, configurações e outros artefatos relevantes.

!TODO Em progresso

Configurações, instruções de uso e softwares destinados à guarda dos artefatos produzidos

!TODO Em progresso

Configurações, instruções de uso e softwares destinados ao reporte de trabalho realizado e reporte de horas trabalhadas

  • O software aceita entrada de dados registro a registro?
  • O software aceita entrada de dados através de lotes?
  • O software aceita entrada de dados através de API?
  • Quais as parametrizações para o funcionamento da entrada de dados?
  • Quais as permissões devem ser atendidas durante a entrada de dados?
  • Quais as rotinas utilizadas para validar as entradas de dados?
  • Quais as rotinas utilizadas para tratar a rejeição de entradas inválidas de dados?

!TODO Em progresso

O processamento realizado pelo software

!TODO Em progresso

Os programas que compõem o software

!TODO Em progresso

A documentação que descreve o software

  • O software aceita entrada de dados através de telas para utilização de utilizadores humanos?
  • Quais as validações
  • Como são armazenados os registros utilizados por este software?
  • Como são armazenados os registros produzidos por este software?

  • aceita? (API, tela de usuário, importação de arquivo, importação de banco de dados)

  • Quais são as entradas de dados que este módulo aceita? (format, modelos).

Falhas e dificuldades conhecidas

!TODO Em progresso