Você está na página 1de 24

Engenharia de Software

Introdução

Paulo Rodrigo Cavalin


cavalin@uft.edu.br

Ciência da Computação
Universidade Federal do Tocantins - UFT
1
Engenharia de Software
● Software é uma realidade em praticamente o
mundo todo, em quase todos os meios.
● Governamental: a infra-estrutura de muitos países
dependem em sistemas baseados em computador
● Residencial: a maioria dos produtos eletrônicos
incluem um software
● Industrial: manufatura e distribuição
completamente computadorizados
● Sistemas financeiros...
2
Engenharia de Software (2)
● Engenharia de software é uma disciplina de
engenharia que concentra-se no desenvolvimento
eficaz, em termos de custo, de software de alta
qualidade
● O software é abstrato, e em teoria, não é
restringido por materiais, por leis físicas ou
processos de manufatura
● O potencial de um software não fica limitado por
restrições físicos (exceto a capacidade dos
computadores)
3
Engenharia de Software (3)
● A falta de restrições naturais, entretanto, fazem
com que o software possa facilmente se tornar
muito complexo e difícil de ser entendido

4
Histórico
● O termo Engenharia de Software foi proposto
em 1968, em uma conferência que discutia a
então chamada crise do software
● Crise do software: com a criação dos circuitos
integrados, a criação de softwares que antes
eram impossíveis se tornaram possíveis.

5
Crise do software
● O hardware estava evoluindo rapidamente, mas o software
resultante era muito mais complexo do que os sistemas de
software anteriores
● Devido ao uso do desenvolvimento informal de software,
muitos softwares existentes estavam atrasados, custavam
muito mais que o previsto, não eram confiáveis e eram
difícil de fazer manutenção
● Enquanto o custo com o hardware estava diminuindo, o
custo com o software estava crescendo rapidamente

6
Resultado da criação da ES
● Novas técnicas e métodos foram desenvolvidos para
controlar a complexidade intrínsica em sistemas de software
complexos
● Foram desenvolvidos métodos para especificação de
software, projeto e implementação
● Novas notações e ferramentas foram propostas para reduzir
o esforço necessário para produzir sistemas grandes e
complexos

7
Receita de bolo da ES?
● De fato, não existe um ”método ideal” para
engenharia de software
● A diversidade de métodos é necessária para
abranger a diversidade de sistemas e entidades que
usam software
● Entretanto, noções fundamentais de processos e
sistemas fazem parte destas técnicas, constituindo a
essência da engenharia de software

8
Mas afinal, o que é software?
● Definição popular: um software é um programa de
computador
● Definição mais abrangente: um software não
consiste somente dos programas, mas toda a
documentação e dados de configuração que são
necessários para fazer o sistema operar
– Um software geralmente é constituído de uma série
de programas separados, arquivos de configuração
e documentações

9
Tipos de produtos de software
● Engenheiros de software desenvolvem produtos de
software, os quais podem ser:
– Produtos genéricos (software de caixinha): sistemas
independentes, desenvolvidos por uma
determinada empresa, que são vendidos para
qualquer consumidor que pode comprá-lo. Ex:
bancos de dados, processadores de texto, etc.
– Produtos customizados: sistemas que são
desenvolvidos especificamente para um
determinado consumidor. Ex: sistemas para
controle de dispositivos, sistemas para auxiliar o
controle dos processos de uma determinada
10
empresa
Tipos de produtos de software (2)
● A especificação do software em produtos genéricos
é controlada pela empresa que vende o sofware
● Em produtos customizados, esta especificação é
controlada pela empresa que está comprando o
software
● Entretanto, esta divisão está se tornando cada vez
menos evidente, já que muitas empresas
desenvolvem um software de certo modo genérico,
que é então customizado para um determinado
consumidor.
11
Engenharia de Software x Ciência da
Computação
● Um cientista da computação geralmente trabalha
com as teorias e métodos relacionados a
computadores e sistemas de software
● Um engenheiro de software relaciona-se com os
problemas práticos da produção de um software

12
Engenharia de Software x Engenharia
de Sistemas
● Um engenheiro de sistemas trabalha com todos os
aspectos do desenvolvimento e da evolução de
sistemas complexos, onde o software é a parte
principal
– É responsável pelo desenvolvimento do hardware,
pelas políticas e processos, implantação do
software, assim como a engenharia de software

13
Processos de software
● Conjunto de atividades e resultados associados que
produzem um produto de sofware
● Geralmente, as seguintes etapas fazem parte dos
processos de software:
– Especificação do software
– Desenvolvimento do software
– Validação do software
– Evolução do software
● Conforme o tipo do sistema, são necessário
diferentes processos de desenvolvimento. 14
Modelos de processos de software
● Descrição simplificada de um processo de software,
apresentando uma visão daquele processo.
● Os modelos podem incluir atividades que fazem
parte do processo de software, produtos de software
e o papel das pessoas envolvidas na engenharia de
software
● Ex: Modelo de workflow, de fluxo de dados ou
atividades, modelo de papel/ação
● Ex de paradigmas de desenvolvimento de software:
o modelo em cascata, o desenvolvimento iterativo,
desenvolvimento baseado em componentes 15
Estimativas de custo de software
● Embora não seja trivial a determinação do custo de
um software, existem alguns perfies de custo
conforme o método de desenvolvimento
● Modelo em cascata (de Sommerville, 2007)

16
Estimativas de custo de software (2)
● Modelo iterativo (de Sommerville, 2007)

● Baseado em componentes

17
Estimativas de custo de software (3)
● Desenvolvimento e evolução para a vida do
software (de Sommerville, 2007)

18
Ferramentas para engenharia de
software
● Ferramentas que auxiliam a produção de um
software de qualidade, com custo viável
● Análise estruturada, fluxogramas
● A linguagem UML
● Métodos baseados no uso de representações
gráficas, que podem ser usadas para especificar ou
projetar um sistema

19
Ferramentas CASE
● Computer-Aided Software Engineering
● Programas que são usados para auxiliar as
atividades no processo do software, por exemplo,
para análise de requisitos, modelagem de sistemas,
depuração e teste
● Algumas ferramentas CASE podem incluir um
gerador de código, para automatizar o processo de
codificação a partir de um modelo

20
Atributos para um software de
qualidade
● O software deve ser desenvolvido de uma maneira
em que pode ser evoluído conforme a necessidade
do consumidor
● Deve ser confiável e seguro
● Deve ser eficiente, sem desperdiçar recursos do
sistema como memória, ciclos de processamento,
deve prover respostas rápidas ao usuário
● Deve ter boa usabilidade, sem a necessidade de
esforço indevido pelo usuário. Deve ter uma
interface homem-máquina apropriada, e
documentação adequada. 21
Principais desafios da ES
● Heterogeneidade: sistemas necessitam operar em
arquiteturas distribuídades, através de redes de
computadores heterogêneos (diferentes sistemas
operacionais e arquiteturas).
– Às vezes é necessário integrar um novo software
com um software antigo, talvez escrito em outra
linguagem de programação

22
Principais desafios da atualidade (2)
● O desafio da entrega: dados que negócios podem
mudar rapidamente, os sistemas têm que se adaptar
rapidamente a estas mudanças, sem comprometer a
qualidade.
● O desafio da confiança: os softwares envolvem
aspectos vitais de uma determinada entidade, sendo
essential que possamos confiar no software.
Sistemas bancários por exemplo.

23
Referências
● Pressman, R. S. Engenharia de Software,
McGrauw-Hill, 6. ed., 2006.
● Sommerville, Ian, Engenharia de
Software, Addison-Wesley Publishers Ltd.
8 ed., 2007.

24