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 Engenharia de Software O que vocês acham que é a Engenharia de Software? 4 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 3 5 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 6 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. 4 7 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.) 8 Quais softwares vocês usam no seu dia a dia? 5 9 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 10 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 6 11 11 Curva de Defeitos para o Hardware tempo “desgaste”“mortalidade infantil” índice de falhas Engenharia de Software 12 12 Curva de Defeitos para Software índice de falhas mudança curva real curva idealizada tempo Engenharia de Software 7 13 Qual a importância do Software no mundo atual? 14 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 8 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 16 Engenharia de Software O que vocês acham que é a Engenharia de Software? 9 17 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 18 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 10 19 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 20 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 11 Analogia da Construção de uma Casa Análise • Sala • Cozinha Americana • 2 Quartos • 1 Suíte • 2 Vagas para Carros Engenharia de Software Modelos Requisitos Analogia da Construção de uma Casa Projeto Engenharia de Software Projeto ElétricoProjeto Hidráulico Modelos 12 Analogia da Construção de uma Casa Construção 13 25 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 26 Onde tudo começou: Crise do 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 deSoftware • 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 Precisamos de uma Discipl ina que auxi l ie na construção e manutenção de software Engenharia de Software Engenharia de Software 34 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. 18 35 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 36 Critério de Avaliação • 1ª Avaliação (AV1) – Prova mista (objetiva + discursiva): 10,0 pontos • 2ª Avaliação (AV2) – Prova mista (objetiva + discursiva): 6,0 pontos – Atividade Prática Supervisionada: 4,0 pontos • 3ª Avaliação (AV3) – Prova mista (objetiva + discursiva): 10,0 pontos • 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. – Entrega Somente pelo AVA. 19 37 Critério de Avaliação (Institucional) • Todas as provas (AV1, AV2, AV3) serão: – Presenciais – Individuais – Sem Consulta • Critério de Avaliação – Para cálculo da média final na disciplina será descartada a menor nota dentre AV1, AV2 e AV3. A média final será a média obtida entre as duas notas restantes. – Caso o aluno possua somente notas em duas avaliações, não haverá descarte e a média final será calculada entre as duas notas existentes – Será aprovado o aluno com média final igual ou maior que 7,0 (sete) – O aluno com média final inferior a 7,0 (sete) ficará reprovado na disciplina 38 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. 20 39 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