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
- Acesso e contexto de utilização
- As principais funcionalidades do software
- Os dados que o software processa
- A documentação que descreve o software e os problemas conhecidos
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