SlideShare uma empresa Scribd logo
1 de 26
Professor Roberto Nunes
FUNDAMENTOS DA
ENGENHARIA DE SOFTWARE
Visão geral da
Engenharia de Software
Engenharia (do latim ingeniu = “faculdade inventiva, talento”) é a arte, a
ciência e a técnica de bem conjugar os conhecimentos especializados
(científicos) de uma dada área do saber com a sua viabilidade técnico-
econômica, para produzir novas utilidades e/ ou transformar a natureza,
em conformidade com ideias bem planejadas. Pense em um mundo sem
eletrônica. Difícil, não é mesmo? Pois saiba que a grande maioria desses
produtos são desenvolvidos com o conhecimento que teremos nesta
disciplina.
O software envolve não somente o conjunto de programas ou código
fonte da aplicação, mas também toda documentação associada gerada
durante o processo de desenvolvimento.
Visão geral da
Engenharia de Software
Há décadas, aplicações de software participam da realização e controle
de praticamente todas as atividades na nossa volta. O inesgotável
avanço da tecnologia e o aumento constante da exigência dos usuários
fazem com que sistemas computacionais se tornem cada vez mais
complexos.
Neste contexto, o desenvolvimento e construção de sistemas que
atendam a estas demandas se tornam um desafio cada vez mais difícil
de ser alcançado. A Engenharia de Software é uma área da Ciência da
Computação relativamente nova, que surgiu para auxiliar neste
processo, visando o desenvolvimento de produtos de software com uma
boa relação entre custo e beneficio
Visão geral da
Engenharia de Software
A Engenharia de Software pode ser definida como uma disciplina que
utiliza um conjunto de métodos, técnicas e ferramentas para analisar,
projetar e gerenciar o desenvolvimento e manutenção de software,
visando produzir e manter software dentro de prazos, custos e
qualidade estimados.
Estes objetivos são alcançados através de uma abordagem sistemática
para o desenvolvimento, operação e descarte de software, aplicando a
prática de conhecimento científico ao projeto e construção de software.
Esta abordagem tem sua origem nos princípios propiciados pela
engenharia tradicional.
Visão geral da
Engenharia de Software
A Engenharia de Software objetiva o aumento da qualidade do
software, visando paralelamente uma maior produtividade da equipe
envolvida nas atividades de desenvolvimento e atingindo uma maior
satisfação por parte dos clientes.
A Engenharia de Software surgiu no contexto da chamada Crise do
Software quando, a partir do avanço tecnológico e a consequente
redução de custos na aquisição de computadores domésticos, houve um
aumento na demanda de software para um mercado profissional que
não estava preparado para atender a essa nova realidade.
Visão geral da
Engenharia de Software
Esta crise teve lugar na década dos 70´s, e foi constatada por um gargalo
no processo de desenvolvimento de software, onde a oferta de mão de
obra capacitada não conseguia atender à demanda. Algumas
consequências deste processo foram:
• Custos elevados;
• Atrasos na entrega;
• Baixa confiabilidade e corretude do produto;
• Dificuldade de medição;
• Gerência do desenvolvimento ineficaz;
• Alta demanda não atendida;
• Difícil manutenção do software existente.
Visão geral da
Engenharia de Software
Na busca por soluções às demandas, pesquisadores, desenvolvedores e
demais profissionais se reuniram na Conferência sobre Engenharia de
Software da OTAN (Organização do Tratado do Atlântico Norte), em
1968, onde o conceito e atribuições da Engenharia de Software foram
oficialmente estabelecidos. A criação desta nova área surgiu em uma
tentativa de contornar a crise do software e dar um tratamento de
engenharia (mais sistemático e controlado) ao desenvolvimento de
sistemas de software complexos.
Um sistema de software complexo se caracteriza por um conjunto de
componentes de software abstratos (estruturas de dados e algoritmos)
encapsulados na forma de procedimentos, funções, módulos, objetos
ou agentes e interconectados entre si, que deverão ser executados em
sistemas computacionais. O conjunto destes componentes e suas
interconexões determina a arquitetura do software.
Evolução do Software
(1950 - 1965)
• O hardware sofreu contínuas mudanças
• O software era uma arte "secundária“ para a qual havia poucos
métodos sistemáticos
• O hardware era de propósito geral
• O software era específico para cada aplicação
• Não havia documentação
Evolução do Software
(1965 - 1975)
• Multiprogramação e sistemas multiusuários
• Sistemas de tempo real
• 1a geração de SGBD’s
• Produto de software - software houses
• Bibliotecas de software
• Cresce o número de sistemas baseado em computador
• Manutenção quase impossível
• ..... CRISE DE SOFTWARE
Evolução do Software
(1975 - 2005)
• Sistemas distribuídos
• Redes locais e globais
• Uso generalizado de microprocessadores
• produtos inteligentes
• Hardware de baixo custo
• Impacto de consumo
Evolução do Software
Atualmente
• Tecnologias orientadas o objetos
• Sistemas especialistas e software de
• inteligência artificial usados na prática
• Software de rede neural artificial
• Computação paralela
• Várias outras tecnologias
Processo de Software
É um conjunto de atividades e resultados que geram um produto de
software
Ha 4 atividades fundamentais – comuns a todos os processos de
software
1. Especificação: definição das funcionalidades e restrições
2. Desenvolvimento: o software deve ser produzido de forma a
atender as especificações
3. Validação: garantia de que o software faz o que o cliente
deseja
4. Evolução: o software deve evoluir para
atender as necessidades mutáveis dos clientes
Diferentes organizações podem utilizar processos diferentes para
produzir o mesmo tipo de produto
Processo de Software
É uma representação simplificada de um processo de software,
apresentada a partir de uma perspectiva especifica.
Um modelo de processo de software define a sequencia em que as
atividades do processo serão realizadas
Exemplos de Modelos de Processo de Software
– Modelo em Cascata (Ciclo de Vida Clássico)
– Desenvolvimento Formal (Transformação formal)
– Desenvolvimento Evolucionário
– Desenvolvimento Orientado a Reuso (Montagem de um sistema a
partir de componentes reutilizáveis)
Engenharia de Software
baseada em componentes
• Baseia-se na existência de um numero significativo de componentes
reutilizáveis
• O processo de desenvolvimento de sistemas se concentra na
integração desses componentes em um sistema, em vez de partir do
zero
• Desenvolvimento Baseado em Componentes
Custos da Engenharia de
Software
• A distribuição dos custos ao longo do processo de software depende
do modelo de processo utilizado e do tipo de software que esta
sendo desenvolvido
• Aproximadamente 60% dos custos são relacionados ao
desenvolvimento e 40% são referentes aos testes
• para software personalizado (com um longo ciclo de duração), os
custos de evolução normalmente excedem os custos de
desenvolvimento
• Software genérico → normalmente tem custo de especificação baixo,
porem devem ser extensivamente testados
Métodos da Engenharia de
Software
• Baseiam-se na ideia de desenvolver modelos de um sistema que
possam ser representados graficamente e de utilizar esses modelos
como uma especificação ou projeto de software
• Métodos
 Analise Estruturada
 Orientados a Objetos (UML – Unified Modeling Language –
Linguagem de Modelagem Unificada)
Ferramenta CASE
(Computer-Aided Software Engineering)
• É um software destinado a proporcionar apoio automatizado as
atividades de processo de software, como a analise de requisitos,
modelagem do sistema, depuração e testes
• Alguns exemplos de ferramentas CASE
 RequisitePro
 DrCase
 Rational Rose
 Astah
Quais são os principais desafios enfrentados
pela engenharia de software?
• Desafio da heterogeneidade  desenvolver técnicas para construir
softwares confiáveis, que sejam flexíveis para atender diferentes
tipos de computadores e diferentes sistemas de apoio
• Desafio da entrega  reduzir tempo para entrega de sistemas
grandes e complexos, sem comprometer a qualidade
• Desafio da confiança  desenvolver técnicas que demonstrem que o
software pode ter a confiança dos seus usuários
A prática da
Engenharia de Software
A essência da pratica:
• Compreenda o problema
• Planeje a solução
• Execute
• Monitore
• Examine o resultado
A prática da
Engenharia de Software
Princípios gerais
(1) A razão de existir → usuário e suas demandas
(2) KISS (Keep It Simple, Stupid!) → o ótimo é inimigo do bom!
(3) Mantenha a visão → foco no escopo do projeto e preserve a
convergência dos artefatos
(4) O que um produz, outros consomem
(5) Pensem no futuro → software não e produto perecível!
(6) Planeje, reutilize
(7) Pense antes de agir
Mitos relativos ao Software
Mitos de gerenciamento:
• Já temos um livro sobre padrões e procedimentos → isso supre meu
pessoal do que eles precisam saber
• Se o cronograma atrasar, poderemos acrescentar mais
programadores e ficamos em dia → horda mongol
• Se eu decidir terceirizar o projeto de software, posso simplesmente
relaxar e deixar essa empresa realiza-lo
Mitos relativos ao Software
Mitos dos Clientes:
• Uma definição geral dos objetivos e suficiente para começar a
escrever os programas → podemos preencher detalhes
posteriormente
• Os requisitos de software mudam continuamente, mas as mudanças
podem ser facilmente
Mitos relativos ao Software
Mitos dos Clientes:
• Uma vez desenvolvido o software e colocado em uso, nosso trabalho
esta terminado
• Até que o software entre em operação, não há maneira de avaliar sua
qualidade
• O único produto passível de entrega e código executável
• A engenharia de software nos fará criar documentação volumosa e
desnecessária, e invariavelmente, produzira atraso no cronograma
Os profissionais da
Engenharia de Software
• Analista de Negócios
• Analista de Sistemas
• Programador / Analista de Desenvolvimento
• Analista de Testes
• Analista de Qualidade
• Analista de Suporte / Analista de infraestrutura
• Administrador de Banco de Dados
• Administrador de Rede
• Gerente de Projeto
Referências
• PRESMANN, R. Engenharia de Software: uma abordagem
profissional. 7. ed. Rio de Janeiro: Mc Graw Hill, 2011. Cap. 1
• SOMMERVILLE, I. Engenharia de Software. 8. ed. Rio de Janeiro:
Pearson, 2007. Cap. 1 e 2.
Obrigado!
Bons Estudos.

Mais conteúdo relacionado

Mais procurados

Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Softwareelliando dias
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareElaine Cecília Gatto
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introduçãomiroslayer
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Cloves da Rocha
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Renato Leal
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSLuiz Ladeira
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Erivelton Silva Rocha
 

Mais procurados (20)

Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
152191 11993
152191 11993152191 11993
152191 11993
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de Software
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introdução
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Analise aula2
Analise aula2Analise aula2
Analise aula2
 
Aula 02
Aula 02Aula 02
Aula 02
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1
 
Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 

Semelhante a Fundamentos da Engenharia de Software

Es aula01
Es   aula01Es   aula01
Es aula01Itaú
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)Tiago Vizoto
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentaisWaldemar Roberti
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3spawally
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Aula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfAula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfJadna Almeida
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9wilsonguns
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASOs Fantasmas !
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareVinicius Garcia
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxMarcondesTiburcio
 
Introdução a Engenharia de Software.pdf
Introdução a Engenharia de Software.pdfIntrodução a Engenharia de Software.pdf
Introdução a Engenharia de Software.pdfIvanFontainha
 

Semelhante a Fundamentos da Engenharia de Software (20)

Es aula01
Es   aula01Es   aula01
Es aula01
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
Aula1.pdf
Aula1.pdfAula1.pdf
Aula1.pdf
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
P2_Aula1-convertido.pptx
P2_Aula1-convertido.pptxP2_Aula1-convertido.pptx
P2_Aula1-convertido.pptx
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Aula1 dia 22 02 2022.pdf
Aula1  dia 22 02 2022.pdfAula1  dia 22 02 2022.pdf
Aula1 dia 22 02 2022.pdf
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3
 
Crise de software2
Crise de software2Crise de software2
Crise de software2
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Aula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfAula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdf
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de Software
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptx
 
Introdução a Engenharia de Software.pdf
Introdução a Engenharia de Software.pdfIntrodução a Engenharia de Software.pdf
Introdução a Engenharia de Software.pdf
 

Fundamentos da Engenharia de Software

  • 1. Professor Roberto Nunes FUNDAMENTOS DA ENGENHARIA DE SOFTWARE
  • 2. Visão geral da Engenharia de Software Engenharia (do latim ingeniu = “faculdade inventiva, talento”) é a arte, a ciência e a técnica de bem conjugar os conhecimentos especializados (científicos) de uma dada área do saber com a sua viabilidade técnico- econômica, para produzir novas utilidades e/ ou transformar a natureza, em conformidade com ideias bem planejadas. Pense em um mundo sem eletrônica. Difícil, não é mesmo? Pois saiba que a grande maioria desses produtos são desenvolvidos com o conhecimento que teremos nesta disciplina. O software envolve não somente o conjunto de programas ou código fonte da aplicação, mas também toda documentação associada gerada durante o processo de desenvolvimento.
  • 3. Visão geral da Engenharia de Software Há décadas, aplicações de software participam da realização e controle de praticamente todas as atividades na nossa volta. O inesgotável avanço da tecnologia e o aumento constante da exigência dos usuários fazem com que sistemas computacionais se tornem cada vez mais complexos. Neste contexto, o desenvolvimento e construção de sistemas que atendam a estas demandas se tornam um desafio cada vez mais difícil de ser alcançado. A Engenharia de Software é uma área da Ciência da Computação relativamente nova, que surgiu para auxiliar neste processo, visando o desenvolvimento de produtos de software com uma boa relação entre custo e beneficio
  • 4. Visão geral da Engenharia de Software A Engenharia de Software pode ser definida como uma disciplina que utiliza um conjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar o desenvolvimento e manutenção de software, visando produzir e manter software dentro de prazos, custos e qualidade estimados. Estes objetivos são alcançados através de uma abordagem sistemática para o desenvolvimento, operação e descarte de software, aplicando a prática de conhecimento científico ao projeto e construção de software. Esta abordagem tem sua origem nos princípios propiciados pela engenharia tradicional.
  • 5. Visão geral da Engenharia de Software A Engenharia de Software objetiva o aumento da qualidade do software, visando paralelamente uma maior produtividade da equipe envolvida nas atividades de desenvolvimento e atingindo uma maior satisfação por parte dos clientes. A Engenharia de Software surgiu no contexto da chamada Crise do Software quando, a partir do avanço tecnológico e a consequente redução de custos na aquisição de computadores domésticos, houve um aumento na demanda de software para um mercado profissional que não estava preparado para atender a essa nova realidade.
  • 6. Visão geral da Engenharia de Software Esta crise teve lugar na década dos 70´s, e foi constatada por um gargalo no processo de desenvolvimento de software, onde a oferta de mão de obra capacitada não conseguia atender à demanda. Algumas consequências deste processo foram: • Custos elevados; • Atrasos na entrega; • Baixa confiabilidade e corretude do produto; • Dificuldade de medição; • Gerência do desenvolvimento ineficaz; • Alta demanda não atendida; • Difícil manutenção do software existente.
  • 7. Visão geral da Engenharia de Software Na busca por soluções às demandas, pesquisadores, desenvolvedores e demais profissionais se reuniram na Conferência sobre Engenharia de Software da OTAN (Organização do Tratado do Atlântico Norte), em 1968, onde o conceito e atribuições da Engenharia de Software foram oficialmente estabelecidos. A criação desta nova área surgiu em uma tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes de software abstratos (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, que deverão ser executados em sistemas computacionais. O conjunto destes componentes e suas interconexões determina a arquitetura do software.
  • 8. Evolução do Software (1950 - 1965) • O hardware sofreu contínuas mudanças • O software era uma arte "secundária“ para a qual havia poucos métodos sistemáticos • O hardware era de propósito geral • O software era específico para cada aplicação • Não havia documentação
  • 9. Evolução do Software (1965 - 1975) • Multiprogramação e sistemas multiusuários • Sistemas de tempo real • 1a geração de SGBD’s • Produto de software - software houses • Bibliotecas de software • Cresce o número de sistemas baseado em computador • Manutenção quase impossível • ..... CRISE DE SOFTWARE
  • 10. Evolução do Software (1975 - 2005) • Sistemas distribuídos • Redes locais e globais • Uso generalizado de microprocessadores • produtos inteligentes • Hardware de baixo custo • Impacto de consumo
  • 11. Evolução do Software Atualmente • Tecnologias orientadas o objetos • Sistemas especialistas e software de • inteligência artificial usados na prática • Software de rede neural artificial • Computação paralela • Várias outras tecnologias
  • 12. Processo de Software É um conjunto de atividades e resultados que geram um produto de software Ha 4 atividades fundamentais – comuns a todos os processos de software 1. Especificação: definição das funcionalidades e restrições 2. Desenvolvimento: o software deve ser produzido de forma a atender as especificações 3. Validação: garantia de que o software faz o que o cliente deseja 4. Evolução: o software deve evoluir para atender as necessidades mutáveis dos clientes Diferentes organizações podem utilizar processos diferentes para produzir o mesmo tipo de produto
  • 13. Processo de Software É uma representação simplificada de um processo de software, apresentada a partir de uma perspectiva especifica. Um modelo de processo de software define a sequencia em que as atividades do processo serão realizadas Exemplos de Modelos de Processo de Software – Modelo em Cascata (Ciclo de Vida Clássico) – Desenvolvimento Formal (Transformação formal) – Desenvolvimento Evolucionário – Desenvolvimento Orientado a Reuso (Montagem de um sistema a partir de componentes reutilizáveis)
  • 14. Engenharia de Software baseada em componentes • Baseia-se na existência de um numero significativo de componentes reutilizáveis • O processo de desenvolvimento de sistemas se concentra na integração desses componentes em um sistema, em vez de partir do zero • Desenvolvimento Baseado em Componentes
  • 15. Custos da Engenharia de Software • A distribuição dos custos ao longo do processo de software depende do modelo de processo utilizado e do tipo de software que esta sendo desenvolvido • Aproximadamente 60% dos custos são relacionados ao desenvolvimento e 40% são referentes aos testes • para software personalizado (com um longo ciclo de duração), os custos de evolução normalmente excedem os custos de desenvolvimento • Software genérico → normalmente tem custo de especificação baixo, porem devem ser extensivamente testados
  • 16. Métodos da Engenharia de Software • Baseiam-se na ideia de desenvolver modelos de um sistema que possam ser representados graficamente e de utilizar esses modelos como uma especificação ou projeto de software • Métodos  Analise Estruturada  Orientados a Objetos (UML – Unified Modeling Language – Linguagem de Modelagem Unificada)
  • 17. Ferramenta CASE (Computer-Aided Software Engineering) • É um software destinado a proporcionar apoio automatizado as atividades de processo de software, como a analise de requisitos, modelagem do sistema, depuração e testes • Alguns exemplos de ferramentas CASE  RequisitePro  DrCase  Rational Rose  Astah
  • 18. Quais são os principais desafios enfrentados pela engenharia de software? • Desafio da heterogeneidade  desenvolver técnicas para construir softwares confiáveis, que sejam flexíveis para atender diferentes tipos de computadores e diferentes sistemas de apoio • Desafio da entrega  reduzir tempo para entrega de sistemas grandes e complexos, sem comprometer a qualidade • Desafio da confiança  desenvolver técnicas que demonstrem que o software pode ter a confiança dos seus usuários
  • 19. A prática da Engenharia de Software A essência da pratica: • Compreenda o problema • Planeje a solução • Execute • Monitore • Examine o resultado
  • 20. A prática da Engenharia de Software Princípios gerais (1) A razão de existir → usuário e suas demandas (2) KISS (Keep It Simple, Stupid!) → o ótimo é inimigo do bom! (3) Mantenha a visão → foco no escopo do projeto e preserve a convergência dos artefatos (4) O que um produz, outros consomem (5) Pensem no futuro → software não e produto perecível! (6) Planeje, reutilize (7) Pense antes de agir
  • 21. Mitos relativos ao Software Mitos de gerenciamento: • Já temos um livro sobre padrões e procedimentos → isso supre meu pessoal do que eles precisam saber • Se o cronograma atrasar, poderemos acrescentar mais programadores e ficamos em dia → horda mongol • Se eu decidir terceirizar o projeto de software, posso simplesmente relaxar e deixar essa empresa realiza-lo
  • 22. Mitos relativos ao Software Mitos dos Clientes: • Uma definição geral dos objetivos e suficiente para começar a escrever os programas → podemos preencher detalhes posteriormente • Os requisitos de software mudam continuamente, mas as mudanças podem ser facilmente
  • 23. Mitos relativos ao Software Mitos dos Clientes: • Uma vez desenvolvido o software e colocado em uso, nosso trabalho esta terminado • Até que o software entre em operação, não há maneira de avaliar sua qualidade • O único produto passível de entrega e código executável • A engenharia de software nos fará criar documentação volumosa e desnecessária, e invariavelmente, produzira atraso no cronograma
  • 24. Os profissionais da Engenharia de Software • Analista de Negócios • Analista de Sistemas • Programador / Analista de Desenvolvimento • Analista de Testes • Analista de Qualidade • Analista de Suporte / Analista de infraestrutura • Administrador de Banco de Dados • Administrador de Rede • Gerente de Projeto
  • 25. Referências • PRESMANN, R. Engenharia de Software: uma abordagem profissional. 7. ed. Rio de Janeiro: Mc Graw Hill, 2011. Cap. 1 • SOMMERVILLE, I. Engenharia de Software. 8. ed. Rio de Janeiro: Pearson, 2007. Cap. 1 e 2.