UFU Universidade Federal de Uberlândia ANÁLISE E PROJETO...
Transcript of UFU Universidade Federal de Uberlândia ANÁLISE E PROJETO...
ANÁLISE E PROJETO DE SISTEMAS INTRODUÇÃO A ENGENHARIA DE SOFTWARE
Professora: Fabíola Gonçalves.
UFU Universidade Federal de Uberlândia
AGENDA
Introdução à Engenharia de Software
Características do Software
Comunicação no desenvolvimento de Software
O que é Engenharia de Software
Qualidade versus Incidentes
Aplicações
Importância do Software
Princípios de Engenharia de Software
O QUE É SOFTWARE?
● “Programas de computador, juntamente com
as estruturas de dados e documentação
associada”.
● “Software de computador é o produto que os
profissionais de software constroem e, depois,
mantém ao longo do tempo. Abrange desde
programas que executam em computadores de
qualquer tamanho e arquitetura a sistemas
embutidos.”
O QUE É SOFTWARE?
● Onipresença / DEPENDÊNCIA de
“computadores”
● Computador "=" Software
● Quem o faz/desenvolve?
● Qual sua importância?
● Qual o produto do trabalho dos elaboradores
de um software?
SOFTWARE
Primeiras décadas da era do computador..
“Hoje o problema é diferente, o
principal desafio desta década é melhorar
a qualidade e reduzir o custo das
soluções baseadas em computador, ou
seja, que são resolvíveis com softwares de
computador”.
SOFTWARE
Evolução do Software...
CARACTERÍSTICAS DO SOFTWARE
Pontos chaves:
Comunicação entre o clientes e
desenvolvedores
“ Devemos entender o que o cliente quer e quais
são as suas necessidades, antes de começarmos a
construir um sistema que o ajude a resolver seus
problemas”.
Número de pessoas trabalhando em um
projeto?
CARACTERÍSTICAS DO SOFTWARE
Boa Comunicação? Por quê?
QUALIDADE..
FALHAS EM SOFTWARE
Ariane
Custo: $500 milhões
Desastre: Ariane 5, o mais novo foguete da Europa não-
tripulado, foi intencionalmente destruído segundos após
seu lançamento em seu vôo inaugural. Também foram
destruídos quatro satélites científicos para estudar como
o campo magnético da Terra interage com os ventos
solares.
Causa: O desligamento ocorreu quando o computador de
orientação tentou converter a velocidade do foguete de 64-
bits para um formato de 16 bits. O número era muito
grande, o que resultou em erro de estouro. Quando o
sistema de orientação desligou, o controle passou para
uma unidade idêntica redundante, que também falhou
porque nele estava correndo o mesmo algoritmo.
FALHAS EM SOFTWARE
3ª Guerra Mundial (Quase!) (1983)
Custo: Quase toda a humanidade
Desastre: O sistema de alerta soviético falsamente
indicou que os Estados Unidos tinham lançado cinco
mísseis balísticos. Felizmente, o oficial de serviço
soviético tinha uma “sensação esquisita no estômago” e
fundamentalmente, se os EUA estavam realmente
atacando, eles lançariam mais de cinco mísseis, por
isso ele relatou o aparente ataque como um alarme
falso.
Causa: Um bug no software soviético falhou ao
detectar reflexos solares como falsos mísseis.
QUALIDADE?
CARACTERÍSTICAS DO SOFTWARE
O software é um elemento de um sistema
lógico e não de um sistema físico..
O software é desenvolvido; não é fabricado no
sentido clássico.
O software não se desgasta: o software não é
suscetível aos males ambientais que causam
desgastes.
Natureza “MUTÁVEL”
do SW
ATRIBUTOS DE UM BOM SOFTWARE
Facilidade de manutenção: um software deve ser
escrito de modo que possa evoluir para atender as
necessidades mutáveis dos clientes.
Nível de confiança: incluem confiabilidade,
proteção e segurança. Um software confiável não
deve ocasionar danos físicos ou econômicos, no caso
de defeito no sistema.
Eficiência: inclui rapidez de resposta, o tempo de
processador, a utilização da memória, entre outros.
Facilidade de uso: deve dispor de interface
apropriada com o usuário e de documentação
adequada.
APLICAÇÕES DE SOFTWARE
● industrial automation
● business software
● video games
● telecommunications (i.e., the Internet and everything
that flows on it)
● databases
● educational software
● medical software
● image editing
● simulation software, word processing e Decision
making software
IMPORTÂNCIA DO SOFTWARE
● 98% dos microprocessadores não estão
nos computadores, mas embutidos em
produtos
MERCADO DO SOFTWARE
● 2008: U$303bi
● 2013: U$457bi
● 40% em 5 anos!!!
● Carros modernos da GM possuem 100 milhões
de linha de código e mais de 30
microprocessadores.
● Modernos celulares possuem 20 milhões de
linha de código.
CRISE DO SOFTWARE
● Conferência da NATO (1968) – Crise de
Software
– Preço do hardware cai
– Maior demanda por software
– Baixa produtividade e qualidade: Projetos abandonados,
Módulos que não operam corretamente quando combinados, Sistemas tão difíceis de
usar que são descartados, Sistemas que simplesmente param de funcionar., etc.
● Resultado:
– Software entregue fora do prazo e com maior custo
– Grandes falhas
CRISE DO SOFTWARE - SOLUÇÃO
● Métodos e técnicas: como fazer (processo de
software).
– Combinar métodos para a fase de
desenvolvimento.
– Ferramentas para automatizar estes métodos.
● Técnicas para assegurar qualidade (Engenharia
de Software).
● Interesse do governo em treinamentos e
educação
POR QUE ENGENHARIA DE SOFTWARE?
● Termo criado em 1968
● Ideia de usar processos e métodos bem
definidos, quantificáveis, formais, para
desenvolvimento de software
● Aplicação de conceitos de engenharia ao
desenvolvimento de software
● Definições:
ENGENHARIA DE SOFTWARE
● “Aplicação de uma abordagem
sistemática, disciplinada e quantificável
para o desenvolvimento, operação e
manutenção do software”.
IEEE
ENGENHARIA DE SOFTWARE
● “Engenharia é a aplicação sistemática de
conhecimentos científicos na criação e
construção de soluções com um bom
custo-benefício para a resolução de
problemas práticos da sociedade”.
SEI
ÁREAS DA ENGENHARIA DE SOFTWARE
PRODUTO E PROCESSO DE SOFTWARE
A engenharia de software abrange um
conjunto de elementos Métodos: fornecem os detalhes de como fazer para
construir softwares...
Ferramentas: apoio automatizado ou semi-automatizado.
Procedimentos: definem a sequência em que os métodos
são aplicados, os produtos a serem disponibilizados,
controles de qualidade e avaliação.
Paradigmas: abordagem ou filosofia em particular para a
construção de software.
RESPONSABILIDADE E ÉTICA
RESPONSABILIDADE E ÉTICA
Dilemas/Pontos de vista divergentes
Discordar políticas da alta gerência?
Relatar problemas com o software?
Liberação de sw sem testes?
SW militares/nucleares?
MITOS DO SOFTWARE?
● “Se nos atrasarmos no planejamento,
podemos adicionar mais programadores”.
● “O estabelecimento geral de objetivos é
suficiente para iniciar o desenvolvimento do
software – podemos fornecer os detalhes
posteriormente”.
MITOS DO SOFTWARE
● “Quando escrevemos um programa e o
fazemos funcionar, nosso trabalho está
completo”.
● “Até que eu esteja com o programa
funcionando não tenho como avaliar sua
qualidade ”.
PRINCÍPIOS DE SOFTWARE
Objetivo SUCESSO no desenvolvimento
Envolve tanto PRODUTO quanto PROCESSO
GENÉRICOS
INDEPENDENTES de linguagem/BD/SO e etc…
Princípios de Software: “declarações gerais e
abstratas que descrevem as propriedades
desejadas dos processos de desenvolvimento e dos
produtos de software”.
PRINCÍPIOS DE SOFTWARE
PRINCÍPIOS DE SOFTWARE
Rigor e Formalismo
Desenvolvimento SW artesanal
CRIATIVO
INSPIRAÇÃO
RIGOR
Complemento à criatividade …
PRINCÍPIOS DE SOFTWARE
Modularização
Modular??
Dividir complexidade …
Facilitar manutenção
Bastante COESÃO
Pouca INTERRELAÇÃO
PRINCÍPIOS DE SOFTWARE
Abstração
Acompanha todo e qualquer processo de
implementação ou programação.
As linguagens de programação que
utilizamos nada mais são do que
construções abstratas para representar
soluções ou interagir com o hardware.
PRINCÍPIOS DE SOFTWARE
Generalização versus Decomposição
Focar na descoberta de um problema mais
geral que possa existir por trás do problema.
Capacidade de solucionar problemas mais e
associa-los em módulos comuns.
Reusabilidade (outro príncipio)
PRINCÍPIOS DE SOFTWARE
Incrementabilidade
A incrementabilidade é o princípio que
busca a perfeição ou a obtenção dos
objetivos através de passos que evoluem
(ou são incrementados) ao longo do tempo.