O que é Engenharia de softwareÉ uma disciplina de engenharia que se preocupa com todos os aspectos de produção de software (SOMMERVILLE, 2011, p. 4). Esta disciplina descreve como proceder com a análise, projeto, documentação, desenvolvimento, validação, implantação e evolução do software, obviamente não existe uma receita de bolo genérica que se aplica a todo e qualquer escopo de projeto de software, mas sim um conjunto de regras, instruções e práticas que norteiam o desenvolvimento destes. Show
Segundo Bauer (1972) a Engenharia de Software é definida como: “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter um software economicamente viável, que seja confiável e que funcione eficientemente em máquinas reais”. É importante observar que, ainda que várias definições tenham sido atribuídas a Engenharia de Software, todas convergem para o fato de que esta disciplina possui uma importância significativa para o desenvolvimento de um software profissional. Tenha em mente que o uso da expressão “software profissional”, neste contexto, pode ser entendido como software projetado para ser utilizado por terceiros, sendo ele comercializado ou não, ou seja, em sua essencial primária, à Engenharia de Software pode ser vista como complicador ou emprego de esforço desnecessário quando aplicada ao software projetado para o uso pessoal daquele que o desenvolve.
Segundo Sommerville (2011, p. 29) a Engenharia de Software pode ser vista como um processo evolutivo, “no qual o software é constantemente alterado durante seu período de vida em resposta às mudanças de requisitos e às necessidades do cliente”. O que é software?A palavra software é bem comum dentro do ramo da tecnologia, até mesmo indivíduos leigos no assunto conhecem seu significado literal (em português: programaou programas de computador), entretanto, dentro do ramo da engenharia de software, seu significado e importância vão além do emprego tradicionalmente utilizado no dia a dia. Segundo Sommerville (2011) todos os componentes necessários para o programa funcionar fazem parte do que chamamos de software, sejam manuais, arquivos de configuração ou quaisquer outros elementos essenciais para o correto funcionamento e configuração do software.
Obviamente o software pode ser descrito de muitas outras formas diferentes, entretanto, todas convergem para um entendimento singular. Pressman (2011) aponta 3 características que descreve o software, sendo elas:
Considerando as poucas linhas apresentadas até aqui, já foi possível compreender que o termo software descreve algo um pouco mais completo e complexo do que um “simples” programa de computador, bem como deixa claro que, a concepção de um software pode não ser algo tão simples, obviamente isso irá depender da natureza para a qual o mesmo está sendo ou foi projetado. A Engenharia de Software é responsável por coordenar os processos de identificação das necessidades do cliente, planejamento, análise, desenvolvimento, entrega e evolução do software. O mundo moderno gira em torno do software, isso é indiscutível já que ele está presente nas telecomunicações, no controle de distribuição elétrica, de água, transporte aéreo, sistema financeiro etc. Já pensou como seria complexo e arcaico, no mundo de hoje controlar uma rede de bancos sem o apoio do software? Será que isso seria possível e/ou viável? Para determinar quais métodos e técnicas serão utilizadas no desenvolvimento de um software, é necessário primeiramente determinar de que tipo ele será. Segundo Sommerville (2011) alguns dos possíveis tipos de aplicativos são:
Um software projetado para uso individual e local, fará uso de técnicas e métodos de planejamento e desenvolvimento diferentes de um software projetado para controlar sistemas essenciais de infraestrutura. Segundo Sommerville (2011, p. 6) “Tipos diferentes de sistemas necessitam de diferentes processos de desenvolvimento”, ou seja, não é possível ter na Engenharia de Software uma fórmula universal e genérica que dite as técnicas e métodos a serem seguidos em todo e qualquer projeto de software, mas sim um conjunto de técnicas e métodos para diferentes cenários e/ou necessidades específicas.
Engenharia de Software: ciência ou engenharia?Segundo Travassos (2002) a característica de produção do software pode ser vista como engenharia, já os aspectos relacionados ao time-to-market(tempo entre a análise de um produto e sua disponibilização para a venda) faz uso de um processo de melhoria contínua e de qualidade, é justamente neste contexto que enxergamos o lado científico da Engenharia de Software.
Conforme pode ser observado por Travassos (2002), esta disciplina possui uma acentuação tônica para o lado da engenharia, mesmo contendo traços do ramo da ciência frente ao emprego de métodos científicos em casos e cenários específicos. A “crise do software”Na década de 70 a expressão “crise do software” explodiu, Segundo Wazlawick (2013, p. 1) ela foi utilizada com impacto pela primeira vez por Dijkstra (1971), nesta época a Engenharia de Software era uma área sem visibilidade, praticamente inexistente. O termo “crise do software” expressava a extrema dificuldade enfrentada principalmente pelas áreas de desenvolvimento frente à complexidade dos problemas a serem resolvidos, e da demanda cada vez maior por soluções de software. Os principais problemas apontados por Dijkstra (1971) eram:
Eis que a Engenharia de software “brotou como uma apaziguadora” de crises, tudo bem que não foi algo tão simples assim, entretanto, veja essa disciplina como um esforço para minimizar os aspectos problemas do processo de desenvolvimento de software. Gestão de RiscosEste é um tópico extremamente delicado, uma boa gestão de riscos pode ser vista como um divisor de águas entre o sucesso e uma catástrofe absoluta no escopo de projeto. É importante pontuar que a gestão de riscos não é uma área exclusiva da engenharia de software, basicamente todo e qualquer processo de negócio, construção de hardware e demais projetos de grande porte utilizam a gestão de riscos para mitigar as possibilidades de um problema se materializar, e de alguma forma deturpar a qualidade de algo ou de alguma coisa. Na engenharia de software, Pressman (2011) descreve a gestão de riscos como sendo:
Segundo Charette (1989), o risco refere-se a acontecimentos futuros. Hoje e ontem já não constituem mais uma preocupação, já que estamos colhendo os resultados de nossas ações. Segundo Pressman (2011, p. 648), “Quando se considera risco no contexto da engenharia de software, os três fundamentos conceituais de Charette estão sempre em evidência”, sendo eles:
A gestão de riscos pode ser empregada de forma reativaou proativa, no primeiro caso ela é utilizada para apagar um incêndio gerado por riscos ignorados ou negligenciados. No caso da estratégia proativa o trabalho de gestão de riscos é iniciado muito antes que o trabalho técnico comece, segundo Pressman (2011, p. 649) “São identificados os riscos potenciais, avalia-se a probabilidade e o impacto, e os riscos são classificados por ordem de importância.”. Conforme pode ser observado, a estratégia reativa só se preocupa com os riscos quando ele se materializa, ou seja, quando vira algo real, neste contexto a estratégia proativa representa uma face oposta e mais conservadora. BibliografiaSOMMERVILLE, lan. Engenharia de Software; tradução Ivan Bosnic e Kalinka G. de O. Gonçalves; revisão técnica Kechi Hirama. 9. ed. São Paulo: Pearson Prentice Hall, 2011. WAZLAWICK, Raul Sidnei. Engenharia de software: conceitos e práticas. 1. ed. Rio de Janeiro: Elsevier, 2013. BAUER, F.L. Software Engineering — Information Processing. Amsterdan: North Holland, 1972. PRESSMAN, Roger S. Engenharia de Software — Uma Abordagem Profissional. 7. Ed. São Paulo: AMGH, 2011. Ph.D. TRAVASSOS, Guilherme Horta. Introdução à Engenharia de Software Experimental. 2002. Disponível em: <http://www.inf.puc-rio.br/~inf2007/docs/artigos/RT-Introdução%20a%20ESE.pdf>. Acesso em: 11 fev. 2018. DIJKSTRA, E. W. The Humble Programmer. Communications of the ACM, 15(10) 1971, p. 859–66. CHARETTE, R. N., Software Engineering Risk Analysis and Management, McGraw-Hill, 1989. Qual a importância da qualidade para o desenvolvimento de software?Entre os principais benefícios de adotar o controle de qualidade no desenvolvimento de softwares está a redução de custos. Pois, ao prevenir e identificar possíveis falhas, é possível corrigir o desvio a tempo e diminuir o impacto posterior.
Qual a relação da Engenharia de Software com a qualidade?A engenharia de software tem como objetivo a melhoria da qualidade do seu produto com propostas e modelos de desenvolvimento, métodos e técnicas para aplicação nas diversas fases de desenvolvimento. É importante a avaliação da qualidade de software nas duas visões, processo e produto, é aqui que se direciona o esforço.
Qual a importância da avaliação de qualidade de software?Avaliar a qualidade de software se faz necessário para garantir que ele esteja funcionando adequadamente — tendo em vista os seus objetivos e a maneira como os usuários utilizarão esse recurso. Uma avaliação como essa é essencial para evitar problemas bastante prejudiciais para a sua empresa.
Qual é o principal objetivo da qualidade de software?Apesar dos modelos aplicados na garantia da qualidade de software atuarem principalmente no processo, o principal objetivo é garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado. A qualidade de software não pode ser entendida como perfeição.
|