Buscar

aula07 (2)

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

Continue navegando