Você está na página 1de 36

Capítulo 1

Fundamentos de Engenharia
de Software
Profa. Jaqueline Ferreira Domenciano
Disciplina: Engenharia de Software I
JAQUELINE FERREIRA DOMENCIANO
• Mestre em Ciência, Tecnologia e Sociedade na UFSCar (2015);
• Especialista em Computação Aplicada a Educação Básica pela Universidade Federal de
São João del Rel (2020);
• Especialista em Governança de Tecnologia da Informação pela Universidade Cruzeiro
do Sul (2017);
• Especialista em Educação à Distância pela Universidade Claretiana de Batatais (2011);
• Licenciada em Informática pela Faculdade de Tecnologia de Americana (2010)
• Licenciada em Pedagogia pela FACAB (2015);
• Graduada em Informática para Gestão de Negócios pela Faculdade de Tecnologia de
Mococa (2008);
• Professora e coordenadora no curso Técnico em Informática na Etec Francisco
Garcia/Centro Paula Souza (2007 - atualmente);
• Mediadora Pedagógica para o Componente Curricular Empreendedorismo e
Qualidade do Curso Técnico em Guia de Turismo do Centro Paula Souza – ead e do
Componente Curricular Tecnologia de Informação 1 do Técnico em Desenvolvimento
de Sistemas (2017 - atualmente);
• Professora na Faculdade de Tecnologia de Mococa/Centro Paula Souza (2019 – 2020;
2023 - atualmente);
• Assistente digital.
Engenharia
Definições

É uma ciência tão antiga quanto a própria civilização.

🞂 É a profissão em que se adquire e se aplicam os conhecimentos


matemáticos e técnicos na criação, aperfeiçoamento e
implementação de utilidades que realizem uma função ou
objetivo.
🞂 É a aplicação de métodos do conhecimento científico ou
empírico destinados à utilização de recursos materiais e
naturais para o benefício do ser humano.
🞂 Traçar, idear, inventar, maquinar, fabricar, construir
artificialmente, construção racional de algo...
Engenharia de Software
Primeira Definição
🞂 O termo Engenharia de Software como é conhecido foi cunhado e usado pela
primeira vez oficialmente pelo professor Friedrich Ludwig Bauer em 1968 na
Primeira Conferência de Engenharia de Software:

“O estabelecimento e uso de sólidos princípios de engenharia para


que se possa obter economicamente um software que seja
confiável e que funcione eficientemente em máquinas reais”.

Friedrich Ludwig Bauer (1924-2015)


Engenharia de Software
Primeira Definição
🞂 “O estabelecimento e uso de sólidos princípios de engenharia
para que se possa obter economicamente um software que seja
confiável e que funcione eficientemente em máquinas reais”.

🞂 Questões que ainda buscam respostas:


◦ Quais são os “sólidos princípios de engenharia” que podem ser aplicados
ao desenvolvimento de software?
◦ Como construir softwares “economicamente” de modo que sejam
“confiáveis”?
◦ Como criar um software que trabalhe “eficientemente” em várias
“máquinas reais”?
Engenharia de Software
Definições
🞂 Aplicação de uma abordagem sistemática, disciplinada e
quantificável, para o desenvolvimento, operação e manutenção do
software (IEEE).
🞂 Tem por objetivo a aplicação de teoria, modelos, formalismos e
técnicas e ferramentas da lógica (Ciência da Computação) e áreas
afins para a produção (ou desenvolvimento) de sistemas de software.
🞂 Associado ao seu desenvolvimento, é preciso também aplicar
métodos, ferramentas e procedimentos para o gerenciamento do
processo de produção e projetos de software. Isto envolve
planejamento de custos e prazos, montagem da equipe e garantia de
qualidade do produto e do processo.
🞂 Visa produção da documentação formal do produto, do processo,
dos critérios qualidade e dos manuais de usuários finais.
Engenharia de Software
Elementos Fundamentais
Métodos: detalhes de “como fazer”. Envolve: planejamento e estimativas
de projeto, análise de requisitos, projeto da estrutura de dados,
arquitetura de programa, algoritmo, codificação, teste e manutenção.
Também introduzem critérios de qualidade.

Ferramentas: apoio automático ou semi-automático aos métodos (Case).

Procedimentos: elo entre métodos e ferramentas, definem:


- a sequência em que os métodos serão aplicados,
- os produtos a serem entregues,
- controles para assegurar a qualidade e coordenar mudanças e
- os marcos de referência que permitem a avaliação do progresso do
software.
Visão Geral Engenharia de Software
Software
Definições

🞂 Um software é composto por:


◦ instruções que, quando executadas, produzem a função e o
desempenho desejados;
◦ estruturas de dados que possibilitam que os programas
manipulem adequadamente as informações; e,
◦ documentos que descrevem a operação e o uso dos programas.
Software
Componentes

Todos os componentes de software compreendem uma


configuração.
São criados por meio de várias conversões:

Necessidades do cliente são convertidas em Projeto.


O projeto ... em Linguagem de
Programação.
A Linguagem de programação ... em Instruções executáveis.

Todos os produtos destas conversões são componentes de


software.
Software
Aplicações
🞂 Conteúdo e determinância da informação indicam a aplicação.
Conteúdo: o significado e a forma como as informações entram em
saem do sistema.
Determinância: Previsibilidade da ordem e oportunidade da
informação.

🞂 Aplicações potenciais:
◦ Software Básico: dar apoios a outros softwares
◦ Software de Tempo Real: bancários
◦ Software Comercial: SI
◦ Software Científico e de Engenharia: processamento de números,
simulação de sistemas
◦ Software Embutido: eletrodomésticos
◦ Software de Computador Pessoal: offices
◦ Software de Inteligência Artificial: sistemas especialistas
Desafios da Computação

HARDWARE SOFTWARE

Software Hardware

Desenvolver um hardware
que reduzisse o custo do MELHORAR A
processamento e QUALIDADE DO
armazenamento de dados SOFTWARE E AUMENTAR
A PRODUTIVIDADE DOS
PROCESSOS
Avanços da
Microeletrônica

Maior poder de
computação com custo

?
cada vez mais baixo
Software
Panorama atual
“O software ultrapassou o hardware como chave para o sucesso de
muitos sistemas baseados em computador”
🞂 Mudança de poder: velhas estruturas de poder dão lugar à
“democratização do conhecimento”.

“Conhecimento é poder e o computador é o amplificador deste poder”


🞂 Poder = Informação

“Inteireza e oportunidade das informações diferenciam uma empresa


de seus concorrentes”
🞂 Software = fator que diferencia

O SOFTWARE é que vai dar vazão ao potencial do HARDWARE!!


Software
Importância
🞂 “Lei das consequências não pretendidas”: descobertas de
primeira ordem geram efeitos de 2ª ordem muitas vezes imprevistos,
ou seja, algumas invenções têm no princípio uma finalidade, porém
acaba sendo utiliza para outros fins.

🞂 Ninguém poderia imaginar que o software pudesse:


◦ tornar uma tecnologia indispensável para os negócios, ciências e
engenharias;
◦ permitir a criação de novas tecnologias (ex. engenharia genética);
◦ extensão de tecnologias existentes (ex. telecomunicações);
◦ declínio de antigas tecnologias (ex. tipografia);
◦ mudar comportamentos (ex. redes sociais); etc.
Características do Software
Software X Hardware
1) O software é desenvolvido ou projetado por engenharia, não
manufaturado no sentido clássico. Não pode ser gerido como se fosse
linha de montagem.
Construção do software ≠ Construção do Hardware

2) A indústria move-se em direção à montagem baseada em componentes,


mas muitos software ainda são feitos sob medida.
O HW é composto de componentes com funções e interfaces bem definidas.
Não há catálogos de componentes de software... Só reusabilidade.

3) Software não se desgasta, mas se deteriora!!.


Curvas de falhas:
Curva Real
Índice de falhas

Curva ideal do software


Hardware do software

Mudanças

Tempo
Evolução Software
- Multiprogramação
- Tempo real
- “Software-Houses” - Mudanças nas técnicas de
- Pacotes programação
- Complexidade dos softwares
- Necessidade de Manutenção = CRISE - Sistemas especialista (IA)

ADOLESCÊNCIA ADULTA ???

1950 1960 1970 1980 1990

INFÂNCIA JUVENTUDE
- Hardware - Redes locais e globais
- Processamento em lote (batch)
- Sem administração - Sistemas distribuídos
(sem projeto ou documentação) - Microprocessadores
- Software sob medida para uso - PC (democratização da informática)
próprio (pouca distribuição)
“Muita implementação e pouca - Engenharia de Software
Engenharia”
Evolução Software
Crise do Software
O desenvolvimento de software está na fase ADULTA??

Técnica e Disciplinar???

Problemas ainda existentes:


🞂 Incapacidade de suprir a demanda crescente por novos softwares.
🞂 Projetos ruins (falta de qualidade).
🞂 Custos e prazos extrapolados (dificuldade em fazer estimativas).

Solução:
DISCIPLINAR O DESENVOLVIMENTO → Engenharia de Software.
Crise e Aflição Crônica
Crise do Software
Efeitos
Focos da Engenharia de Software:
🞂 Prazo
Produtividade
🞂 Custo
🞂 Qualidade (adequação ao uso)

Dificuldades:
🞂 Falta de dados sobre o desenvolvimento
- poucos dados históricos
- estimativas “a olho”
- resultados ruins
- sem indicação de produtividade não se avalia métodos ou ferramentas.
🞂 Insatisfação do cliente
- Falta de comunicação eficiente entre cliente e desenvolvedor.
🞂 Qualidade do software é suspeita
- Falta de teste sistemáticos e completos, negligencia no levantamento de requisitos.
🞂 Dificuldade de manutenção dos softwares atuais.
- Capacidade de manutenção é critério de qualidade.
Mitos da Engenharia de
Software
🞂 São atitudes enganosas que propagam desinformação e
confusão.
🞂 Mitos podem ser traiçoeiros: podem parecer informações
razoáveis e, as vezes, até conter alguns elementos
verdadeiros.

Podem ser:
- Administrativos (dos gerentes)
- Do Cliente
- Do Desenvolvedor
Mitos
Administrativos (1)

⮚ Mito: Já temos um manual (livro) repleto de padrões e


procedimentos para a construção do software. Isso não oferece
ao meu pessoal tudo o que eles precisam saber?

⮚ Realidade?
Mitos
Administrativos (2)
🞂 Mito: Meu pessoal tem ferramenta de desenvolvimento de software
de última geração; afinal de contas lhes compramos os mais novos
computadores.

⮚ Realidade?
Mitos
Administrativos (3)
🞂 Mito: Se estamos atrasados no cronograma, podemos adicionar
mais programadores e honrar os prazos.

⮚ Realidade?
Mitos
Administrativos (4)
🞂 Mito: Se eu decidir terceirizar um projeto de software vou poder me
tranquilizar e deixar a empresa desenvolvê-lo.

⮚ Realidade?
Mitos
Do cliente (1)
⮚ Mito: Uma declaração geral dos objetivos é suficiente para se
começar a escrever programas – podemos preencher os detalhes
posteriormente.

⮚ Realidade?
Mitos
Do cliente (2)
⮚ Mito: Os requisitos do projeto modificam-se continuamente, mas as
mudanças podem ser facilmente acomodadas, porque o software é
flexível.

⮚ Realidade?
Mitos
Do desenvolvedor (1)

⮚ Mito: Assim que escrevemos o programa e o colocamos em


funcionamento, nosso trabalho está terminado.

⮚ Realidade?
Mitos
Do desenvolvedor (2)
⮚ Mito: Enquanto não tiver o programa funcionando, não há como
avaliar sua qualidade.

⮚ Realidade?
Mitos
Do desenvolvedor (3)
🞂 Mito: A única coisa a ser entregue em um projeto bem-sucedido é o
programa funcionando.

⮚ Realidade?
Mitos
Do desenvolvedor (4)

🞂 Mito: A engenharia de software vai


nos fazer criar uma documentação
volumosa e desnecessária, que
certamente nos fará atrasar.

⮚ Realidade?
Referências Bibliográficas
🞂 Pressman, R. Engenharia de Software. São Paulo: McGraw Hill,
2006 (Capítulo 1).

“ Idéias são blocos construtivos de idéias”


(Jason Zebehazy)
Estudo de caso
🞂 A engenharia de software desempenha um papel
crucial na concepção, desenvolvimento e operação
de sistemas complexos. No entanto, problemas de
software podem levar a consequências graves e até
mesmo a tragédias. Nesta tarefa, exploraremos um
caso emblemático de crise do software: o desastre no
lançamento da sonda espacial Ariane 5 em 1996.
🞂 Estude o caso e apresente: as causas subjacentes
da falha, incluindo decisões de projeto, validação de
software e gestão inadequada. Identifique as lições
aprendidas com o caso da Ariane 5 e relacione-as
com as melhores práticas de engenharia de software
atualmente.

Você também pode gostar