Upload
flavio-junior
View
4
Download
0
Embed Size (px)
DESCRIPTION
s
Citation preview
Monica de Souza Massa Março / 2015 slide 1
Fundamentos da Engenharia de Software
INTRODUÇÃO À ENGENHARIA DE
SOFTWARE
Monica de Souza Massa Março / 2015 slide 2
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
O QUE É
Engenharia de Software ?
Monica de Souza Massa Março / 2015 slide 3
Fundamentos da Engenharia de Software
Objetivos:
Identificar os problemas envolvidos com o desenvolvimento de software.
Analisar as causas destes problemas.
Propor soluções economicamente viáveis para a resolução destes problemas.
Organizar o conhecimento sobre as diversas técnicas e métodos para o desenvolvimento de software.
Surgimento do termo Engenharia de Software...
Otan 1968
Monica de Souza Massa Março / 2015 slide 4
Fundamentos da Engenharia de Software
Algumas Definições:
ENGENHARIA DE SOFTWARE
“O estabelecimento e uso de um conjunto de princípios de engenharia com o objetivo de se construir software confiável, eficiente e economicamente viável em máquinas reais.” Fritz Bauer
“ Aplicação prática do conhecimento científico no projeto e construção de programas e de documentação requerida para desenvolver, operar e manter estes programas.” Barry Boehm
“É a aplicação de uma abordagem sistemática, disciplinada e mensurável ao desenvolvimento, à operação e à manutenção de software”. IEEE (Institute of Eletric andEletronic Engineers)
Monica de Souza Massa Março / 2015 slide 5
Fundamentos da Engenharia de Software
“ A ES é uma disciplina da engenharia que se
ocupa de todos os aspectos da produção de
software, desde os estágios iniciais de especificação
do sistema até a manutenção deste, depois que
entrou em operação”.
Ian Sommerville
ENGENHARIA DE SOFTWARE
Aprofundando o entendimento do termo…
Monica de Souza Massa Março / 2015 slide 6
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
Disciplina de engenharia...
1. os engenheiros fazem os produtos funcionarem
2. Os engenheiros aplicam teorias., métodos e ferramentas para desenvolver os produtos
3. Os engenheiros reconhecem que precisam trabalhar de acordo com diretrizes organizacionais e restrições orçamentárias
Aprofundando o entendimento do termo…
Monica de Souza Massa Março / 2015 slide 7
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
Todos os aspectos da produção de software...
1. a ES não se dedica apenas aos processos técnicos de desenvolvimento de software
2. também são consideradas atividades como gerenciamento de projetos, desenvolvimento de métodos e teorias que dêem suporte à produção do software
Aprofundando o entendimento do termo…
Monica de Souza Massa Março / 2015 slide 8
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
EXERCÍCIO
Construção de uma casa X Construção de um software
Monica de Souza Massa Março / 2015 slide 9
Fundamentos da Engenharia de Software
MAS ... O QUE É SOFTWARE?
Monica de Souza Massa Março / 2015 slide 10
Fundamentos da Engenharia de Software
Instruções (programas de computador) que, quando executadas, produzem a função e desempenho desejados;
Estruturas de dados que permitem que os programas manipulem adequadamente a informação; e
Documentos que descrevem a operação e o uso de programas.
Pressman (2006)
MAS ... O QUE É SOFTWARE?
Monica de Souza Massa Março / 2015 slide 11
Fundamentos da Engenharia de Software
APLICAÇÕES DO SOFTWARE
Monica de Souza Massa Março / 2015 slide 12
Fundamentos da Engenharia de Software
1. é desenvolvido ( não é manufaturado no sentido clássico)
2. não se desgasta
3. a maioria é construída sob encomenda
CARACTERÍSTICAS DO SOFTWARE
... O que diferencia o SW do HW...
Monica de Souza Massa Março / 2015 slide 13
Fundamentos da Engenharia de Software
HISTÓRICO Tempo de vida – pouco mais de meio século (aprox. seis décadas)
Início (década de 60)
Programação considerada uma espécie de arte.
Altos custos de hardware encobrem os custos de software.
Projeto no cérebro de uma pessoa.
Software feito sob medida.
Produtos pouco complexos e orientados para resolver problemas específicos.
Sem documentação.
Softwares construídos por pequenas equipes.
Monica de Souza Massa Março / 2015 slide 14
Fundamentos da Engenharia de Software
EXERCÍCIO: construção de uma linha da vida sobre a Engenharia de Software nos últimos 50 anos
Fatores que mudaram a prática da ES nos últimos 50 anos
HISTÓRICO
A Evolução do Software
Monica de Souza Massa Março / 2015 slide 15
Fundamentos da Engenharia de Software
HISTÓRICOA Evolução do Software
Os primeiros anos (1950 a início dos 60)
- Aplicações científicas e de engenharia
A segunda era (1960 a meados de 80)
- Aplicações comerciais em grande-porte (sistemas de informação BD)
A terceira era (meados de 70 e década de 80)
- Aplicativos pessoais em microcomputadores
A quarta era (meados de 80 a meados de 90)
- Aplicativos com Interfaces Gráficas - Redes e Arquitetura Cliente- Servidor
A quinta era (de meados de 90 a ???)
- Software Distribuídos, Internet, Groupware e Intranets
Sexta era??
- Computação Pervasiva, Móvel e Ubíqua
Monica de Souza Massa Março / 2015 slide 16
Fundamentos da Engenharia de Software
HISTÓRICOA Evolução do Software
1950-1970: Desafio principal era desenvolver Hardware •Reduzir o custo de processamento e armazenamento de dados
Hoje: Reduzir o custo e melhorar a qualidade dos Softwares (potencial da computação)
•Impacto na sociedade e cultura é profundo!!!!!! •O software atingiu as grandes massas; tomada de decisões nos negócios, base para a pesquisa científica, solução de problemas de engenharia e telecomunicações, funcionalidade. •Comunidade de Software objetiva desenvolver tecnologias para facilitar o projeto de softwares de alta qualidade
Monica de Souza Massa Março / 2015 slide 17
Fundamentos da Engenharia de Software
Mitos sobre o gerenciamento do software
Mitos sobre o cliente
Mitos sobre o Engenheiro de Software
ENGENHARIA DE SOFTWARE
Mitos do Software
Monica de Souza Massa Março / 2015 slide 18
Fundamentos da Engenharia de Software
Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?
Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete as práticas modernas de desenvolvimento de SW? Ele é completo?
Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete as práticas modernas de desenvolvimento de SW? Ele é completo?
ENGENHARIA DE SOFTWARE
Mitos sobre o gerenciamento do Software
Monica de Souza Massa Março / 2015 slide 19
Fundamentos da Engenharia de Software
Se eu decidir terceirizar o projeto de software, posso então relaxar e deixar que a firma contratada construa-o.
Realidade: Se uma organização não entende cono gerenciar e controlar internamente seus projetos de software, isso vai se potencializar quando um rojeto for terceirizado.
Realidade: Se uma organização não entende cono gerenciar e controlar internamente seus projetos de software, isso vai se potencializar quando um rojeto for terceirizado.
ENGENHARIA DE SOFTWARE
Mitos sobre o gerenciamento do Software
Monica de Souza Massa Março / 2015 slide 20
Fundamentos da Engenharia de Software
Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso.
Realidade:
O desenvolvimento de software não é um processo mecânico igual à manufatura.
Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.
Realidade:
O desenvolvimento de software não é um processo mecânico igual à manufatura.
Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.
ENGENHARIA DE SOFTWARE
Mitos sobre o gerenciamento do Software
Monica de Souza Massa Março / 2015 slide 21
Fundamentos da Engenharia de Software
Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde.
Realidade:
Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software.
É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.
Realidade:
Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software.
É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.
ENGENHARIA DE SOFTWARE
Mitos sobre o cliente
Monica de Souza Massa Março / 2015 slide 22
Fundamentos da Engenharia de Software
Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.
Realidade:
Uma mudança, quando solicitada tardiamente num projeto, pode ser maior do que mais do que uma ordem de magnitude mais dispendiosa do que a mesma mudança solicitada nas fases iniciais.
Realidade:
Uma mudança, quando solicitada tardiamente num projeto, pode ser maior do que mais do que uma ordem de magnitude mais dispendiosa do que a mesma mudança solicitada nas fases iniciais.
ENGENHARIA DE SOFTWARE
Mitos sobre o cliente
Monica de Souza Massa Março / 2015 slide 23
Fundamentos da Engenharia de Software
Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará feito.
Realidade:
Os dados da indústria indicam que entre 60 e 80% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.
Realidade:
Os dados da indústria indicam que entre 60 e 80% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.
ENGENHARIA DE SOFTWARE
Mitos sobre o Engenheiro de Software
Monica de Souza Massa Março / 2015 slide 24
Fundamentos da Engenharia de Software
Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.
Realidade:
Uma das melhores mecanismos de garantia de qualidade de um software pode ser aplicado desde a sua fase inicial – é a revisão técnica.
Realidade:
Uma das melhores mecanismos de garantia de qualidade de um software pode ser aplicado desde a sua fase inicial – é a revisão técnica.
ENGENHARIA DE SOFTWARE
Mitos sobre o Engenheiro de Software
Monica de Souza Massa Março / 2015 slide 25
Fundamentos da Engenharia de Software
O único produto de um projeto de software bem sucedido entregue ao cliente é o conjunto de programas rodando corretamente.
Realidade:
Um programa funcionando é somente uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.
Realidade:
Um programa funcionando é somente uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.
ENGENHARIA DE SOFTWARE
Mitos sobre o Engenheiro de Software
Monica de Souza Massa Março / 2015 slide 26
Fundamentos da Engenharia de Software
A engenharia de software nos fará criar um volume desnecessário de documentação, que invariavelmente implicará na demora de execucáo e entrega do projeto.
Realidade:
ES nào tem por objetivo criar documentos e sim criar qualidade, que implica na redução do retrabalho. Consequentemente o projeto será entregue mais rápido.
Realidade:
ES nào tem por objetivo criar documentos e sim criar qualidade, que implica na redução do retrabalho. Consequentemente o projeto será entregue mais rápido.
ENGENHARIA DE SOFTWARE
Mitos sobre o Engenheiro de Software
Monica de Souza Massa Março / 2015 slide 27
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
Estatísticas (The Standish Group)
19% dos projetos de software são terminados com sucesso.
52,2% dos projetos são concluídos com atrasos ou acima do orçamento.
31,1% são cancelados.
Monica de Souza Massa Março / 2015 slide 28
Fundamentos da Engenharia de Software
Aumento de complexidade do software.
Estimativas imprecisas de prazo e de custo.
Produtividade do pessoal envolvido não acompanha demanda por produção (aumento “backlog”)
Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)
Dificuldade de comunicação cliente X desenvolvedor.
Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:
CRISE DO SOFTWARE
Monica de Souza Massa Março / 2015 slide 29
Fundamentos da Engenharia de Software
Cliente insatisfeito com produto final.
Problemas com manutenção do software produzido.
Falta de tempo para coletar dados sobre o software e seu processo de desenvolvimento, o que implica em análise fraca de requisitos.
Falta de planejamento e de acompanhamento dos projetos.
Não é dada a devida importância aos testes de software sistemáticos e tecnicamente completos.
Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:
CRISE DO SOFTWARE
Monica de Souza Massa Março / 2015 slide 30
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
CRISE OU AFLIÇÃO CRÔNICA ???
Monica de Souza Massa Março / 2015 slide 31
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
Crise – “ponto de inflexão ao longo de determinada coisa; momento, estágio ou evento decisivo ou crucial”.
CRISE OU AFLIÇÃO CRÔNICA ???
Aflição – “qualquer coisa que causa dor ou desconforto”.
Crônica – “de longa duração o u que volta frequentemente”.
Monica de Souza Massa Março / 2015 slide 32
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE“The” Silver Bullet
No Silver Bullet – artigo escrito por F. Brooks em 1986
Monica de Souza Massa Março / 2015 slide 33
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE“The” Silver Bullet
No Silver Bullet – artigo escrito por F. Brooks em 1986
The SE Silver Bullet Conundrum – artigo escrito por D. Berry em 2008
balas de prata e balas de alumínio
sempre um novo desafio
temporalidade das balas de prata
There is no single development, in either technology or in management technique, that by itself promisses even one order-of-magnitude
improvement in productivity, in reliability, in simplicity.
(If this is true,) Bulding software will always be hard. There is inherently no silver bullet.
Monica de Souza Massa Março / 2015 slide 34
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE“The” Silver Bullet
No Silver Bullet – artigo escrito por F. Brooks em 1986
The SE Silver Bullet Conundrum – artigo escrito por D. Berry em 2008
balas de prata e balas de alumínio
sempre um novo desafio
temporalidade das balas de prata
Monica de Souza Massa Março / 2015 slide 35
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARESe não existe a famosa “Silver Bullet” como lidar com os problemas do dia a dia na construção de SW com qualidade?
Monica de Souza Massa Março / 2015 slide 36
Fundamentos da Engenharia de Software
ENGENHARIA DE SOFTWARE
Abordagem de resolução de problemas
Os Engenheiros de Software utilizam ferramentas,
técnicas, procedimentos e paradigmas para melhorar
a qualidade dos produtos de software e aumentar a
sua produtividade. O objetivo é utilizar abordagens
eficientes e produtivas para gerar soluçõs efetivas
para os problemas.
Monica de Souza Massa Março / 2015 slide 37
Fundamentos da Engenharia de Software
Oferece ao profissional base para construção do software com maior qualidade e produtividade e menor custo.
A ENGENHARIA DE SOFTWARE abrange um conjunto de
três elementos fundamentais: Métodos, Ferramentas e Procedimentos
ENGENHARIA DE SOFTWAREAbordagem de resolução de problemas
Monica de Souza Massa Março / 2015 slide 38
Fundamentos da Engenharia de Software
SWEBOK - Software Engineering Book of KnowledgeO QUE É?
síntese do conhecimento sobre ES.
descreve conhecimento em ES geralmente aceito pela comunidade profissional.
organizado pela IEEE – institute of eletric and eletronic engineers (obs: IEEE computer é a maior das 39 sociedades da IEEE com cerca de 100.000 membros).
patrocinado por empresas como a Rational, Boeing, SAP, etc.
Monica de Souza Massa Março / 2015 slide 39
Fundamentos da Engenharia de Software
SWEBOK - Software Engineering Book of KnowledgeOBJETIVOS
1. Promover uma visão consistente da engenharia de software em todo o mundo (cerca de 500 revisores de 42 países na versão 2004).
2. Definir as fronteiras de atuação da engenharia de software e as áreas de interseção com outras disciplinas como: engenharia da computação, ciência da computação, gestão de negócios, matemática, gerenciamento de projetos, gestão da qualidade, ergonomia (acessibilidade e usabilidade) e engenharia de sistemas.
Monica de Souza Massa Março / 2015 slide 40
Fundamentos da Engenharia de Software
SWEBOK - Software Engineering Book of KnowledgeOBJETIVOS
3. Caracterizar o conteúdo da disciplina engenharia de software, subdividindo-o hierarquicamente em áreas de conhecimento (AC).
4. Prover acesso por tópicos a base de conhecimento da engenharia de software (material de referência para cada AC).
5. Fornecer um alicerce para desenvolvimento do currículo. www.swebok.
org
Monica de Souza Massa Março / 2015 slide 41
Fundamentos da Engenharia de Software
SWEBOK - Software Engineering Book of KnowledgeÁREAS DE CONHECIMENTO1. Software Requirements (Requisitos)2. Software Design (Desenho/Projeto)3. Software Construction (Construção/Implementação)4. Software Testing (Testes)5. Software Maintenance (Manutenção)6. Software Configuration Management (Configuração)7. Software Engineering Management (Gerenciamento)8. Software Engineering Process (Processo)9. Software Engineering Tools and Methods (Ferramentas e Métodos)10. Software Quality ( Qualidade)