Engenharia de software: sua natureza e seus processos

Para uma melhor compreensão sobre o tema, é importante aprofundar o conhecimento conceitual acerca da profissão e seus resultados no campo técnico produtivo, ou seja, entender a natureza deste ramo de atuação

Danilo Morais da Silva
Publicada em 23 de março de 2022 às 11:27
Engenharia de software: sua natureza e seus processos

Diante do mundo globalizado em que a informação e a comunicação tem sido um grande elo de relacionamento, pode-se presenciar, contemporaneamente, a democracia digital o qual tem proporcionado inclusão e acesso da tecnologia nas suas mais diversas formas, popularizando, assim, a conectividade com a internet, a propagação das informações e disseminação do conhecimento, colaborando com todas as áreas, inclusive as mais humanas, uma vez que tais recursos agregam a customização de procedimentos desenvolvidos por todos os usuários.

Com isto, não é de se surpreender com o surgimento de aplicações e programas computacionais, a ascendência e busca por profissionais da área, nesta especialidade, desenvolvimento de software, bem como a sua expansão no mercado, diante da imensa clientela que tem buscado por esta demanda para atendimento de diferentes necessidades, com mais fluxo após o surgimento da tecnologia wireless e touchscreen, visto que esta particularidade do ramo reúne comunidades, compostas por atuantes nesta área, que buscam soluções computacionais de acordo com as linguagens de programação e sistemas operacionais em suas pluralidades, também conforme propriedade ou pesquisa deste conhecimento.

Assim nota-se que a atuação desta não compete a interessados, mas a quem realmente se identifica e consegue desenvolver-se intelectualmente nisto, portanto a necessidade de esclarecer, conceitualmente, este ramo, principalmente para proporcionar melhor entendimento daqueles que se interessam, mas que muitas vezes se perdem em meio a tantas reações negativas por perceber que, talvez não fosse o ideal, mas sim um encanto pelo setor.

Para uma melhor compreensão sobre o tema, é importante aprofundar o conhecimento conceitual acerca da profissão e seus resultados no campo técnico produtivo, ou seja, entender a natureza deste ramo de atuação, elencando tanto o ramo profissional (engenharia de software), como o produto (software), bem como a sua aplicabilidade, compreendendo, assim, sua importância para a atualidade.

Pressman & Maxim (2016) afirmam que:

Software de computador é o produto que profissionais de software desenvolvem e ao qual dão suporte no longo prazo. Abrange programas executáveis em um computador de qualquer porte ou arquitetura, conteúdos (apresentados à medida que os programas são executados), informações descritivas tanto na forma impressa (hard copy) quanto na virtual, abrangendo praticamente qualquer mídia eletrônica.

Popularmente chamados de “programas de computador”, os softwares são utilizados para facilitar a interação entre o homem e a máquina, onde esta pode ser compreendida nas suas mais variadas formas, podendo ser aplicado nas diversas plataformas e dispositivos que, em suas utilidades, proporcionam melhor usabilidade, acessibilidade e inclusão na sociedade e seus membros, uma vez que os recursos tecnológicos são utilizados para compactar tempo e colaborar na produtividade dos ramos e áreas de atuação, afetando também na cultura e atividades cotidianas.

Diferente dos hardwares, os softwares não são suscetíveis a fatores maléficos do ambiente que podem causar desgaste ou defeitos que não possam ser corrigidos. Além do mais, os autores também descrevem 3 (três) características do software:

  1. Instruções – fornecem as características, funções e desempenho almejados quando executadas;
  2. Estrutura de Dados – possibilitam a manipulação de informações de forma adequada;
  3. Informação descritiva – impressa ou virtual, descrevem a operação e o uso de programas.

A Engenharia de Software é o ramo de atuação, dentro da área de Tecnologia da Informação, composta por profissionais desenvolvedores de “programas de computador”. Os Engenheiros de Softwares, popularmente chamados de “Programadores”, são os profissionais que utilizam de técnicas e conhecimento para elaborar um ou mais softwares.

Para Pressman & Maxim (2016), estes profissionais criam e dão suporte aos softwares, pois entende que esta tecnologia é utilizada direta ou indiretamente por todos que possui certa ligação com o “mundo industrializado”. Os mesmos entendem o processo através de três etapas que ficam subentendidas, mas que envolvem o relacionamento desta demanda:

  1. Necessidade – originada através do cliente, e outros envolvidos, que a expressam transmitindo ao profissional sua particularidade;
  2. Construção – desenvolvimento, pelo engenheiro de software, que fará a análise dos dados fornecidos pelo cliente e transformará toda a necessidade em um sistema informatizado para atendê-lo com qualidade;
  3. Produto – é o software concluído que será implementado e entregue ao cliente, prestando suporte e atualização sempre que solicitados.

Importante destacar que o Software surgiu no século 19, com as primeiras tecnologias, onde, segundo matéria publicada no site da Revista Mundo Estranho, a inglesa Ada Lovelace, grande pioneira no desenvolvimento desta tecnologia.

Taurion (2004) destaca que “eram gratuitos e livremente distribuídos em formato fonte (código-fonte), pois havia poucos computadores, e o valor real estava na própria máquina, e não nos programas”, sua comercialização ainda era algo fora de cogitação, mas que com o passar do tempo, devido a necessidade de investimentos neste ramo e legitimidade diante do mercado, surgiu o modelo proprietário.

O autor também destaca 3 (três) modalidades de distribuição de software:

  1. shareware – popularmente conhecida como “trial”, são gratuitos por um período onde, posteriormente, deixa de funcionar ou tem sua operacionalidade restrita, proporcionando, assim, a remuneração do proprietário através do licenciamento destes softwares;
  2.  freeware – podem ser gratuitos e sem restrições de tempo de uso, onde, apesar de não obrigar um pagamento para seu licenciamento, também pode ser utilizado estrategicamente para marketing e promoção de produtos complementares, uma vez que não podem ser modificados pois não tem o código-fonte liberado;
  3. software livre (open source) – muitas vezes gratuito, mas, embora não seja, possui o código-fonte disponibilizado para modificação, não possui proprietário, mas sim autor, que outorga os direitos de uso, cópia, alteração e redistribuição para qualquer usuário interessado;

 Pressman & Masim (2016), determinam 7 (sete) categorias, tais quais:

  1. Software de sistema – desenvolvidos para atender soluções oriundas de outros sistemas;
  2. Software de aplicação – projetados para soluções específicas de um negócio;
  3. Software de engenharia/científico – estruturados para realização de cálculos em massa direcionados aos ramos das exatas mais complexas como, por exemplo, astronomia, biologia molecular, engenharia, etc.;
  4. Software embarcado – usado na implementação e controle de funções e características para o usuário ou produto ao qual e vinculado, sendo, assim, mais limitado;
  5. Software para linhas de produto – utilizado por diferentes tipos de usuários ou lidar com consumidores em massa de um determinado produto;
  6. Aplicações web/Aplicativos móveis – como o próprio nome já especifica, é implantado em tecnologias que proporcionam mobilidade;
  7. Software de inteligência artificial – com soluções realizadas por algoritmos não numéricos, é direcionado para soluções mais complexas não subordinadas à determinada tecnologia.

Assim, o autor destaca que o software deve ser adaptado, aperfeiçoado, expandido e rearquitetado para que permaneça, futuramente, viável.

Filho (2009) afirma que, de acordo com a Institute of Electrical and Electronics Engineers (IEEE – Instituto de Engenheiros, Eletricistas e Eletrônicos), um processo é “uma ‘sequência de passos executados com um determinado objetivo’”, no Capability Maturity Model Integration (CMMI – Modelo Integrado de Maturidade em Capacitação), “é ‘um conjunto de ações e atividades inter-relacionadas realizadas para obter um conjunto especificado de produtos, resultados ou serviços’”. Ele também destaca que na Unified Modeling Language (UML – Linguagem de Modelagem Unificada), é a “’unidade pesada de execução concorrente’, em oposição a uma linha de execução (thread), que representa a implementação de um processo leve”.

Para Filho (2009), os processos são constituídos, basicamente, das etapas:

  1. Requisitos – compreensão do problema;
  2. Análise – especificação e estudo detalhado dos dados levantados;
  3. Desenho/Projeto – descrição da arquitetura do sistema, linguagem de programação utilizada, sistema gerenciador de banco de dados, interface gráfica, dentre outras especificidades;
  4. Implementação – execução do projeto (codificação, compilação, produção do código-fonte, etc.);
  5. Testes – atividades executadas para validação do produto;
  6. Implantação/Avaliação – instalação do software para o usuário, bem como seu aprimoramento através dos feedbacks fornecidos.

Estas possuem um ciclo de vida, e estes podem ser representados nos modelos: cascata; cascata com realimentação; espiral; quase-espiral; entrega evolutiva; dirigido por prazo ou dirigido por ferramenta.

Dentre os exemplos de processo, destacam-se as propostas por Humphey em 1995, os quais são: Personal Software Process (PSP – Processo Pessoal de Software), para uso individual, além do Team Software Process (TSP – Processo de Software para Times), para uso de uma coletividade. Também se elencam os Processos da linhagem MBase, tais quais: Unified Process (Processo Unificado), proposto por Jacobson em 1999,  o Rational Unified Process (RUP), proposta por Royce em 1998, e a Enterprise Unified Process (EUP), proposta por Ambler em 2005. Por fim os Processos Ágeis: Extreme Programming (XP), proposto por Beck em 1999. Ambos utilizam etapas e modelagens semelhantes.

Diante do exposto, pode-se compreender a eficiência da Engenharia de Software dentro da modernidade vivenciada, e da evolução dos mais diferentes recursos tecnológicos, afirmando, assim, que o software distribui, gerencia e transforma a informação através dos dados fornecidos pelos seus usuários que, conectado à internet, pode tornar maior a abrangência e amplitude da operacionalização dos sistemas, atingindo um número maior de pessoas que podem obter tal conhecimento, desde que haja, dentro do ambiente, conexões ou acessos à mesma.

Não se pode deixar de destacar a importância da atuação do profissional nesta respectiva área, uma vez que são devidamente capacitados e qualificados, para, assim, utilizarem das técnicas para o desenvolvimento de softwares, perpassando pelas etapas dos processos que assim o compõem. Desta forma, realizando um trabalho competente e com qualidade.

REFERÊNCIAS

DE AZEVEDO, Douglas José Peixoto. Evolução de software. 2003. Disponível em: <http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=299>. Acessado em 17 de julho de 2018.

FILHO, Wilson de Pádua Paula. Engenharia de Software: fundamentos, métodos e padrões. 3. ed. – Rio de Janeiro: LTC, 2009.

PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de Software: uma abordagem profissional. 8. ed. - Porto Alegre: AMG, 2016.

REVISTA MUNDO ESTRANHO. Qual foi o primeiro software criado? Editora Abril, 2018. Disponível em: <https://super.abril.com.br/mundo-estranho/qual-foi-o-primeiro-software-criado/>. Acessado em 10 de março de 2022.

TAURION, Cezar. A história do software. 2004. Disponível em: <https://noticias.uol.com.br/mundodigital/softwarelivre/2004/09/15/ult2449u3.jhtm>. Acessado em  12 de julho de 2018.

SOBRE O AUTOR

DANILO MORAIS DA SILVA é pós-graduando em Gestão da Comunicação Digital e Mídias Sociais pela Universidade Anhembi Morumbi (UAM), especialista em Gestão da Tecnologia da Informação, pelo Centro Universitário da Grande Dourados (UNIGRAN), e em Sistemas de Informações, pela Faculdade Cidade Verde (FCV). Também é Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário da Grande Dourados (UNIGRAN) e. atualmente é servidor público do quadro efetivo da Prefeitura Municipal de Porto Velho, lotado na Superintendência Municipal de Tecnologia da Informação e Pesquisa (SMTI).

Currículo Lattes: http://lattes.cnpq.br/7159986007035372

E-mail: [email protected]

Comentários

    Seja o primeiro a comentar

Envie seu Comentário

 
Winz

Envie Comentários utilizando sua conta do Facebook