Fundamentos Engenharia de Software.pptx

618 views 26 slides Apr 02, 2022
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

Engenharia de Software


Slide Content

Professor Roberto Nunes FUNDAMENTOS DA ENGENHARIA DE SOFTWARE

Visão geral da Engenharia de Software Engenharia (do latim ingeniu = “ faculdade inventiva , talento”) é a arte, a ciência e a técnica de bem conjugar os conhecimentos especializados ( científicos) de uma dada área do saber com a sua viabilidade técnico-econômica , para produzir novas utilidades e/ ou transformar a natureza, em conformidade com ideias bem planejadas. Pense em um mundo sem eletrônica. Difícil, não é mesmo? Pois saiba que a grande maioria desses produtos são desenvolvidos com o conhecimento que teremos nesta disciplina . O software envolve não somente o conjunto de programas ou código fonte da aplicação, mas também toda documentação associada gerada durante o processo de desenvolvimento .

Visão geral da Engenharia de Software Há décadas, aplicações de software participam da realização e controle de praticamente todas as atividades na nossa volta. O inesgotável avanço da tecnologia e o aumento constante da exigência dos usuários fazem com que sistemas computacionais se tornem cada vez mais complexos . Neste contexto, o desenvolvimento e construção de sistemas que atendam a estas demandas se tornam um desafio cada vez mais difícil de ser alcançado. A Engenharia de Software é uma área da Ciência da Computação relativamente nova , que surgiu para auxiliar neste processo, visando o desenvolvimento de produtos de software com uma boa relação entre custo e beneficio

Visão geral da Engenharia de Software A Engenharia de Software pode ser definida como uma disciplina que utiliza um conjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar o desenvolvimento e manutenção de software, visando produzir e manter software dentro de prazos, custos e qualidade estimados . Estes objetivos são alcançados através de uma abordagem sistemática para o desenvolvimento, operação e descarte de software, aplicando a prática de conhecimento científico ao projeto e construção de software. Esta abordagem tem sua origem nos princípios propiciados pela engenharia tradicional.

Visão geral da Engenharia de Software A Engenharia de Software objetiva o aumento da qualidade do software, visando paralelamente uma maior produtividade da equipe envolvida nas atividades de desenvolvimento e atingindo uma maior satisfação por parte dos clientes . A Engenharia de Software surgiu no contexto da chamada Crise do Software quando, a partir do avanço tecnológico e a consequente redução de custos na aquisição de computadores domésticos, houve um aumento na demanda de software para um mercado profissional que não estava preparado para atender a essa nova realidade.

Visão geral da Engenharia de Software Esta crise teve lugar na década dos 70´s, e foi constatada por um gargalo no processo de desenvolvimento de software, onde a oferta de mão de obra capacitada não conseguia atender à demanda. Algumas consequências deste processo foram : Custos elevados ; Atrasos na entrega; Baixa confiabilidade e corretude do produto; Dificuldade de medição; Gerência do desenvolvimento ineficaz; Alta demanda não atendida; Difícil manutenção do software existente.

Visão geral da Engenharia de Software Na busca por soluções às demandas, pesquisadores, desenvolvedores e demais profissionais se reuniram na Conferência sobre Engenharia de Software da OTAN (Organização do Tratado do Atlântico Norte), em 1968, onde o conceito e atribuições da Engenharia de Software foram oficialmente estabelecidos. A criação desta nova área surgiu em uma tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado ) ao desenvolvimento de sistemas de software complexos . Um sistema de software complexo se caracteriza por um conjunto de componentes de software abstratos (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, que deverão ser executados em sistemas computacionais. O conjunto destes componentes e suas interconexões determina a arquitetura do software.

Evolução do Software (1950 - 1965) O hardware sofreu contínuas mudanças O software era uma arte " secundária“ para a qual havia poucos métodos sistemáticos O hardware era de propósito geral O software era específico para cada aplicação Não havia documentação

Evolução do Software (1965 - 1975) Multiprogramação e sistemas multiusuários Sistemas de tempo real 1a geração de SGBD’s Produto de software - software houses Bibliotecas de software Cresce o número de sistemas baseado em computador Manutenção quase impossível ..... CRISE DE SOFTWARE

Evolução do Software (1975 - 2005 ) Sistemas distribuídos Redes locais e globais Uso generalizado de microprocessadores produtos inteligentes Hardware de baixo custo Impacto de consumo

Evolução do Software Atualmente Tecnologias orientadas o objetos Sistemas especialistas e software de inteligência artificial usados na prática Software de rede neural artificial Computação paralela Várias outras tecnologias

Processo de Software É um conjunto de atividades e resultados que geram um produto de software Ha 4 atividades fundamentais – comuns a todos os processos de software 1 . Especificação: definição das funcionalidades e restrições 2 . Desenvolvimento: o software deve ser produzido de forma a atender as especificações 3 . Validação: garantia de que o software faz o que o cliente deseja 4 . Evolução: o software deve evoluir para atender as necessidades mutáveis dos clientes Diferentes organizações podem utilizar processos diferentes para produzir o mesmo tipo de produto

Processo de Software É uma representação simplificada de um processo de software , apresentada a partir de uma perspectiva especifica. Um modelo de processo de software define a sequencia em que as atividades do processo serão realizadas Exemplos de Modelos de Processo de Software – Modelo em Cascata (Ciclo de Vida Clássico) – Desenvolvimento Formal (Transformação formal) – Desenvolvimento Evolucionário – Desenvolvimento Orientado a Reuso ( Montagem de um sistema a partir de componentes reutilizáveis)

Engenharia de Software baseada em componentes Baseia-se na existência de um numero significativo de componentes reutilizáveis O processo de desenvolvimento de sistemas se concentra na integração desses componentes em um sistema, em vez de partir do zero Desenvolvimento Baseado em Componentes

Custos da Engenharia de Software A distribuição dos custos ao longo do processo de software depende do modelo de processo utilizado e do tipo de software que esta sendo desenvolvido Aproximadamente 60% dos custos são relacionados ao desenvolvimento e 40% são referentes aos testes para software personalizado (com um longo ciclo de duração), os custos de evolução normalmente excedem os custos de desenvolvimento Software genérico → normalmente tem custo de especificação baixo, porem devem ser extensivamente testados

Métodos da Engenharia de Software Baseiam-se na ideia de desenvolver modelos de um sistema que possam ser representados graficamente e de utilizar esses modelos como uma especificação ou projeto de software Métodos Analise Estruturada Orientados a Objetos (UML – Unified Modeling Language – Linguagem de Modelagem Unificada)

Ferramenta CASE (Computer-Aided Software Engineering) É um software destinado a proporcionar apoio automatizado as atividades de processo de software , como a analise de requisitos, modelagem do sistema, depuração e testes Alguns exemplos de ferramentas CASE RequisitePro DrCase Rational Rose Astah

Quais são os principais desafios enfrentados pela engenharia de software? Desafio da heterogeneidade  desenvolver técnicas para construir softwares confiáveis, que sejam flexíveis para atender diferentes tipos de computadores e diferentes sistemas de apoio Desafio da entrega  reduzir tempo para entrega de sistemas grandes e complexos, sem comprometer a qualidade Desafio da confiança  desenvolver técnicas que demonstrem que o software pode ter a confiança dos seus usuários

A prática da Engenharia de Software A essência da pratica: Compreenda o problema Planeje a solução Execute Monitore Examine o resultado

A prática da Engenharia de Software Princípios gerais (1 ) A razão de existir → usuário e suas demandas (2 ) KISS ( Keep It Simple, Stupid! ) → o ótimo é inimigo do bom! (3 ) Mantenha a visão → foco no escopo do projeto e preserve a convergência dos artefatos ( 4) O que um produz, outros consomem (5 ) Pensem no futuro → software não e produto perecível! (6 ) Planeje , reutilize (7 ) Pense antes de agir

Mitos relativos ao Software Mitos de gerenciamento: Já temos um livro sobre padrões e procedimentos → isso supre meu pessoal do que eles precisam saber Se o cronograma atrasar, poderemos acrescentar mais programadores e ficamos em dia → horda mongol Se eu decidir terceirizar o projeto de software , posso simplesmente relaxar e deixar essa empresa realiza-lo

Mitos relativos ao Software Mitos dos Clientes: Uma definição geral dos objetivos e suficiente para começar a escrever os programas → podemos preencher detalhes posteriormente Os requisitos de software mudam continuamente, mas as mudanças podem ser facilmente

Mitos relativos ao Software Mitos dos Clientes: Uma vez desenvolvido o software e colocado em uso , nosso trabalho esta terminado Até que o software entre em operação, não há maneira de avaliar sua qualidade O único produto passível de entrega e código executável A engenharia de software nos fará criar documentação volumosa e desnecessária, e invariavelmente , produzira atraso no cronograma

Os profissionais da Engenharia de Software Analista de Negócios Analista de Sistemas Programador / Analista de Desenvolvimento Analista de Testes Analista de Qualidade Analista de Suporte / Analista de infraestrutura Administrador de Banco de Dados Administrador de Rede Gerente de Projeto

Referências PRESMANN, R. Engenharia de Software : uma abordagem profissional. 7. ed. Rio de Janeiro : Mc Graw Hill, 2011. Cap. 1 SOMMERVILLE , I. Engenharia de Software . 8. ed . Rio de Janeiro: Pearson, 2007. Cap. 1 e 2 .

Obrigado ! Bons Estudos .
Tags