Prof. Ivan Fontainha
ivan.alvarenga@pitagoras.com.br
Engenharia de Software
2
Bibliografia
MAITINO NETO, Roque. Engenharia de Software.
Londrina: Editora e Distribuidora Educacional S.A., 2016.
SOMMERVILLE, Ian. Engenharia de software. 8. ed. São
Paulo: Pearson, 2007
PADUA FILHO, Wilson de Paula. Engenharia de
software: fundamentos, métodos e padrões. 3. ed. Rio
de Janeiro: LTC – Livros Técnicos e Científicos, 2009
PRESSMAN, Roger S. Engenharia de software : uma
abordagem
Profissional. 7ª. ed 2011.
Engenharia de Software
▪ Unidade 1: Fundamentos da Engenharia de Software:
▪ O que veremos nesta aula:
▪ Seção 1.1 – Introdução à Engenharia de software:
aspectos gerais, objetivos, evolução do software e
crise do software.
3
4
Engenharia de Software
O que é um software?
▪ O software é o conjunto de vários artefatos e não
apenas o código fonte (SOMMERVILLE).
▪ São instruções que, quando executadas, produzem a
função desejada pelo usuário.
▪ São estruturas de dados que possibilitam que os
programas manipulem as informações.
5
Engenharia de Software
Comparação entre Software e Hardware:
▪ O software pode ser desenvolvido (é a parte lógica do
computador) e o hardware se compra (é a parte física).
▪ Ao passar do tempo o software fica deteriorado,
ultrapassado e sua manutenção torna-se mais cara.
▪ Já para o hardware, realizar a manutenção é
simplesmente trocar à peça que esta em desgaste.
6
Engenharia de Software
O que é Engenharia de Software?
▪ Engenharia de software é uma disciplina cujo objetivo é
produzir software:
▪ isento de falhas,
▪ entregue dentro do prazo e orçamentos previstos,
▪ e que atenda às necessidades do cliente.
▪ O software desenvolvido deve ser fácil de ser
modificado quando as necessidades dos usuários
mudarem.
7
Engenharia de Software
O que é Engenharia de Software?
▪ A IEEE Computer Society (2004) define Engenharia de
software como: “A aplicação de uma abordagem
sistemática, disciplinada e quantificável de
desenvolvimento, operação e manutenção do software,
além do estudo dessas abordagens".
▪ “Engenharia de Software é a profissão dedicada a
projetar, implementar e modificar software, de forma que
ele seja de alta qualidade, a um custo razoável,
manutenível e rápido de construir.“ (LAPLANTE)
8
Engenharia de Software
O que é Engenharia de Software?
▪ Fica claro, então, que o objetivo da Engenharia de
Software é:
▪ a entrega de produto de qualidade,
▪ respeitados os prazos e
▪ os limites de despesas de recursos humanos e
financeiros.
9
Engenharia de Software (divisão)
10
Engenharia de Software
Crise do Software:
▪ Na década de 1960, alguns atores do processo de
desenvolvimento de software cunharam a expressão
“Crise do Software” na intenção de evidenciar o
momento adverso que a atividade atravessava.
▪ A crise de indicava um estado de incerteza ou
declínio e, de fato, esse era o retrato de um setor
inapto a atender demanda crescente por produção
de software.
11
Engenharia de Software
Crise do Software:
▪ Eram entregues programas que não funcionavam
corretamente, construídos por meio de processos
falhos e que não podiam passar por manutenção
facilmente.
▪ Tinham incerteza causada pela imprecisão nas
estimativas de custo e prazo afetava a confiança
das equipes e principalmente dos seus clientes.
12
Engenharia de Software
Vamos refletir nesta afirmação:
▪ “Com o crescimento desse segmento
(desenvolvimento de softwares) muitas empresas
possuem mais especialistas em TI em que cada
um tem sua responsabilidade no
desenvolvimento de software e é diferente de
antigamente que era um único profissional de
software que trabalhava sozinho numa sala.”
(PRESSMAN, 2006)
13
Engenharia de Software
▪ Ao passar do tempo, ninguém imaginava que o
software tornaria um elemento muito importante
para o mundo e teria a capacidade de manipular a
informação.
▪ Como muitos elementos computacionais tiveram
mudanças até hoje e continuam tendo.
▪ Este crescimento computacional, levam a criação
de sistemas perfeitos e problemas para quem
desenvolvem softwares complexos.
14
Engenharia de Software
▪ As preocupações dos engenheiros de software para
desenvolverem os software sem defeitos e
entregarem estes produtos no tempo marcado,
assim leva a aplicação da engenharia de
software.
▪ O software é caro porque torna se uma atividade
difícil e trabalhosa de ser realizado pelo engenheiro
de software (JALOTE, 2005).
15
Engenharia de Software
Alguns aspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Abstração:
Para resolver um problema, deve-se separar
os aspectos que estão ligados a uma
realidade particular, visando representá-lo em
forma simplificada e geral.
▪ Formalidade:
Significa seguir uma abordagem rigorosa e
metódica para resolver um problema.
16
Engenharia de Software
Alguns aspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Dividir para conquistar:
Resolver um problema complexo dividindo-o
em um conjunto de problemas menores e
independentes que são mais fáceis de serem
compreendidos e resolvidos.
▪ Organização hierárquica:
Organizar os componentes de uma solução
em uma estrutura hierárquica tipo árvore.
Assim, a estrutura pode ser compreendida e
construída nível por nível, cada novo nível
com mais detalhes.
17
Engenharia de Software
Alguns aspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Ocultação:
Esconder as informações não essenciais.
Permitir que o módulo "veja" apenas a
informação necessária àquele módulo.
▪ Localização:
Colocar juntos os itens relacionados
logicamente (o usuário não pensa como o
analista!).
18
Engenharia de Software
Alguns aspectos que norteiam (princípios ou
paradigmas) comumente referenciados na Engenharia
de Software:
▪ Integridade conceitual:
Seguir uma filosofia e arquitetura de projeto
coerentes.
▪ Completeza:
Checar para garantir que nada foi omitido.
19
Engenharia de Software
Categorias de softwares, classificadas segundo a
aplicação:
▪ Software básico:
Apoio a outros programas. Forte interação
como hardware.
Exemplos: compiladores, device drivers,
componentes de sistema operacional.
20
Engenharia de Software
Categorias de softwares, classificadas segundo a
aplicação:
▪ Software em tempo real:
Trata-se de um tipo de software que monitora
eventos por meio de coleta e análise de
dados, tais como temperatura, pressão, vazão,
entre outros.
Usa-se a expressão “tempo real” por conta da
resposta imediata (um segundo ou menos)
que o software deve fornecer.
21
Engenharia de Software
Categorias de softwares, classificadas segundo a
aplicação:
▪ Software comercial:
Caracteriza-se pela manipulação de grande
volume de dados e uso em aplicações
comerciais.
Exemplos: folha de pagamento, estoque,
recursos humanos.
Forte interação com banco de dados.
▪ Software científico:
Algoritmos de processamento numérico.
Usados na astronomia, mecânica e projeto
auxiliado por computador.
22
Engenharia de Software
Categorias de softwares, classificadas segundo a
aplicação:
▪ Software de computador pessoal:
Forte interação com o ser humano.
Deve ser fácil e amigável.
Exemplos: Planilhas, editores de texto,
browsers.
23
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um bom manual, repleto de padrões e regras,
fornecerá a equipe tudo que ela precisa saber?
▪ Desenvolvimento não é uma receita de bolo!
▪ Os clientes são diferentes, os projetos são
diferentes, os programadores são diferentes,
as prioridades dependem do projeto.
Basicamente, TUDO é diferente.
24
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um bom manual, repleto de padrões e regras,
fornecerá a equipe tudo que ela precisa saber?
▪ Um site de e-commerce desenvolvido para a
empresa X, provavelmente não valerá para a
empresa Y.
▪ O planejamento é fundamental e só então você
poderá levantar os requisitos necessários e
trabalhar em cima de um novo projeto.
25
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Caso ocorra atraso no cronograma este poderá
ser contornado alocando-se mais
programadores ao projeto?
▪ Por mais que exista o conceito de “Fábrica de
Software” não podemos pensar no processo
de desenvolvimento como uma linha de
produção.
▪ Ao se inserir um programador em um projeto,
ele levará algum tempo para se familiarizar
com o código e com o que está sendo feito,
para então, começar de fato a produzir.
26
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Caso ocorra atraso no cronograma este poderá
ser contornado alocando-se mais
programadores ao projeto?
▪ Desta maneira, alocar programadores para
resolver um problema de cronograma poderá
surgir efeito contrário, causando mais
problemas!
27
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Será que dá certo?
▪ Uma grávida demora 9 meses para gerar um
bebe...
▪ Se juntarmos 9 grávidas eu vou ter um bebê
em um mês?
28
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Quando um projeto é muito trabalhoso, requer
know-how maior do que a sua equipe possui
ou o cronograma está apertado, muitos optam
pela terceirização achando que esta é uma
garantia de tranquilidade e nenhum trabalho.
29
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Cuidado: Se a empresa X contratou você, você
é o responsável pelo trabalho que está
entregando. Aí fica a pergunta:
▪ A terceirização fez o serviço direito?
▪ Comentou o código?
▪ Documentou o que foi feito?
▪ Sua equipe tem pessoal para trabalhar
nesse código?
30
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Terceirizar um projeto é garantia de
tranquilidade e nenhum trabalho?
▪ Pense bem antes de terceirizar algo que não
poderá trabalhar bem no futuro.
▪ É melhor recusar um projeto do que fazê-lo
mal feito.
31
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um software pode ser construído observando-se
o seu propósito geral – os detalhes podem ser
levados em conta posteriormente?
▪ Se você é desenvolvedor já deve ter se
deparado com um usuário que só queria um
ajustizinho no sistema:
“só adicione um botão que faça isso e busque
aquilo e faça isso ficar cor de rosa e brilhar
girando”.
32
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Um software pode ser construído observando-se
o seu propósito geral – os detalhes podem ser
levados em conta posteriormente?
▪ Desenvolvedores geralmente não gostam de
destruir algo para faze-lo de outra forma, pois
o cliente mudou de ideia. Aliás, ninguém
gosta.
33
Engenharia de Software - mitos
Vamos ver alguns mitos da Engenharia de softwares:
▪ Se o programa funciona, nosso trabalho está
completo?
▪ Se o programa ainda não está finalizado e
“rodando”, não posso avaliar sua qualidade?
▪ O único produto que entregarei ao cliente é o
código executável?
▪ O processo de planejamento fará com que
criemos documentação volumosa que atrasará a
execução do projeto, atrasando o cronograma?
MUITO OBRIGADO!
3
4

Introdução a Engenharia de Software.pdf

  • 1.
  • 2.
    2 Bibliografia MAITINO NETO, Roque.Engenharia de Software. Londrina: Editora e Distribuidora Educacional S.A., 2016. SOMMERVILLE, Ian. Engenharia de software. 8. ed. São Paulo: Pearson, 2007 PADUA FILHO, Wilson de Paula. Engenharia de software: fundamentos, métodos e padrões. 3. ed. Rio de Janeiro: LTC – Livros Técnicos e Científicos, 2009 PRESSMAN, Roger S. Engenharia de software : uma abordagem Profissional. 7ª. ed 2011.
  • 3.
    Engenharia de Software ▪Unidade 1: Fundamentos da Engenharia de Software: ▪ O que veremos nesta aula: ▪ Seção 1.1 – Introdução à Engenharia de software: aspectos gerais, objetivos, evolução do software e crise do software. 3
  • 4.
    4 Engenharia de Software Oque é um software? ▪ O software é o conjunto de vários artefatos e não apenas o código fonte (SOMMERVILLE). ▪ São instruções que, quando executadas, produzem a função desejada pelo usuário. ▪ São estruturas de dados que possibilitam que os programas manipulem as informações.
  • 5.
    5 Engenharia de Software Comparaçãoentre Software e Hardware: ▪ O software pode ser desenvolvido (é a parte lógica do computador) e o hardware se compra (é a parte física). ▪ Ao passar do tempo o software fica deteriorado, ultrapassado e sua manutenção torna-se mais cara. ▪ Já para o hardware, realizar a manutenção é simplesmente trocar à peça que esta em desgaste.
  • 6.
    6 Engenharia de Software Oque é Engenharia de Software? ▪ Engenharia de software é uma disciplina cujo objetivo é produzir software: ▪ isento de falhas, ▪ entregue dentro do prazo e orçamentos previstos, ▪ e que atenda às necessidades do cliente. ▪ O software desenvolvido deve ser fácil de ser modificado quando as necessidades dos usuários mudarem.
  • 7.
    7 Engenharia de Software Oque é Engenharia de Software? ▪ A IEEE Computer Society (2004) define Engenharia de software como: “A aplicação de uma abordagem sistemática, disciplinada e quantificável de desenvolvimento, operação e manutenção do software, além do estudo dessas abordagens". ▪ “Engenharia de Software é a profissão dedicada a projetar, implementar e modificar software, de forma que ele seja de alta qualidade, a um custo razoável, manutenível e rápido de construir.“ (LAPLANTE)
  • 8.
    8 Engenharia de Software Oque é Engenharia de Software? ▪ Fica claro, então, que o objetivo da Engenharia de Software é: ▪ a entrega de produto de qualidade, ▪ respeitados os prazos e ▪ os limites de despesas de recursos humanos e financeiros.
  • 9.
  • 10.
    10 Engenharia de Software Crisedo Software: ▪ Na década de 1960, alguns atores do processo de desenvolvimento de software cunharam a expressão “Crise do Software” na intenção de evidenciar o momento adverso que a atividade atravessava. ▪ A crise de indicava um estado de incerteza ou declínio e, de fato, esse era o retrato de um setor inapto a atender demanda crescente por produção de software.
  • 11.
    11 Engenharia de Software Crisedo Software: ▪ Eram entregues programas que não funcionavam corretamente, construídos por meio de processos falhos e que não podiam passar por manutenção facilmente. ▪ Tinham incerteza causada pela imprecisão nas estimativas de custo e prazo afetava a confiança das equipes e principalmente dos seus clientes.
  • 12.
    12 Engenharia de Software Vamosrefletir nesta afirmação: ▪ “Com o crescimento desse segmento (desenvolvimento de softwares) muitas empresas possuem mais especialistas em TI em que cada um tem sua responsabilidade no desenvolvimento de software e é diferente de antigamente que era um único profissional de software que trabalhava sozinho numa sala.” (PRESSMAN, 2006)
  • 13.
    13 Engenharia de Software ▪Ao passar do tempo, ninguém imaginava que o software tornaria um elemento muito importante para o mundo e teria a capacidade de manipular a informação. ▪ Como muitos elementos computacionais tiveram mudanças até hoje e continuam tendo. ▪ Este crescimento computacional, levam a criação de sistemas perfeitos e problemas para quem desenvolvem softwares complexos.
  • 14.
    14 Engenharia de Software ▪As preocupações dos engenheiros de software para desenvolverem os software sem defeitos e entregarem estes produtos no tempo marcado, assim leva a aplicação da engenharia de software. ▪ O software é caro porque torna se uma atividade difícil e trabalhosa de ser realizado pelo engenheiro de software (JALOTE, 2005).
  • 15.
    15 Engenharia de Software Algunsaspectos que norteiam (princípios ou paradigmas) comumente referenciados na Engenharia de Software: ▪ Abstração: Para resolver um problema, deve-se separar os aspectos que estão ligados a uma realidade particular, visando representá-lo em forma simplificada e geral. ▪ Formalidade: Significa seguir uma abordagem rigorosa e metódica para resolver um problema.
  • 16.
    16 Engenharia de Software Algunsaspectos que norteiam (princípios ou paradigmas) comumente referenciados na Engenharia de Software: ▪ Dividir para conquistar: Resolver um problema complexo dividindo-o em um conjunto de problemas menores e independentes que são mais fáceis de serem compreendidos e resolvidos. ▪ Organização hierárquica: Organizar os componentes de uma solução em uma estrutura hierárquica tipo árvore. Assim, a estrutura pode ser compreendida e construída nível por nível, cada novo nível com mais detalhes.
  • 17.
    17 Engenharia de Software Algunsaspectos que norteiam (princípios ou paradigmas) comumente referenciados na Engenharia de Software: ▪ Ocultação: Esconder as informações não essenciais. Permitir que o módulo "veja" apenas a informação necessária àquele módulo. ▪ Localização: Colocar juntos os itens relacionados logicamente (o usuário não pensa como o analista!).
  • 18.
    18 Engenharia de Software Algunsaspectos que norteiam (princípios ou paradigmas) comumente referenciados na Engenharia de Software: ▪ Integridade conceitual: Seguir uma filosofia e arquitetura de projeto coerentes. ▪ Completeza: Checar para garantir que nada foi omitido.
  • 19.
    19 Engenharia de Software Categoriasde softwares, classificadas segundo a aplicação: ▪ Software básico: Apoio a outros programas. Forte interação como hardware. Exemplos: compiladores, device drivers, componentes de sistema operacional.
  • 20.
    20 Engenharia de Software Categoriasde softwares, classificadas segundo a aplicação: ▪ Software em tempo real: Trata-se de um tipo de software que monitora eventos por meio de coleta e análise de dados, tais como temperatura, pressão, vazão, entre outros. Usa-se a expressão “tempo real” por conta da resposta imediata (um segundo ou menos) que o software deve fornecer.
  • 21.
    21 Engenharia de Software Categoriasde softwares, classificadas segundo a aplicação: ▪ Software comercial: Caracteriza-se pela manipulação de grande volume de dados e uso em aplicações comerciais. Exemplos: folha de pagamento, estoque, recursos humanos. Forte interação com banco de dados. ▪ Software científico: Algoritmos de processamento numérico. Usados na astronomia, mecânica e projeto auxiliado por computador.
  • 22.
    22 Engenharia de Software Categoriasde softwares, classificadas segundo a aplicação: ▪ Software de computador pessoal: Forte interação com o ser humano. Deve ser fácil e amigável. Exemplos: Planilhas, editores de texto, browsers.
  • 23.
    23 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Um bom manual, repleto de padrões e regras, fornecerá a equipe tudo que ela precisa saber? ▪ Desenvolvimento não é uma receita de bolo! ▪ Os clientes são diferentes, os projetos são diferentes, os programadores são diferentes, as prioridades dependem do projeto. Basicamente, TUDO é diferente.
  • 24.
    24 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Um bom manual, repleto de padrões e regras, fornecerá a equipe tudo que ela precisa saber? ▪ Um site de e-commerce desenvolvido para a empresa X, provavelmente não valerá para a empresa Y. ▪ O planejamento é fundamental e só então você poderá levantar os requisitos necessários e trabalhar em cima de um novo projeto.
  • 25.
    25 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Caso ocorra atraso no cronograma este poderá ser contornado alocando-se mais programadores ao projeto? ▪ Por mais que exista o conceito de “Fábrica de Software” não podemos pensar no processo de desenvolvimento como uma linha de produção. ▪ Ao se inserir um programador em um projeto, ele levará algum tempo para se familiarizar com o código e com o que está sendo feito, para então, começar de fato a produzir.
  • 26.
    26 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Caso ocorra atraso no cronograma este poderá ser contornado alocando-se mais programadores ao projeto? ▪ Desta maneira, alocar programadores para resolver um problema de cronograma poderá surgir efeito contrário, causando mais problemas!
  • 27.
    27 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Será que dá certo? ▪ Uma grávida demora 9 meses para gerar um bebe... ▪ Se juntarmos 9 grávidas eu vou ter um bebê em um mês?
  • 28.
    28 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Terceirizar um projeto é garantia de tranquilidade e nenhum trabalho? ▪ Quando um projeto é muito trabalhoso, requer know-how maior do que a sua equipe possui ou o cronograma está apertado, muitos optam pela terceirização achando que esta é uma garantia de tranquilidade e nenhum trabalho.
  • 29.
    29 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Terceirizar um projeto é garantia de tranquilidade e nenhum trabalho? ▪ Cuidado: Se a empresa X contratou você, você é o responsável pelo trabalho que está entregando. Aí fica a pergunta: ▪ A terceirização fez o serviço direito? ▪ Comentou o código? ▪ Documentou o que foi feito? ▪ Sua equipe tem pessoal para trabalhar nesse código?
  • 30.
    30 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Terceirizar um projeto é garantia de tranquilidade e nenhum trabalho? ▪ Pense bem antes de terceirizar algo que não poderá trabalhar bem no futuro. ▪ É melhor recusar um projeto do que fazê-lo mal feito.
  • 31.
    31 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Um software pode ser construído observando-se o seu propósito geral – os detalhes podem ser levados em conta posteriormente? ▪ Se você é desenvolvedor já deve ter se deparado com um usuário que só queria um ajustizinho no sistema: “só adicione um botão que faça isso e busque aquilo e faça isso ficar cor de rosa e brilhar girando”.
  • 32.
    32 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Um software pode ser construído observando-se o seu propósito geral – os detalhes podem ser levados em conta posteriormente? ▪ Desenvolvedores geralmente não gostam de destruir algo para faze-lo de outra forma, pois o cliente mudou de ideia. Aliás, ninguém gosta.
  • 33.
    33 Engenharia de Software- mitos Vamos ver alguns mitos da Engenharia de softwares: ▪ Se o programa funciona, nosso trabalho está completo? ▪ Se o programa ainda não está finalizado e “rodando”, não posso avaliar sua qualidade? ▪ O único produto que entregarei ao cliente é o código executável? ▪ O processo de planejamento fará com que criemos documentação volumosa que atrasará a execução do projeto, atrasando o cronograma?
  • 34.