Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Teoria de Engenharia de Software Tema 1 – Fundamentos da Teoria de Engenharia de Software Aspectos críticos relacionados à importância da Teoria para o Profissional de Software; Definições da Engenharia de software sua importância; os diferentes tipos de sistemas e técnicas de engenharia de software; Algumas questões éticas e profissionais importantes para engenheiros de software. Aspectos críticos relacionados à importância da Teoria para o Profissional de Software Incialmente é importante buscar uma definição para os termos Teoria e Engenharia. Uma Teoria pode ser definida como algo que busca explicar os por quês numa determinada área de conhecimento. Parte de hipóteses e busca melhor traduzir esse conhecimento num princípio geral, com argumentos comprovados para explicar o fenômeno no campo de conhecimento específico1. Assim, a partir de uma nova descoberta, também comprovada com base em dados e fatos”, há uma nova contribuição para o conhecimento. A evolução dessa uma teoria vem com outra que derruba parte ou todos os fundamentos anteriores e assim, caminha junto com a evolução do conhecimento. Já a palavra “Engenharia deriva do latim ingeniu que significa a “faculdade inventiva, o talento”, ou seja é a arte, ciência e a técnica de bem conjugar os conhecimentos especializados (científicos) dada uma área do saber (...) com a sua viabilidade técnico- econômica, para produzir novas utilidades e/ou transformar a natureza, em conformidade com ideias bem planejadas”(CORTÉS, 2013, p.9)1 . A Engenharia de software é uma disciplina que conjuga conhecimentos especializados (científicos) de várias áreas de saberes, incluindo a lógica, a matemática, a física, a economia, administração, entre outras, na formação do profissional, buscando enfocar os diferentes aspectos da produção de software. Certamente os temas ou assuntos abordados nessa disciplina acompanharão os estudos no campo da informática durante o período de graduação e vida profissional. Esse roteiro começa pelos fundamentos que alicerçam a caminhada nesse mudo da tecnologia, e segue viagem pelos caminhos à sua escolha: 1 Cortés, Mariela Inés. Informática Fundamentos de Engenharia de Software. UAB/UECE. 2013 2 Hoje, cada vez mais, indivíduos e organizações dependem do software com qualidade na sua vida diária. Com efeito, o software distribui o produto mais importante de nossa era — a informação. Ele transforma dados pessoais de modo que possam ser mais úteis num determinado contexto; gerencia informações comerciais para aumentar a competitividade; fornece um portal para redes mundiais de informação (Internet) e os meios para obter informações sob todas as suas formas, além de transformar a indústria com o advento da IV revolução industrial. Produzir sistemas confiáveis econômica e rapidamente viáveis é a questão. Os profissionais do Software teorias, métodos e usam ferramentas onde for apropriado, buscando, seletivamente , descobrir as soluções para os problemas. Diante dos desafios, mesmo quando ainda não há teorias e métodos aplicáveis, ou estrições organizacionais em termos recursos, cabe ao profissional do software buscar soluções ajustadas para garantir um produto de qualidade com produtividade ao longo do seu ciclo de vida. A Engenharia de Software é, importante porque está presente, direta ou indiretamente em todas as áreas que afetam a nossa vida diária; seus produtos dependem de obter resultados que se traduzam em Qualidade de serviço de software a clientes e menores custos, conforme expectativas de organizações provedoras. Os resultados, muitas vezes precisam ser obtidos dentro de condições técnicas e operacionais e emocionais nem sempre as mais favoráveis incluindo: pressão por qualidade com prazos curtos, falta de informação, recursos escassos, políticas restritivas de parte da organização e do cliente, etc. O fato é que mesmo diante desse quadro mesmo reais e eventuais restrições, os engenheiros profissionais de software precisam e devem busca soluções elegantes. 2 . “O papel desempenhado pelo software tem passado por grandes mudanças ao longo dos últimos cinquenta anos. Aperfeiçoamentos significativos no desempenho do hardware, mudanças profundas nas arquiteturas computacionais, vasto aumento na capacidade de memória e armazenamento, e uma ampla variedade de exóticas opções de entrada e saída, tudo isso resultou em sistemas computacionais mais sofisticados e complexos. Sofisticação e complexidade podem produzir resultados impressionantes quando um sistema é bem-sucedido, porém, também podem trazer enormes problemas para aqueles que precisam desenvolver sistemas robustos. Atualmente, uma enorme indústria de software tornou-se fator dominante nas economias do mundo industrializado. Equipes de especialistas em software, cada qual concentrando-se numa parte da tecnologia necessária para distribuir uma aplicação complexa, substituíram o programador solitário de antigamente” (PRESSMAN, 2011, p.31). O novo profissional de software não pode ser, absolutamente, um recluso nos limites da tecnologia, deve ter consciência de que todo resultado de seu trabalho depende da visão acerca do negócio e da utilidade e da produtividade da sua construção. A utilidade na perspectiva de atender aos requisitos do cliente e a produtividade através melhor relação custo benefício no uso dos recursos, dada expertise obtida em sua formação e atuação profissional. 2 Em Teoria de Software uma solução elegante é aquela que obtém a melhor solução diante de multiplicidade de variáveis, as quais, caracterizam um problema complexo. 3 O que significa engenharia de software - Algumas definições: Pode-se definir o software, de uma forma clássica, como sendo: "um conjunto de instruções que, quando executadas, produzem a função e o desempenho desejados, lidando com estruturas de dados que permitam que as informações relativas ao problema a resolver (...) provendo ao cliente a documentação necessária para um melhor entendimento da sua operação e uso"3. De acordo com Pressman (2011) o “Software consiste em: (1) instruções (programas de computador) que, quando executadas, fornecem características, funções e desempenho desejados; (2) estruturas de dados que possibilitam aos programas manipular informações adequadamente; e (3) informação descritiva, tanto na forma impressa como na virtual, descrevendo a operação e o uso dos programas (p.32). Os diferentes tipos de Sistemas As atividades de desenvolvimento formam a espinha dorsal do processo de construção de software , são realizadas segundo uma ordem estabelecida no planejamento. Por meio delas os Engenheiros de software têm como premissa básica fazer as coisas funcionarem. Eles aplicam teorias, métodos e ferramentas onde for apropriado, utilizando, seletivamente as alternativas para soluções dos problemas, mesmo quando não há teorias e métodos aplicáveis na produção de diferentes tipos de sistemas, que incluem: Produtos genéricos (Pacotes) – São sistemas produzidos por uma organização de desenvolvimento e vendidos no mercado para qualquer cliente interessado. (ex. ferramentas de banco de dados, processadores de texto, pacotes gráficos e gerenciamento de projetos, bibliotecas, etc). Produtos customizados ou sob encomenda - Um software especialmente desenvolvido para um cliente específico. (ex. sistemas de controle de dispositivos eletrônicos, de apoio a um processo de negócio, sistemas de controle de tráfego aéreo, etc. Aplicações isoladas ou Stand –Alone - São aplicações executadas em um computador local, como um PC que possuem toda funcionalidade necessária, porém não precisam estar conectadas a uma rede. Exemplos são aplicativos de escritório em um PC, programas CAD, software de manipulação de fotos etc. Aplicações interativas baseadas em transações - São aplicaçõesque executam operações a partir de um computador remoto, e são acessadas pelos usuários a partir de seus computadores ou terminais. São exemplos aplicações de comércio eletrônico , sistemas corporativos, em que uma empresa fornece acesso a seus sistemas através de um navegador Web ou um programa cliente especial e serviços 3 MAZZOLA, Bruno Vitório. Engenharia de Software 4 baseados em nuvem. Tais aplicações interativas, frequentemente, incorporam um grande armazenamento de dados, que é acessado e atualizado em cada transação. Sistemas embutidos ou embarcados - São sistemas de controle que monitoram e gerenciam dispositivos de hardware. Numericamente, é provável que haja mais sistemas embutidos do que de qualquer outro tipo. São exemplos de sistemas embutidos os que estão em SMart-TV, em telefones celulares, que controlam antitravamento de freios em veículos e software em um micro-ondas para controlar o processo de cozimento, sistemas de Auto-Drive entre outros no uso das tecnologias baseadas em IoT ( Internet das coisas). Sistemas de processamento de lotes - São sistemas geralmente corporativos projetados que processam grandes volumes de dados e desse modo organizam os dados em lotes. Isso em geral envolve grande número de entradas individuais para criação de saídas correspondentes. São exemplos de sistemas de lotes : cobrança impostos, serviços (telefone, luz, gás, etc, sistemas de pagamentos de salário, entre outros. Sistemas de entretenimento - São sistemas cuja utilização principal é pessoal e cujo objetivo é entreter o usuário. A maioria desses sistemas é de jogos de diferentes tipos. A qualidade de interação com o usuário é a característica particular mais importante dos sistemas de entretenimento. Sistemas científicos – Em geral utilizados em modelagem e simulação que incluem vários objetos separados que interagem entre si; em geral , são desenvolvidos por cientistas e engenheiros para modelar processos ou situações físicas. Tais sistemas geralmente fazem uso intensivo de recursos computacionais e requerem sistemas paralelos de alto desempenho com máxima capacidade de processadores para executar seus projetos. Sistemas coletores de dados - São sistemas que coletam dados de seu ambiente a partir de um conjunto de sensores e que enviam e trocam esses dados com outros sistemas para processamento. Em muitas situações esse tipo de software que precisa interagir com sensores é instalado em um ambiente hostil, por exemplo, dentro de uma máquina ou em um local remoto (ex. sistema coletores de dados sísmicos (alerta de terremoto). Sistemas de software - São os chamados sistemas operacionais, desenvolvidos em linguagem de máquina, que permitem operar o computador (ex. Windows, Linux, etc ) , visto que suportam o ambiente de operacional. São compostos de grupamentos de outros sistemas acessórios de serviços de rede, por exemplo, banco de dados, seguranças, etc. Algumas questões éticas e profissionais importantes para engenheiros de software. Assim como já afirmamos anteriormente acerca dos padrões a serem seguidos na perspectiva de atender aos requisitos do cliente através melhor relação custo benefício no uso dos recursos, dada expertise obtida em sua formação e atuação profissional, como 5 outras disciplinas, a engenharia de software é também desenvolvida dentro de um framework social e legal, o que regula o comportamento dos profissionais que atuam nessa área, segundo Sommerville (2012), entre as questões éticas e profissionais importantes para engenheiros de software, incluem uma estrutura que considera os seguintes pré-requisitos: Responsabilidade - Um engenheiro de software deve aceitar que seu trabalho envolve maiores responsabilidades do que simplesmente aplicar habilidades técnicas e se comportar de forma ética e moralmente responsável. Honestidade e Integridade - Se desejar ser respeitado como um engenheiro profissional deve manter padrões normais de honestidade e integridade. Não se utilizar de habilidades e seu conhecimento para se comportar de forma desonesta ou de maneira que possa denegrir a profissão de engenharia de software. Discrição - O Engenheiro de Software deve respeitar naturalmente a confidencialidade de seus empregadores ou clientes, independentemente de ter sido ou não assinado um acordo formal de confidencialidade. Competência. Não deve deturpar seu nível de competência e não deve aceitar conscientemente um trabalho que esteja fora de sua competência. Direitos de propriedade intelectual - Deve ter conhecimento das leis locais a respeito da propriedade intelectual, como patentes e Copyright. Cuidar para garantir que a propriedade intelectual dos empregadores e clientes seja protegida. Considerações Finais Como vimos os computadores têm um papel central e crescente no comércio, na indústria, no governo, na medicina, na educação, no entretenimento e na sociedade de um modo geral. Os engenheiros de software são aqueles que contribuem com a participação direta, ou lecionando, para análise, especificação; projeto, desenvolvimento, certificação, manutenção e testes de sistemas de software nesse sentido com competência profissional ética. Por causa de seu papel no desenvolvimento de sistemas de software, os engenheiros de software têm diversas oportunidades para fazer o bem ou para causar o mal, possibilitar que outros façam o bem ou causem o mal ou influenciar os outros a fazer o bem ou causar o mal. Para garantir ao máximo que seus esforços serão usados para o bem, os engenheiros de software devem se comprometer a fazer da engenharia de software uma profissão benéfica e respeitada. Sociedades e instituições profissionais têm um papel importante a desempenhar na definição de padrões éticos. Organizações como ACM, IEEE (Institute of Eletrical and Electronic Engineers) e British Computer Society publicam um código de conduta profissional ou código de ética. Membros dessas organizações se comprometem a seguir esse código quando se tornam membros. Esses códigos de conduta normalmente têm focalização no comportamento ético básico. Código de Ética e Prática Profissional. O Código prescreve essas obrigações a qualquer um que se diz ser ou pretende ser um 6 engenheiro de software, contendo oito princípios relacionados ao comportamento profissional. Em síntese padrões de comportamento aceitável não são limitados pelas leis, mas pela noção de responsabilidade profissional. Referências Bibliográficas: CORTÉS, Mariela Inés. Informática - Fundamentos de Engenharia de Software. UAB/UECE. 2013 PRESSMAN, ROGER S. Engenharia de Software – 7. ed. – Dados. AMGH, 2011. SOMMERVILLE Ian. Engenharia de SOFTWARE, Pearson Education do Brasil. 2011 FALBO, Ricardo de Almeida. Engenharia de Requisitos. Notas de Aula. UFES - Universidade Federal do Espírito Santo. 2012. Disponível em: < http://www.inf.ufes.br/~falbo/files/ER/Notas_Aula_Engenharia_Requisitos.pdf > Acesso em 14-10-2019
Compartilhar