Olá, estudante, tudo bem com você? Vimos na lição anterior, de forma bastante aprofundada, o conceito de elicitação como parte crucial do processo de análise de requisitos. Nesta lição, você compreenderá a importância da etapa de implantação, tendo em vista que, neste momento, é garantido que o usuário final possa usar o produto de software. Além disso, irá também compreender que a mudança é inevitável para que os sistemas permaneçam úteis. Portanto, realizar manutenção no produto de software possibilitará um longo ciclo de vida ao produto de software.
Você tem dimensão da importância da implantação do produto de software? Esta atividade representa o fim das atividades do processo de desenvolvimento de software no ambiente de desenvolvimento. Se não for realizada com qualidade, o produto de software não poderá ser utilizado pelos usuários finais.
Mas será que a implantação de sistemas é um processo complexo? Os membros da equipe de desenvolvimento devem realizar diversas atividades — além de instalar o produto de software no ambiente do cliente e distribuir login e senha para os funcionários — para assumir que o sistema está pronto para uso.
É preciso planejar e preparar os profissionais e setores envolvidos, por meio de treinamentos, aquisição e instalação de recursos tecnológicos necessários para a execução do produto de software, entre outras atividades. Ou seja, a equipe de desenvolvimento deve concretizar o que foi definido em nível de projeto do software.
Após a implantação, o produto de software entra na etapa de manutenção. Você deve estar se perguntando: "Esta fase dura para sempre?", "Quais os critérios para que ocorra alteração no produto de software?", "Quem irá realizar a manutenção do produto de software?".
Esta lição pretende, portanto, que você compreenda os princípios destas duas atividades tão importantes que irão garantir que o produto de software possa ser utilizado com qualidade. Vamos lá!
Joana formou-se no curso de Técnico de Análise e Desenvolvimento de Sistemas e sua primeira atividade profissional foi um desafio: acompanhar o processo de implantação do sistema em uma organização, pois ela ficaria responsável pelo produto de software e por dar apoio aos seus usuários.
Nesse processo de implantação, ela percebeu a responsabilidade que a equipe de desenvolvimento tem, eles devem planejar e realizar as ações com atenção e cuidado, pois senão o uso do produto de software pode ficar comprometido. Para garantir que compreendeu como a implantação foi feita, ela registrou os pontos que achou pertinente.
Joana percebeu que é importante explicar para os usuários finais o motivo e a importância do uso do software. Além disso, apresentar os benefícios e deixar claro que a atividade de implantação precisa do apoio de todos para que possa ser realizada com sucesso.
Ela gostou que todos os colaboradores envolvidos — auxiliares, analistas, gestores, executivos, entre outros — acabaram por realizar treinamento para que pudessem usar os recursos do novo software da melhor forma possível. Esse treinamento permitiu conhecer as principais mudanças, ouvir orientações e, na prática, aprender os benefícios da nova tecnologia. Para tal, foram escolhidos colaboradores, e o treinamento focou em apresentar os recursos que são importantes para eles.
Joana percebeu que é muito importante que o processo de implantação não suspenda os serviços da empresa. Gostou da abordagem escolhida para se fazer uma implantação incremental (ou seja, implantar, aos poucos, partes do produto de software) para que não impactasse toda a atividade da empresa de uma única vez e, além disso, dessa forma, é possível que os usuários se adaptem às mudanças.
Percebeu que, antes de implantar o software, é preciso planejar a sequência de atividades que precisam ser realizadas tais como instalar novo hardware e software que o novo produto necessite, atualizar sistema operacional, entre outros. Esse mapeamento é importante e precisa ser realizado antes de fazer a implantação, pois define a sequência lógica que deve ser realizada. Algo que pode prejudicar toda a implantação de sistemas é um mapeamento de processos mal feito.
Finalmente, chegamos às duas últimas etapas no ciclo clássico do Software, conforme apresentado na Figura 1.
Figura 1 - Atividades clássicas no Processo de Desenvolvimento de Software
Fonte: a autora.
#PraCegoVer: a imagem é uma representação do ciclo de um software, possui cinco setas direcionadas da esquerda para a direita. As três primeiras setas são azuis e representam atividades que ocorrem no ambiente de desenvolvimento, e as duas últimas setas são amarelas e representam as atividades que ocorrem no ambiente do cliente. As três primeiras setas têm a borda na cor preta; as duas últimas setas têm a borda vermelha. O conteúdo escrito nas setas (da esquerda para a direita) é: primeira seta com "Elicitação e Análise de Requisitos"; segunda seta com "Projeto"; terceira seta com "Implementação e Testes"; quarta seta com "Implantação" e, finalmente, quinta seta com "Manutenção".
A última etapa do processo de desenvolvimento é a implantação, na qual o produto de software é instalado no ambiente de produção (do cliente, ou de usuário) e está preparado para operar, ou seja, é instalado no hardware onde os usuários finais terão acesso ao produto de software.
Conforme Sommerville (2011, p. 210), a implantação do software é "o processo de tornar o sistema disponível para os usuários, transferir dados dos sistemas existentes e estabelecer comunicações com outros sistemas no ambiente”. O processo culmina com um go live (em português, "ir a vida"), depois que os usuários começam a usar o sistema para apoiar seu trabalho. Ficou curioso pelo uso do termo go live? Esse termo indica o momento que o projeto se encontra pronto para o ambiente do cliente (ou ambiente de produção).
Esta atividade pode envolver muitas configurações de software e de hardware para que possa refletir o ambiente de produção necessário para o seu uso; transferência de dados de sistemas já existentes; preparação de documentação e treinamento de usuários. Além disso, você pode necessitar reconfigurar outros sistemas no ambiente de produção para assegurar que o novo sistema interopera com os já existentes.
Embora pareça ser simples, muitas dificuldades podem surgir durante esta fase. O ambiente pode ser diferente daquele previsto pelos desenvolvedores do sistema e, assim, pode exigir que haja forte adaptação do sistema para que possa executar nos ambientes de usuário não previstos.
Um exemplo? Um sistema web que foi projetado para executar em um navegador específico, e o ambiente de produção tem outros navegadores disponíveis. Outro problema pode ocorrer quando os dados existentes exijam limpezas extensivas e partes desses dados possam estar errados ou incompletos. Isto exige que seja feito uma análise e, se possível, correção desses dados. Além disso, as interfaces com outros sistemas podem não estar devidamente documentadas.
Note que o desenvolvimento de software não finaliza quando o sistema é entregue ao cliente; para que o software continue a ser utilizado, é importante que mudanças sejam feitas, ou seja, os requisitos do software devem ser criados, alterados ou, até mesmo, removidos (SOMMERVILLE, 2011).
As alterações no produto de software podem ser tanto as mudanças simples (por exemplo, correção de defeitos) como mudanças que exigem uma dedicação maior (por exemplo, correção no projeto, melhorias significativas no projeto ou para acomodar novos requisitos). Sommerville (2011, p.170-172) salienta que existem três diferentes tipos de manutenção de software:
1. Correção de defeitos, quanto mais cedo estes defeitos ocorrerem, mais cara é sua correção, ou seja, erros de requisitos são mais caros do que erros de projeto e, por consequência, mais caros que erros de codificação. Erros de projeto implicam em ter que reescrever vários componentes de programa; já os erros de requisitos podem exigir o reprojeto do sistema.
2. Adaptação às mudanças do ambiente do sistema, tais como: hardware, plataforma do sistema operacional ou algum outro software de apoio que sofreu uma mudança. O produto de software deve ser modificado para se adaptar a estas mudanças de ambiente.
3. Adição de funcionalidade ocorre sempre que os requisitos de sistema mudam, devido a mudanças organizacionais ou de negócios.
Se ocorrer um defeito grave no sistema, que precisa ser corrigido para permitir a continuidade do funcionamento normal.
Se as alterações no ambiente operacional dos sistemas tiverem efeitos inesperados que interrompam o funcionamento normal.
Se houver mudanças inesperadas no funcionamento do negócio que executa o sistema, como o surgimento de novos concorrentes ou a introdução de nova legislação que afete o sistema.
Você percebeu que a manutenção do software não pode ser considerada de forma isolada? Alterações no ambiente do sistema levam a mudanças nos sistemas, que, por sua vez, podem provocar mais mudanças. Além disso, deve-se ter sempre uma compreensão clara e fazer uma análise do impacto que uma mudança pode afetar outros sistemas no ambiente de produção.
Como todo software tem, normalmente, um custo financeiro alto, a empresa procura usar o software por longo tempo para que possa ter retorno do seu investimento. Você deve estar se perguntando: o que é esse "longo tempo"? Sistemas militares ou de infraestrutura de grande porte são utilizados por, normalmente, 30 anos; já sistemas de negócios são utilizados, usualmente, por mais de dez anos.
Sabe-se que os requisitos funcionais acabam por ter que se adaptar a novas realidades, tais como regras de negócios ou mudanças de ambiente. Portanto, novos releases acabam por incorporar atualizações e alterações necessárias, que ocorrem em intervalos regulares. O termo release (em português, liberação ou lançamento) é usado, na maioria das vezes, no sentido de lançamento de um determinado produto.
Importante que você perceba que as solicitações de mudança podem ocorrer devido à existência de requisitos (antigos ou novos) que precisam ser implementados na próxima release de sistema, correções de código geradas devido a relatórios dos stakeholders sobre bugs do sistema ou, até mesmo, melhoria do software propostas pela equipe de desenvolvimento.
O processo de manutenção inclui as atividades fundamentais de análise de impacto, planejamento de release, implementação de sistema e liberação de um sistema para os clientes. O custo e o impacto dessas mudanças são avaliados para ver quanto do sistema é afetado pelas mudanças e quanto poderia custar para implementá-las.
Se as mudanças propostas forem aceitas, um novo release do sistema é planejado. Durante o planejamento do release, todas as mudanças propostas (correção de defeitos, adaptação e nova funcionalidade) são consideradas. Uma decisão é tomada de acordo com as mudanças a serem implementadas na próxima versão do sistema. As mudanças são implementadas e validadas, e uma nova versão do sistema é liberada. O processo deve, então, ser repetido com um novo conjunto de mudanças propostas para o próximo release.
Você percebeu que existe sempre um fluxo constante de propostas de alterações de requisitos? Além disso, como o software acaba por ser modificado, seu projeto e código tendem a degradar e, por consequência, as mudanças acabam por ficar mais caras, pois o tempo necessário para compreender e adaptar novas mudanças são maiores. Sem falar nas mudanças ambientais do hardware e sistemas operacionais que acabam, também, por serem necessárias.
Portanto, em algum momento, deixa de ser vantajoso ter que realizar atualizações ou, até mesmo, implementar novos requisitos. O software continua a ser usado e é, ainda, útil, mas evita-se fazer grandes mudanças. Nesta altura, a empresa começa a se cogitar pela substituição deste software, porque começa a ficar defasado perante as atuais necessidades. Por fim, inicia uma interrupção gradual desse software, ou seja, não há mais implementação de novos requisitos e os problemas detectados no software pelos usuários deixam de ser corrigidos.
Existem processos automatizados para implantação do software em dispositivos móveis, tais como tablet e smartphone. Você já percebeu que, muitas das vezes, nós recebemos um aviso de que um software possui uma nova versão e que nós devemos (ou não) autorizar a instalação desta nova versão?
Algumas dessas vezes, a instalação acaba por não ocorrer porque a versão do sistema operacional está desatualizada ou porque falta espaço em disco ou, até mesmo, não há memória suficiente. Quando isto acontece, precisamos primeiro atualizar o sistema operacional, trocar o disco ou memória, entre outros.
Além do computador pessoal, comece a prestar atenção toda vez que você deve atualizar ou autorizar uma atualização no seu smartphone. Note que este processo é muito mais simples do que o descrito nesta lição. Você consegue perceber por quê?
Esses são processos automatizados de implantação, que nós acabamos por não perceber. Esta automatização é importante porque senão a empresa de informática não teria equipe suficiente para fazer a implantação manual em cada smartphone. Portanto, a automatização é importante.
Sugiro que você procure compreender como ocorre a instalação do sistema operacional em um computador pessoal, veja quais são os passos necessários para que isso ocorra. Isso significa determinar qual é a configuração desse computador, fazer backup dos dados já existentes, entre outras atividades. Desejo uma boa pesquisa e até a próxima lição!
SOMMERVILLE, I. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.