Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 1 ENGENHARIA DE SOFTWARE I CAPÍTULO 1 – FUNDAMENTOS DA ENGENHARIA DE SOFTWARE, r5 Sumário 1.1 Conceitos e objetivos da engenharia de software 1.2 O produto software 1.2.1 Características do software 1.3 O que diferencia um software do outro? 1.4 Aplicações do software 1.4.1 Cloud Computing (Computação em Nuvem) 1.5 Quais são os principais desafios enfrentados pela engenharia de software? 1.5.1 Uma perspectiva industrial 1.1 CONCEITOS E OBJETIVOS DA ENGENHARIA DE SOFTWARE O desenvolvimento de um sistema computacional seja ele voltado para negócios, web, aplicação cientifica, automação industrial e outras aplicações, inicia pelo software. O software é quem atende a necessidade (ou resolve um problema) de cálculo, da automação de um trabalho manufaturado ou do negócio empresarial. Só após dimensionar o tamanho, a complexidade e as exigências de processamento é que será possível dimensionar e especificar a infraestrutura do sistema computacional que suportará este software. A Engenharia de Software projeta e constrói o produto software de computador. Abrange programas que executam em computadores de qualquer tamanho e arquitetura, processamento de dados e informações que incluem formas impressas e virtuais, combinam caracteres dos mais variados tipos, incluindo representações de informação no formato de imagens, vídeos e áudios. O custo do software está concentrado no trabalho de engenharia, que por sua vez, contempla os seguintes itens: Especificação, documentação e procedimentos; Análise, projeto, codificação, implementação, testes, diagnósticos e implantação; Suporte ao cliente/usuário. O software continua sendo construído por encomenda. À medida que uma disciplina de engenharia evolui, novos componentes são criados. No mundo do software, tais componentes ainda estão sendo aprimorados e estão apenas começando a ser produzidos em ampla escala. Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 2 Os componentes do software devem ser produzidos de modo que possam ser reusados, ou seja, que possam ser adaptados a novas plataformas e ambientes operacionais. O reuso de um componente é uma atividade natural no processo de engenharia. A reusabilidade do software é uma métrica de qualidade usada para avaliar o quanto um programa ou parte dele pode ser usada em outras aplicações. 1.2 O PRODUTO SOFTWARE Nos últimos sessenta anos o produto software tem sido responsável por grandes avanços da humanidade. O uso inteligente da informação e ideias inovadoras passam a ser prioridades para o crescimento das empresas. As empresas na era informação concorrem em um mercado complexo, que muda muito rápido, globalizado, supercompetitivo e voltado para o cliente. Software e hardware estão em franca evolução e apesar de possuírem princípios independentes, esta dualidade permite criar sistemas cada vez mais sofisticados a baixo custo. O software possui um duplo papel na produção, não só pode constituir um produto, como também pode ser o veículo de melhora de um produto. Exemplo: Como produto de software - podemos citar toda a linha de software e que normalmente são comercializados, tais como software de sistema e de aplicação. Um exemplo simples seria o produto Word da Microsoft. Como veículo de melhora dos produtos: o software – podemos citar o software “Globalink”, um tradutor de línguas que ao instalar pode ser inserida como uma função de chamada no Word, bem como pode ser usado isoladamente como um produto completo.; e o industrial – quando o software esta associado a um hardware específico de uma máquina que pode assim ser automatizada. 1.2.1 Características do software O software é desenvolvido ou passa por um processo de engenharia, não é manufaturado. Os problemas de qualidade do hardware podem ser corrigidos pela manufatura, o que não ocorre com o software. O software não “se desgasta”, mas "se deteriora"! O software não é suscetível aos males ambientais, que causam desgaste do hardware, mas sim devido às mudanças que ocorrem no ciclo de vida do software (PRESSMAN, 2011). Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 3 Durante o ciclo de vida o software passará por modificações (manutenção e/ou mudanças). Essas modificações causam a deterioração do software. E à medida que as modificações são feitas, é provável que novos defeitos sejam introduzidos, causando dente na curva de taxa de falhas, como é mostrado no gráfico da direita da Figura. Figura: Gráficos comparativos da curva de falhas do hardware em relação a curvas de falhas do software. Fonte: PRESSMAN (2011). Devido às mudanças causadas no software, no acompanhamento de sua evolução são registradas versões e releases. As versões são registros do software feitos sobre as mudanças que ocorrem na adaptação do software em relação às necessidades do cliente, adaptação a novos ambientes operacionais, correções de falhas ou quando o software está em desenvolvimento. O release (lançamento) é o registro da versão que é liberada para o usuário. Quando o software se “deteriora” em um sistema baseado em computador passa a ter falhas, que normalmente são relatadas pelos usuários. São relatados: Ocorrência de erros, travamentos e queda do desempenho provocado por uma demanda alta de processamento. E à medida que são feitas as mudanças no software, muitos dos códigos fontes são abandonados, são criados códigos fontes e campos de dados redundantes e por outro lado outros códigos fontes e dados deixam de ser acessados pelo sistema, quando ainda são necessários para o bom funcionamento do software. Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 4 Após várias mudanças causadas no software, o software deve ser reestruturado. Reestruturar o software significa: Fazer limpeza dos dados; Fazer limpeza dos códigos redundantes; Atualizar hardware; Atualizar com novas versões o sistema operacional e as linguagens de programação; Gerar novos algoritmos; Adaptar de forma correta as antigas e novas funcionalidades com base em uma nova arquitetura. 1.3 O QUE DIFERENCIA UM SOFTWARE DO OUTRO? Para responder esta questão é necessário avaliar cinco características essenciais referentes à capacidade e usabilidade do software: captação de dados, processamento dos dados, forma de apresentação da informação, segurança e desempenho. 1 - Captação de dados – a interface de entrada de dados pode se apresentar de diversas formas, das quais: entradas editadas, digitalizadas, entradas por terminais, dispositivos biométricos, sensores a laser, óticos, sonoros, luminosos, magnéticos e vários outros. Quanto à interface de entrada operacional humana, normalmente os dados captados possuem um formato simples. Diferente da captação de dados por dispositivos que tem como objetivo captar um volume de dados maior com resolução de varredura boa do ambiente. O formato de entrada dos dados a serem processados variam em confiabilidade, acurácia e quantidade. 2 - Processamento dos dados – os dados a serem processados variam em seu formato de entrada. O software deverá isolar em campos os dados captados. Cada campo de dados é captado em um formato binário e identificado por meio de caracteres de controle, tamanho do pacote de dados, ciclos de tempos especificados na entrada de dados ou a combinação destes. A partir deste ponto os algoritmos contidos no software resultam em novos dados ou informações, que permitem estruturar os resultados destas operações de processamento. A acurácia e eficiência de execução destes algoritmosdeterminam o nível de qualidade do software. CASO: Na deterioração do software os usuários reclamam muito, como por exemplo: “Isto está lento”.; “Sumiu meu registro”; “Tinha um relatório aqui”; “Este campo está vazio, deveria ter a informação ...”. Nesta situação o volume de chamadas aos desenvolvedores e equipes de manutenção aumenta. Para corrigir de vez este problema e retomar um ciclo novo de vida do software, é necessário reestruturar o software. Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 5 3 - Apresentação da informação – dependendo da qualidade exigida do cliente e do usuário, a apresentação da informação pode ser por meio de textos, relatórios, diagramas, modelos gráficos, imagens em alta definição e cores ou ativação de dispositivos. A resposta do software é o que interessa ao cliente ou usuário. As principais características que se destacam são: adequação das funções do software às necessidades do cliente ou usuário, eficácia para atingir objetivos específicos, manutenabilidade para adaptar mudanças na configuração do software ou adaptações de novos recursos, usabilidade que permite melhor compreensão, aprendizado e satisfação de uso e, a utilização que mede o esforço necessário para aprender, operar, preparar entradas e interpretar as saídas. 4 - Segurança – no produto software são estabelecidas medidas de segurança e a avaliação de níveis aceitáveis de riscos e danos para às pessoas, para os negócios, para a propriedade, para o ambiente, para proteger informações e dados de forma que pessoas ou sistemas não autorizados não possam lê-los nem modificá-los e que não seja negado o acesso às pessoas ou sistemas autorizados. 5 - Desempenho – o sistema computacional deve garantir a integridade de todos os seus recursos com boa eficiência, para dar apoio às características já citadas. O software deve oferecer respostas rápidas às funções e apresentações da informação, busca de dados em redes de computadores com taxas de transferência equivalentes ou até mesmo superiores em relação ao volume de dados e ainda, ser expansível para aceitar novas extensões ao sistema. 1.4 APLICAÇÕES DO SOFTWARE O conteúdo de informação e a determinância são fatores importantes na determinação da natureza de um aplicativo. Por exemplo, muitas aplicações comerciais fazem uso de dados de entrada altamente estruturados (um banco de dados) e produzem “relatórios” formatados. As seguintes áreas de software indicam a amplitude das aplicações: Software Aplicativo para microcomputadores. Processamento de textos, planilhas eletrônicas, computação gráfica, diversões, gerenciamento de banco de dados, etc. De fato, o software de computador pessoal continua a representar os mais inovadores projetos de interfaces com seres humanos de toda a indústria de software. Software Básico – É uma coleção de programas escritos para dar apoio a outros programas, normalmente possui uma forte interação com o hardware e são utilizados como processadores de telecomunicação, componentes do sistema operacional, compiladores, computadores com intenso uso de múltiplos usuários, operações Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 6 concorrentes que exigem escalonamento (schedule), compartilhamento de recursos, estrutura de dados complexas e múltiplas interfaces. Cada programa responsável por controlar um hardware específico ou uma parte deste, é chamado de driver. Um conjunto de drivers organizados para o controle de uma determinada interface, um computador ou uma máquina é chamado de firmware. Na categoria de firmware temos também o software embarcado, sendo que, este tipo de software pode ser chamado também de software embutido (embedded software) quando residente em memória ROM, em máquinas ou dispositivos computadorizados. Este firmware é escrito em código de máquina (ASSEMBLER), que é ativado antes mesmo de qualquer sistema operacional. Software de Tempo Real. É um software que monitora/analisa/controla eventos do mundo real, exige um controle/saída que responde ao ambiente externo e um componente de monitoração que coordena todos os demais componentes de forma a obter resposta em tempo real (que, tipicamente, varia de 1 milisegundo até 1 minuto) possa ser mantida. O termo “tempo-real” difere do “interativo” ou “time- sharing” que podem exceder o tempo de resposta sem resultados desastrosos. Um exemplo de software de tempo real é a IoT – Internet of Things (Internet das coisas) que se refere à interconexão digital de objetos do cotidiano. Software Científico e de Engenharia. “É caracterizado por algoritmos de processamento de números. As aplicações variam da astronomia a vulcanologia, da análise de fadiga de mecânica à dinâmica orbital de naves espaciais, e da biologia molecular à manufatura automatizada” (PRESSMAN, 2011). A realidade aumentada faz parte da categoria de software científico e de engenharia. Software Empresarial. É o de maior área de aplicação. Distintos “sistemas de informação” que processam folhas de pagamentos, contas a pagar e a receber, estoques, etc. Os tipos mais comuns de sistemas de informação estão na categoria do e- business (negócios eletrônicos). São eles: o ERP (Enterprise Resource Planning) – Planejamento dos Recursos Empresariais; o CRM (Customer Relationship Manager) – Gerenciamento das Relações com o Cliente; e o SCM (Supply Chain Management) – Gerenciamento da Cadeia de Suprimentos. Outras tecnologias em destaque nesta área de software são: o Big Data, que trata grandes volumes de dados e o BI (Business Intelligence) é um avançado sistema integrado de gestão. Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 7 Software para Web. As páginas da Web recuperadas por um browser constituem software que incorpora instruções executáveis (p. ex., CGI, HTML, Pearl ou Java) e dados (p. ex., hipertexto e uma variedade de formatos visuais e de áudio). Com estes recursos tecnológicos surgem os sistemas e aplicações baseada na Web, às WebApps, que são pequenas aplicações embarcadas na internet. Nesta categoria estão também o Comércio Eletrônico (e-commerce), categorizado pelas tecnologias: B2B (business to business), B2C (business to consumer) e C2C (consumer to consumer). E a tecnologia Cloud Computing (Computação em Nuvem). Software de Inteligência Artificial (Artificial Inteligency – AI) – “Faz uso de algoritmos não numéricos para resolver problemas complexos que não sejam favoráveis à computação ou à análise direta” (PRESSMAN, 2011). “Atualmente, a área de AI mais ativa é a dos Sistemas Especialistas, também chamados sistemas baseados em conhecimento” (REZENDE, 2005). As aplicações mais comuns estão no reconhecimento de padrões de imagem e voz, entretenimento, carros autônomos, Internet das Coisas, demonstração de teoremas, determinadas funções do Big Data e do Business Intelligence. 1.4.1 Cloud Computing (Computação em Nuvem) A computação em nuvem se baseia no armazenamento de arquivos e processamento de aplicações interligadas pela internet, sem a necessidade de instalação de programas específicos. Estes serviços podem ser acessados de qualquer computador, com o uso remoto de um browser (navegador da internet), independente do sistema operacional. O usuário pode criar seus serviços e acessar suas informações de qualquer local do mundo, desde que esteja conectado a internet. As figuras abaixo apresenta modelos de redes públicas para Computação em nuvem (Cloud Computing). Google Drive Outlook Drive Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 8 Modelo de rede privada para Computação em nuvem (CloudComputing). 1.5 QUAIS SÃO OS PRINCIPAIS DESAFIOS ENFRENTADOS PELA ENGENHARIA DE SOFTWARE? Nos primórdios da era do computador, os sistemas baseados em computador eram desenvolvidos pela administração orientada ao hardware. Hoje, a distribuição dos custos para o desenvolvimento baseados em computador mudou drasticamente para o software. 1.5.1 Uma perspectiva industrial Nestas duas décadas, os gerentes e muitos profissionais técnicos formulam as seguintes questões: Por que demora tanto tempo para que os programas sejam concluídos? Por que os custos são tão elevados? Por que não descobrimos todos os erros antes de entregarmos o software aos nossos clientes? Porque temos dificuldade em medir o progresso enquanto o software está sendo desenvolvido? Essas e muitas outras perguntas manifestam a preocupação relativa ao software e à maneira pela qual ele é desenvolvido, o que leva a prática da engenharia de software. Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 9 Sommervillle em 2005 descreve. “atualmente a engenharia de software enfrenta três principais desafios”: 1 - O desafio do legado: Atualmente uma grande parte dos sistemas de software em utilização foi desenvolvida, em uma época em que as linguagens não eram orientadas a objetos, mas esses sistemas ainda operam importantes funções corporativas e controlam grandes quantidades de eventos em uma grande massa de dados. O desafio do legado é fazer a manutenção e atualização destes sistemas a custos baixos, com qualidade e prosseguir com a prestação de serviços corporativos. 2 - O desafio da heterogeneidade: Exige-se cada vez mais que os sistemas operem como sistemas distribuídos atuando por meio de redes que possuam diferentes tipos de arquiteturas de computadores e diferentes tipos de sistemas operacionais. O desafio da heterogeneidade é desenvolver técnicas para construir sistemas confiáveis e flexíveis o bastante para lidar com essa heterogeneidade. 3 - O desafio do fornecimento: Muitas técnicas de engenharia de software tradicionais são muito demoradas. Nos dias atuais existe uma demanda enorme de sistemas para que sejam desenvolvidos no menor tempo possível e com facilidade de adaptação as mudanças. O desafio do fornecimento é fornecer sistemas grandes e complexos, com a qualidade desejada e em curto espaço de tempo. BIBLIOGRAFIA [PMB10] PMBOK, Project Management Body of Knowledge. Um guia do conhecimento em gerenciamento de projetos (Guia PMBOK). – 4 a ed. Atlanta, USA: Project Management Institute, Inc. 2010. [PMB00] PMBOK, Project Management Institute. Project Management Body of Knowledge. Pennsylvania, USA: PMBOK Guide. 2000. [PRE11] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 7.ed. Rio de Janeiro: McGraw-Hill, 2011. [PRE07] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 6.ed. Rio de Janeiro: McGraw-Hill, 2007. [PRE02] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 5.ed. Rio de Janeiro: McGraw-Hill, 2002. [SOM05] SOMMERVILLE, Ian. Engenharia de software. São Paulo: Pearson Addison Wesley, 2005. [STA06] STAIR, Ralph M.; REYNOLDS, George W. Princípios de Sistemas de Informação: uma abordagem gerencial – 6 a ed. São Paulo: Pioneira – Thomson Learning, 2006.
Compartilhar