S12 - Software e Engenharia de Software ENGENHARIA DE SOFTWARE PRESSMAN, 2011 Gilberto Wolff UTFPR
Introdução
Introdução
Introdução
Introdução Busquem respostas para: 1. Há diferença entre Software e Programa? 2. Quais são as diferenças?
Roteiro Introdução Definindo software Conceitos de software??? Características do software Curva de defeitos para o hardware Curva de defeitos para o software Campo de aplicação de software Novos desafios para Engenheiros de software Software legado A natureza única das WebApps Engenharia de software
Definindo Software 1- INSTRUÇÕES (programas de computador) que quando executadas fornecem características, funções e desempenho desejados 2 - ESTRUTURAS DE DADOS que possibilitam aos programas manipular informações adequadamente 3 - INFORMAÇÃO DESCRITIVA tanto na forma impressa como na virtual, descrevendo a operação e o uso dos programas
Conceitos de Software 1 -??? 2 -??? 3 -??? Pesquisem pelo menos três conceitos de autores renomados e, cite-os no Trabalho que estão fazendo
Características do Software 1- Ele é desenvolvido ou passa por um processo de engenharia; ele não é fabricado no sentido clássico 2- Ele não se desgasta mas se deteriora 3- A maioria dos softwares continua sendo construída de forma personalizada (sob encomenda)
Curva de defeitos para o hardware Taxa de defeitos mortalidade infantil desgaste tempo
Curva de defeitos para o software Taxa de defeitos Aumento da taxa de defeitos devido a efeitos colaterais curva real mudança curva idealizada tempo
Campo de aplicações de software DE SISTEMA - conjunto de programas escritos para atender a outros programas DE APLICAÇÃO - programas sob medida que solucionam uma necessidade específica de negócio CIENTÍFICO / DE ENGENHARIA - caracterizado por algoritmos para processamento de números EMBUTIDO - residente num produto ou sistema e utilizado para implementar e controlar características e funções para o usuário final e para o próprio sistema
Campo de aplicações de software PARA LINHA DE PRODUTOS - projetado para prover capacidade específica de utilização por muitos clientes diferentes PARA WEB - chamadas de WebApps, essa categoria é centralizada em redes, abarca uma vasta gama de aplicações DE INTELIGÊNCIA ARTIFICIAL - faz uso de algoritmos não numéricos para solucionar problemas complexos que não são passiveis de computação ou de análise direta
Novos desafios para Eng.º de Software COMPUTAÇÃO MUNDIAL ABERTA - o rápido crescimento de redes sem fio pode, em breve, conduzir a uma verdadeira computação distribuída e pervasiva (ampliada, compartilhada,...) NETSOURSING (RECURSOS VIA INTERNET) - a internet está se tornando, rapidamente, tanto um mecanismo computacional, como um provedor de conteúdo SOFTWARE ABERTO - uma tendência crescente que resulta na distribuição de código fonte para aplicações de sistemas, de forma que muitas pessoas possam contribuir para seu desenvolvimento Quais são os desafios?????
Software legado SÃO SOFTWARES ANTIGOS, MUITO ANTIGOS!!! Sistemas de software legado... Foram desenvolvidos a décadas atrás e tem sido continuamente modificados para se adequar a mudanças de requisitos de negócios e a plataformas computacionais. A proliferação de tais sistemas está causando dores de cabeça para grandes organizações que os consideram dispendiosos de manter e arriscados de evoluir (DAYANI-FARD, H., et al., 1999)
A natureza única das WebApps (1990 1995) WebApps são os sistemas e aplicações baseados na Web (PRESSMAN, 2011) Os seguintes atributos são encontrados na maioria dos WebApps: Uso intensivo de redes; Simultaneidade; Carga não previsível; Desempenho; Disponibilidade; Orientadas a dados; Sensibilidade no conteúdo; Evolução contínua; Imediatismo; Segurança; Estética
Engenharia de Software Para desenvolver softwares preparados para enfrentar os desafios do século XXI, deve-se perceber alguns fatos reais: Os softwares estão incorporados em nossas vidas e o número de usuários é cada vez maior Os requisitos de tecnologia de informação demandados por indivíduos, empresas e órgãos governamentais estão mais complexos a cada ano Indivíduos, negócios e governos dependem, em ordem crescente de software para decisões estratégicas e táticas
Engenharia de Software Para desenvolver softwares preparados para enfrentar os desafios do século XXI, deve-se perceber alguns fatos reais: À medida que o valor de uma aplicação específica aumente, a probabilidade é de que a sua base de usuários e longevidade também cresçam Essas constatações levam à Engenharia de Software
Engenharia de Software Surgiu com objetivo de utilizar princípios de engenharia no desenvolvimento de software para aumentar a qualidade dos produtos oferecidos, diminuir os custos e riscos relacionados e criar processos repetíveis e eficazes para serem utilizados nos ciclos de manutenção e desenvolvimento de software (ENGHOLM JÚNIOR, 2010)
Engenharia de Software - conceito Segundo Friedrich L. Bauer apud Engholm Júnior, 2010, é a criação e 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
Engenharia de Software É uma tecnologia de camadas Deve estar fundamentada na qualidade (foco na qualidade) É o que dá sustentabilidade a ela, segundo Pressman, 2011
Engenharia de Software foco na qualidade é a pedra fundamental A gestão da Qualidade Total, Seis Sigma, e filosofias similares, promovem uma cultura de aperfeiçoamento contínuo de processos e, é esta cultura que no final das contas, leva ao desenvolvimento de abordagens cada vez mais efetivas na engenharia de software
Engenharia de Software processo A base para eng.ª de software é a camada de processo O processo de eng.ª de software é a liga que mantém as camadas de tecnologias coesas e possibilita o desenvolvimento de software de forma racional e dentro do prazo
Engenharia de Software métodos O processo define um método que deve ser estabelecido para entrega efetiva da eng.ª de software Os métodos de eng.ª de software fornecem as informações técnicas para desenvolver software. Os métodos envolvem as seguintes tarefas: comunicação; análise de requisitos; modelagem de projeto; construção de programa; testes e suporte
Engenharia de Software ferramentas Fornecem suporte automatizado ou semiautomatizado para o processo e para os métodos Quando as ferramentas são integradas, de modo que as informações criadas por uma ferramenta possam ser usadas por outra, é estabelecido um sistema para o suporte ao desenvolvimento do software, denominado eng.ª de software com auxílio do computador
Engenharia de Software áreas de conhecimento Segundo o SWEBOK apud Engholm Júnior, 2010, as áreas de conhecimento da engenharia de software são: Requisitos de software; Análise e desenho de software; Implementação de software; Manutenção de software; e, Gerência de configuração de software.
Referências ENGHOLM JÚNIOR, H. Engenharia de software na prática. São Paulo : Novatec Editora, 2010. Paula Filho, W. de P. Engenharia de software: fundamentos, métodos e padrões. 3.ed. Rio de Janeiro : LTC, 2011. PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7.ed. Porto Alegre : AMGH, 2011.