Olá, aluno(a)! A área de análise e desenvolvimento de sistemas é uma das que mais demandam profissionais nos últimos anos. Com certeza, isso foi impulsionado pela digitalização das empresas, que começaram a entender que não há como fazer negócios sem plataformas de software e Internet. Dessa maneira, nesta lição, entenderemos ainda mais os desafios e os requisitos para se tornar um(a) desenvolvedor(a). Além disso, abordaremos algumas ferramentas importantes para isso. Vamos lá?
Todo desenvolvedor de sistemas deseja, obviamente, entregar um produto que realmente resolva os problemas do cliente. Contudo, por que isso é tão difícil?
Um dos fatores que mais dificultam a entrega de bons produtos de software é o fato de que a área ainda é muito recente. Todas as áreas que já possuem um modelo de atuação, como a engenharia, foram se aperfeiçoando durante milhares de anos. Em contrapartida, a computação é muito mais recente. Os softwares, assim como conhecemos hoje, começaram a se estruturar enquanto método de desenvolvimento há pouco mais de 40 anos.
Outro fator é a dificuldade na comunicação entre os desenvolvedores e os clientes. Isso tem sido um grave problema e, embora existam várias ferramentas e técnicas para melhorar esse processo, ele ainda precisa evoluir muito!
Já te contei dois problemas que essa área enfrenta. Entendeu o motivo pelo qual o café é um símbolo de quem desenvolve sistemas? Não basta apenas saber programar! É preciso saber conversar, lidar com pessoas e planejar bem o produto. Que tal começar a pensar e propor maneiras de melhorar esses dois problemas?
Trabalhei como desenvolvedor durante um período em minha carreira e pude sentir na pele como é difícil desenvolver algo que seja a solução para os problemas de alguém. Uma das principais questões está no fato de que, muitas vezes, o cliente ou o usuário modifica o que deseja ao longo do projeto. Isso se chama alteração de escopo.
Essa ação pode impactar o custo, o tempo e a qualidade do sistema que está sendo desenvolvido. Além disso, provoca insegurança em relação ao que está sendo construído, porque pode atingir partes já desenvolvidas e que precisarão ser refeitas.
Embora isso não solucione, o que mais vi funcionar para diminuir os impactos desse tipo de atitude foi estabelecer um formato de comunicação com o cliente durante todo o projeto, e não somente em parte dele.
Além disso, uma gestão dos requisitos necessários e a categorização deles em requisitos desejáveis e necessários auxilia a compreender o que é mais importante e o que pode ser deixado de lado. A finalidade é sempre incluir o usuário ou o cliente em todas as decisões do projeto!
Outra sugestão que dá certo é sempre manter a documentação das solicitações de mudanças requeridas. Isso ajuda a garantir uma média da quantidade de solicitações e a formalização delas.
Desenvolver sistemas é desafiador, mas, ao mesmo tempo, é uma área que fornece muitas possibilidades de conhecer outras coisas e trazer soluções digitais únicas.
Para encarar os desafios do desenvolvimento de software, os conhecimentos adquiridos nas lições anteriores, sobretudo, os recursos da UML servirão como “superpoderes”. Eles serão muito úteis para documentar e tornar os fluxos e as funcionalidades dos seus sistemas muito mais eficientes e profissionais. Caso tenha alguma dúvida, revisite as aulas anteriores. Combinado?
Dennis, Wixom e Roth (2017, p. 2) entendem a área de nosso estudo como um ciclo de vida do desenvolvimento de sistemas e explicam que esse ciclo é o “processo de compreensão de um sistema de informação que pode suprir as necessidades de uma empresa, projetar o sistema, construir e entregar aos usuários”.
A construção de um sistema de informação é comparada por Dennis, Wixom e Roth (2017) ao processo de construção de uma casa. Primeiramente, a casa (que, nesse caso, seria o sistema de informações) tem, por princípio, uma ideia básica, que é transmitida, em um segundo momento, para um desenho simples e que vai sendo refinado até uma concordância total do cliente. Depois disso, são feitos os detalhes, como as partes elétrica e hidráulica. Posteriormente, é iniciada a construção de acordo com esses projetos ou plantas da casa.
Contudo, o que geralmente acontece no decorrer da construção da casa? O dono da casa vai solicitando alterações no projeto enquanto a casa está sendo erguida.
O ciclo de vida do desenvolvimento de sistemas é similar. Ele tem um conjunto composto por quatro fases:
Planejamento.
Análise.
Projeto.
Implementação.
Cada uma dessas fases contém etapas que são compostas por técnicas para a produção de entregas ou resultados. Vamos conhecer cada fase?
Iniciaremos pela fase de planejamento. Essa fase deve responder à seguinte pergunta: por que construir o sistema?
A resposta para essa pergunta deve estar formalizada em um documento chamado solicitação de sistema. Esse documento deve ser preenchido em conjunto com o cliente e deve conter as informações iniciais do projeto. Ele deve ser uma justificativa das necessidades.
Isso é muito importante. Considere uma empresa que tem milhares de funcionários. Talvez, em alguns locais, departamentos ou filiais, as pessoas não tenham conhecimento do que já existe de sistema de informação na empresa. Assim, há o risco de solicitar algo que já está desenvolvido. Se isso acontecer somente na informalidade, o risco de repetir um produto é grande. Entretanto, quando se formaliza a solicitação, isso muda completamente.
As etapas, as técnicas e o resultado esperado para a fase de planejamento são:
Identificar Oportunidade - Identificação do Projeto - Solicitação de Sistema.
Analisar Viabilidade - Viabilidades Técnica, Econômica e Organizacional - Análise de Viabilidade.
Desenvolver Plano de Trabalho - Estimativa de Tempo, Tarefas, Escopo e GANTT - Plano de Trabalho.
Criar Equipe de Trabalho - Equipe de Projeto, Organograma - Plano de Equipe.
Controlar e Dirigir Projeto - Padrões, Documentação e Gerenciamento de Risco - Avaliação de Risco e Lista de Padrões.
Percebeu como as recomendações são bastante interessantes? Observe que a primeira etapa envolve, na verdade, ações para prevenir possíveis problemas no momento da execução. Nesse momento, ainda não se pensa em construir o sistema: a ideia é planejar possíveis produtos ou caminhos para a análise de uma solução para o sistema.
A próxima fase é a análise. Ela deve responder às seguintes perguntas: quem, o quê, quando e onde será o sistema? O principal resultado dessa fase é a proposta de sistema. As etapas, as técnicas e o resultado esperado são:
Desenvolver Estratégia de Análise - Automação, Melhoramento ou Reengenharia dos Processos - Proposta de Sistema.
Determinar requisitos - Entrevista, Questionário, Observação ou Análise de Documentos - Definição de Requisitos.
Criar Casos de Uso - Análise de Caso de Uso - Casos de Uso.
Modelar Processo - Diagramar Fluxo de Dados - Modelos de Processos.
Modelar Dados - Modelar Relacionamento de Entidade - Modelo de Dados.
Nessa fase, já temos mão na massa! Todavia, perceba que estamos ainda, de acordo com a proposta escolhida para o sistema, desenhando o que seria a “planta da casa”. Neste momento, o(a) analista ou o(a) desenvolvedor(a) deve, em conjunto com o usuário ou o cliente, estabelecer o projeto no papel ou em documentos e delimitar as ferramentas que transmitam a ideia dos recursos, das funções, das opções e das situações que o sistema deve ter. Nessa fase, ainda não vamos programar!
Chegamos à terceira fase, que é a de projeto. Para essa fase, devemos ter a resposta à seguinte pergunta: como o sistema funcionará? A resposta a essa pergunta deve constar em um documento chamado especificação de sistema. Essa fase contempla:
Projetar o Sistema Físico - Seleção de Projeto, Diagramação de Fluxo de Dados, Modelagem de Relacionamento de Entidade - Modelos de Processos, Modelos de Dados, Especificação de Sistema.
Projetar Arquitetura - Projeto de Arquitetura, Seleção de Hardware e Software - Relatório de Arquitetura e Especificação de Hardware e Software.
Projetar Interface - Cenário de Uso, Estrutura de Interface, Padrões de Interface, Protótipo de Interface, Avaliação de Interface - Projeto de Interface.
Projetar Banco de Dados e Arquivos - Seleção de Formato de Dados, Ajuste de Desempenho, Estimativa de Tamanho - Projeto de Armazenamento de Dados.
Projetar Programas - Análise de Transformação, Especificação de Programa - Projeto de Programa.
Nessa terceira fase, são trabalhados os projetos. É importante ter o cliente em conjunto para que as expectativas dele sejam trabalhadas ao mesmo tempo em que ele percebe que os requisitos ou as especificações também estão sendo levados em consideração.
A última fase é a implementação. Agora é que vamos programar!
Para ela, não temos uma pergunta a ser respondida, mas o resultado que se espera, que é a entrega do sistema. A ideia é entregar o produto final, que é o sistema instalado. Para isso, observe as recomendações:
Construir o Sistema - Programação, Teste de Software, Teste de Desempenho - Plano de Teste, Programas, Documentação.
Instalar o Sistema - Seleção de Estilo, Treinamento - Plano de Conversão, Plano de Treinamento.
Manter o Sistema - Seleção de Suporte, Manutenção do Sistema, Avaliação do Projeto - Relatório de Problemas, Solicitação de Mudança.
Pós-Implementação - Auditoria - Relatório de Auditoria.
É somente nessa última fase que há a codificação ou a mão na massa para a programação. Percebeu a diferença? Infelizmente, muitos não fazem de acordo com essa recomendação e acreditam que desenvolver um sistema é somente codificar em uma linguagem de programação. Há muito mais elementos envolvidos nisso!
Esse ciclo de vida se trata somente de uma recomendação. A área de análise e desenvolvimento de sistemas tem várias metodologias para implementar essa ideia de ciclo de vida.
Há, ainda, modelos de desenvolvimento. Um exemplo é para modelos de projeto estruturado:
Desenvolvimento em cascata.
Desenvolvimento paralelo.
Para modelos de desenvolvimento de aplicação rápida, temos:
Desenvolvimento em fases.
Protótipo.
Protótipo descartável.
Ainda, há o desenvolvimento ágil, com:
Extreme Programming.
Independentemente da sua escolha em relação às opções apresentadas, o que deve ser visto é que todos eles podem nos levar à construção de um sistema de informação. O segredo está em verificar o que mais se tornará adequado ao tipo de sistema, bem como o que você, enquanto desenvolvedor(a), sente-se mais à vontade para utilizar.
Percebeu como a linguagem de programação é apenas um detalhe na construção de um sistema de informação?
Portanto, deixe de se preocupar com ela. O aprendizado da programação virá naturalmente. Concentre-se em realmente perceber como organizar o seu projeto de sistema de informação utilizando boas ferramentas e técnicas.
São muitas as técnicas e as práticas para desenvolver sistemas de informação, não é? Dentre elas, temos uma forte recomendação para utilizar processos que principalmente facilitem o processo de comunicação da equipe de desenvolvimento (internamente) com o cliente (externamente).
Assim, existe uma linguagem para auxiliar na modelagem do sistema: a Linguagem de Modelagem Unificada (UML), que, em inglês, é Unified Modeling Language. Essa linguagem possui diversas possibilidades de diagramas para facilitar a visualização do que será construído.
Um dos diagramas mais utilizados é o de Caso de Uso, que, inclusive, foi citado no texto. O Caso de Uso tem por objetivo estabelecer as possíveis interações entre os atores do sistema e as funcionalidades do sistema.
Suponha que você desenvolverá um sistema para um banco. Um dos usos do sistema será, por exemplo, o saque de dinheiro. Dessa maneira, por meio do Caso de Uso, você poderia estabelecer essa interação e as opções.
Assim, aprender bem UML te ajudará bastante a modelar as opções de cenários e o uso de um sistema de informação!
DENNIS, A.; WIXOM, B. H.; ROTH, R. M. Análise e projeto de sistemas. Rio de Janeiro: LTC, 2017.