IES - Aula 01 - 02.08

1,333 views
1,247 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,333
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

IES - Aula 01 - 02.08

  1. 1. TÍTULO DA APRESENTAÇÃO subtítulo Profº Vanilson Araújo (Branco) Curso de Especialização Engenharia de Software
  2. 2. Objetivo da Disciplina <ul><li>Apresentar os principais conceitos e práticas utilizadas e estudadas na área de Engenharia de software, fornecendo uma visão geral de como desenvolver software de qualidade. </li></ul>
  3. 3. Bibliografia SOMMERVILLE, Ian, Engenharia de Software , 8ª Edição, Addison-Wesley, 2007. PRESSMAN, Roger S. Engenharia de Software . São Paulo : Makron Books, 1995. PAULA Filho, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões . Rio de Janeiro :LTC, 2001. PETERS, James F. Engenharia de Software Teoria e Prática . Rio de Janeiro : Campus, 2001. ROCHA, Ana R. C. Qualidade de Software Teoria e Prática . Rio de Janeiro: Campus, 2001.
  4. 4. Introdução à Engenharia de Software <ul><li>Para reconhecer e entender a importância da engenharia de software, é preciso primeiro saber qual é a importância do próprio software . </li></ul><ul><li>Para isso, é necessário em primeiro lugar entender o que é um software . </li></ul><ul><li>O que é software? </li></ul>
  5. 5. Definição de Software <ul><li>Software - conjunto de programas, documentação e procedimentos operacionais com os quais pode-se fazer com que os computadores e outros dispositivos eletrônicos sejam úteis aos homens. Sendo que os programas são conjuntos de instruções arranjadas de forma que possam ser entendidas e executadas por um computador </li></ul><ul><li>Em segundo lugar, é necessário compreender a vasta gama de tipos de software. </li></ul>
  6. 6. Tipos de Software <ul><li>1.- Software Básico </li></ul><ul><li>Também conhecidos como “software de sistema” </li></ul><ul><li>Se caracterizam por uma forte interação com o hardware do computador </li></ul><ul><li>Executam as funções de controle que permitem que o software aplicativo tenha interface com outros elementos do sistema </li></ul><ul><li>Exemplos: sistemas operacionais, drivers, compiladores , etc. </li></ul>
  7. 7. <ul><li>2.- Software Aplicativo </li></ul><ul><li>Podem ter diversas funções e ser divididos em duas categorias: </li></ul><ul><ul><ul><ul><ul><li>Software de Tempo Real </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Software Comercial </li></ul></ul></ul></ul></ul>
  8. 8. <ul><li>1) Software de Tempo Real </li></ul><ul><ul><li>Funções de monitoramento, análise e controle de eventos. </li></ul></ul><ul><ul><li>A resposta do sistema deve obedecer a severas restrições de tempo (em mili-segundos). </li></ul></ul><ul><ul><li>Exemplos: controle de tráfego aéreo, relógio digital </li></ul></ul>2-Software Aplicativo - Categorias
  9. 9. <ul><li>2) Software Comercial </li></ul><ul><ul><li>Uma das maiores áreas de aplicação de software. </li></ul></ul><ul><ul><li>Facilitam operações comerciais e tomadas de decisões administrativas. </li></ul></ul><ul><ul><li>Exemplos: folha de pagamentos, contas a pagar e a receber, controle de estoque, etc. </li></ul></ul>2-Software Aplicativo - Categorias
  10. 10. <ul><ul><li>Caracteriza-se pelo processamento de dados numéricos </li></ul></ul><ul><ul><li>Exemplos: astronomia, vulcanologia, análise da fadiga de materiais, biologia molecular, etc… </li></ul></ul><ul><ul><li>Outros exemplos: auxílio de desenvolvimento de projetos, como os programas CAD (Computer-Aided Design) </li></ul></ul>3 - Software Científico e de Engenharia
  11. 11. <ul><ul><li>Controle de produtos e sistemas para os mercados industriais e de consumo . </li></ul></ul><ul><ul><li>Exemplos: controle do teclado de fornos de microondas, funções digitais de automóveis (como controle de combustível, mostradores no painel e sistemas de freio), etc. </li></ul></ul>4 - Software Embutido
  12. 12. <ul><ul><li>Esta categoria envolve diversos tipos de software utilizados para diferentes fins. </li></ul></ul><ul><ul><li>Exemplos: processadores de textos, planilhas eletrônicas, jogos, gerenciamento de dados, etc. </li></ul></ul>5-Software de Computador Pessoal
  13. 13. <ul><ul><li>Sistemas que utilizam abordagens e metodologias da inteligência artificial. </li></ul></ul><ul><ul><li>Principais aplicações: problemas difíceis de serem modelados computacionalmente por modelos tradicionais. </li></ul></ul><ul><ul><li>Principais técnicas: sistemas baseados em conhecimento, sistemas especialistas, redes neurais, algoritmos genéticos, etc. </li></ul></ul><ul><ul><li>Exemplos: jogos, prova de teoremas, robótica, aprendizado de máquina, etc. </li></ul></ul>6-Software de Inteligência Artificial
  14. 14. <ul><ul><li>Sistemas feitos para serem utilizados na internet por meio de um browser </li></ul></ul><ul><ul><li>Tecnologias: HTML, ASP, .Net, PHP, Java, XML, etc. </li></ul></ul><ul><ul><li>Exemplos: Páginas pessoais, portais, consulta a bases de dados, etc. </li></ul></ul>7 - Software Baseado na Web
  15. 15. Histórico da Engenharia de Software <ul><li>Para entender como surgiu a área de Engenharia de Software, é preciso analisar a história da evolução do software ao longo dos anos. </li></ul><ul><li>divide-se a evolução dos softwares em 4 eras: </li></ul>1950 1960 1970 1980 1990 2000 1a. Era 2a. Era 3a. Era 4a. Era
  16. 16. <ul><ul><li>Programas Batch. </li></ul></ul><ul><ul><li>Software customizado e produzido somente sob encomenda. </li></ul></ul><ul><ul><li>Distribuição limitada. </li></ul></ul><ul><ul><li>Durante esses anos, a maior parte do software era desenvolvida e usada pela própria pessoa ou organização . </li></ul></ul>1ª Era 1950 – 1963 (aprox).
  17. 17. <ul><ul><li>O desenvolvedor era um funcionário da empresa contratado para desenvolver o sistema e ficar disponível para corrigir erros que pudessem surgir. </li></ul></ul><ul><ul><li>Como apenas uma pessoa era responsável pelo desenvolvimento e manutenção do sistema, não havia a necessidade de documentação ou estruturação, já que apenas o desenvolvedor deveria ser capaz de entender o software que ele próprio desenvolveu. </li></ul></ul>1ª Era 1950 – 1963 (aprox).
  18. 18. <ul><li>Começaram a surgir sistemas multi-usuários, sistemas de tempo real, banco de dados. Rede ponto a ponto. </li></ul><ul><li>Começou a surgir também software como produto, ou seja, aplicativos produzidos para serem vendidos para diferentes organizações . </li></ul>2ª Era 1963 – 1978 (aprox).
  19. 19. <ul><li>Foi nessa época que começaram a surgir as empresas desenvolvedoras de software. </li></ul><ul><li>Softwares desenvolvidos para mainframes e minicomputadores eram distribuídos para centenas e, às vezes, até milhares de usuários. </li></ul><ul><li>Começaram a ser criadas bibliotecas de códigos, inclusive eram comprados produtos no exterior para acrescentar mais instruções às bibliotecas. </li></ul>2ª Era 1963 – 1978 (aprox).
  20. 20. <ul><li>No entanto, quando aumentou o uso e distribuição dos softwares, começaram a aumentar também os problemas. </li></ul><ul><li>Às vezes os programas tinham de ser corrigidos devido à descoberta de falhas, ou alterados conforme as exigências do usuário ou adaptados a novos hardware, atividades atualmente chamadas de “manutenção de software”. </li></ul>2ª Era 1963 – 1978 (aprox).
  21. 21. <ul><li>A chamada “ crise de software ” surgiu porque a natureza personalizada dos programas e a falta de documentação em alguns casos praticamente impossibilitava a sua manutenção . </li></ul>2ª Era 1963 – 1978 (aprox).
  22. 22. <ul><li>Surgem os sistemas distribuídos, ou sistemas em rede . </li></ul><ul><li>Surgem eletrodomésticos e máquinas eletrônicas com software embutido. </li></ul><ul><li>O hardware nessa época já tem um custo mais baixo. </li></ul><ul><li>Foi nessa era que surgiram os microprocessadores de computadores pessoais , que passaram a ser amplamente consumidos pelo público geral, estimulando o crescimento de muitas empresas de software e o surgimento de novas empresas . </li></ul>3ª Era 1975 – 1990 (aprox).
  23. 23. <ul><li>O número de cópias vendidas de um software chegava a centenas de milhares . </li></ul><ul><li>Nessa era, o hardware passa a ser considerado um produto primário básico, sendo que o software é responsável pela diferenciação. </li></ul><ul><li>Enquanto a taxa de crescimento das vendas de hardware se estabilizaram na década de 80, as vendas de software continuaram a crescer . </li></ul>3ª Era 1975 – 1990 (aprox).
  24. 24. <ul><li>Podemos dizer que a quarta era se estende até os dias atuais. </li></ul><ul><li>Esta era caracteriza-se pelas tecnologias orientadas a objeto , sistemas de inteligência artificial (sistemas especialistas, redes neurais), computação paralela e multi-processada . </li></ul>4ª Era 1990 – até hoje
  25. 25. <ul><li>As diferentes eras da evolução do software mostram que ele se tornou mais importante à medida que o hardware tornou-se um “ problema resolvido ”. </li></ul><ul><li>Quando o computador começou a ser usado, aproximadamente na década de 50 e nas três décadas seguintes, o principal desafio era desenvolver hardware para reduzir custos de processamento e armazenagem de dados, bem como reduzir o seu tempo de processamento. </li></ul>A importância do Software
  26. 26. <ul><li>Naquela época(50´s), o software era apenas um conjunto de instruções que dizia ao computador como efetuar os cálculos o mais rápido possível. </li></ul><ul><li>Aproximadamente no fim da década de 80 esse cenário mudou radicalmente . </li></ul><ul><li>Os computadores já eram rápidos o suficiente e os pesquisadores perceberam que o hardware estava sendo mal aproveitado, que ele podia ser utilizado para resolver outros tipos de problemas . </li></ul>A importância do Software
  27. 27. <ul><li>Então, a chave para o bom aproveitamento de um computador passou a ser o software . </li></ul><ul><li>Claro que a preocupação com a evolução do hardware continua. Não se passam seis meses sem o lançamento de um processador ou outro dispositivo mais veloz que os anteriores. </li></ul><ul><li>No entanto, é crucial que o software acompanhe essa evolução , fazendo bom uso do hardware. </li></ul>A importância do Software (80´s)
  28. 28. A Crise de Software <ul><li>Durante as primeiras eras do software, o desenvolvimento de software era feito de forma totalmente desorganizada . </li></ul><ul><li>Não era feito nenhum projeto, planejamento, ou análise de requisitos e o pior era que o software não estava documentado. </li></ul><ul><li>O software era simplesmente produzido conforme o conhecimento e experiência pessoal do programador. </li></ul>
  29. 29. A Crise de Software (70´s) <ul><li>Com o tempo, o desenvolvimento desorganizado levou a diversos problemas. </li></ul><ul><li>O principal problema era quando surgiam erros ou quando era necessária ou desejada alguma mudança no software. </li></ul><ul><li>Como o código não era documentado e não obedecia a nenhuma estrutura formal, apenas o desenvolvedor conseguia entender e modificá-lo. </li></ul>
  30. 30. <ul><li>Em alguns casos, quando a mudança era realizada muito tempo após o desenvolvimento do software, mesmo o próprio desenvolvedor tinha dificuldades para entender o código que ele mesmo desenvolveu. </li></ul><ul><li>Assim, as mudanças eram altamente custosas . </li></ul><ul><li>Ao conjunto de problemas encontrados no desenvolvimento de software deu-se inicialmente o nome de “ crise de software ”, sendo posteriormente chamado de “ aflição crônica ”. </li></ul><ul><li>Mais adiante, veremos ainda diversos outros tipos de problemas causados pela falta de planejamento e programação estruturada, como : a insatisfação do cliente, a dificuldade de cumprir prazos, erro na previsão dos custos, entre outros. </li></ul><ul><li>Devido a esses problemas, verificou-se que era preciso tomar vários cuidados antes e durante o desenvolvimento de software, para evitar que esses problemas ocorressem . </li></ul><ul><li>Assim, a Eng. de Software surgiu para propor estratégias que evitassem que esses problemas acontecessem . </li></ul>
  31. 31. Definições de Engenharia de Software <ul><li>“ O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”. ( Fritz Bauer,1969 ): </li></ul><ul><li>Foco nos objetivos: </li></ul><ul><li>Economia </li></ul><ul><li>Confiabilidade </li></ul><ul><li>Eficiência </li></ul>
  32. 32. <ul><li>“ O desenvolvimento e a aplicação de ciência, matemática, técnicas, métodos e ferramentas para o desenvolvimento e a manutenção econômica de software de qualidade preditível e controlável, operando de modo econômico em máquinas e ambientes reais”. Arndt Von Staa ( 1987 ): </li></ul><ul><li>Foco nos objetivos: </li></ul><ul><li>Economia </li></ul><ul><li>Eficiência </li></ul><ul><li>Qualidade “preditível” e Manutenção </li></ul>
  33. 33. <ul><li>“ Uma disciplina da Ciência da Computação que oferece métodos, técnicas e ferramentas para desenvolver e manter softwares com alta qualidade para resolução de problemas”. Anneliese Mayrhayser (1990 ): </li></ul><ul><li>Foco nos objetivos: </li></ul><ul><li>Software de qualidade </li></ul><ul><li>Resolução de problemas </li></ul><ul><li>Foco nas metodologias: </li></ul><ul><li>Métodos </li></ul><ul><li>Técnicas </li></ul><ul><li>Ferramentas </li></ul>
  34. 34. <ul><li>Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de Software: </li></ul><ul><li>Permitem que o engenheiro controle todo o processo de desenvolvimento do software. </li></ul><ul><li>Oferecem ao profissional desenvolvedor uma base para a construção de software de alta qualidade . </li></ul><ul><li>Levam à produção de um software que atenda aos requisitos e expectativas do cliente . </li></ul>
  35. 35. <ul><li>Um desafio constante da área de Engenharia de Software é melhorar o processo de desenvolvimento de software. </li></ul><ul><li>Definem diversos tipos de tarefas a serem realizadas antes, durante e após o desenvolvimento de um software. </li></ul><ul><li>Incluem a especificação de notações a serem utilizadas, critérios para medir a qualidade do software e medidas de levantamento de requisitos </li></ul>Métodos
  36. 36. <ul><li>Principais Tarefas : </li></ul><ul><ul><li>Planejamento e estimativa de projeto; </li></ul></ul><ul><ul><li>Análise de Requisitos; </li></ul></ul><ul><ul><li>Projeto da Estrutura de Dados; </li></ul></ul><ul><ul><li>Algoritmo de Processamento; </li></ul></ul><ul><ul><li>Codificação; </li></ul></ul><ul><ul><li>Teste; </li></ul></ul><ul><ul><li>Manutenção. </li></ul></ul>Abrangência dos Métodos
  37. 37. <ul><li>Problema é o excesso de formalidade nos modelos de processo propostos nos últimos 30 anos. </li></ul><ul><li>Existe hoje a necessidade de desenvolver software de forma mais rápida , mas com qualidade. </li></ul><ul><li>Os desenvolvedores são geralmente inimigos das formalidades – Prática X Teoria </li></ul>Problemas dos Métodos
  38. 38. A Prática Comprova que: <ul><li>Indivíduos e interações são mais importantes que processos e ferramentas; </li></ul><ul><li>Software funcionando é mais importante do que documentação detalhada; </li></ul><ul><li>Colaboração dos clientes é mais importante do que negociação de contratos; </li></ul><ul><li>Adaptação às mudanças é mais importante do que seguir um plano. </li></ul>
  39. 39. <ul><li>FERRAMENTAS </li></ul><ul><li>Podem auxiliar o desenvolvimento de software em diversos níveis: </li></ul><ul><ul><li>Apenas ambientes para codificação </li></ul></ul><ul><ul><li>Apoio semi-automático </li></ul></ul><ul><ul><li>Apoio automatizado </li></ul></ul>
  40. 40. <ul><li>CASE (Computer-Aided Software Engineering) </li></ul><ul><ul><li>Ambientes de apoio ao desenvolvimento de software. </li></ul></ul><ul><ul><li>Podem incluir diferentes ferramentas integradas, de forma que a informação gerada por uma das ferramentas do ambiente possa ser utilizada por outra ferramenta do mesmo ambiente. </li></ul></ul><ul><ul><li>Exemplo 1 : um ambiente contendo compilador, banco de dados e ferramentas de auxílio ao teste de software; </li></ul></ul><ul><ul><li>Exemplo 2 : ambiente para a coordenação de desenvolvimento de software em equipe; </li></ul></ul><ul><ul><li>Exemplo 3 : ambiente que gera o código com base na modelagem. </li></ul></ul>
  41. 41. <ul><li>PROCEDIMENTOS </li></ul><ul><li>Indicam como executar, na prática, as tarefas definidas pelos métodos. </li></ul><ul><li>Podem indicar: </li></ul><ul><ul><li>A seqüência na qual os métodos serão aplicados </li></ul></ul><ul><ul><li>Os produtos a serem entregues (documentos, relatórios, etc), </li></ul></ul><ul><ul><li>Controles de qualidade, </li></ul></ul><ul><ul><li>Coordenação de mudanças, </li></ul></ul><ul><ul><li>etc. </li></ul></ul>

×