Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

3ºAula
INTRODUÇÃO À ENGENHARIA DE 
SOFTWARE
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
• entender os conceitos de software e engenharia de software;
• conhecer o surgimento do campo de software.
Olá, pessoal, tudo bem? 
Prosseguindo os nossos estudos da disciplina de Introdução 
a Engenharia de Software, nesta aula, vamos estudar parte mais 
importante da nossa disciplina. No caso, vamos definir o que é 
a Engenharia de Software. Até agora, vimos alguns conceitos 
básicos a respeito da computação e a sua história. Nesta aula, 
vamos ver qual é o papel da engenharia de software e as suas 
tarefas.
Qualquer dúvida, entrem em contato via quadro de avisos, 
certo?
Vamos lá?
Bons estudos!
Introdução à Engenharia de Software 22
1. 
Seções de estudo
 Engenharia de software: conceitos iniciais
2. O que é a engenharia de software?
3. Aplicações e desafios da engenharia de software
1 - Engenharia de software: conceitos 
iniciais
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, 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?
Você sabe que o computador, para que funcione, deve 
ter duas partes. A primeira é o hardware, que é a parte física 
do computador, composta por processadores, memórias, 
teclados, monitores etc. Mas, o hardware por conta própria 
não faz nada. Ele precisa de algo para fazer as partes 
funcionarem. Esse é a função do software.
O tradicional dicionário Michaelis (s.d.) define software 
como: “Qualquer programa ou grupo de programas que 
instrui o hardware sobre a maneira como ele deve executar 
uma tarefa, inclusive sistemas operacionais, processadores 
de texto e programas de aplicação.” 
O renomado autor Roger S. Pressman também traz uma 
definição a respeito de software, junto com várias reflexões 
sobre ele, que reproduzimos a seguir:
Software, segundo Pressman
Software de computador continua a ser a tecnologia mais importante 
no cenário mundial. E é também um ótimo exemplo da lei das 
consequências não intencionais. Há 60 anos, ninguém poderia prever 
que o software se tornaria uma tecnologia indispensável para negócios, 
ciência e engenharia; que software viabilizaria a criação de novas 
tecnologias (por exemplo, engenharia genética e nanotecnologia), a 
extensão de tecnologias existentes (por exemplo, telecomunicações) 
e a mudança radical nas tecnologias mais antigas (por exemplo, a 
mídia); que software se tornaria a força motriz por trás da revolução 
do computador pessoal; que aplicativos de software seriam comprados 
pelos consumidores com seus smartphones; que o software evoluiria 
lentamente de produto para serviço, à medida que empresas de 
software “sob encomenda” oferecessem funcionalidade imediata 
(just-in-time), via um navegador Web; que uma empresa de software 
se tornaria maior e mais infl uente do que todas as empresas da era 
industrial; que uma vasta rede comandada por software evoluiria e 
modifi caria tudo: de pesquisa em bibliotecas a compras feitas pelos 
consumidores, de discursos políticos a comportamentos de namoro 
entre jovens e adultos não tão jovens. 
Ninguém poderia prever que o software seria incorporado a sistemas 
de todas as áreas: transportes, medicina, telecomunicações, militar, 
industrial, entretenimento, máquinas de escritório... a lista é quase 
infi ndável. E se você acredita na lei das consequências não intencionais, 
há muitos efeitos que ainda não somos capazes de prever. Também 
ninguém poderia prever que milhões de programas de computador 
teriam de ser corrigidos, adaptados e ampliados à medida que o tempo 
passasse. A realização dessas atividades de “manutenção” absorve mais 
pessoas e recursos do que todo o esforço aplicado na criação de um 
novo software. À medida que aumenta a importância do software, a 
comunidade da área tenta criar tecnologias que tornem mais fácil, mais 
rápido e mais barato desenvolver e manter programas de computador 
de alta qualidade. Algumas dessas tecnologias são direcionadas a um 
campo de aplicação específi co (por exemplo, projeto e implementação 
de sites); outras são focadas em um campo de tecnologia (por exemplo, 
sistemas orientados a objetos ou programação orientada a aspectos); e 
outras ainda são de bases amplas (por exemplo, sistemas operacionais 
como o Linux). Entretanto, nós ainda temos de desenvolver uma 
tecnologia de software que faça tudo isso – e a probabilidade de surgir 
tal tecnologia no futuro é pequena. Ainda assim, as pessoas apostam 
seus empregos, seu conforto, sua segurança, seu entretenimento, suas 
decisões e suas próprias vidas em software. Tomara que estejam certas.
(...)
Hoje, o software tem um duplo papel. Ele é um produto e, ao mesmo 
tempo, o veículo para distribuir um produto. Como produto, fornece 
o potencial computacional representado pelo hardware ou, de forma 
mais abrangente, por uma rede de computadores que podem ser 
acessados por hardware local. Seja residindo em um celular, seja em um 
tablet, em um computador de mesa ou em um mainframe, o software 
é um transformador de informações – produzindo, gerenciando, 
adquirindo, modifi cando, exibindo ou transmitindo informações que 
podem ser tão simples quanto um único bit ou tão complexas quanto 
uma apresentação multimídia derivada de dados obtidos de dezenas 
de fontes independentes. Como veículo de distribuição do produto, o 
software atua como a base para o controle do computador (sistemas 
operacionais), a comunicação de informações (redes) e a criação e o 
controle de outros programas (ferramentas de software e ambientes). 
O software distribui o produto mais importante de nossa era – a 
informação. Ele transforma dados pessoais (por exemplo, transações 
fi nanceiras de um indivíduo) de modo que possam ser mais úteis 
em 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. Também propicia um veículo que pode ameaçar 
a privacidade pessoal e é uma porta que permite a pessoas mal-
intencionadas cometer crimes.
Fonte: (PRESSMAN, 2016, p. 2-3)
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, pode-se afirmar que:
A palavra software designa o conjunto de 
programas que um equipamento e, em especial, 
um sistema de computador é capaz de executar. 
Podemos considerar que um software é uma 
23
solução para um determinado problema. Essa 
solução pode ser composta por vários programas 
de computador formando um sistema de software. 
Assim, um sistema de software é 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 
software, sites da Web para os usuários fazerem 
download das informações recentesdo produto” 
(PARREIRA JÚNIOR, 2013).
Como mencionado na citação, pode-se dizer que 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 software. Para tanto, é importante entender que, 
no software, 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 software é um sistema que pode ser 
disponibilizado para uma clientela. Esses produtos 
podem ser genéricos personalizados. Produtos 
genéricos são sistemas de software produzidos 
por uma organização e comercializados para 
qualquer cliente que seja capaz de utilizá-los. 
Produtos personalizados são sistemas de software 
desenvolvidos para atender às necessidades de 
um cliente em especial. Em ambos os casos, a 
empresa produtora disporá de um processo de 
software. O processo de software é o conjunto 
de atividades gerenciais e tecnológicas, bem como 
os resultados gerados por tais atividades, que 
um determinado produtor de software emprega 
no desenvolvimento e na manutenção de seus 
produtos de software (AUDI et al., 2007, p. 171).
Bom, já entendemos, até aqui, a relação entre tecnologia 
e software, certo? É papel do produtor de software, então, 
desenvolver e promover a manutenção dele. Na parte 
do software, 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 ou livremente pela internet. Esses sistemas 
atendem um público em geral para uma determinada função. 
Vamos a alguns exemplos para entender isso:
• O sistema Microsoft Word ele atende todos os 
públicos para prover a função de um processador de 
texto;
• O programa Adobe Photoshop e os seus concorrentes 
Krita, GIMP e Affinity Photo (sendo os dois primeiros 
disponíveis livremente pela internet e o terceiro é um 
sistema pago) são sistemas que provêm a função geral 
de edição de imagens.
• Os navegadores Mozilla Firefox, Chrome e Opera 
são programas que atendem a função de navegação 
pela internet.
Já os sistemas personalizados, são os sistemas feitos de 
modo particular a uma empresa, por exemplo. É comum as 
grandes empresas pedirem para outras empresas especializadas 
em desenvolvimento de software construírem sistemas de 
acordo com as suas necessidades.
O que diferencia um e o outro é o fato de que os 
produtos personalizados podem ser organizados para 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.
Figura 1: 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 Júlio 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,
Introdução à Engenharia de Software 24
• motivação,
• impactos nas rotinas de trabalho,
• alocação de mão de obra,
• treinamento de usuários
Que se misturam com problemas de:
• escolha de ferramentas de apoio ao desenvolvimento 
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étodos 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). Parreira Júnior define 
essa classe de sistemas como programas que:
[…] 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. 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 defi nem 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 Análise de Sistemas 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 realizem 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 
25
estão relacionadas ao desenvolvimento de hardware, projeto de 
políticas e de processos e implantação do sistema, ou seja, com 
a especiaçã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.
3 - Aplicações e desafi os 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? Pode-se 
afirmar que há três dificuldades básicas na atuação no campo 
da engenharia de software. Vejamos abaixo
• 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, são palavras-chave para garantir um 
bom retorno.
Sommerville (2011) elaborou uma tabela na qual discute algumas questões básicas acerca do assunto. Observe:
Figura 2 – Perguntas Frequentes sobre software.
Fonte: Sommerville (2011, p. 4).
Introdução à Engenharia de Software 26
E, com isso, finalizamos a nossa terceira aula. Na próxima 
aula, vamos discutir como o software é criado. Até logo!
Retomando a aula
Chegamos ao fi nal da terceira 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.
3 - Aplicações e desafios da engenharia de software
Nessa seção, vimos as aplicações que estão inseridas o 
contexto dos softwares. Além disso, vimos alguns desafios 
que a Engenharia de Software deverá enfrentar nos próximos 
anos.
GUIA DO ESTUDANTE. Engenharia de Software. 
Abril: 2006. Disponível em: <https://guiadoestudante.abril.
com.br/profissoes/engenharia-de-software/>. Acesso em 
25 nov. 2018.
MEDEIROS, Higor. Princípios da Engenharia de Software. 
DevMedia: 2013. Disponível em: < https://www.devmedia.
com.br/principios-da-engenharia-de-software/29630>. 
Acesso em 25 nov. 2018.
Vale a pena acessar
PAULA FILHO, Wilson de Pádua. Engenharia de software 
: fundamentos, métodos e padrões. 3. ed. Rio de Janeiro: 
LTC, 2012.
PRESSMAN, Roger S. Engenharia de software : uma 
abordagem profissional. 8. ed. São Paulo: McGraw-Hill; 
Porto Alegre: Bookman; Santana: AMGH Editora, 2016.
SOMMERVILLE, Ian. Engenharia de software. 9. ed. São 
Paulo: Pearson Addison Wesley, 2011.
Vale a pena ler
Vale a pena
Minhas anotações

Mais conteúdos dessa disciplina