1 / 101

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE. Turma LIN-0154. OBJETIVO DA DISCIPLINA. Compreender os conceitos fundamentais da Engenharia de Software; Entender a área de Engenharia de Software de maneira sistêmica; Compreender os principais processos de software;

ivory-chen
Download Presentation

ENGENHARIA DE SOFTWARE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ENGENHARIA DE SOFTWARE Turma LIN-0154

  2. OBJETIVO DA DISCIPLINA • Compreender os conceitos fundamentais da Engenharia de Software; • Entender a área de Engenharia de Software de maneira sistêmica; • Compreender os principais processos de software; • Conhecer a importância de requisitos de software. • Compreender os fundamentos de design de software; • Entender os aspectos do desenvolvimento de software; • Conhecer as boas práticas de gerenciamento de projetos de software; • Compreender os principais conceitos relacionados à qualidade de software. Profº Ricardo luiz

  3. INTRODUÇÃO • Para introduzir os conceitos de Engenharia de Software, outros conceitos iniciais devem ser apresentados: Engenharia, Engenhar, Sistema e Software. • ENGENHARIA - É a arte das construções, com base no conhecimento científico. • ENGENHAR - É idear, maquinar, inventar, produzir. • SISTEMA - Conjunto de partes que interagem entre si, visando um objetivo comum. Em informática é o conjunto do software, hardware . • SOFTWARE - Subsistema de um sistema computacional. São os programas de computadores Profº Ricardo luiz

  4. ENGENHARIA DE SOFTWARE • O Termo Engenharia de Software é relativamente novo, causando muitas discordâncias de conceitos. Nesse sentido, a sociedade ainda demanda de profissionais capacitados para elevar o software em termos de sistemas para empresas. • Engenharia de software é a metodologia de desenvolvimento e manutenção de sistemas modulares, com as seguintes características: • Processo (roteiro) dinâmico, integrado e inteligente de soluções tecnológicas; adequação aos requisitos funcionais do negócio do cliente e seus respectivos procedimentos pertinentes; Profº Ricardo luiz

  5. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE FUNDAMENTOS DE ENGENHARIA DE SOFTWARE • Quando se fala em Engenharia de Software, logo se imagina que, por se tratar de uma engenharia, tenha um cunho técnico relativamente alto. Porém, embora as questões técnicas precisem ser consideradas, elas são apenas meios para atingir os objetivos. Para a Engenharia de Software o computador, a teoria da computação e até mesmo os algoritmos, são apenas ferramentas necessárias para prover a solução para um problema (PFLEEGER, 2004). Profº Ricardo luiz

  6. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE FUNDAMENTOS DE ENGENHARIA DE SOFTWARE • A Engenharia de Software tem como enfoque lidar com os aspectos de produção de software em todas as fases do seu ciclo de vida (SOMMERVILLE, 2003). O ciclo de vida de um software inicia no momento em que são registradas as primeiras especificações de funcionamento, até o momento em que o software deixa de ser utilizado pelos seus usuários. Isso significa que tipicamente um software possui um ciclo de vida longo, se considerarmos o esforço necessário para a produção de um software. Profº Ricardo luiz

  7. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE FUNDAMENTOS DE ENGENHARIA DE SOFTWARE • Por outro lado, a Engenharia de Software pode ser vista como um framework para o planejamento, conceituação e projeto de software (PETERS; PEDRYCS, 2001). Na abordagem de framework pode-se considerar o conjunto de aspectos construtivos, seus desafios e considerações sobre produzir tudo ou adquirir partes e fazer com que as mesmas funcionem de maneira harmoniosa. Profº Ricardo luiz

  8. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE FUNDAMENTOS DE ENGENHARIA DE SOFTWARE • O fato é que, independente da abordagem que se utilize, a Engenharia de Software lida com desafios constantemente. Produzir algo que ninguém sabe o que e como será, de forma que não se pode demonstrar de maneira precisa. Isso é no mínimo um trabalho a ser respeitado. Profº Ricardo luiz

  9. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Ao iniciarmos os estudos de uma nova área de conhecimento, uma das primeiras dúvidas que temos é sobre sua origem e evolução que a trouxe ser o que é nos dias atuais. Refletindo sobre a origem da área de Engenharia de Software, pode-se iniciar a partir de seu nascimento formal que ocorreu no início da década de 1970 ou buscarmos raízes mais profundas lá no século XIX. Profº Ricardo luiz

  10. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Em 1843, Lady Ada, uma condessa considerada gênio na área da matemática trabalhou com Charles Babbage no desenvolvimento da máquina analítica, tratando dos conceitos relacionados às instruções que deveriam ser executadas. Na época, este conjunto de instruções era conhecido como sub-rotina. Nascia então o conceito das instruções de sequência, seleção e repetição. Estes conceitos podem ser considerados as raízes mais profundas do que conhecemos atualmente por software. Profº Ricardo luiz

  11. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE MAQUINA ANALÍTICA DE CHARLES BABBAGE Profº Ricardo luiz

  12. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE MAQUINA ANALÍTICA DE CHARLES BABBAGE • A máquina proposta do Babbage foi concebida em uma época que a tecnologia disponível era apenas dispositivos mecânicos. Por conta dessa limitação tecnológica não foi possível concluir o projeto que ficou inacabado. Independente disso, os conceitos de Babbage e Ada foi de grande valia para a evolução tecnológica para chegarmos ao estágio atual. Profº Ricardo luiz

  13. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • A partir destes conceitos fundamentais, foram construídos os alicerces do funcionamento dos softwares. A primeira aplicação de processamento de dados em grande escala foi realizada no final do século XIX. Na oportunidade foram tabulados os dados do censo americano de 1890 através de máquinas concebidas por Herman Hollerith. Profº Ricardo luiz

  14. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Neste momento da história não se diferenciava com clareza o que era hardware e o que era software, pois os equipamentos eram basicamente eletromecânicos. Na realidade o termo software foi criado apenas na década de 1940 como forma de diferenciar a parte lógica da física de um sistema computacional. Profº Ricardo luiz

  15. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE MÁQUINA TABULADORA DE HOLLERITH Profº Ricardo luiz

  16. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • O terceiro grande marco fundamental para a área é plantado por Alan Turing no ano de 1937 ao propor um modelo de ações a serem realizadas por um tipo especial de máquina. “A Máquina Universal de Turing é capaz de calcular qualquer coisa que seja calculável”. Profº Ricardo luiz

  17. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Computadores Eletromecânicos; • Eletrônicos (ENIAC); • Linguagem de programação; • 1949 – Short Order Code; • Década de 50 APT, FORTRAM e FLOW-MATIC; • COBOL (Baseado no Flow Matic) • Crescimento das funcionalidades; • Crize do Software (1960); Profº Ricardo luiz

  18. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Ao examinarmos algumas possíveis causas da crise de software podemos nos deparar com diversas. A cada dia que passa é crescente a necessidade de soluções de software mais eficientes. Além disso, a velocidade que os requisitos dos usuários mudam é tipicamente maior do que a equipe de desenvolvimento é capaz de atender. Pfleeger (2004, p. 111) nos ensina que “um requisito é uma característica do sistema ou a descrição de algo que o sistema é capaz de realizar, para atingir os seus objetivos”. Profº Ricardo luiz

  19. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • A velocidade de mudança nos requisitos, muitas vezes, vem de origens não controladas, como mudanças de legislação, normas ou processos aos quais as empresas estejam subordinadas. Neste caso podemos compreender que a crise de software pode ocorrer por fatores internos e teoricamente controláveis, bem como externos, ou seja, sobre os quais não exercemos qualquer controle. Profº Ricardo luiz

  20. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • É possível ainda que a complexidade da mudança imposta seja alta, requerendo maior tempo para sua realização. Muitos projetos de software nascem com prazos definidos antes mesmo de se ter os principais requisitos levantados. Profº Ricardo luiz

  21. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • O que pode ser observado em parcela significativa de equipes de desenvolvimento de software é a adoção de práticas absurdamente obsoletas. Aliado a estas práticas, tipicamente se encontra uma grande desigualdade na distribuição do tempo dedicado às fases do ciclo de vida de software. É muito comum reduzir requisitos em função da falta de tempo ou eliminar atividades do processo de desenvolvimento com o objetivo de reduzir o tempo total do processo. Profº Ricardo luiz

  22. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • As atividades que tipicamente são mais sacrificadas são a análise, design e testes. Um agravante é a inexistência da definição de um padrão de processo a ser seguido. Padrões desenvolvidos e publicados não faltam, porém a adoção destes é que não se observa em muitas equipes de desenvolvimento. A inexistência de padrão de processo de software multiplica a dificuldade de realizar manutenção. Profº Ricardo luiz

  23. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Muitos ainda subestimam a atividade de desenvolvimento de software, acreditando ser simples e fácil iniciar um software sem a definição de uma estrutura e arquitetura adequadas e evoluir este software até ele se tornar um produto com um conjunto significativo de funcionalidades. Desenvolver software não é uma atividade simples, logo, requisitos, arquitetura e estruturas de programas e dados não podem ser colocadas em segundo plano. Profº Ricardo luiz

  24. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Encontra-se também a ausência de valorização da fase de análise, na qual os requisitos são obtidos e especificados. Muitos dos softwares que há em uso mundo afora não precisariam existir se as necessidades tivessem sido devidamente entendidas e o processo de trabalho adequadamente analisado e modelado. Muitas vezes implementamos softwares para solucionarmos problemas que sequer existem. Profº Ricardo luiz

  25. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Com toda evolução tecnológica ocorrida desde a década de 1970, será que ainda enfrentamos estes problemas? A resposta é sim. Na verdade, atualmente estamos enfrentando uma crise ainda maior, pois a natureza dos problemas com os quais lidamos também evoluiu e a complexidade dos processos cresceu. Profº Ricardo luiz

  26. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Com o crescimento da complexidade dos problemas de negócio a serem resolvidos, cresceu também a necessidade de crescimento da equipe de desenvolvimento. O crescimento da equipe de desenvolvimento adiciona força de trabalho, porém traz desafios gerenciais. A partir daí começa a entrar em cena a importância dos aspectos gerenciais da Engenharia de Software. Profº Ricardo luiz

  27. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Embora tenham se passado várias décadas desde que a existência de uma crise de software tenha sido reconhecida, ainda hoje enfrentamos muitos dos problemas identificados lá no final da década de 1960. Profº Ricardo luiz

  28. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE PERSPECTIVA HISTÓRICA DA ENGENHARIA DE SOFTWARE • Ainda hoje enfrentamos problemas no processo de análise, no processo de construção, na forma como o software é implantado e mantido e nas consequências geradas aos usuários finais. As atuais exigências de disponibilidade de funções executadas por software requerem que os profissionais de software melhorem continuamente os processos de Engenharia de Software. Mas afinal o que é Engenharia de Software? Profº Ricardo luiz

  29. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • O Termo Nasceu em 1960; • Em 1968 Flitz Bauer definiu o termo “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”; Profº Ricardo luiz

  30. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • O objetivo da Engenharia de Software é prover soluções de software aplicáveis às necessidades para as quais foi concebido, construídos de forma produtiva e entregando alto grau de qualidade. O engenheiro de software ao aplicar de forma adequada os métodos, ferramentas e procedimentos da Engenharia de Software torna-se um criador de soluções que atendam as necessidades do mundo real. Profº Ricardo luiz

  31. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Em 1990 imaginou-se que no futuro programadores não seriam mais necessários; • Felizmente as previsões não se confirmaram; • Poderíamos caracteriza o desenvolvimento de software como artesanal; Profº Ricardo luiz

  32. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Diante desse contexto, a Engenharia de Software é uma área que ganha importância a cada dia, pois a dependência humana de softwares é cada vez maior. Dependemos de softwares para nos comunicarmos, nos informarmos, fazermos operações bancárias, fazermos compras num supermercado, escritórios, contas do dia a dia. Profº Ricardo luiz

  33. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Os processos precisam ser cada vez mais eficientes e ágeis para que as empresas possam se manter competitivas, gerar empregos e renda para os colaboradores. Porém, toda essa dependência pode aumentar também as consequências do funcionamento inadequado destes softwares. Profº Ricardo luiz

  34. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Engenharia de Software está focada em todos os aspectos relacionados à construção de software. É uma disciplina de engenharia cujo objetivo é tratar das questões ligadas ao processo de software. Na verdade estamos utilizando o software como elemento base, mas a Engenharia de Software abrange também todos os artefatos relacionados ao processo de software, como documentação, gestão e muitos outros. Profº Ricardo luiz

  35. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Segundo Pfleeger (2004) é que a Engenharia de Software é um meio para solucionar problemas de forma adequada. Isso pode implicar inclusive a decisão de que eventualmente a melhor solução seja não implementar um software para realização da atividade em questão. Devemos empregar as ferramentas, técnicas e procedimentos da Engenharia de Software para a solução de problemas e/ou necessidades. Profº Ricardo luiz

  36. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Embora tenhamos disponíveis diversas ferramentas sofisticadas para apoiar o processo de software a Engenharia de Software ainda tem forte dependência do fator humano. O desenvolvimento de software pode ser considerado como uma forma sistemática de fazer arte. E o que confere beleza a esta arte é quanto ela auxilia na solução de problemas impostos. Profº Ricardo luiz

  37. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Pelo fato do processo de software ter forte dependência do fator humano, a Engenharia de Software lida também com a questão da produtividade. As questões de produtividade envolvem medição de software, estimativas de esforço, definição de indicadores, desenvolvimento de cronograma, coleta de dados de produtividade, análise dos dados de produtividade, entre outras atividades. O processo requer planejamento, organização, controle, além dos aspectos de motivação e liderança.. Profº Ricardo luiz

  38. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Elemento fundamentais: métodos, ferramentas e procedimentos. • Os métodos podem ser entendidos como os roteiros a serem seguidos para realização de determinada atividade. Exemplos são as atividades de planejamento, realização de estimativas, design de sistemas, definição de arquitetura de software, técnicas de programação, formas de realização de testes e manutenção de softwares, entre outros. Profº Ricardo luiz

  39. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • As ferramentas podem ser entendidas como o meio para realização das atividades. Elas servem de apoio aos métodos, permitindo que as atividades sejam desenvolvidas de forma mais eficiente e eficaz. Exemplos são as linguagens de programação, bancos de dados, softwares de modelagem de dados, softwares para modelagem de projetos, entre outros. • Os procedimentos podem ser entendidos como as ações realizadas, ou seja, a aplicação dos métodos e das ferramentas. Profº Ricardo luiz

  40. TÓPICO 1: PROCESSOS E REQUISITOS DE SOFTWARE ENGENHARIA DE SOFTWARE • Em 1990 iniciou o paradigma de orientado a objetos. • Opinião dividida em permanecer no estruturado ou não. • A partir de 2000 que começou a ser mais difundido. • Mas ainda hoje existe programadores utilizando estruturado. Profº Ricardo luiz

  41. TÓPICO 2: PROCESSOS DE SOFTWARE • Numa atividade de engenharia é necessário que se defina o método de construção que será adotado. No momento em que se decide construir um software para atender a uma necessidade de negócio ou entregar alguma ferramenta, recurso ou opção de entretenimento é importante que se decida qual o processo que será seguido. Profº Ricardo luiz

  42. TÓPICO 2: PROCESSOS DE SOFTWARE • A criação de um software é uma atividade intelectual de alto nível de complexidade. E é justamente por se tratar de uma atividade complexa que é fundamental que se saiba quais são as etapas que comporão tal processo. A adoção de processos bem definidos melhora a visibilidade da construção de software. Profº Ricardo luiz

  43. TÓPICO 2: PROCESSOS DE SOFTWARE • No desenvolvimento profissional de software é altamente desejável que se siga um processo que reduza, dentro do possível, o desperdício de tempo e maximize os resultados obtidos. Os resultados esperados são tipicamente funcionalidades de software com alta qualidade. Profº Ricardo luiz

  44. TÓPICO 2: PROCESSOS DE SOFTWARE • Todo produto de software é construído com base em um modelo de processo, também conhecido como paradigma de desenvolvimento ou ainda ciclo de vida. Um ciclo de vida de software compreende um conjunto de etapas envolvendo métodos, ferramentas e procedimentos para a obtenção do produto de software desejado (PRESSMAN, 1995). Profº Ricardo luiz

  45. TÓPICO 2: PROCESSOS DE SOFTWARE • O ciclo de vida de software é um processo de engenharia que notadamente requer que algumas etapas sejam seguidas em determinada ordem para que se possa obter um produto final com o grau de qualidade desejado. Profº Ricardo luiz

  46. TÓPICO 2: PROCESSOS DE SOFTWARE • Não é necessário seguir na íntegra um modelo de ciclo de vida proposto por algum pesquisador da área de Engenharia de Software. O ciclo de vida adotado pode ser adaptado de algum modelo anteriormente proposto por algum pesquisador ou totalmente personalizado de acordo com as necessidades e realidade da equipe e natureza do software a ser desenvolvido. Um ciclo de vida de software também pode ser construído através de melhores práticas de diversos modelos amplamente conhecidos. Profº Ricardo luiz

  47. TÓPICO 2: PROCESSOS DE SOFTWARE • De uma forma geral, qualquer processo de software ou ciclo de vida possui três fases que são comuns a qualquer abordagem adotada. Estas três fases são: definição, desenvolvimento e manutenção. Profº Ricardo luiz

  48. TÓPICO 2: PROCESSOS DE SOFTWARE CICLOS DE VIDA DE SOFTWARE • Existem diversos modelos de processo de software propostos. Alguns apresentam superficialmente a concepção do modelo e outros detalham exaustivamente as fases e subfases do processo. É importante que cada equipe de desenvolvimento se inspire no modelo de processo que esteja mais aderente à sua realidade, customize e promova melhorias contínuas neste modelo. Profº Ricardo luiz

  49. TÓPICO 2: PROCESSOS DE SOFTWARE CICLOS DE VIDA DE SOFTWARE • Melhora o entendimento do processo para a equipe de desenvolvimento; • Permite a melhoria do processo pela equipe envolvida; • O modelo reflete os objetivos do desenvolvimento de software; • Proporciona visibilidade sobre necessidades de adequação em função da natureza do projeto. Profº Ricardo luiz

  50. TÓPICO 2: PROCESSOS DE SOFTWARE CICLOS DE VIDA DE SOFTWARE • Todo software possui um ciclo de vida através do qual ele é ou será construído, logo, compreender os aspectos dos principais modelos de ciclo de vida pode auxiliar na adoção de um dos modelos. Também servirá de importante embasamento teórico para a construção de um ciclo de vida mais adequado à realidade e necessidade da organização. Os ciclos de vida de software podem ser categorizados como, linear, incremental ou iterativo. Profº Ricardo luiz

More Related