Your SlideShare is downloading. ×

Engenharia De Software

7,897
views

Published on

Uma visão sobre a essência e aplicabilidade da Engenharia de Software

Uma visão sobre a essência e aplicabilidade da Engenharia de Software

Published in: Technology, Business

1 Comment
6 Likes
Statistics
Notes
No Downloads
Views
Total Views
7,897
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
183
Comments
1
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Engenharia de Software
    Uma visão sobre a essência e aplicabilidade da Engenharia de Software
  • 2. O que é?
     "Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais"
    Friedrich L. Bauer
  • 3. O que é?
    Surgiu em meados 1970 em uma tentativa de contornar a crise do software e dar um tratamento de engenharia ao desenvolvimento de software completos
  • 4. O que é?
    A Engenharia de Software se concentra nos aspectos práticos da produção de um sistema de software
    O próprio significado de “Engenharia” já traz conceitos de criação, construção, análise, desenvolvimento e manutenção
  • 5. O que é?
    Os fundamentos científicos envolvem o uso de modelos abstratos e precisos
    Permite ao Engenheiro de Software especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades
  • 6. Objetivos
    Os Objetivos primários são:
    Aprimoramento da qualidade dos produtos de software;
    Aumento da produtividade do engenheiro de software;
    Atendimento aos requisitos da eficácia e da eficiência, ou seja, a efetividade.
  • 7. Fundamentos
    Considera-se que a Engenharia de Software é uma área interdisciplinar, baseada nos fundamentos de:
    Ciências da Computação;
    Administração de Projetos;
    Comunicação;
    Técnicas de Solução de Problemas.
  • 8. Princípios
    Além dos fundamentos, alguns princípios ou elementos predominantes deram origem à engenharia de software.
  • 9. Princípios
    Os princípios requerem metodologias pertinentes e adequadas aos métodos e ferramentas que incorporam as propriedades desejadas aos processos e aos produtos de software
  • 10. Princípios
    Alguns podem ser destacados:
    Formalidade para evitar a dependência de determinadas pessoas ou processos;
    Abstração para identificar aspectos importantes de determinado fenômeno;
  • 11. Princípios
    Alguns podem ser destacados:
    Decomposição para subdividir problemas complexos;
    Generalização para disseminar soluções semelhantes e reutilizar resultados;
  • 12. Princípios
    Alguns podem ser destacados:
    Flexibilização para facilitar eventuais mudanças modulares.
  • 13. Evolução do Software
    Durante as três primeiras décadas da era do computador, o principal desafio era desenvolver um hardware que reduzisse o custo de processamento e armazenagem de dados
  • 14. Evolução do Software
  • 15. Evolução do Software
    Hoje o problema é diferente, o principal desafio desta década é melhorar a qualidade (e reduzir custos) de soluções baseadas em computador, que são implementadas com software.
  • 16. Evolução do Software
    Na década de 70 e 80 destacaram-se softwares tipo batch, distribuição e uso limitado, multiusuário, em tempo real, banco de dados...
  • 17. Evolução do Software
    Atualmente o Software deve ser distribuído, com:
    “inteligência” embutida;
    Visuais orientados aos usuários;
    Modulares;
    E em redes complexas.
  • 18. Evolução do Software
    Modernamente o software deve:
    Estar com foco no negócio empresarial ou atividade organizacional;
    Com objetivo de auxiliar os processos de tomada de decisões (estratégicas, táticas ou gerenciais e operacionais).
  • 19. Evolução do Software
    Passamos recentemente e ainda estamos em uma forte onda de desenvolvimento de softwares livres
  • 20. Evolução do Software
  • 21. Evolução do Software
    Hoje estamos na era:
    Da Web 2.0;
    Computação nas Nuvens (Cloud Computing);
    SaaS (Softwares as a Service);
    Novas formas de lucrar (Google AdSense)
  • 22. Aplicações e tipos de SW
    O software pode ser aplicado a qualquer situação em que o conjunto previamente especificado de passos procedimentais tiver sido definido
  • 23. Aplicações e tipos de SW
    O objetivo e conteúdo de informação são fatores importantes na determinação da natureza de um aplicativo;
    A palavra conteúdo refere-se ao significado e à forma de informações que entram e saem.
  • 24. Aplicações e tipos de SW
    Objetivo refere-se à previsibilidade da ordem e da oportunidade da informação;
  • 25. Aplicações e tipos de SW
    Um programa de análise de engenharia:
    aceita dados que tem uma ordem predefinida;
    Executa algoritmos;
    Produz dados resultantes em relatórios ou gráficos.
  • 26. Aplicações e tipos de SW
    As seguintes áreas de software indicam a amplitude das aplicações potenciais:
    Software básico
    É uma seleção de programas escritos para dar apoio a outros programas.
    Software em tempo real
    Monitora, analisa e controla eventos do mundo real.
  • 27. Aplicações e tipos de SW
    Software comercial
    Processamento de informações comerciais.
    Software científico e de engenharia
    Caracterizado por algoritmos de processamento de números.
  • 28. Aplicações e tipos de SW
    Softwares embutidos
    Usado para controlar produtos e sistemas para mercados industriais e de consumo (ex. teclado de microondas).
    Software de computadores pessoal
    Processamento de textos, planilhas eletrônicas, entre outros.
  • 29. Aplicações e tipos de SW
    Software educativos
    Tem como objetivo auxiliar o aprendizado de um ou mais temas e contribuindo com a educação geral.
  • 30. Aplicações e tipos de SW
    Software de Inteligência Artificial
    Faz uso de algoritmos não numéricos para resolver problemas complexos que não sejam favoráveis à computação ou à análise direta.
  • 31. Aplicações e tipos de SW
    Software Tutores Inteligentes
    São programas de computadores projetados para incorporar técnicas da comunidade de Inteligência Artificial para prover tutores que conhecem:
    “o que” eles ensinam;
    “a quem” eles ensinam;
    E “como” devem ensinar.
  • 32. Aplicações e tipos de SW
    Software de Gestão Empresarial
    Softwares que integram todas as funções organizacionais na empresa, contendo bases de dados únicas, manipulando e gerenciando informações operacionais e gerenciais para toda a organização
  • 33. Aplicações e tipos de SW
    Software SIG – Sistema de Informações Gerenciais
    Fornecem informações para tomada de decisões, no sentido piramidal.
  • 34. Aplicações e tipos de SW
    Software SAD – Sistema de Apoio a Decisões
    Por meio de tecnologias de sistemas gerenciadores de banco de dados e respectivas ferramentas, fornecem diversas informações para serem utilizadas pelo seus usuários.
  • 35. Aplicações e tipos de SW
    Software EIS – Executive Information System
    Software de consulta a base de dados para apresentação de informações de forma simples e amigável, atendendo às necessidades dos executivos de alto nível, permitindo o acompanhamento diário de resultados para depois exibi-los de forma objetiva, simplificada e gráfica.
  • 36. Mas, quais são esses softwares nas empresas?
  • 37. Integrações dos Softwares de Gestão...
    E-Commerce
    Portal do Executivo
    Workflow
    Business Inteligence
    Módulo de Contabilidade
    Módulo de Compras
    Módulo de Embarque
    ERP
    Customer Relationship Management
    Supply
    Chain Management
    Módulo de Produção
    Módulo de Vendas
    Módulo Financeiro
    Base de Dados
    Sistema Operacional
    Redes e Telecomunicações
    Hardware
  • 38. Engenheiro de Software
    Pode-se chamar de Engenheiro de Software todo profissional da área de informática ou ciência da computação que desenvolve soluções profissionais utilizando-se dos recursos de software, observando os padrões requeridos de qualidade, produtividade e efetividade.
  • 39. Engenheiro de Software
    Também chamado de Gestor de Projetos de Software e Sistemas, uma vez que congrega nas suas funções as atividades e as gestões de pessoas, atividade e recursos diversos.
  • 40. Engenheiro de Software
    Conhecimentos úteis:
    Linguagens de programação;
    Análise de sistemas;
    Ambientes de tecnologia;
    Planejamento e controle de processos;
  • 41. Engenheiro de Software
    Conhecimentos úteis:
    Linguagem UML (Unified Modeling Language);
    Recomendável também conhecimento em planejamento administrativo.
  • 42. Engenheiro de Software
    O engenheiro também é um Gestor;
    O gestor deve sempre ter clara a visão da abordagem sociotécnica e da teoria geral dos sistemas.
  • 43. Engenheiro de Software
  • 44. Fluxo de desenvolvimento de software criado pelo Engenheiro de Software
    Fim
    Busca de requisitos, necessidades dos negócios
    Fazer Plano
    Transição (roll-out)
    Início
    Necessidades dos negócios
    1
    Analista de Negócios
    Usuários Chaves
    Sim
    Produzir
    Fluxo do Processo
    Especificação das
    Regras de Negócios
    Aprovado?
    Não
    2
    Apresentação dos Documentos (processo/Regras de Negócios) para Validação
    Usuários Chaves
    Validação das Regras
    Usuários Chaves
    Analista de Sistemas
    Regras de Negócios estão corretas?
    Homologação
    Não
    3
    Sim
    Especificação das
    Regras de Negócios
    Testes
    Internos
    4
    Regras de Negócios
    Analista de Sistemas
    Desenvolvedor
    Analista de Sistemas
  • 45. Em suma...
    ... com a formalização...
    ... evita-se problemas .... comunicação...
    ... ajuda na transferência
    de conhecimento ....
    ... maior foco no negócio ...
  • 46. Áreas de Conhecimento
    Segundo o SWEBOK:
    Requisitos de Software;
    Modelagem de dados;
    Projetos (Design de Software);
    Implementação de Software;
    Teste de Software;
    Manutenção de Software;
    Qualidade de Software.
    Corpo de Conhecimento da Engenharia de Software
  • 47. Modelos de Processos de Software
    Pode ser visto como uma representação, ou abstração dos objetos e atividades envolvidas no processo de software;
  • 48. Modelos de Processos de Software
    Oferece de forma mais abrangente e fácil de representar o gerenciamento de processo de software e conseqüentemente o progresso do projeto.
  • 49. Modelos de Processos de Software
    Exemplos:
    Modelos de ciclo de vida;
    Seqüencial ou cascata;
    Espiral;
    Componentizado;
    ...
  • 50. Modelos de Processos de Software
    Modelo de Atividades
    Modelo em Cascata
  • 51. Modelo Integrado de Maturidade de Capacidade
    Modelos de Maturidade
    Surgiu para avaliar a qualidade dos processos de software aplicados em uma organização;
    Mais conhecido como Capability Maturity Model Integration (CMMi), do Software Engineering Institute - SEI
  • 52. Modelos de Maturidade
    Uma organização pode ter sua maturidade medida em 5 níveis:
    Nível 1 – Caótico;
    Nível 2 – Capacidade de reproduzir sucessos anteriores;
    Nível 3 – Processo bem definido, documentado e padronizado;
    Nível 4 – Gerência quantitativa do processo de software e produto;
    Nível 5 – Melhoria contínua e gerencia o processo de software.
  • 53. Modelos de Maturidade
    No Brasil temos o MPS.BR, ou Modelo de Processos de Software Brasileiro, é simultaneamente um movimento para a melhoria e um modelo de qualidade de processo voltada para a realidade do mercado de pequenas e médias empresas de desenvolvimento no Brasil.
  • 54. Metodologias e Métodos
    A escolha consciente e a adoção disciplinada de notações, ferramentas e métodos apropriados para cada uma dessas atividades devem resultar de uma técnica de solução de problemas aplicada ao ambiente de desenvolvimento de software.
  • 55. Metodologias e Métodos
    Algumas Metodologias...
    Metodologia estruturada;
    Metodologia Orientada a Objeto;
    Orientação a Objetos, Rational Unified Process (RUP);
    Desenvolvimento Ágil de Software
    Scrum, Programação Extrema (XP).
  • 56. Ciclo de Desenvolvimento
    O ciclo de desenvolvimento pode indicar as seguintes etapas:
    Estudo de viabilidade
    Identificar as deficiências atuais;
    Estabelecer objetivos do novo sistema;
    Gerar cenários aceitáveis;
    Preparar encargos de projetos.
  • 57. Ciclo de Desenvolvimento
    Análise de Sistemas
    Desenvolver o modelo ambiental;
    Desenvolver o modelo comportamental;
    Estabelecer os limites homem-máquina;
    Executar a análise custo benefício;
    Restringir o sistema;
    Especificar o pacote.
  • 58. Ciclo de Desenvolvimento
    Projeto
    Alocar especificações para os processadores;
    Alocar especificações para as tarefas;
    Projetar módulos;
    Projetar banco de dados;
    Empacotamento do projeto.
  • 59. Ciclo de Desenvolvimento
    Implementação
    Solucionar próximo módulo;
    Codificar módulo;
    Testar o esqueleto do sistema.
  • 60. Ciclo de Desenvolvimento
    Geração do teste do aceite
    Gerar plano de teste;
    Preparar testes de performance;
    Preparar testes de vias normais;
    Preparar testes de vias de erros.
  • 61. Ciclo de Desenvolvimento
    Garantia da Qualidade
    Teste final ou teste de aceite, comparando ao projeto de implantação.
  • 62. Ciclo de Desenvolvimento
    Descrição de procedimentos
    Descrição das atividades operacionais do cliente ou usuário normalmente correspondente ao manual do usuário.
  • 63. Ciclo de Desenvolvimento
    Conversão de banco de dados
    Pode ou não ser uma atividade complexa, existe casos que não há necessidade de se fazer conversões de bando de dados.
  • 64. Ciclo de Desenvolvimento
    Instalação
    Atividade final, suas entradas são o manual do usuário, o banco de dados convertido e o sistema de aceite.
  • 65. Bibliografia
  • 66. Felipe Goulart
    flpgoulart@gmail.com
    Obrigado!!!

×