Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Engenharia de Software 7º Aula Engenharia de software: aprofundando a discussão Objetivos de aprendizagem Ao término desta aula, o aluno será capaz de: • aprofundar os conceitos de software e engenharia de software; • entender o surgimento do campo de software. Olá, pessoal, tudo bem? Iniciamos a nossa última aula, nela vamos apronfundar os conceitos de software e engenharia de software. Espero que a aula contribua com o entendimento e aprendizado de vocês a respeito. Para tanto, vamos abordar alguns conceitos importantes. Qualquer dúvida, entrem em contato via quadro de avisos, certo? Vamos lá? Boa aula! Figura 1: <http://www.cbsi.net.br/2014/10/curso-de-engenharia-de- software-gratuito.html>. Acesso em: 05 abr. 2017. 45 Seções de estudo 1 - Engenharia de software: conceitos iniciais 1 - Engenharia de software: conceitos iniciais 2 - O que é a engenharia de software? A engenharia de software engloba as técnicas e lógicas que dizem respeito a dados, atividades, tecnologia e pessoas. Ela permite que se desenvolva o planejamento, a análise, a projeção e a construção e a manutenção dos sistemas de processamento de dados, por meio de uma ação integrada e inteligente. Além da definição dada, é importante sabermos: quando surge e por que surge a discussão a respeito da temática? Os conhecimentos a respeito de software ganham força há pouco tempo. Há algumas décadas: […] menos de 1% do público poderia descrever de forma inteligível o que signifi ca “software de computador”. Hoje, a maioria dos profi ssionais bem como a maior parte do público, acham que entendem o que é software. Será que entendem? Uma descrição de software num livro didático poderia assumir a seguinte forma: “Software é: (1) instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados; (2) estruturas de dados que possibilitam que os programas manipulem adequadamente a informação; e (3) documentos que descrevem a operação e o uso dos programas”. Não há duvida de que outras defi nições, mais completas, poderiam ser oferecidas. Mas precisamos de algo mais que uma defi nição formal (PARREIRA JÚNIOR, 2013). Como pode ser notado na citação, o software diz respeito ao modo de organizar informações e manipulá-las por meio de programas. De modo geral, o software se relaciona à informação e à sua manipulação. Porém, como a própria citação defende, não adianta somente entender a definição elementar, certo? Vamos avançar, então? Vocês já devem ter percebido que, quando se fala em software, as pessoas associam, imediatamente, aos programas de computador. Como interessados no assunto, contudo, vocês talvez já saibam que essa é uma visão possível somente no senso comum: enquanto profissionais da área entendam: essa é uma visão restrita e insuficiente. Na verdade, o software engloba todos os dados e informações documentados. Eles provêm de diversas naturezas. Perpassa pelas bases de dados e envolve os procedimentos manuais que estão integrados aos automatizados. Então, quando tratamos de todo o sistema de software, falamos de: A palavra sofware designa o conjunto de programas que um equipamento e, em especial, um sistema de computador é capaz de executar. Podemos considerar que um sofware é uma solução para um determinado problema. Essa solução pode ser omposta por vários programas de computador formando um sistema de sofware. Assim, um sistema de sofware é um conjunto de programas de computador que operam de forma conjunta para solucionar problemas de uma determinada área. Em um sentido mais amplo, Sommerville (2003, p. 5) afi rma que um sistema, que descreve a estrutura desse sistema, e a documentação do usuário, que explica como utilizar o sistema e, no caso dos produtos de sofware, sites da Web para os usuários fazerem download das informações recentes do produto” (PARREIRA JÚNIOR, 2013). Como podemos notar na citação, o software diz respeito aos programas disponíveis em um equipamento, principalmente, quando associados ao sistema de um computador. Os sistemas, associados, formam o que chamamos de sofware. Para tanto, é importante entender que, no sofware, há diversos programas que são particulares, mas que atuam em conjunto. Nessa perspectiva, de que modo atua o profissional responsável por gerir a engenharia de software? Um produto de sofware é um sistema que pode ser disponibilizado para uma clientela. Esses produtos podem ser genéricos personalizados. Produtos genéricos são sistemas de sofware produzidos por uma organização e comercializados para qualquer cliente que seja capaz de utilizá-los. Produtos personalizados são sistemas de sofware desenvolvidos para atender às necessidades de um cliente em especial. Em ambos os casos, a empresa produtora disporá de um processo de sofware. O processo de sofware é o conjunto de atividades gerenciais e tecnológicas, bem como os resultados gerados por tais atividades, que um determinado produtor de sofware emprega no desenvolvimento e na manutenção de seus produtos de sofware (AUDI et al., 2007, p. 171). Bom, já entendemos, até aqui, a relação entre tecnologia e software, certo? É papel do produtor de sofware, então, desenvolver e promover a manutenção dele. Aos poucos, tenho certeza que vocês se apropriarão da teoria relacionada e conseguirão ampliar o conhecimento de vocês no que tange à nossa temática. Lembrem-se de que há os produtos genéricos e os produtos sob encomenda, também chamados de personalizados. Os primeiros dizem respeito aos produtos disponibilizados, por meio de venda. Entre eles, podem-se citar: word, WordPerfect, BROffice etc.) já os segundos são os sistemas feitos de modo particular a uma empresa, por exemplo. O que diferencia um e o outro é o fato de que os produtos personalizados podem ser organizados de modo a atender às necessidades de um cliente, que, por sua vez, geralmente, representa uma empresa. Há também casos em que as empresas, de posse de um produto genérico, alteram- no de acordo com as necessidades específicas. 46Introdução à Engenharia de Software Figura 2: Software. Fonte: <http://fi eldguide.gizmodo.com/ all-the-cool-beta-software-you-can-use-for-free-1765553479>. Acesso em: 16 mar. 2017. Entendidas questões inicias acerca do software, vamos discutir a engenharia de software, em específico? 2 - O que é a engenharia de software? A engenharia de software é uma disciplina que se associa a todas as etapas da produção do software. Nessa perspectiva, não está relacionada, somente às técnicas e processos relacionados ao desenvolvimento do software, mas, também, às atividades a respeito do gerenciamento do projeto de software e ao desenvolvimento das ferramentas, dos métodos e das teorias que dão suporte à produção do software. Segundo Julio Cesar Leite (1991, p. 2), [...] na maioria das organizações que se utilizam de sistemas computacionais para apoio às suas atividades, os conceitos de Sistemas de Informação e de Engenharia de Software se misturam no que comumente se chama de Desenvolvimento de Sistemas. Esta mistura de áreas afins, mas diferenciadas, é, no nosso entender, um dos principais problemas encontrados pelos gerentes de informática. Como se nota, para Leite (1991), é comum, em empresas, os conceitos a respeito de Sistemas de Informação se misturarem ao de Desenvolvimento de Sistemas. Essa “confusão” é responsável por originar diversos problemas, entre eles: • criação de rotinas administrativas, • prioridades de desenvolvimento, • procedimentos operacionais, • motivação, • impactos nas rotinas de trabalho, • alocação de mão de obra, • treinamento de usuários, Se misturam com problemas de: • escolha de ferramentas de apoio aodesenvolvimento de software, • problemas de treinamento de pessoal técnico, • acompanhamento de projetos de software (LEITE, 1991, p. 2). Como pode ser percebido, não aplicar a teoria à prática pode gerar alguns problemas bastante relevantes na atuação do profissional. É importante, nessa perspectiva, entender os objetivos da engenharia de software. Em sua origem, a engenharia de software foi concebida com o propósito de lidar com os sistemas básicos, compiladores e sistemas operacionais. Para entender mais, é preciso conhecer alguns conceitos: Urna primeira defi nição de engenharia de software foi proposta por Fritz Bauer na primeira grande conferencia dedicada ao assunto: ‘O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que funcione efi cientemente com máquinas reais’ (PARREIRA JUNIOR, 2013). Basicamente, propunha-se a existência de uma engenharia que proporcionasse um uso economicamente viável no que diz respeito à tecnologia de software, envolvendo, sempre, o uso das máquinas. Nessa direção, pode-se afirmar que a engenharia de software foi concebida com o intuito de integrar a engenharia de sistemas, bem como a engenharia de hardware. Ela abrange um conjunto de três elementos fundamentais - métodos, ferramentas e procedimentos - que possibilita ao gerente o controle do processo de desenvolvimento do software e oferece ao profi ssional uma base para a construção de software de alta qualidade produtivamente. Os métodos de engenharia de software proporcionam os detalhes de “como fazer” para construir o software. Os métodos envolvem um amplo conjunto de tarefas que incluem: planejamento c estimativa de projeto, análise de requisitos de software e de sistemas, projeto da estrutura de dados, arquitetura de programa e algoritmo de processamento, codifi cação, teste e manutenção. Os métodos da engenharia de software muitas vezes introduzem uma notação gráfi ca ou orientada a linguagem especial e introduzem um conjunto de critérios para a qualidade do software. As ferramentas de engenharia de software proporcionam apoio automatizado ou semiautomatizado aos métodos (PRESSMAN, 19995, p. 31). Hoje, contudo, há ferramentas que permitem o sustento de cada um dos médotos discutidos. Assim, quando as ferramentas se integram e a informação criada pode ser utilizada por outra ferramenta, notamos que se estabelece um sistema que integra as ferramentas. Esse suporte é o que chamamos de engenharia de software. Ela tem o suporte de um computador (CASE - Computer-Aided Software Engineering), que, por sua vez, […] combina software, hardware e um banco de dados de engenharia de software (uma estrutura de dados contendo importantes informações sobre analise, projeto, codifi cação e teste) para criar um ambiente de engenharia de software que seja análogo ao projeto auxiliado por computador/engenharia auxiliada por computador para o hardware. 47 Os procedimentos da engenharia de software constituem o elo de ligação que mantém juntos os métodos e as ferramentas e possibilita o desenvolvimento racional e oportuno do software de computador. Os procedimentos definem a seqüência em que os métodos serão aplicados, os produtos (deliverables) que se exige que sejam entregues (documentos, relatórios, formulários etc.), os controles que ajudam a assegurar a qualidade e a coordenar as mudanças, e os marcos de referência que possibilitam aos gerentes de software avaliar o progresso (PARREIRA JUNIOR, 2013, p. 8). É visível, então, que a engenharia de software envolve etapas que, por sua vez, envolve métodos, ferramentas e procedimentos. Tais etapas são, comumente, classificadas como paradigmas. Cada paradigma é selecionado de acordo com as especificidades do projeto. Considera-se sua natureza, as aplicações necessárias, os métodos e as ferramentas que serão utilizados. Também se levam em conta os produtos que serão entregues. É necessário refletir a respeito do fato de que os profissionais com formação na em Engenharia de Software devem atuar em seu próprio campo. Nele, os contatos com a organização e com seu complexo social são bastante frequentes. Assim, não se deve supor que os profissionais de Sistemas de Informação substituem os usuários no contato com os Engenheiros de Software. Os usuários e os engenheiros de software entram em contato quando é necessário, do mesmo modo, ocorre com os profissionais de sistemas de informação. Quando a divisão de tarefas é feita de modo eficaz, é possível que os engenheiros atentem a aspectos da engenharia de modo detalhado. Do mesmo modo, ocorre com os especializados em sistemas de informação. Quando atentamos a essa explicação, contudo, não dizemos que um profissional não tem capacidade para mesclar os campos. É possível, sim, que o especialista em Sistemas de Informação atue desenvolvendo um sistema de informação completo e sendo responsável, inclusive, pelo sistema computacional. Em contrapartida, é possível que os engenheiros de software atuem desenvolvendo um protótipo de software e realizar a interação direta com os usuários, como, por exemplo, ao se implantar um sistema. Quem decide o modo como a divisão será realizada é o gerente que é responsável pela função informática. Tratando em aspectos conceituais, a ciência da computação e análise de sistemas englobam teorias e métodos que sustentam a base de computadores e sistemas de software estão relacionadas ao desenvolvimento de hardware, projeto de políticas e de processos e implantação do sistema, ou seja, com a especificação do sistema, enquanto a engenharia de software se dedica aos problemas práticos de produção de software, adotando técnicas como modelagem de casos de uso e gerenciamento de configuração. 2.1 - Aplicações e desafios da engenharia de software Agora que vocês já conhecem alguns conceitos básicos a respeito da teoria da engenharia de software, é necessário entendermos, primeiro, qual a aplicação do software e quais os desafios relacionados à área de atuação da engenharia de software. Se já sabemos que o software diz respeito ao complexo de programas dos Sistemas de Informática, e que cada componente existente em um meio computacional se constitui em um software, concluímos, então, que há especificidades no que tange às classificações. O software, dessa forma, pode ser: • Básico – Programas escritos para apoiarem outros programas. São eles: compiladores, editores de textos, sistemas operacionais; • Tempo real - Responde dentro de restrições de tempo estritas. Monitora, analisa e controla eventos do mundo real. Está presente em sistemas de controle de voo, sinalização de trânsito; • Comercial – Responsáveis por reestruturar os dados de uma forma que facilita as operações comerciais e a tomada de decisões administrativas: folha de pagamento, contas a pagar e receber, estoque, operações comerciais e de apoio à decisão; • Científico e de Engenharia – Englobam os sistemas de astronomia, o controle da dinâmica orbital de naves espaciais, os sistemas de manufatura automatizada (CAD - Computer Aided Design ou Desenho auxiliado por computador, CAE - Computer Aided Engineering ou Engenharia auxiliada por computador, CAM - Computer Aided Manufacturing ou Manufatura auxiliada por computador); • Embutido (embedded software) – Ele controla produtos e sistemas para os mercados industriais e de consumo. Responsável pelas funções digitais em automóveis (controle de combustível, sistema de freios), controle de teclado para fornos micro-ondas; • De computador pessoal – Faz o processamento de textos, planilhas eletrônicas e gerenciador de bancos de dados; • De inteligência artificial (IA) – Softwares baseados em conhecimento. Como se vê,a engenharia do software possui a capacidade de ser multifacetada quanto a seu campo de atuação. O profissional define, junto às necessidades da empresa que o contrata, como o software será desenvolvido. Nessa perspectiva, é válido questionar: quais são, então, os desafios da profissão na contemporaneidade? É esse o nosso próximo assunto. Pode-se afirmar que há três dificuldades básicas na atuação no campo da engenharia de software. O primeiro é a heterogeneidade: há diversas técnicas para a construção de software confiáveis. Não é simples, então, definir qual será mais adequado à também • heterogênea tecnologia, levando em conta a demanda do momento. • Na mesma direção, é importante considerar o tempo de entrega. É importante que o profissional trabalhe o mais rápido possível, sem deixar cair, contudo, a qualidade de seu serviço. Dinamicidade é a palavra de ordem para o profissional. • Garantir a confiabilidade do cliente não é tarefa fácil. Pode levar um tempo, então, para que o profissional forme uma visão positiva a respeito de seu trabalho. ética e qualidade, então, são palavras-chave para garantir um bom retorno. 48Introdução à Engenharia de Software Sommerville (2011) elaborou uma tabela na qual discute algumas questões básicas acerca do assunto. Vejam abaixo se têm algumas de suas dúvidas esclarecidas: Sommerville (2011, p. 4). Retomando a aula Parece que estamos indo bem. Então, para encerrar essa aula, vamos recordar: 1 – Engenharia de software: conceitos iniciais Vimos, na seção I, que a engenharia de software engloba as técnicas e lógicas que dizem respeito a dados, atividades, tecnologia e pessoas. Ela permite que se desenvolva o planejamento, a análise, a projeção e a construção e a manutenção dos sistemas de processamento de dados, por meio de uma ação integrada e inteligente. 2 - O que é a engenharia de software? A engenharia de software é uma disciplina que se associa a todas as etapas da produção do software. Nessa perspectiva, não está relacionada, somente às técnicas e processos relacionados ao desenvolvimento do software, mas, também, às atividades a respeito do gerenciamento do projeto de software e ao desenvolvimento das ferramentas, dos métodos e das teorias que dão suporte à produção do software. O guia do estudante discute alguns aspectos relacionados à profissão: <http://guiadoestudante.abril. com.br/profissoes/engenharia-de-software/>. Acesso em: 05 abr. 2017. O vídeo Engenharia de software retoma alguns dos conceitos aqui discutidos. Segue o link: <https://www.youtube.com/ watch?v=WQr1GXar9N8>. Acesso em: 5 abr. 2017 Vale a pena Vale a pena ler
Compartilhar