• Nenhum resultado encontrado

A1-IntrododucaoEngSoft

N/A
N/A
Protected

Academic year: 2021

Share "A1-IntrododucaoEngSoft"

Copied!
72
0
0

Texto

(1)

Introdução à Engenharia de

Software

Profª Larissa Carneiro

(2)

 Entender o que é Engenharia de Software e

sua importância.

08/02/21

(3)

Ter uma visão geral de engenharia de

software

Conhecer os paradigmas de

desenvolvimento de Software

Ter uma visão geral de testes de software

Ter uma visão geral de qualidade de

(4)

 Entender o processo que caracteriza a

construção de um software de qualidade.

 Conhecer o processo a análise de requisitos  Conhecer os processos teste de software

 Modelar os requisitos de um software através de

ferramentas UML

08/02/21

(5)
(6)

 A economia de todos os países do mundo

depende cada vez mais de software.

 É crescente os sistemas controlados por

software.

 Os gastos com desenvolvimento de

software representam uma fração

significativa do PIB de muitos países.

08/02/21

(7)

 Ferro (Darby, 1709)  Máquina a vapor:

◦ Inventada (Newcomen, 1712)

◦ Aperfeiçoada (WATT, 1766 - ’69 -’82)

 Mecanização da indústria têxtil: ◦ Tear Mecânico (Kay, 1722)

◦ Máquina de fiar (Hargreaves, 1764)

 Aspectos sociais, políticos e

econômicos

(8)

 Aço (Bessemel, 1856 e 1885 - Liga)

 Locomotiva a Vapor (Rede de Transporte -

1830)

 Máquina de Costura (SINGER,1851)  Motor a combustão interna:

◦ Primeiro eficiente (OTTO, 1876)

◦ Produção automobilística em massa (Daimler e Benz, 1896)

08/02/21

(9)

 Energia Nuclear (Fermi, 1942)

 Uso Industrial/Comercial da Eletricidade  Computadores Eletrônicos (ENIAC 1946)  Transistor (Shockley, et al., 1948)

Sociedade Sociedade

(10)

 A mudança de uma sociedade industrial

para uma baseada na informação é uma

Radical Mudança Econômica:

◦ Material tem menos valor e Informação tem mais valor. 08/02/21 Engenharia de Software 10 

Antes: quanto

menos pessoas

possuísse algo,

maior o valor.

Hoje: quanto

mais pessoas

possuem algo,

maior o valor.

(11)

 Cite as características dos sistemas

operacionais que você conhece.

 Compare os sistemas: ◦ Unix

◦ Windows

◦ MacOS

O Windows vende mais porque é mais fresquinho ou é mais fresquinho porque vende mais???

(12)

 O desenvolvimento de software era

puramente artesanal;

 As pessoas desenvolvendo sistemas

erravam constantemente nas suas estimativas de custo e tempo;

 Os sistemas continham muitos erros;

 Consertar erros geralmente produzia mais

erros;

 Tamanho dos sistemas crescendo

consistentemente.

08/02/21

(13)

 Estudo feito em 1979 pelo governo dos

Estados Unidos em relação ao software produzido:

◦ 2% Funcionava;

◦ 3% Funcionaria com poucas correções;

◦ 20% Usados mas bastante modificados ou abandonados;

◦ 45% Entregues mas nunca foram usados com sucesso;

◦ 30% Pagos mas nunca foram terminados e/ou entregues.

(14)

“O Software ultrapassou o Hardware como

chave para o sucesso de muitos sistemas

baseados em computador” (Pressman, pg.

3, 1992)

08/02/21

(15)

 A proporção dos custos com software e

hardware mudou bastante ao longo do tempo:

◦ Década de 60: 20% -- 80%

◦ Década de 70: 50% -- 50%

(16)

 “ A inteligência e as funções oferecidas

pelo software muitas vezes diferenciam dois produtos de consumo ou indústrias

idênticas”

“ A inteireza e a oportunidade das

informações oferecidas pelo software (e

banco de dados relacionados) diferenciam

uma empresa de suas concorrentes”

08/02/21

(17)

 Completeza da informação  inteligência  funcionalidade  compatibilidade  suporte

Tornam 1

produto

melhor

que outro

(18)

 Durante as 3 primeiras décadas da era do

computador, o principal desafio era

desenvolver um HARDWARE de baixo custo e alto desempenho.

 O hoje o desafio é melhorar a qualidade (e

reduzir os custos) das soluções baseadas em SOFTWARE!

08/02/21

(19)

 É uma área do conhecimento que se

preocupa com os problemas práticos

inerentes ao desenvolvimento de sistemas de grande porte.

◦ Não é simplesmente programação;

◦ Também não é só ciência da computação;

◦ Uso de teorias (resultados), métodos, e ferramentas na resolução de problemas.

(20)

 É o estabelecimento e uso de sólidos

princípios de engenharia visando obter economicamente um software que seja

confiável e que funcione eficientemente em máquinas reais.

◦ Engenharia de Software trata do desenvolvimento de software de forma eficaz.

08/02/21

(21)

 É a aplicação de ciência e matemática

visando tornar as capacidades do

equipamento úteis para o ser humano através de programas, procedimentos e documentação

 É a abordagem sistemática ao

desenvolvimento, operação, manutenção, e aposentadoria de Software.

(22)

 Engenharia de Software se refere a software

(sistemas) desenvolvidos por grupos ao invés de indivíduos;

 Engenharia de Software usa princípios de

engenharia ao invés de arte, e

 Engenharia de Software inclui tanto

aspectos técnicos quanto não técnicos.

08/02/21

(23)

 O principal objetivo da Engenharia de

Software é produzir, a um custo baixo, software de qualidade.

◦ Custo é fácil de ser medido.

◦ Qualidade não é.

 O processo de planejamento é crucial na

engenharia de software. A implementação é só uma parte do processo.

 A Engenharia de Software engloba todo o

ciclo de vida do software (concepção, implementação, uso e manutenção).

(24)

 Há 20 anos, pouquíssima gente sabia

explicar o que é software.

 Hoje, praticamente todo mundo acha que

sabe ...

 Software não são só os programas!

 A documentação necessária para instalar,

usar, e manter os programas são partes integrantes do software.

08/02/21

(25)

 Definição - Software é:

1o - instruções (programas de computador) que,

quando executadas, produzem a função e o desempenho desejados;

2o - estruturas de dados que permitem a

manipulação das informações;

3o - documentos que descrevem a operação e uso

(26)

O software é desenvolvido/projetado, ao

invés de manufaturado/fabricado.

Software não é sensível aos problemas

ambientais que fazem com que o

hardware se desgaste.

Software não se desgasta com o uso: não

existem peças de reposição.

08/02/21

(27)

 Software não pode ser visto ou tocado:  para analisar o progresso de um projeto de

software é preciso recorrer à sua documentação.

 Grandes sistemas de software são

normalmente desenvolvidos uma única vez. Assim, a experiência adquirida com outros projetos tem um valor limitado.

 Toda falha indica erro de projeto ou

implementação: manutenção do SW é mais complicada que a do HW.

(28)

 A maioria dos softwares são feitos sob

medida (por encomenda), ao invés de ser montada a partir de componentes.

◦ Produtos Genéricos: sistemas produzidos por uma organização e vendidos a todos os clientes que quiserem comprá-los.

◦ Produtos customizados: sistemas que são encomendados e desenvolvidos para um determinado cliente.

08/02/21

(29)

 É software que “funciona” (é confiável):

◦ ele não deve falhar mais do que o especificado na documentação.

 É software que funciona de acordo com a

sua especificação:

Mesmo software que aparentemente funciona

pode não estar satisfazendo a sua especificação.

 É software que é fácil de manter. ◦ Código bem escrito

(30)

 É software que funciona de maneira

eficiente.

◦ Software mais eficiente não é necessariamente software que roda mais rápido ou que gasta

menos memória/disco.

◦ A complexidade do código e o custo também são fatores importantes.

 É software que possui uma boa interface

com o usuário:

◦ Muitos softwares não funcionam direito porque são difíceis de usar.

08/02/21

(31)

 O que é esta crise?

 Métodos de desenvolvimento de software

existentes não são bons o bastante para o desenvolvimento de software de grande porte.

 Problemas não se limitam ao software que

não funciona adequadamente, mas abrange:

◦ desenvolvimento, testes, manutenção, suprimento, etc.

(32)

 CRISE?

◦ Momento perigoso ou decisivo.

◦ Decadência, carência, queda.

◦ Mas a chamada crise de software já passa de 30 anos ...

 DOENÇA?

No momento não se conhece uma cura, apenas paliativos para reduzir a dor” ...

08/02/21

(33)

 Erros no sistema automático de transporte de

bagagens (misloaded, misrouted, jammed): ◦ Atraso na abertura do aeroporto com custo total

(34)
(35)

Projeto da Agência

Espacial Européia que

custou:

◦ 10 anos. ◦ US$ 8 Bilhões. 

Capacidade 6

toneladas.

Garante supremacia

européia no espaço.

(36)
(37)

Explosão 40

segundos após a

decolagem.

Destruição do

foguete e carga

avaliada em US$

500 milhões.

(38)

 Fato: o veículo detonou suas cargas

explosivas de autodestruição e explodiu no ar. Por que?

 Porque ele estava se quebrando devido às

forças aerodinâmicas. Mas por que?

 O foguete tinha perdido o controle de

direção (atitude). Causa disso?

 Os computadores principal e back-up deram

shut-down ao mesmo tempo.

08/02/21

(39)

Por que o Shut-down? Ocorrera um run time

error (out of range, overflow , ou outro) e

ambos computadores se desligaram. De onde veio este erro?

 Um programa que convertia um valor em

ponto flutuante para um inteiro de 16 bits recebeu como entrada um valor que estava fora da faixa permitida.

(40)

 O resultado desta conversão não era mais

(41)

 Os grandes softwares não funcionam

adequadamente;

 Os projetos de software estão sempre

atrasados;

 Os custos dos projetos de desenvolvimento

de software são sempre maiores do que o previsto.

(42)

 25% dos softwares cancelados;

 75% dos sistemas não funcionam como o

planejado;

 Os problemas são proporcionais à

complexidade dos sistemas;

 Os custos do hardware caem, enquanto os

custos do software aumenta rapidamente;

08/02/21

(43)

 A sofisticação do software ultrapassou

nossa capacidade de construção.

 Nossa capacidade de construir programas

não acompanha a demanda por novos programas.

 Nossa capacidade de manter programas é

(44)

 Os computadores estão cada vez mais

rápidos, sofisticados, e baratos;

 Os softwares estão cada vez maiores e

mais sofisticados, e a produtividade não acompanha a demanda;

 Os custos com manutenção são muito

altos: para sistemas com uma longa vida, eles são várias vezes maiores do que os custos de desenvolvimento.

08/02/21

(45)

 Dedica-se pouco tempo à coleta de dados

(requisitos dos clientes):

◦ Normalmente apenas um subconjunto das

necessidades do cliente são levadas em conta ...

◦ Os profissionais estão sempre com muita pressa para começar a programar ...

(46)

 A qualidade geralmente é suspeita ...

◦ Testes sistemáticos e tecnicamente completos raramente são feitos;

◦ A flexibilidade da maioria dos softwares também é bastante limitada;

◦ A concorrência com software barato mas sem qualidade, feito por pessoas sem qualificação adequada é grande.

08/02/21

(47)

Não há muito interesse em se gastar tempo

para se entender mais a respeito de estimativas, produtividade, precisão e eficácia de novos métodos e novas

ferramentas, etc.

(48)

Velocidade da mudança tecnológica;

Dificuldade de formalização;

Velocidade na mudança dos mercados;

Velocidade na obsolescência dos sistemas;

Incapacidade das estruturas de SI para

acompanhar a velocidade das mudanças.

08/02/21

(49)

Por que os custos são tão elevados?

Não há controle sobre prazos ou planejamento

sobre equipes e recursos;

O levantamento de requisitos não é realizado de

forma integrada com o cliente e dentro de padrões antecipadamente projetados.

(50)

Por que os cronogramas não são

cumpridos?

Falta de interação entre usuário e analista;

Baixo conhecimento/descrição do

problema;

Nível de experiência da equipe de

desenvolvimento

08/02/21

(51)

Por que é difícil medir o progresso durante o

desenvolvimento?

Porque não há referências. Há falta de um plano

com metas e prazos definidos.

Por que os erros não são detectados antes

da liberação das versões?

Controle de qualidade não é objetivo desde o

(52)

Por que a produtividade é baixa?

Aprendizado dos usuários ao longo do projeto;Alterações dos requisitos provocadas por

mudanças de tecnologia, legislação ou mercado;

Implicações para a implementação somente

percebidas ao tempo da implementação.

08/02/21

(53)

 O uso de melhores técnicas, métodos, e

ferramentas.

 Mais treinamento e educação: ◦ atualmente se investe muito pouco!

(54)

 Propagam desinformação e confusão.

 No passado eram tomados como verdades

absolutas.

 Ainda há resquícios: é difícil mudar hábitos

antigos.

 Existem 3 tipos de mitos: ◦ Do cliente

◦ Administrativos, e

◦ Do profissional.

08/02/21

(55)

 Uma declaração geral dos objetivos é

suficiente para começar a escrever os

programas: podemos preencher os detalhes mais tarde.

◦ Uma definição inicial ruim é a principal causa da maioria dos fracassos no desenvolvimento de software.

(56)

 As necessidades do projeto mudam

continuamente mas isto não é problema pois o software é flexível.

◦ Os requisitos do software podem mudar, mas o custo da mudança varia bastante dependendo de em que fase ela ocorre:

Definição . . . x

Desenvolvimento . . . 1.5x a 1.6x

Manutenção . . . 60x a 100x

08/02/21

(57)
(58)

 Temos um manual de padrões e

procedimentos para a construção de software: isto basta!

◦ O manual é usado?

◦ Os profissionais de software sabem que ele existe?

◦ Ele reflete as técnicas mais modernas?

◦ Ele é completo?

08/02/21

(59)

 Temos ferramentas de desenvolvimento de

última geração pois compramos os computadores mais novos!

◦ Em geral, ter ferramentas de auxílio ao

desenvolvimento de software (ex. CASE) é mais importante do que ter a última geração em

(60)

 Estamos atrasados no prazo: podemos tirar

o atraso colocando mais programadores no projeto.

Normalmente isto não funciona!

◦ As novas pessoas precisam se integrar ao projeto ...

08/02/21

(61)

 Assim que escrevermos o programa e ele

funcionar o nosso trabalho está terminado.

◦ Em geral, mais de 70% de todo o esforço gasto num programa ou sistema ocorre depois que ele foi entregue ao cliente (manutenção).

◦ Na maioria das vezes, quanto mais cedo se começa a escrever o código mais tempo se gastará para terminá-lo.

(62)

 Enquanto o programa não estiver

funcionando não há como avaliar a sua qualidade.

◦ Revisões técnicas podem ser feitas desde o

começo de um projeto e são uma das formas mais efetivas de garantia de qualidade de software.

08/02/21

(63)

 A única coisa a ser entregue em um projeto

bem sucedido é o programa funcionando.

◦ O programa funcionando é só uma parte.

◦ Uma boa documentação incluindo os requisitos, projeto das estruturas de dados, especificação de testes, etc. é o alicerce para um projeto bem

(64)

 Conhecer e utilizar as práticas da

engenharia de software de maneira disciplinada e organizada.

 Desconstruir antigos conceitos de que o

mundo do software era um mundo virtualmente indisciplinado.

08/02/21

(65)

Criação de soluções economicamente

efetivas

◦ Engenharia não tem por objetivo apenas resolver problemas, mas resolvê-los com uso econômico dos recursos envolvidos.

Para problemas práticos

◦ Engenharia lida com problemas práticos cuja solução afeta pessoas fora do seu domínio – usuários.

(66)

Aplicar conhecimento científico

◦ Engenharia resolve problemas aplicando ciência matemática , técnicas e análise de projeto.

Construir objetos

◦ Engenharia enfatiza soluções que em geral são objetos tangíveis.

A serviço do homem

◦ Engenharia não serve apenas para o usuário imediato, mas também desenvolve tecnologia e conhecimento que apóiam a sociedade como um todo.

08/02/21

(67)

“A engenharia de software não está

relacionada apenas com os processos

técnicos de desenvolvimento de software,

mas também com as atividades de

gerenciamento de projetos de software e o

desenvolvimento de ferramentas.”

(68)

O desenvolvimento, dentro de custos

adequados, de sistemas de software de alta qualidade.

 Atuar de forma sistemática no

desenvolvimento, operação, manutenção e descontinuação do software”

08/02/21

(69)

 Obs1: Um sistema bem desenvolvido vai

facilitar a operação e a manutenção

 Obs2: Para desligar (descontinuar) um

sistema, tem que surgir outro que o substitua.

(70)

O conceito de Engenharia de Software foi

inicialmente proposto em 1968, em uma conferência organizada para discutir o que então foi chamado de “Crise do Software”

08/02/21

(71)

1. Defina:

1. Programa;

2. Software (especifique seus principais componentes).

2. O que você entende por Engenharia de

Software e o seu surgimento?

3. Qual a importância de usar Engenharia de

Software?

(72)

 Defina a crise do software, especificando os

motivos.

 Quais são os 3 mitos de software?

Especifique os seus principais pontos.

 Qual a importância da engenharia de

software para a manutenção?

 Por quê o cliente não pode fazer mudanças

ou acrescentar especificações a qualquer momento?

08/02/21

Referências

Documentos relacionados

[r]

O selo é oferecido pela ABIC (Associação Brasileira da Indústria do Café) às torrefadoras que são aprovadas pela avaliação de qualidade.. A auditoria foi realizada

Em primeiro lugar, como a pecuária é menos intensiva em capital que a agricultura, mais produtores irão escolher a pecuária quando os preços da terra estiverem baixos em

Combating illegal deforestation and land grabbing generates incentives for producers to improve their productivity, thereby inducing farmers to intensify their pastures or switch

No Ocidente, a China recebe a maior parte das atenções; a Índia tem sido lar- gamente ignorada, sobretudo na Europa.. Aliás, a Índia é a grande omissão das

Benetton (1999) apresenta o caráter de funcionalidade na Terapia Ocupacional como tendo sido assumido por muitos autores, pelos precurssores da profissão (Meyer, Simon e Schneider)

Trata-se sobretudo de trabalhar sobre um espaço habitual e transformá-lo em uma imagem em formação, não apenas do cinema, mas da própria percepção, de modo tão agudo para a

Uma criança com suspeita de pneumonia, com a indicação médica de antibiótico, deve receber a primeira dose do remédio na própria Unidade Básica de Saúde (UBS),