Introdução à Engenharia de Software

Documentos relacionados
Engenharia de Software

Tópicos. Engenharia de Software: Uma Visão Geral

ENGENHARIA DE SOFTWARE

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Análise e Projeto de. Aula 01. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

O Processo de Desenvolvimento de Software. Engenharia de Software

Especialização em Engenharia de Software e Banco de Dados

Características do Software

Engenharia de Software

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Introdução à Computação

Metodologia de Desenvolvimento de Sistemas

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA

Unidade 1: O Produto Software e seus processos de criação

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Engenharia de Software

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Sistemas de Informação I

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Uma Introdução à Engenharia de Software

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Engenharia de Software

Engenharia de Requisitos

Engenharia de Software I. Prof. André Castro Garcia

Visão Geral Parte 1. O que é engenharia de software?

Engenharia de Software Unidade I Visão Geral

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br

Engenharia de Software-2003

Introdução à Engenharia de Software

Engenharia de Software. Tema 1. Introdução à Engenharia de Software Profa. Susana M. Iglesias

Introdução à ES - Continuação

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

PROFESSOR: CRISTIANO MARIOTTI

Engenharia de Software

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Engenharia de Requisitos Estudo de Caso

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

ANÁLISE E PROJETO DE SISTEMAS

Engenharia de Software I Para que eu Preciso Saber Engenharia de Software?

Engenharia de Software

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Processos de Desenvolvimento de Software

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Introdução a Computação

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Processo de Software - Revisão

GARANTIA DA QUALIDADE DE SOFTWARE

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE CONFIGURAÇÃO

Projeto de Sistemas I

Requisitos de Software

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software

Introdução Engenharia de Software

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Sistemas de Informação I

Jonas de Souza H2W SYSTEMS

ENGENHARIA DE SOFTWARE II

Gerenciamento de projetos.

Engenharia de Software II

MÉTRICAS DE SOFTWARE

Engenharia de Software

Engenharia de Software na Prática Hélio Engholm Jr.

EVOLUÇÃO DE SOFTWARE

Processo de Desenvolvimento de Software

Qualidade de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

SISTEMA DE GESTÃO DE PESSOAS SEBRAE/TO UNIDADE: GESTÃO ESTRATÉGICA PROCESSO: TECNOLOGIA DA INFORMAÇÃO

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

Engenharia de Software

Planejamento e Gerenciamento de Software. Tema 3. Gerência de Projetos Profa. Susana M. Iglesias

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Apostila da disciplina Introdução à Engenharia de Software Professor: Sandro Melo Faculdades São José Curso de Tecnologia de Sistemas de Informação

Professor: Curso: Disciplina:

Universidade Paulista

Extração de Requisitos

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Pós Graduação Engenharia de Software

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

O modelo unificado de processo. O Rational Unified Process, RUP.

Transcrição:

Introdução à Engenharia de Software 1

Engenharia de Software Ementa Conceitos de Engenharia de Software. Produto e processo de desenvolvimento de software. Extração, análise e especificação de requisitos. Métodos de desenvolvimento de software. Verificação, validação e manutenção de especificações de software. Planejamento e gestão de projetos. Estimativas: métricas e modelos de custo, estudo de viabilidade 2

Engenharia de Software Programa 1. INTRODUÇÃO 1.1 Definições e Objetivos 1.2 Conceitos Básicos 1.3 Características do Software 1.4 Componentes e Aplicações do Software 3

Engenharia de Software Programa 2. PROCESSO DE SOFTWARE 2.1 Modelo de Processo 2.2 Ciclo de Vida Clássico/Modelo Cascata 2.3 Modelo Evolucionário 2.4 Modelo Espiral 2.5 Técnicas de Quarta Geração 2.6 Desenvolvimento Rápido de Software 2.7 Combinando Paradigmas 4

Engenharia de Software Programa 3. REQUISITOS DE SOFTWARE 3.1 Classificação de requisitos 3.2 Técnicas de extração de requisitos 3.3 Documento de requisitos de software 3.4 Processos de Engenharia de Requisitos 5

Engenharia de Software Programa 4. GERENCIAMENTO DE CUSTO 4.1 Planejamento 4.2 Estudo de Viabilidade 4.3 Estimativa 4.4 Métricas de Software 4.5 Gerenciamento de Pessoal 4.6 Gerenciamento de Grupos 6

Engenharia de Software Programa 5. MODELOS DE SISTEMA 5.1 Modelos de Contexto 5.2 Modelos de Comportamento 5.3 Métodos Estruturados 5.4 Métodos Orientado a Objeto Casos de Uso 7

Engenharia de Software Programa 6. MODELO PARA PROJETO 6.1 Hierarquia de módulos e objetos 6.2 Estratégias para derivar o projeto 6.3 Qualidade do projeto: coesão, acoplamento 8

Engenharia de Software Programa 7. MODELO DE DADOS 7.1 Diagrama de Entidade e Relacionamento 7.2 Tipos de Entidades 7.3 Tipos de Relacionamento 7.4 Normalização 9

Engenharia de Software Programa 8. VERIFICAÇÃO, VALIDAÇÃO E TESTE 8.1 Planejamento de verificação e validação 8.2 Inspeções de Software 8.3 Teste de Software 10

Engenharia de Software Programa 9. EVOLUÇÃO DE SOFTWARE 9.1 Manutenção de Software 9.2 Tipos de Manutenção 9.3 Previsão de mudanças 9.4 Processo de Evolução 9.5 Evolução de Sistemas Legados 11

Engenharia de Software Programa 10. GERENCIAMENTO DE QUALIDADE 10.1 Qualidade de Processo e de Produto 10.2 Padrões de Qualidade 10.3 Controle de Qualidade 12

Engenharia de Software Bibliografia Básica Sommerville, Ian, Engenharia de Software. Ed. Addison Wesley, 8º Edição PRESSMAN, ROGER, Engenharia de Software. Ed. Mc-Graw Hill, 6º Edição, 2006. POMPILHO, S. Análise Essencial Guia Prático de Análise de Sistemas. Ed. Infobook, 1995. 13

Engenharia de Software Bibliografia de Apoio http://wps.prenhall.com/br_pfleeger_engsoftware_2 www.aw.com/sommerville_br http://www.computer.org/portal/web/swebok/html/copyright 14

Engenharia de Software Data Assunto 1 0 Avaliação 18/12/2012 Trabalho 1 projeto parte1 Prova 1 cap1 cap2 cap3 cap4 2 0 Avaliação 29/01/2013 Trabalho 2 projeto parte2 Prova 2 cap5 cap6 cap7 3 0 Avaliação 26/02 a 05/03 07/03/2013 Trabalho 3 seminário Prova 3 cap8 cap9 cap10 assunto do seminário Reposição 12/03/2012 Prova Final 14/03/2012 15

Objetivos Compreender o que é Engenharia de Software e por que ela é importante. Mostrar as distinções e relacionamentos entre sistema e software. Mostrar as principais questões sobre engenharia software. Compreender questões profissionais e éticas relevantes para os engenheiros de software. 16

Por que? Por que tanta demora para entregar o sistema? Por que os prazos se atrasam? Por que os custos são altos? Por que não achar todos os erros antes de entregar? Por que é difícil medir o progresso do desenvolvimento de um software? 17

Desafio No mercado atual, não há dúvida de que os profissionais de TI envolvidos com projetos de desenvolvimento de software e soluções corporativas têm um claro desafio: 18

Desafio PRODUZIR soluções mais rápidas, melhores e mais baratas que antes (melhor ainda ser mais rápidas, melhores e mais baratas que a concorrência) 19

Desafio Desenvolver software é um problema de métodos e técnica, em suma, de atividade humana. Gerenciar projetos de TI é gerenciar riscos assumidos e vencidos por seres humanos inteligentes. 20

Evolução do Software Período Evolução 1950-1960 Orientação a batch Software totalmente customizado Distribuição limitada 1960-1970 Multiusuários Tempo Real Banco de Dados 21

Desafio Período Evolução 1980-1990 Sistemas distribuídos Inteligência Embutida Hardware de baixo custo 1990-2000 Sistemas de desktop poderosos Tecnologia orientada a objeto Sistemas Especialistas... 22

Desafio Período Evolução 2000 - atual As tecnologias orientadas a objetos Uso das técnicas de "quarta geração" para o desenvolvimento de software Os sistemas especialistas e o software de inteligência artificial. 23

Aplicação do Software Básico Coleção de programas escritos para apoio a outros programas. Tempo Real Software que monitora / analisa / controla eventos do mundo real. Comercial Científico e de engenharia Processa informações comerciais, reestruturação de dados para tomada de decisões. Algoritmos de processamento de números(astronomia,vulcanologia). 24

Aplicação do Software Embutido Computador Pessoal Inteligência Artificial usado para controlar produtos e sistemas para os mercados industriais e de consumo. Processamento de textos, planilhas, computação gráfica. faz uso de algoritmos não numéricos para resolver problemas que não sejam favoráveis à computação ou à análise direta. 25

O que é Sistema? é um conjunto de elementos interdependentes que realizam operações visando atingir metas especificadas. 26

Sistema de Computação é aquele destinado ao suporte ou automação de tarefas através de processamento de informações. 27

Componentes de Sistemas de Computação Hardware Computadores,periféricos e redes. Software Os programas e arquivos de dados. Usuários Usuários e operadores que realizam as tarefas e procedimentos. 28

Componentes de Sistemas de Computação (cont.) Procedimentos Documentação Atividades realizadas pelos usuários e operadores, bem como pelos programas. Manuais e formulários que descrevem as operações do sistema. 29

Exemplos de Sistemas Computacionais Automação Bancária Frequência e Folha de Pagamento Controle de Tráfego Urbano Controle Acadêmico Editoração de Jornais e Revistas Controle de Elevadores Automação de Biblioteca 30

O que é Software? Programas de computadores associados a documentação. É um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real. 31

Tipos de produtos de software Genéricos (COTS Commercial Off- The Shelf) - tipo stand-alone, pacotes de software, como por exemplo, processadores de texto, ferramentas de gerenciamento. Sob encomenda ( personalizado) desenvolvido para um cliente em particular. 32

Componentes do Software Estruturas de Dados Plano Especificação de Requisitos Projeto Listagem Programa Funcionando Plano de Testes 33

Características do Software Complexidade Conformidade Mutabilidade 34

Características do Software Complexidade Software é mais complexo do que qualquer outro produto construídos por seres humanos. 35

Características do Software Conformidade O software deve ser desenvolvido conforme o ambiente. Não é o ambiente que deve se adaptar ao software. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (industrial). Sucesso é medido pela qualidade e não quantidade. 36

Características do Software Mutabilidade Existe sempre uma pressão para se fazer mudanças em um software. Não se desgasta, mas se deteriora devido as mudanças. A maioria é feita sob medida em vez de ser montada a partir de catálogos de componentes existentes (reusabilidade de software). 37

Falhas do Hardware Defeitos de projeto e manufatura índice de falhas mortalidade infantil desgaste Problemas Ambientais (poeira, vibração, abuso, temperaturas,...) tempo 38

Falhas do Software mudanças índice de falhas curva real curva idealizada tempo 39

Falhas do Hardware/Software Quando um componente de hardware se desgasta é substituído por uma peça de reposição Não existe peça de reposição para software Toda falha indica um erro no projeto ou no processo de tradução para o código executável Manutenção do software é mais complexa do que a do hardware 40

Formas do Software 41

Crise do Software Refere-se a um conjunto de problemas encontrados no desenvolvimento de software. Problemas não se limitam a softwares que não funcionam adequadamente. 42

Crise do Software Prazos ultrapassados Custos acima do previsto Não atendimento dos requisitos do usuário 43

Crise do Software Elevado custo de manutenção 1/3 dos projetos são cancelados 2/3 dos projetos extrapolam o orçamento Custo hardware x software 1970 = 8:2 1991 = 2:8 Hoje = 1:9 44

Crise do Software As estimativas de prazo e de custo são imprecisas: Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software Estimativas são feitas a olho, com resultados ruins Os prazos arrastam-se por meses 45

Crise do Software As estimativas de prazo e de custo são imprecisas (cont.) Causa insatisfação para o cliente e falta de confiança. Sem nenhuma indicação sólida de produtividade, não podemos avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões. 46

Crise do Sofware A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente 47

Crise do Sofware O software existente é muito difícil de manter: A tarefa de manutenção devora o orçamento destinado ao software A facilidade de manutenção não foi enfatizada como um critério importante. 48

Crise do Sofware Solução para a Crise do Sofware Engenharia de Software aliada a: TÉCNICAS E FERRAMENTAS 49

Causas dos problemas associados à crise de software Filosofia do Software. Falhas das Pessoas Responsáveis pelo Desenvolvimento de Software. Mitos do Software. 50

Filosofia do Software O software é um elemento de sistema lógico e não físico. Consequentemente, o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas. 51

Falhas das Pessoas Responsáveis pelo Desenvolvimento de Software Gerentes sem nenhum background em software. Os profissionais da área de software têm recebido pouco treinamento formal em novas técnicas para o desenvolvimento de software. Resistência a mudanças. 52

Mitos do Software Mitos do Administrativos, do Cliente e do Profissional 53

Problemas Administrativos Gerentes se encontram sob pressão manter orçamentos evitar que os prazos sejam ultrapassados melhorar a qualidade 54

Mitos Administrativos Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software. 55

Mitos Administrativos Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete a prática moderna de desenvolvimento de software? Ele é completo? 56

Mitos Administrativos Mito: Meu pessoal tem ferramentas de desenvolvimento de software de última geração; afinal compramos para eles os mais novos computadores. 57

Mitos Administrativos Realidade: É preciso muito mais do que os mais recentes computadores para se fazer um desenvolvimento de software de alta qualidade. Ferramentas de Engenharia de Software Auxiliada por Computador - CASE (Computer-Aided Software Engineering) são mais importantes do que o hardware. 58

Mitos Administrativos Mito: Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso. 59

Mitos Administrativos Realidade: O desenvolvimento de software não é um processo mecânico igual à manufatura. Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas. 60

Mitos dos Clientes Mito: Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde. 61

Realidade: Mitos dos Clientes Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software. É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação. 62

Mitos dos Clientes Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível. 63

Realidade: Mitos dos Clientes Requisitos podem ser mudados, mas o impacto varia de acordo com o tempo que é introduzido (projeto e custo). Uma mudança, quando solicitada tardiamente num projeto, é mais dispendiosa do que a mesma mudança solicitada nas fases iniciais. 64

Mitos do Profissional Mito: Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo. 65

Mitos do Profissional Realidade: Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente 66

Mitos do Profissional Mito: Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade. 67

Realidade: Mitos do Profissional Mecanismo (Revisão Técnica Formal) de garantia de qualidade de software é aplicado desde o começo do projeto. Revisões de software são um filtro de qualidade - descobre erros/defeitos. 68

Mitos do Profissional Mito: A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando. 69

Mitos do Profissional Realidade: Um programa funcionando é somente uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software. A DOCUMENTAÇÃO é o alicerce 70

Categorias de Tamanho de Softwares Categoria Tamanho da Equipe Duração Tamanho do Fonte (linhas de código) Trivial 1 1-4 semanas 500 Pequeno 1 1-6 meses 1000 a 2000 Médio 2-5 1-2 anos 5 mil a 50 mil Grande 5-20 2-3 anos 50 mil a 100 mil Muito grande 100-200 4-5 anos 1 milhão Extremamente grande 2000-5000 5-10 anos 1 a 10 milhões ex: O Win 95: teve 11 milhões de linhas e 200 programadores / O Nestscape teve 3 milhões de linhas e 120 programadores 71

Solução Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos Métodos e Técnicas para disciplinar o processo de desenvolvimento do software.. 72

SOLUÇÃO Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos Métodos e Técnicas para disciplinar o processo de desenvolvimento do software.. 73

Aspectos históricos da Engenharia de Software 1968 Conferência da OTAN Objetivo: resolver a Crise do Software Software é entregue Atrasado Com orçamento estourado Com falhas residuais 74

Aspectos históricos da Engenharia de Software Eles não encontraram uma solução, mas definiram uma meta: Engenharia de Software. Custo do hardware decrescente e custo do software em ascensão. 75

O que é Engenharia de Software? Fritz Bauer 1969 ( primeira definição) 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 76

O que é Engenharia de Software? IEEE, 1993 A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a fim de obter economicamente softwares confiáveis e que executem de forma eficiente nas máquinas reais 77

O que é Engenharia de Software? Programador (técnicas) 1. Paradigma de tentativa e erro Engenheiro (técnicas) 1. Paradigma adaptado ao escopo do sistema 2. Estrutura de Dados 2. Análise e Projeto 3. Linguagens de Programação 3. Ferramentas CASE e SGBD s 78

O que é Engenharia de Software? É uma disciplina que integra métodos, ferramentas e procedimentos para o desenvolvimento de software de computador. Possibilitar ao gerente o controle do processo de desenvolvimento. Oferecer ao profissional uma base para a construção de software de alta qualidade. 79

Engenharia de Software - Método Proporcionam os detalhes de como fazer para construir o software. Envolvem um amplo conjunto de tarefas. Um método de ES é uma aproximação estruturada para o desenvolvimento de software. 80

Engenharia de Software - Método Todos os métodos pretendem Criar modelos do sistema que possam ser representados graficamente; Usar estes métodos como especificação. 81

Engenharia de Software - Método Década de 70 (DeMarco e Jackson): Orientado à função. 80s-90s (Booch e Rumbaugh): Métodos orientados a objeto. Atualmente os diferentes métodos estão integrados numa aproximação unificada baseada em Unified Modeling Language (UML). 82

Engenharia de Software - Método 83

Engenharia de Software - Método Métodos devem incluir os seguintes componentes: Descrição gráficas Regras Recomendações Diretrizes de processo 84

Engenharia de Software - Método Descrição gráficas. Descrições dos modelos do sistema que deverão ser desenvolvidos e da notação usada para os definir. Ex. Modelos de objetos, fluxos de dados etc. 85

Engenharia de Software - Método Regras Restrições que se aplicam a modelos de sistema. Ex.Cada entidade deve ter um único nome. Recomendações Conselho em prática de projeto. Ex.Nenhum objeto deve ter mais que sete subobjetos. 86

Engenharia de Software - Método Diretrizes de processo Descrição das atividades que podem ser seguidas. Atributos de objetos devem ser documentados. 87

Engenharia de Software - Ferramentas Fornecem suporte automatizado ou semi- automatizado aos métodos. Existem atualmente ferramentas para sustentar cada um dos métodos. Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE. 88

O que é CASE (Computer-Aided Software Engineering) Upper-CASE - Ferramenta para dar apoio às fases iniciais do processo de software. Lower-CASE - Ferramenta para dar apoio à implementação a aos testes. Ex.(Poseidon para UML, ArgoUML..) 89

Engenharia de Software - Procedimentos Constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software. Sequência em que os métodos serão aplicados. Controles que ajudam assegurar a qualidade e coordenar as alterações. Marcos de referência que possibilitam administrar o progresso do software. 90

Engenharia de Software - Procedimentos Métodos Procedimentos Resultados Ferramentas 91

Princípios da Engenharia de Software Todo engenheiro de software deve desenvolver com: Rigor e Formalidade Separação de interesses Modularidade Abstração Antecipação de mudanças Generalidade Possibilidades de evolução 92

Princípios da Engenharia de Software Rigor e Formalidade O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade é o requisito de que o processo seja dirigido e avaliado por leis matemáticas. 93

Princípios da Engenharia de Software Separação de interesses Separar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas. 94

Princípios da Engenharia de Software Modularidade Consiste na divisão de sistemas complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento). 95

Princípios da Engenharia de Software Modularidade (cont.) Decomposição é o ato de dividir um problema original em subproblemas recursivamente. Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo. Ajuda na manutenção do sistema. 96

Princípios da Engenharia de Software Antecipação de mudanças Sistemas de softwares são desenvolvidos enquanto seus requisitos ainda não estão totalmente claros. Quando o sistema é finalmente liberado, novos requisitos podem ser descobertos e velhos requisitos atualizados através do feedback do usuário. 97

Princípios da Engenharia de Software Generalidade / Especialidade Soluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas. No processo de produção de software estas questões devem ser cuidadosamente analisadas. 98

Princípios da Engenharia de Software Incrementabilidade Caracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado é atingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação. 99

Quais os custos da Engenharia de Software? A distribuição dos custos através do processo de software depende do processo usado e do tipo de software a desenvolver. Custos de desenvolvimento de um software complexo quando se conseguem definir custos separadamente para especificação, desenho, implementação, integração e testes. 100

Quais os custos da Engenharia de Software? 101

Quais os custos da Engenharia de Software? 0 25 50 75 100 Especificação Desenho Desenvolvimento Integração e Teste Custos segundo aproximação evolutiva 0 25 50 75 100 Especificação Desenvolvimento Evolutivo Testes do Sistema 102

Quais os custos da Engenharia de Software? Custos relativos entre desenvolvimento e manutenção do software 0 25 50 75 100 Desenvolvimento Manutenção Custos de desenvolvimento de produtos de software genéricos: 0 25 50 75 100 Especificação Desenvolvimento Teste 103

Custo em relação a falhas 104

Impacto dos custo de manutenção Manutenção corretiva [aproximadamente 20%] 60 a 70% das necessidades de correção são falhas de especificação ou design. Manutenção evolutiva (melhoria) Aperfeiçoamento [aproximadamente 60%] Adaptação [aproximadamente 20%] 105

Principais desafios enfrentados pela Engenharia de Software Sistemas de legado - Devem ser mantidos e devem ser atualizado. Heterogeneidade - Operar com sistemas distribuídos e incluem uma mistura de hardware e software. Fornecimento - Entrega mais rápida de software. 106

Responsabilidade profissional e ética Confiabilidade respeitar a confiabilidade de seus empregadores ou clientes. Competência os engenheiros não devem aceitar serviços que estejam for a do seu limite de competência. 107

Responsabilidade profissional e ética Direito de propriedade intelectual os engenheiros devem estar cientes das leis locais que regulam o uso da propriedade intelectual, como patentes e direitos autorais. 108

Resumindo Engenharia de Software Aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para o desenvolvimento sistemático de software. Produção da documentação formal destinada a comunicação entre os membros da equipe de desenvolvimento bem como aos usuários. 109

Resumindo Engenharia de Software Encontrar caminhos para se "construir" softwares de qualidade. Fatores externos, perceptíveis aos usuários e clientes, devem ser distinguidos dos fatores internos, perceptíveis aos projetistas e implementadores. 110

Resumindo Engenharia de Software A manutenção de software, que consome grande parte dos custos do software, é penalizada pela dificuldade em se implementar mudanças no software produto, e pela excessiva dependência dos programas da estrutura física dos dados que eles manipulam. 111

Pesquisa Visualizando a informática em uma empresa, cite exemplos de: Mitos utilizados pelo analista ou pelo administrador de uma empresa específica. Falhas que ocasionaram grandes custos. Falhas que ocasionaram mudanças de projetos. 112

Pesquisa Quais são os quatro atributos que todo software profissional deve possuir? Sugira outros atributos que podem ser significantes. Debater com os seus colegas o código de ética na Engenharia de Software. 113