Buscar

Engenharia de Software: Conceitos e Atributos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenharia de 
Software 
Engenharia de 
Software 
1ª edição
2019
Autoria
Parecerista Validador
Juliana Padilha
Sandra Gavioli Puga / Paulo Lacerda
*Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência.
Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte
desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos
direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal.
7
 1Unidade 1
1. Introdução à Engenharia de 
Software
Para iniciar seus estudos
Esta unidade apresenta uma introdução à engenharia de software e 
fornece uma base para a compreensão do restante da disciplina. Assim, 
trabalharemos os principais conceitos presentes na engenharia de 
software, como:
• O que é engenharia de software e qual a sua importância nos dias 
atuais.
• O que é software e quais são os diferentes tipos de software 
existentes.
• E, por último, uma breve descrição do que é ética na engenharia 
de software.
Objetivos de Aprendizagem
• Explicar os conceitos de software e softwares como produtos.
• Diferenciar os tipos de software existentes na literatura.
• Identificar e discutir a importância da engenharia de software.
• Discutir as questões éticas e profissionais importantes para os 
engenheiros de softwares.
8
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
Introdução da unidade
Nesta unidade, apresentaremos conceitos que lhes permitirão entender o que é a engenharia de software, qual 
a sua importância, o conceito de software e os diferentes tipos de software existentes atualmente e também uma 
breve descrição do que é ética na engenharia de software.
1.1 Software como produto
O software pode ser considerado tanto um produto quanto um serviço. Quando ele é considerado um serviço, 
a tecnologia é ponte para a real necessidade do cliente. Como exemplo temos o serviço de armazenamento na 
nuvem, em que o software é um mero meio para o compartilhamento e armazenamento de dados do usuário. 
Normalmente, nessa forma de comercialização, o software possui uma temporalidade associada a um custo 
mensal ou anual. 
Em contrapartida, o software como produto é, por si só, a materialidade da vontade do usuário. Nesse caso, temos 
como exemplo as ferramentas de produtividade (Ex: Microsoft Office), sistemas operacionais (Ex: Windows, 
Linux), e aplicativos (Ex: Moodle). 
Nos últimos anos, devido à evolução das redes de computadores e ao barateamento dos recursos computacionais, 
como também à necessidade de disponibilidade onipresente da Tecnologia da Informação (TI), observa-se uma 
tendência de comercialização de softwares como serviço1.
1.1.1 Definindo o software
De acordo com Pressman (2011, p.11), “software consiste em:
• instruções (programas de computador) que, quando executadas, fornecem características, funções e 
desempenho desejados; 
• estruturas de dados que possibilitam aos programas manipular informações adequadamente;
• e informação descritiva, tanto na forma impressa como na virtual, descrevendo a operação e o uso dos 
programas”. 
Para Sommerville (2011, p.4), “softwares são programas de computador e documentação associada. Produtos de 
software podem ser desenvolvidos para um cliente específico ou para o mercado em geral”. 
1.2 Atributos de um software
Conforme visto, software não é apenas um programa; ele inclui também toda a documentação produzida durante 
o seu desenvolvimento. Existe um conjunto de atributos que são considerados essenciais para o desenvolvimento 
de softwares profissionais. Atributos de software refere-se as características desejáveis que um software deve ter. 
1 Software como serviço também é conhecido pelo acrônimo SaaS (Software as a Service).
9
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
No entanto, esses atributos dependem do tipo de software que está sendo desenvolvido. Por exemplo, um sistema 
bancário deve ser seguro, um antivírus deve oferecer proteção contra vírus e assim por diante. 
Esses atributos são sumarizados a seguir (Sommerville 2011): 
• Manutenibilidade: o software deve ser escrito de forma que permita a evolução para atender às 
necessidades dos clientes.
• Confiança e proteção: um software deve ser confiável, ou seja, não causar prejuízos físicos ou econômicos 
no caso de falha do sistema. Em termos de proteção, o software deve garantir que usuários maliciosos não 
sejam capazes de acessar ou prejudicar o sistema. 
• Eficiência: um software é eficiente quando ele responde rapidamente às ações dos usuários e não 
desperdiça recursos do sistema, como memória e tempo de processamento. 
• Aceitabilidade: este atributo refere-se a aceitação por parte do usuário, ou seja, o software deve ser 
desenvolvido de acordo com o tipo de usuário (crianças, adultos). Por exemplo, um software para crianças 
requer mais cores, mais imagens e é mais fácil de interagir. 
1.3 Características do software
O software possui características diferentes das encontradas em equipamentos físicos (hardware). A seguir 
apresentaremos as três características definidas por Pressman (2016):
1. Software não é fabricado no sentido clássico: O desenvolvimento de software e a fabricação de hardware 
possuem algumas similaridades como: a alta qualidade é obtida por meio de um bom projeto; ambas as 
atividades são dependentes de pessoas e requerem a construção de um “produto”. Os custos de software 
concentram-se no processo de engenharia, portanto, projetos de software não podem ser geridos como 
se fossem projetos de fabricação. O processo de engenharia diferencia-se do processo de fabricação 
pelo caráter inovador. O processo de fabricação é repetitivo, pois a produção entrega sempre os mesmos 
produtos. O processo de engenharia é sempre inovador ou personalizado (por exemplo para atender as 
necessidades dos clientes), assim cada produto (software) produzido é único. 
2. Software não “se desgasta”: Softwares não são suscetíveis aos mesmos problemas ambientais que 
desgastam os hardwares. Quando um componente de hardware se desgasta, ele é substituído por uma 
peça de reposição. Para o software não existem peças de reposição. Toda falha em um software indica erro 
de projeto ou implementação. Portanto, a tarefa de manutenção de software é mais complicada que a 
manutenção de hardware. 
3. Software sob encomenda: A indústria de software tem caminhado cada vez mais para a construção de 
softwares com base em componentes, porém a maioria dos softwares continua a ser construída de forma 
personalizada (sob encomenda). Um componente de software2 deve ser projetado e implementado para 
ser reutilizado em muitos programas diferentes. São exemplos de componentes de software Java para 
interface: RichFaces, PrimeFaces, OpenFaces e IceFaces.
2 Para mais informações sobre componentes de software acesse o site: https://pt.wikipedia.org/wiki/
Engenharia_de_software_baseada_em_componentes.
https://pt.wikipedia.org/wiki/Engenharia_de_software_baseada_em_componentes
https://pt.wikipedia.org/wiki/Engenharia_de_software_baseada_em_componentes
10
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
1.4 Campos de aplicação de software
Segundo Pressman (2016), atualmente existem sete grandes categorias de software, que apresentamos a seguir:
1. Software Básico: Conjunto de programas feito para atender a outros programas, como: compiladores 
(Ex: GCC), editores (Ex: Word, WordPad) e utilitários para gerenciamento de arquivos (Ex: Windows Explorer 
do Windows). 
2. Software de Aplicação/Comercial: Trata-se de programas sob medida que solucionam uma necessidade 
específica de negócio, como: facilitar operações comerciais ou tomadas de decisões administrativas/
técnicas (Ex: Portal de Compras – este software foi desenvolvido para realizar licitações do estado de Minas 
Gerais). 
3. Software Científico/de Engenharia:Caracteriza-se por algoritmos “number crusching” – algoritmos para 
processamento numérico pesado – utilizados pela astronomia (Ex: Astro), biologia molecular (Ex: Protean 
3D) e aerodinâmica (Ex: C.A.S.A. (Cálculo automático de sistemas aerodinâmicos)). 
4. Software Embutido/Embarcado: É um tipo de software que é residente em um produto ou sistema e 
utilizado para implementar e controlar características e funções para o usuário final e para o próprio 
sistema. Este tipo de software executa funções limitadas e específicas (por exemplo, controle do painel 
do micro-ondas) ou fornece função significativa e capacidade de controle (por exemplo, computador de 
bordo de um carro). 
5. Software para Computadores Pessoais: Projetado para prover capacidade específica de utilização por 
muitos clientes diferentes. Focado em um mercado limitado e particularizado, como: processamento 
de texto (Ex: Word, WordPad), planilha eletrônica (Ex: Excel), computação gráfica (Ex: Adobe Photoshop), 
entretenimento (Ex: jogos - Paciência) e multimídia (Ex: RealPlayer e Windows Media Player). 
6. Aplicações para a Web: É caracterizado por aplicações centralizadas em rede, como aplicativos e softwares 
baseados em navegadores (browsers). Como por exemplo podemos citar os sites de e-commerce.
7. Software de Inteligência Artificial: Faz o uso de algoritmos para solucionar problemas complexos que 
não são passíveis de computação ou de análise direta, como por exemplo: robótica, reconhecimento 
de padrões (de imagem e de voz), redes neurais artificiais, provas de teoremas e jogos. Como exempo 
deste tipo de software temos o programa A.L.I.C.E. (Artificial Linguistic Internet Computer Entity, ou Entidade 
Computadorizada de Linguagem Artificial para Internet)3.
Diversos engenheiros de software em todo mundo trabalham em projetos de software de uma ou mais dessas 
categorias. Em alguns casos, novos sistemas estão sendo construídos, mas em muitos outros sistemas já 
existentes estão sendo corrigidos, adaptados e/ou evoluídos. 
1.4.1 Software Legado
Software legado é definido como software antigo, ou seja, que foi desenvolvido há muitos anos. Esse tipo de 
software tem tido atenção desde os anos 1960. De acordo com Dayani-Fard et al (1999) apud Pressman (2016, p.8), 
softwares legados foram desenvolvidos décadas atrás e têm sido continuamente modificados para se adequar a 
mudanças dos requisitos de negócio e a plataformas computacionais. Empresas consideram que é dispendioso 
manter esses softwares e arriscado evoluí-los (Dayani-Fard et al. apud Pressman, 2016, p.8).
3 Para mais informações acesse o site: https://pt.wikipedia.org/wiki/A.L.I.C.E.
https://pt.wikipedia.org/wiki/A.L.I.C.E
11
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
Já para Liu et (1998) apud Pressman (2016, p.8) “muitos sistemas legados permanecem dando suporte para 
funções de negócios vitais e são indispensáveis para o mesmo”. 
 
Conclui-se que um software legado é caracterizado por um tempo de vida longo e por ser 
crítico na área dos negócios.
Softwares legados são um desafio para a engenharia de software, pois há projetos que não são 
expansíveis, código intrincado (de difícil compreensão), documentação pobre ou inexistente 
entre outros. Tudo isso caracteriza um software de baixa qualidade, difícil de ser evoluído ou 
simplesmente de dar manutenção. 
Diante dos pontos já expostos, a engenharia de software recomenda que softwares legados 
só passem por evolução/manutenção se for vital para o seu funcionamento (Sommerville, 
2011). Um exemplo de que não é interessante realizar manutenção desnecessária em 
softwares antigos é um fato ocorrido em 1999 – o Bug do Milênio. 
Este possível bug levou programadores do mundo inteiro a realizarem manutenção nos 
sistemas, pois antigamente a data era salva no padrão de 2 dígitos (como, por exemplo, 99) para 
economizar memória. Acreditava-se que se não alterassem a data para o padrão de 4 dígitos 
na virada do ano 2000, diversos sistemas deixariam de funcionar acarretando incontáveis 
erros. O resultado foi um investimento financeiro alto para realizar essa manutenção, mas no 
final das contas ocorreram poucas falhas decorrentes do bug do milênio.
Fique atento!
Para saber mais sobre software legado, assista ao vídeo Você sabe o que é SOFTWARE 
LEGADO?, do Canal TI, no Youtube.
E para mais informações sobre o bug do milênio, assista ao vídeo A história do bug do 
milênio, da TecMundo, no Youtube. 
Saiba mais
12
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
1.4.2 Aplicações mobile e computação na nuvem
Figura 1 – Computação em nuvem (cloud)
Fonte: SHUTTERSTOCK, 2018.
A grande quantidade de dispositivos móveis criou um novo mercado de desenvolvimento de software com 
características próprias. Este tipo de software que está em crescimento é geralmente designado apenas pelo termo 
app (aplicativos). Esses aplicativos são desenvolvidos para plataformas mobile como iOS, Android ou Windows Mobile. 
Atualmente existem mais dispositivos móveis do que computadores tradicionais (Ex: notebooks e computadores 
pessoais) (UOL, 2017). Tais dispositivos trazem uma série de desafios e possibilidades para o desenvolvimento do 
software, como limitações de recursos (memória, processamento, bateria, tamanho de telas e entrada de dados) e 
também possuem recursos de hardware até então pouco comuns, como bússola, acelerômetro, GPS dentre outros. 
Leia, no site da revista Exame, a notícia Dispositivos móveis deverão ocupar o mercado do 
PC. 
A computação em nuvem possui uma infraestrutura que permite a qualquer usuário, 
independentemente do lugar em que está, usar algum dispositivo (smartphone, notebook) para 
visualizar, modificar seus dados armazenados em um servidor online, também conhecido 
como servidor na nuvem (Por exemplo Dropbox e Office 365). 
A computação em nuvem é definida como a utilização da capacidade de memória, 
armazenamento e processamento de servidores interligados pela internet. Já Mobile refere-se 
execução de softwares aplicativos em dispositivos portáteis como smartphone e tablet. 
Saiba mais
13
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
Para saber mais sobre Computação na Nuvem, assista ao vídeo Você sabe o que é Cloud 
Computing, ou Computação na Nuvem?, da CanalTech, no Youtube.
Saiba mais
1.4.3 Linhas de produtos de software
A abordagem Linhas de Produtos de Software (LPS) ou Software Product Lines (SPL) é definida como o uso de técnicas 
de engenharia que permitem criar um grupo de softwares similares a partir de um conjunto de características 
comuns a todos esses sistemas. Em resumo, é um método que permite a aplicação da técnica de reúso de software 
(reaproveitamento de código já desenvolvido e testado). 
O desenvolvimento de softwares utilizando a técnica de LPS está cada vez mais crescente. Como essa técnica 
permite agrupar componentes de software comuns e que já foram desenvolvidos (prontos), consequentemente 
teremos um desenvolvimento mais ágil de sistemas. 
Vale ressaltar que para atender as necessidades dos usuários e o contínuo processo de automação dos meios 
produtivos, os softwares têm se tornado cada vez maiores e complexos, o que implicaria em um processo de 
desenvolvimento mais demorado se comparado com o uso da técnica LPS que utiliza o reúso de componentes 
já prontos. 
Para mais informações, leia o artigo Linha de Produtos de Software: Conceitos e 
Ferramentas, de Juliana Alves Pereira, Eduardo Figueiredo e Heitor Augustus Costa, 
disponível na Internet.
Saiba mais
1.5 Engenharia de software
Engenharia de software é uma disciplina cujo o foco está em todos os aspectos da produção de software – desde 
a especificação do sistema até a sua manutenção.
Para Bauer (1969) apud Pressman (2016), a engenharia de software é “a criação e a utilização de sólidos princípios 
de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientementeem 
máquinas reais”. 
14
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
Já para IEEE (1999) apud Pressman (2016), a engenharia de software é “a aplicação de uma abordagem sistemática, 
disciplinada e quantificável, para o desenvolvimento, operação e manutenção do software; isto é, a aplicação de 
engenharia ao software”.
A vantagem de se usar as técnicas de engenharia de software está em obter software com qualidade, dentro do 
cronograma e dentro do orçamento planejado inicialmente.
A abordagem adotada para se obter software com qualidade é denominada processo de software, que veremos 
mais detalhadamente na unidade 2.
A base para engenharia de software é definida por Pressman (2016) como uma tecnologia em camadas, conforme 
a figura 2. 
Esta figura apresenta quatro camadas:
(i) Foco na qualidade.
(ii) Processo.
(iii) Métodos.
(iv) Ferramentas. 
Figura 2 – Conceito de ética na engenharia de software 
Ferramentas
Métodos
Processo
Foco na qualidade
Fonte: PRESSMAN; MAXIM, 2011, p. 39.
A base de sustentação da engenharia de software é o foco na qualidade, por isso aparece como a base da figura 
que se assemelha a uma pirâmide. 
Posteriormente, temos a camada de processo, responsável por definir uma metodologia que permitirá o 
desenvolvimento do software com qualidade e entrega dentro do prazo. Portanto, a camada de processo é a 
base para o controle do gerenciamento de projetos de software, onde a qualidade é garantida, e as mudanças 
(evoluções e/ou manutenções) do software são geridas de forma apropriada. 
Em seguida, temos a camada métodos; estes fornecem as informações técnicas para desenvolver o software, tais 
como: comunicação, análise de requisitos, modelagem de projeto, construção de programa, testes e suporte. 
15
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
Por último, temos a camada ferramentas. Estas fornecem suporte automatizado ou semiautomatizado para o 
processo e para os métodos. Como por exemplo as ferramentas CASE (Computer Aided Software Engineering). 
1.6 Ética na engenharia de software
Figura 3 – Conceito de ética na engenharia de software 
Fonte: SHUTTERSTOCK, 2018.
Diversos profissionais, como advogados e médicos, possuem um código de ética, ou seja, regras que regulam a 
liberdade das pessoas que trabalham na área. O mesmo ocorre com os profissionais de TI implicitamente – os 
engenheiros de software. O profissional de engenharia de software deve aceitar que seu trabalho envolve grandes 
responsabilidades – além de simplesmente aplicar técnicas (programar).
Nenhum profissional de TI deve usar seu conhecimento de forma ilegal ou que que atente contra a moralidade. 
Existem áreas nas quais os padrões de comportamento não são ilegais, mas são imorais. Segundo Sommerville 
(2011, p.9), são elas:
1. Confidencialidade: deve-se respeitar a confidencialidade das informações de seus empregados ou 
clientes, independentemente de ter sido assinado um acordo formal de confidencialidade. 
16
Engenharia de Software | Unidade 1 - Introdução à Engenharia de Software
2. Competência: não aceitar um trabalho acima do seu nível de competência.
3. Direitos de propriedade intelectual: deve-se ter conhecimento das leis do país a respeito da propriedade 
intelectual, como patentes e copyright.
4. Mau uso do computador: não fazer mau uso de seus conhecimentos técnicos a outras pessoas, como 
disseminar vírus ou outros malwares pela rede. 
Leia o Código de Ética e de Prática Profissional da Engenharia de Software e o Código 
de Ética publicado pela Sociedade Brasileira de Computação (SBC), ambos disponíveis 
na Internet.
Saiba mais
Síntese da unidade
Nesta unidade você aprendeu sobre os conceitos fundamentais para o desenvolvimento da disciplina Engenharia 
de Software:
• O que é software.
• Qual a diferença de software de produto e software de serviço.
• Quais as características que um software deve ter.
• Quais os tipos de softwares existentes e quais estão sendo mais utilizados atualmente.
• O que é software legado.
• Qual a importância da engenharia de software.
• Qual a importância da ética para os profissionais da tecnologia da informação no desenvolvimento de 
softwares.
17
Considerações finais
Esperamos que você tenha conseguido assimilar da melhor forma possível 
o conteúdo aqui apresentado. Para ampliar o seu conhecimento, consulte 
o aprofundamento de conteúdo e assista à videoaula da unidade, pois 
contêm informações relevantes para seu aprendizado.
	Unidade 1
	1. Introdução à Engenharia de Software
	Unidade 2
	2. Modelos do Ciclo de Vida do Software
	Unidade 3
	3. Engenharia de Requisitos e Modelagem de Software 
	Unidade 4
	4. Projeto de Interface Homem-Máquina

Continue navegando