Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Prof. Rafael Targino rtargino@unicarioca.edu.br Teoria de Engenharia de Software Aula 1 Introdução Engenharia de Software Apresentação do Professor • Formado em Ciência da Computação pela UFRJ e Mestrado em Engenharia da Computação pela COPPE/UFRJ • Experiência de 15 anos em análise, projeto e desenvolvimento de sistemas – Sistema de Obtenção da Marinha (Marinha do Brasil) – Sistema de Controle de Combustível nuclear das Usinas de Angra dos Reis (Eletronuclear) – Software para Planejamento de Contratações do Sistema de Controle do Espaço Aéreo Brasileiro (CISCEA/DECEA) – Arquitetura de Sistemas para o Plano Diretor de Tecnologia da Informação (Furnas Centrais Elétricas) • Certificações em RUP, Scrum e diversas ferramentas IBM Rational 2 3 Apresentação dos Alunos: Curso? Período? Área de Interesse na Informática? Faz Estágio? 4 Engenharia de Software O que vocês acham que é a Engenharia de Software? 3 5 O que é Software? • Software é: – Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados; – Estruturas de dados que permitem a manipulação das informações; – Documentos que descrevem a operação e uso dos programas. Engenharia de Software 6 Programa x Sistema x Software x Aplicação • Conceitos as vezes utilizados de maneira diferente dependendo do contexto, mas que no fundo representam a mesma coisa – Um pedaço de código fonte executado por uma máquina para suportar uma necessidade de um usuário 4 7 Tipos de Software • Software Básico – Software que serve a outro software, hardware, processos, pessoas, etc – Ex: Sistemas Operacionais • Sistemas de Informação / Sistemas Corporativos – Sistemas que gerenciam dados de entrada e saída de uma organização e efetuam o seu processamento • Aplicações – Programas isolados que resolvem uma necessidade específica do negócio. • Tempo Real – Sistema que deve responder com suficiente rapidez (milisegundos) ou o ambiente ficará fora de controle. – Ex: Sistema de orientação aérea, monitoração de pacientes. 8 Tipos de Software • Sistema Distribuídos – Sistemas que executam de forma distribuída em uma rede de computadores. Ex: torrent para download de arquivos • Software de Apoio à Tomada de Decisão – Fornece informações relevantes para tomada de decisão nos níveis Estratégico, Tático e Operacional • Software Científico e de Engenharia (especialista) – Processamento de grandes cálculos (astronomia, biologia molecular, vulcanologia, etc.). • Software Embutido – Reside dentro de um produto ou sistema (microondas, automóveis, etc.) 5 9 Quais softwares vocês usam no seu dia a dia? 10 Exemplos de Softwares • Programa de Declaração de Imposto de Renda • Agendamento de Vistoria de Veículo no Detran • Compra de Ingresso para Shows e Eventos • Facebook • Waze / Google Maps • Internet Banking • Caixa automático dos Bancos • Frequência e Folha de Pagamento • Controle de Tráfego Urbano • Controle Acadêmico • Controle de Elevadores • Automação de Biblioteca • Sistema de Alarme em Edificações Engenharia de Software 6 11 Características do Software • Software não é sensível aos problemas ambientais que fazem com que o hardware se desgaste – O software é desenvolvido, não manufaturado (no sentido clássico) – Software não se desgasta – Toda falha indica erro de projeto ou implementação • manutenção do SW é mais complicada que a do HW. Engenharia de Software 12 12 Curva de Defeitos para o Hardware tempo “desgaste”“mortalidade infantil” índice de falhas Engenharia de Software 7 13 13 Curva de Defeitos para Software índice de falhas mudança curva real curva idealizada tempo Engenharia de Software 14 Qual a importância do Software no mundo atual? 8 15 A Importância do Software • Durante as 3 primeiras décadas da era do computador, o principal desafio era desenvolver um HARDWARE de baixo custo e alto desempenho. • O hoje o desafio é melhorar a qualidade (e reduzir os custos) das soluções baseadas em SOFTWARE! Engenharia de Software Cliente Software Mobile O Software está em todo lugar Internet das Coisas Banco de Dados Servidor Browser APIs dos Aplicativos BYOD Bring Your Own Device 9 17 Engenharia de Software O que vocês acham que é a Engenharia de Software? 18 Engenharia • “Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas à criação de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas” – Dicionário Aurélio 10 19 O que é Engenharia de Software • “Engenharia de Software é a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção de software” IEEE Std 610.12 (1990) Engenharia de Software Desenvolvimento Manutenção Ciclo de Vida de Projeto de Software Operação 20 O que é Engenharia de Software Engenharia de Software Engenharia de Requisitos Projeto de Sistemas Desenvolvi- mento Testes Processo de Desenvolvimento de Software Gerência de Projeto de Software • Disciplinas na Unicarioca – Engenharia de Requisitos – Análise e Projeto de Sistemas – Qualidade de Software – Desenvolvimento de Aplicações Móveis – Desenvolvimento de Aplicações Web – Desenvolvimento de Aplicações com BB – Desenvolvimento de Aplicações Distribuídas 11 21 Engenharia de Software ainda é uma área muito nova • Tema relativamente novo no sentido do termo Engenharia de Software, causando muitas discordâncias de conceitos consensualmente aceitos, necessitando ainda de efetivas normas norteadoras do assunto. • Nesse sentido, a sociedade ainda demanda de profissionais capacitados para elevar o software em termos de sistemas organizacionais, contribuindo de fato com as organizações modernas, sejam privadas ou públicas. Engenharia de Software 22 Engenharia de Software X Engenharia Civil • Porque pontes são geralmente construídas a tempo e a um custo conhecido e softwares raramente os são? • Engenharia Civil: – 3000 anos de experiência a mais – Clara separação entre especificação e execução – Especificação detalhada antes de “colocar a mão na massa” – Uma vez que a especificação é aceita, pouco se pode fazer para alterar – Terrenos não estão constantemente mudando Engenharia de Software 12 23 Engenharia de Software X Engenharia Civil • Engenharia de Software: – a especificação faz parte da execução – Códigos fontes são também especificações – Tendência a clientes solicitar mudanças constantemente – Em negócios, mudança é uma necessidade • Conclusão: Projetos de software possuem maiores riscos e devem ser gerenciados com atenção voltada às mudanças Engenharia de Software Engenharia de Software 13 25 Questões de Concurso • Sobre a engenharia de software, considere: I. Atualmente todos os problemas na construção de software de alta qualidade no prazo e dentro do orçamento foram solucionados. II. A engenharia de software é a aplicação de uma abordagem sistemática ao desenvolvimento de software. A manutenção do software faz parte da atividade de gerência de projetos. III. Todo projeto de software é iniciado por alguma necessidade do negócio. IV. O intuito da engenharia de software é fornecer uma estrutura para a construção de software com alta qualidade. Está correto o que consta em a) III e IV, somente. b) II e III, somente. c) I, II e IV, somente.d) II, III e IV, somente. e) I, II, III e IV. Engenharia de Software 26 Crise de Software 14 27 Casos Clássicos de Insucessos de Software (livro Sommerville) • Therac-25 – Equipamento de Radioterapia – Entre 1985 e 1987 se envolveu em 6 acidentes, causando mortes por overdoses de radiação. • Aeroporto Internacional de Denver – Erros no sistema automático de transporte de bagagens – Atraso na abertura do aeroporto com custo total estimado em US$360 Milhões • Foguete Ariane 5 – Agência Espacial Européia – Explosão 40 segundos após a decolagem. – Destruição do foguete e carga avaliada em US$ 500 milhões. 28 A Realidade no Desenvolvimento de Software • Porcentagem de projetos que terminam dentro do prazo estimado: 10% • Porcentagem de projetos que são descontinuados antes de chegarem ao fim: 25% • Porcentagem de projetos acima do custo esperado: 60% • Atraso médio nos projetos: um ano. Chaos report 2004 15 29 A Realidade no Desenvolvimento de Software • Software pago mas não entregue: 29.7% • Software que pode ser usado quando entregue: 2% • Software entregue mas nunca usado: 47% • Software usado mas posteriormente modificado ou abandonado: 19% • Software que podia ser usado após feitas mudanças: 3% Chaos report 2004 30 A Crise de Software - Causas • Introdução de erros no processo – Especificação incompleta ou errada – Projetos de baixa qualidade – Implementação com muitos erros – Testes incompletos ou mal feitos • Problemas na comunicação homem- máquina • Problemas na gerência – Falta de treinamento em novas técnicas de desenvolvimento Engenharia de Software 16 31 A Crise de Software - Causas • Complexidade – Especificar sistemas é uma atividade bastante complexa. Não se trata apenas de fazer uns “programinhas”. • Insatisfação dos usuários – usuários sentem-se frustrados com sistemas difíceis de serem operados e/ou cujo desenvolvimento se prolonga por vários anos. – usuário precisa de sistemas funcionando de acordo com suas necessidades Engenharia de Software 32 A Crise de Software - Causas • Produtividade – Costuma estar quase sempre aquém do desejado. • Confiabilidade do Sistema – Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas, ou seja, eles não fazem o que deveriam fazer... • Manutenibilidade – Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação. Engenharia de Software 17 33 Exercício – Telefone sem fio • No dia 22 de novembro as 20:00hs, na rua Francisco da Rocha, um carro a caminho do aeroporto, colidiu com um ônibus da linha 572. • Estavam no interior do carro, o motorista, um senhor de cabelo grisalho, e mais 2 passageiros, sendo 1 criança. • Não houve vítimas. A polícia chegou, registrou a ocorrência e liberou os motoristas 34 Uma lista de intenções é suficiente para começar a produzir o software Minhas necessidades vão mudar… Mas mudanças são fáceis de introduzir porque software é bastante flexível Custo de mudanças é muito altoA Especificação do Software é a fase mais crítica do processo Erros na fase inicial têm um custo muito alto de correção Mitos do Software… …do Cliente Engenharia de Software 18 35 Programa escrito e testado! Acabei! Até que o programa esteja “rodando” não há como medir sua qualidade O único produto de um projeto de software é o conjunto de programas Quanto mais cedo você escrever o código, mais tempo irá demorar para completá-lo De 50 a 70 % do custo de produção de um software vai ser gasto para operacionalizá- lo para o usuário Revisões anteriores à codificação Especificação, projeto, plano de trabalho Mitos do Software… …do Programador Engenharia de Software 36 Mitos do Software… …da Gerência Manuais de Regras e Procedimentos resolvem os problemas Ferramentas modernas de software e hardware são suficientes Estamos atrasados… Vamos alocar mais gente ao projeto! Desatualizados, obsoletos O uso eficiente de ferramental exige conhecimento Custos de treinamento, gerência e entendimento do processo de trabalho Engenharia de Software 19 37 Problemas • Porque leva tanto tempo para terminar programas e sistemas? • Porque os custos são tão altos? • Porque temos dificuldade de medir o progresso do desenvolvimento do software? • Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes? • Porque os usuários estão sempre insatisfeitos com o software entregue? Engenharia de Software 38 Precisamos de uma Discipl ina que auxi l ie na construção e manutenção de software Engenharia de Software Engenharia de Software 20 39 Objetivo do Curso • Espera-se que os alunos compreendam que o desenvolvimento de software deve seguir uma disciplina apoiada nos conceitos e técnicas da Engenharia de Software para obter produtos com qualidade e produtividade. 40 Como será o Aprendizado neste Curso • Estudo adicional além das horas de sala de aula • Frequência em sala de aula é obrigatória • Listas de Exercícios • Dinâmicas em Sala de Aula • Trabalho Prático • AVA – Ambiente Virtual de Aprendizado 21 41 Avaliações • 1ª Avaliação (AV1) – Prova mista (objetiva + discursiva): 10,0 pontos • 2ª Avaliação (AV2) – Prova mista (objetiva + discursiva): 6,0 pontos – Trabalho de grupo: 4,0 pontos • 3ª Avaliação (AV3) – Prova mista (objetiva + discursiva) - valendo 10,00 ou 6,00 conforme a prova que está sendo substituída • Entrega de Listas de Exercícios pelo AVA – Lista de exercício não é Atividade Supervisionada. Porém, só haverá arredondamento de média parcial 6,7 ou 6,8 ou 6,9 para 7,0 para aqueles que tiverem feito todas as listas de exercícios.’ 42 Avaliações • Todas as provas (AV1, AV2, AVF e 2ª Chamada) serão: – Presenciais – Individuais – Sem Consulta 22 43 Bibliografia • KARAM, O. Et Al. Fundamentos de Engenharia de Software – LTC - 2a Edição -2013 • PRESSMAN, R. Engenharia de Software – Uma Abordagem Profissional – 7a. Edição – ArtMed. 44 Serviços Disponíveis na Unicarioca • SOA –Serviço de Orientação à Aprendizagem • SOC – Serviço de Orientação à Carreia • SOT – Serviço de Orientação Tecnológica • Letras e Números e Física e Bits&BYtes
Compartilhar