Prévia do material em texto
Princípios da Engenharia de Software SST Princípios da Engenharia de Software Ano: 2021 nº de p.: 10 Copyright © 2021. Delinea Tecnologia Educacional. Todos os direitos reservados. Princípios da Engenharia de Software 3 Apresentação Caro Aluno, esta unidade tem como objetivo geral abordar uma introdução à Engenharia de Software, apresentando o seu conceito, um breve histórico de como esta surgiu na área da computação, falando sobre a sua importância e apresentando os principais conceitos ligados à Engenharia de Software, fundamentais à sua compreensão, como seus princípios básicos. 4 1. O QUE É ENGENHARIA DE SOFTWARE? A Engenharia de Software é uma área da computação voltada à especificação, desenvolvimento, manutenção e criação de software. Segundo Pressman (2006), a Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em máquinas reais. Em suma, podemos compreender a Engenharia de Software como uma área cuja preocupação é o desenvolvimento de software em todos os aspectos, desde o momento em que a ideia de um software surge e ele começa a ser planejado, passando por todo o seu processo de criação, até o momento em que este software é descontinuado. A Engenharia de Software compreende a aplicação de tecnologias e práticas de gerência de projetos, de processos de engenharia, programação, design, entre outras disciplinas, sempre visando a organização, a produtividade e a qualidade na criação de softwares. A base da engenharia de software é um conjunto de atividades para o processo de desenvolvimento de software. A existência de vários tipos de processo de desenvolvimento de software e podemos dizer para resolver o problema do software usam estas atividades tais como: analise de requisito, design do software, código e teste (JALOTE, 2005 apud CARDILLI, 2010). O cientista da computação alemão Friedrich Ludwig Bauer, autor da primeira definição para o termo “engenharia de software”, a define como “a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas reais". O termo “engenharia de software” foi utilizado oficialmente em 1968, durante a NATO Science Committee, uma conferência que ocorreu em Garmisch, na Alemanha, e reuniu grandes nomes da área da computação. 5 2. COMO E POR QUE SURGIU A ENGENHARIA DE SOFTWARE? Softwares Fonte: Plataforma Deduca (2021) #PraCegoVer: A figura mostra ícones de softwares saindo de um celular. Nos anos 40, quando os sistemas computadorizados começaram a evoluir, grande parte dos esforços concentravam-se no desenvolvimento de hardware, principalmente em razão das limitações e dificuldades encontradas naquela época. À medida que a tecnologia de hardware foi sendo dominada, as preocupações se voltaram, no início dos anos 50, ao desenvolvimento dos primeiros sistemas operacionais e ao surgimento das primeiras linguagens de programação de alto nível, como Fortran e Cobol. Segundo Mazzola (2010), a tendência era poupar cada vez mais o usuário de ter que conhecer profundamente as questões relacionadas ao funcionamento interno da máquina, permitindo que este pudesse concentrar seus esforços na resolução dos seus problemas utilizando a máquina em vez de preocupar-se com os problemas relacionados ao funcionamento dela. Já no início dos anos 60, com o surgimento dos sistemas operacionais com características de multiprogramação, a eficiência e utilidade dos sistemas computacionais teve um considerável crescimento, que contribuiu também, de forma significativa, com as constantes quedas de preço do hardware. Uma consequência deste crescimento foi a necessidade cada vez maior de desenvolver 6 grandes sistemas de software em substituição aos pequenos programas aplicativos utilizados até então. Desta necessidade, surgiu um problema nada trivial, devido à falta de experiência e à não adequação a métodos de desenvolvimento existentes para os pequenos programas, o que foi caracterizado, ainda na década de 60 como a Crise do Software. A crise do software foi um termo utilizado no final dos anos 60, quando a engenharia de software ainda não existia. Segundo Paiva (2016), o termo expressava as dificuldades do desenvolvimento de software frente ao rápido crescimento da demanda por software, da complexidade dos problemas a serem resolvidos e da inexistência de técnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente ou pudessem ser validados. A noção da crise do software emergiu no final dos anos 60. Uma das primeiras e mais conhecidas referências ao termo foi feita pelo cientista da computação holandês Edsger Dijkstra, na apresentação feita em 1972 na Association for Computing Machinery — ou, em português, Associação para Maquinaria da Computação, a primeira sociedade científica e educacional dedicada à computação, fundada em 1947 —, intitulada The Humble Programmer ou, em português, O Humilde Programador, publicada em forma de artigo científico no periódico Communications of the ACM. No final dos anos 60, quando se vivia o período da terceira era da computação, a crise do software evidenciou muitos problemas no desenvolvimento de softwares daquela época, devido à baixa produtividade, dificuldades com prazos e custos, baixa qualidade e difícil manutenção. Os principais problemas eram: • Estimativas de prazo e de custo imprecisas; • Profissionais sem capacitação; • Manutenção não era enfatizada como um critério importante; • Não atendimento aos requisitos do usuário; • Projetos eram cancelados ou extrapolavam o orçamento previsto. A solução para a crise do software foi a utilização de técnicas, ferramentas e processos sistematizados para produzir software. Treinamento e educação em conjunto com a mudança de cultura sobre o que é desenvolver software e como deve ser feito. Com isso, surgiu a área da Engenharia de Software, numa tentativa de contornar a crise do software, tendo como finalidade dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas complexos. 7 O termo Engenharia de Software tornou-se conhecido após a NATO Conference on Software Engineering (Conferência sobre Engenharia de Software da OTAN), em 1968, quando as dificuldades e armadilhas de projetar sistemas complexos foram discutidas francamente entre estudiosos da área. A busca por soluções havia começado. Concentrou-se em melhores metodologias e ferramentas. As mais importantes foram as linguagens de programação que refletem os estilos procedimental, modular e, em seguida, orientado a objeto. Também foram importantes os esforços de sistematização, automatização da documentação do programa e dos testes. Só após a conferência, as dificuldades foram discutidas abertamente e confessadas com franqueza. O objetivo da Engenharia de Software e o motivo pela qual ela foi pensada foi para apresentar propostas de soluções às questões relacionadas ao desenvolvimento de software através do uso de técnicas, metodologias e ferramentas de modelagem e desenvolvimento de software. 3. PRINCÍPIOS DA ENGENHARIA DE SOFTWARE Quando os primeiros programas de computador surgiram, ninguém imaginava que software se tornaria um elemento tão importante e teria a capacidade de manipular a informação. Com o passar do tempo, a evolução dos computadores e uma mudança de cultura na tecnologia — motivada pela Crise do Software, no final dos anos 60 — possibilitou encontrar maneiras de se criar sistemas complexos. No entanto, para quem desenvolve software, até hoje ainda há muitas preocupações, principalmente no que se refere a entregar o software no tempo previsto, garantir o mínimo de falhas no sistema, conhecer e priorizar as reais necessidades do usuário, entre outras. Com o crescimento do segmento de desenvolvimento de software,muitas empresas possuem mais especialistas em TI (Tecnologia da Informação) — e também em outras áreas — e cada um tem suas responsabilidades no desenvolvimento de um software, diferente de antigamente, em que era comum um único profissional trabalhar sozinho em uma sala, desenvolvendo um software. O sucesso de um projeto de software está ligado diretamente à sua capacidade de atendimento às necessidades do usuário. O sucesso de uma empresa de software é dependente da sua capacidade de produção deste produto de software em um prazo e custo eficazes. Neste sentido, segundo Medeiros (2013), a Engenharia de 8 Software é composta de diversos conceitos de fundamental importância e abrange um processo, um conjunto de métodos ou práticas e diversas ferramentas que possibilitam aos profissionais desenvolverem software de alta qualidade. Para Medeiros (2013), a primeira definição importante na Engenharia de Software é o próprio conceito de software. Muitos não sabem dizer realmente o que é um software. O engenheiro de software norte-americano, escritor, consultor e uma das maiores autoridades reconhecidas internacionalmente na área de tecnologias em melhoria de processos de software e engenharia de software, Roger Pressman (2006), define software como: (1) instruções que quando executados proveem pretendidas função e performance, (2) estrutura de dados que permitem aos programas manipular adequadamente as informações e (3) informação descritiva em meio virtual ou físico que explanam a operação e o uso dos programas. Assim, podemos entender que um software abrange diversos elementos, tais como: • Os programas executáveis em computadores de diversos portes ou arquite- turas; • Os conteúdos que são apresentados quando os programas são executados; • E as informações descritivas em forma impressa ou virtual relacionadas ao software. • Por essa definição, podemos observar que um software não se restringe so- mente ao programa de computador ou seus dados, vai além disso e abrange também a sua documentação. Confira outros conceitos importantes na Engenharia de Software: Artefato conjunto de elementos (executável, código-fonte, interface, banco de dados, documentação, entre outros) que constituem o software ou que estão relacionadas a ele. Software Legado refere-se a softwares que se tornam ultrapassados ao longo dos anos. Geralmente, desempenham funções essenciais ao negócio de uma organização e, por atender as necessidades desta, acabam não deixando de ser utilizados, mesmo que a sua tecnologia vá ficando cada vez mais ultrapassada com o passar dos anos. Por ter uma longa vida útil na 9 organização, podem existir importantes regras de negócio associadas ao software e até mesmo interligações com outros softwares da organização, dificultando a sua substituição, pois dificilmente um novo software poderá incorporar as suas funções e agregar novas sem que haja algum transtorno para a organização. Reengenharia de Software trata-se da reconstrução de um software novo, com base em um software que já exista, com o propósito de buscar por melhorias que permitam produzir algo de qualidade melhor ou, pelo menos, comparável à do produto que se usou como base. Engenharia Reversa segundo Mourão (2014), Engenharia Reversa é uma atividade que trabalha com um produto existente (que pode ser um software, uma peça mecânica ou um banco de dados) e tenta entender como este funciona, o que ele faz, quais são suas propriedades etc. A Engenharia Reversa também é vista como um processo de análise de um sistema para criar uma representação deste mesmo sistema em um nível mais alto de abstração. No caso de um software, trata-se de entender como um software que já existe funciona nos mínimos detalhes, a fim de criar o seu projeto. Fechamento Nessa unidade, apresentamos principais definições relacionadas à Engenharia de Software. Esperamos que você possa assimilar principalmente os princípios norteadores, aos quais são importantes para definirmos com clareza suas características preponderantes. Até a próxima! 10 Referências CARDILLI, Danilo. Conceitos de Software e Engenharia de Software. In: DevMedia. 2010. Disponível em: <http://www.devmedia.com.br/conceitos-de-software-e- engenharia-de-software/15730> Acesso em: 23 nov. 2018. MAZZOLA, Vitorio Bruno. Engenharia de Software: conceitos básicos. In: Engenharia de Software. Florianópolis: INE 6603, 2000. Disponível em: <http://professores.dcc. ufla.br/~monserrat/icc/Introducao_ES.pdf>. Acesso em: 30 nov. 2018. MEDEIROS, Higor. Princípios da Engenharia de Software. In: DevMedia. 2013. Disponível em: <http://www.devmedia.com.br/principios-da-engenharia-de- software/29630> Acesso em: 23 nov. 2018. MOURÃO, Rodrigo Carreiro. Engenharia Reversa de Banco de Dados. In: DevMedia, 2014. Disponível em: <https://www.devmedia.com.br/engenharia-reversa-de-banco- de-dados/30573>. Acesso em: 30 nov. 2018. PAIVA, Thiago Gabriel Gomes da S. O Que Foi a Crise do Software e o Início da Engenharia de Software? In: Ciência da Computação. 15 mai. 2016. Disponível em: <http://cienciacomputacao.com.br/tecnologia/o-que-foi-a-crise-do-software-e-o- inicio-da-engenharia-de-software>. Acesso em: 30 nov. 2018. PRESSMAN, Roger. S. Engenharia de Software. 6. ed. Rio de Janeiro: McGraw-Hill, 2006, 720p.