Introdução à ES. Leonardo Gresta Paulino Murta.

Documentos relacionados
Introdução à ES. Leonardo Gresta Paulino Murta.

Introdução a Engenharia de Software

Revisão de ES. Leonardo Gresta Paulino Murta.

Introdução à ES - Continuação

Introdução a Engenharia de Software

Gerência de Projetos e Manutenção de Software Aula 12 Medição / Manutenção / Encerramento Andréa Magalhães Magdaleno 2017.

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno

ENGENHARIA DE SOFTWARE

Processo de So*ware. Leonardo Gresta Paulino Murta.

SSC0530- Introdução a Sistemas de Informação. Desenvolvimento de Sistemas de Informação

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado

ENGENHARIA DE SOFTWARE I

Escolhendo um Modelo de Ciclo de Vida

Modelos de Ciclo de Vida (Parte 1)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Engenharia de Software

Processos de Software

Laboratório de Programação 1 Algoritmos e a Lógica de Programação

Desenvolvimento de Projetos

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio

S13 - Software e Engenharia de Software - Continuação

Engenharia de Software

Processos de Software

Prof. Luiz A. Nascimento

ENGENHARIA DE SOFTWARE

Disciplina: Engenharia de Software. 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE

Engenharia de Software Processo de Desenvolvimento de Software

Processo Unificado. Leonardo Gresta Paulino Murta

Apresentação da Disciplina de Engenharia de Software II

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Processos de Software

Gerência de Configuração: Ramificação e Integração. Leonardo Gresta Paulino Murta

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Engenharia de Software II

Paradigmas de Software

Engenharia de Software

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Apresentação do Curso de Engenharia de Software /2

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

Garantia da Qualidade, Medição e Melhoria. Leonardo Gresta Paulino Murta

Prof. Ms. Ronaldo Martins da Costa

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Processo de Desenvolvimento. Edjandir Corrêa Costa

Definições e ciclo de vida

ARQUITETURA E DESENHO

Engenharia de Software: Uma Visão Geral. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU)

O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Engenharia de Software

Princípios da Engenharia de Software aula 03

CAPÍTULO 1 CONCEITOS BÁSICOS SOBRE ANÁLISE DE SISTEMAS Ciclo de vida de um software

Informática I. Aula Aula 21-29/11/06 1

Introdução a Engenharia de Software

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2017

Modelos de Processo de Software

Processos de Software

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

Introdução. Principal causa do fracasso no desenvolvimento de software é a não utilização de metodologias eficientes para a produção

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Engenharia de Software: Visão Geral

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Apresentação do Curso de Engenharia de Software 2

Componentes de SIs. Pessoas Organiz. Tecnologia

Clique AQUI Para Conhecer Mais do Curso Brigadeiro Gourmet Profissional

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Modelos de Ciclo de Vida

Processos de software

Gerência de Projetos e Manutenção de Software Aula 2- Revisão de ES Andréa Magalhães Magdaleno

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Analista de Sistemas S. J. Rio Preto

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Apresentação do Curso de Engenharia de So5ware II

Leonardo Gresta Paulino Murta

14/11/2013. Capítulo 2. Processos de Software. Tópicos apresentados. Oprocessodesoftware. Modelos de processo de software. Atividades de processo.

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

MODELAGEM DE SISTEMAS Unidade 1 Conceitos Básicos de Modelagem. Luiz Leão

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

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

Prof. Dr. Thiago Jabur Bittar

Apresentação do Curso de Engenharia de Software 2

Processos de Software

Engenharia de Software

Apresentação do Curso de Engenharia de So5ware II

Modelos de Processo de Software. Profª Jocelma Rios

Engenharia de Software

Programação Extrema na Prática

Transcrição:

Introdução à ES Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Histórico (era pré-es) 1940s: Primeiro computador eletrônico de uso geral ENIAC Custo estimado de US$ 500.000,00 Início da programação de computadores 1950s: Primeiros compiladores e interpretadores 1960s: Primeiro grande software relatado na literatura OS/360 Mais de 1000 desenvolvedores Custo estimado de US$ 50.000.000,00 por ano 1968: Crise do software nasce a Engenharia de Software Leonardo Murta Introdução à ES 2

Histórico (era pós-es) 1970s: Lower-CASE tools (programação, depuração, colaboração) Ciclo de vida cascata Desenvolvimento estruturado 1980s: Ciclo de vida espiral Desenvolvimento orientado a objetos Controle de versões Testes 1990s: Upper-CASE tools Processos Modelagem Leonardo Murta Introdução à ES 3

Histórico (era pós-es) 2000s: Métodos ágeis Desenvolvimento dirigido por modelos Linhas de produto Experimentação Atualmente DevOps Continuous* Software Analytics... Leonardo Murta Introdução à ES 4

Software x Hardware Software é desenvolvido Alto custo de criação Baixo custo de reprodução Não enguiça, mas deteriora Defeitos no produto usualmente são conseqüências de problemas no processo de desenvolvimento Hardware é manufaturado Alto custo de reprodução Pode enguiçar Defeitos podem vir tanto da concepção quanto da produção Pode ser substituído na totalidade ou em partes Leonardo Murta Introdução à ES 5

Software x Hardware Curva de falha de hardware mortalidade infantil Taxa de falha Enguiço tempo Leonardo Murta Introdução à ES 6

Software x Hardware Curva ideal de falha de software Taxa de falha tempo Leonardo Murta Introdução à ES 7

Software x Hardware Curva real de falha de software Taxa de falha modificação tempo Leonardo Murta Introdução à ES 8

Elementos da ES Métodos Processo Ferramentas Engenharia de Software Leonardo Murta Introdução à ES 9

Elementos da ES Processo Define os passos gerais para o desenvolvimento e manutenção do software Serve como uma estrutura de encadeamento de métodos e ferramentas Métodos São os how to s de como fazer um passo específico do processo Ferramentas Automatizam o processo e os métodos Leonardo Murta Introdução à ES 10

Elementos da ES Cuidado com o desenvolvimento guiado por ferramentas É importante usar a ferramenta certa para o problema O problema não deve ser adaptado para a ferramenta disponível Para quem tem um martelo, tudo parece prego Leonardo Murta Introdução à ES 11

Elementos da ES 1. Coloque em uma panela funda o leite condensado, a margarina e o chocolate em pó. 2. Cozinhe [no fogão] em fogo médio e mexa sem parar com uma colher de pau. 3. Cozinhe até que o brigadeiro comece a desgrudar da panela. 4. Deixe esfriar bem, então unte as mãos com margarina, faça as bolinhas e envolva-as em chocolate granulado. O que é processo, método ou ferramenta? http://tudogostoso.uol.com.br/receita/114-brigadeiro.html Leonardo Murta Introdução à ES 12

Elementos da ES 1. Coloque em uma panela funda o leite condensado, a margarina e o chocolate em pó. 2. Cozinhe [no fogão] em fogo médio e mexa sem parar com uma colher de pau. 3. Cozinhe até que o brigadeiro comece a desgrudar da panela. 4. Deixe esfriar bem, então unte as mãos com margarina, faça as bolinhas e envolva-as em chocolate granulado. Processo método ferramenta http://tudogostoso.uol.com.br/receita/114-brigadeiro.html Leonardo Murta Introdução à ES 13

O Supermercado de ES ES fornece um conjunto de métodos para produzir software de qualidade Pense como em um supermercado... Em função do problema, se escolhe o processo, os métodos e as ferramentas Cuidado Menos do que o necessário pode levar a desordem Mais do que o necessário pode emperrar o projeto Leonardo Murta Introdução à ES 14

Exercício Problema Definir o procedimento de implantação para os dois cenários a seguir Caso 1: urna eletrônica O software da urna eletrônica acabou de ser implementado, e precisa ser instalado em 480 mil urnas Caso 2: padaria O software de controle de venda de pão da padaria do seu Zé acabou de ser implementado, e precisa ser instalado Leonardo Murta Introdução à ES 15

Processos implícitos x explícitos Lembrem-se: Processos sempre existem, seja de forma implícita ou explícita! Processos implícitos são difíceis de serem seguidos, em especial por novatos Processos explícitos estabelecem as regras de forma clara Leonardo Murta Introdução à ES 16

Processo de qualidade Última palavra para medir a qualidade de um processo: Satisfação do Cliente Outros indicadores importantes Qualidade dos produtos gerados Custo real do projeto Duração real do projeto Leonardo Murta Introdução à ES 17

Modelos de ciclo de vida Existem alguns processos pré-fabricados Esses processos são conhecidos como modelos de ciclo de vida Esses processos apresentam características predefinidas Devem ser adaptados para o contexto real de uso Características do projeto Características da equipe Características do cliente Leonardo Murta Introdução à ES 18

Exercício Assuma as atividades básicas de todo processo como sendo Comunicação Planejamento Modelagem Construção Implantação Projete um processo que determina a ordem com que cada uma dessas atividades é executada Quais as características positivas ou negativas desse processo? Leonardo Murta Introdução à ES 19

Ciclo de vida Cascata Comunicação Planejamento Modelagem Construção Implantação Leonardo Murta Introdução à ES 20

Ciclo de vida Cascata Útil quando se tem requisitos estáveis e bem definidos Ex.: Adicionar um novo dispositivo legal em um sistema de contabilidade Não lida bem com incertezas Fornece pouca visibilidade do estado do projeto Muito tempo para a primeira entrega Dificuldade na obtenção de feedback do cliente Leonardo Murta Introdução à ES 21

Ciclo de vida Incremental Comunicação Planejamento Modelagem Construção Implantação... Comunicação Planejamento Modelagem Construção Implantação funcionalidades Comunicação Planejamento Modelagem Construção Implantação tempo Leonardo Murta Introdução à ES 22

Ciclo de vida Incremental Faz entregas incrementais do software Cada incremento é construído via um mini-cascata Cada incremento é um software operacional Versões anteriores ajudam a refinar o plano Feedback constante do cliente Diminuição da ansiedade do cliente O cliente rapidamente recebe uma versão funcional do software Jeff Patton (2008) Leonardo Murta Introdução à ES 23

Ciclo de vida RAD Modelagem Construção Comunicação Planejamento Modelagem Construção Integração e Implantação... Modelagem Construção tempo Leonardo Murta Introdução à ES 24

Ciclo de vida RAD Funcionamento equivalente ao cascata Principais diferenças Visa entregar o sistema completo em 60 a 90 dias Múltiplas equipes trabalham em paralelo na modelagem e construção Assume a existência de componentes reutilizáveis e geração de código Difícil de ser utilizado em domínios novos ou instáveis Leonardo Murta Introdução à ES 25

Prototipação Comunicação Implantação e feedback Planejamento rápido Construção de protótipo Modelagem rápida Leonardo Murta Introdução à ES 26

Prototipação Usualmente utilizado como auxílio a outro modelo de ciclo de vida Útil para Validar um requisito obscuro com o cliente Verificar o desempenho de um algoritmo específico Deveria ser jogado fora no final Protótipos não são produtos Usualmente os clientes desejam colocar protótipos em produção Leonardo Murta Introdução à ES 27

Ciclo de vida Espiral Planejamento (análise de riscos) Comunicação Modelagem Implantação Construção Leonardo Murta Introdução à ES 28

Ciclo de vida Espiral Foco principal no gerenciamento de riscos A cada ciclo O conhecimento aumenta O planejamento é refinado O produto gerado no ciclo anterior é evoluído (não é jogado fora) Cada ciclo evolui o sistema, mas não necessariamente entrega um software operacional Modelo em papel Protótipo Versões do produto Etc. Jeff Patton (2008) Leonardo Murta Introdução à ES 29

Por que fazer bem feito? Por que é mais barato! Historicamente, 60% a 80% do esforço total ocorre na manutenção Por que é mais rápido! Não ter tempo para fazer bem feito agora significa ter tempo para refazer depois Por que é mais fácil! Desenvolvimento ocorre uma única vez Manutenção é para sempre Leonardo Murta Introdução à ES 30

O que é a manutenção? O processo de modificar um sistema de software ou componente, depois da entrega, para corrigir falhas, melhorar desempenho ou outros atributos, ou adaptar a mudanças no ambiente. IEEE Std 620.12 1990 Leonardo Murta Introdução à ES 31

Quando inicia a manutenção? Desenvolvimento Release Manutenção Leonardo Murta Introdução à ES 32

Quando inicia a manutenção? Desenvolvimento Release Manutenção Desenv. Desenv. Release Desenv. Release Manut. Manut. Leonardo Murta Introdução à ES 33

Quais são os tipos de manutenção? Manutenção Correção Evolução Emergencial Corretiva Preventiva Adaptativa Perfectiva Leonardo Murta Manutenção de Software 34

Quais são os tipos de manutenção? Manutenção emergencial Não programada Mantém temporariamente o sistema funcionando Necessita uma manutenção corretiva posterior Manutenção corretiva Reativa Corrige problemas reportados Faz o software voltar a atender aos requisitos Leonardo Murta Manutenção de Software 35

Quais são os tipos de manutenção? Manutenção preventiva Pró-ativa Corrige problemas latentes Manutenção adaptativa Mantém o software usável após mudanças no ambiente Manutenção perfectiva Provê melhorias para o usuário Melhora atributos de qualidade do software Leonardo Murta Manutenção de Software 36

Mitos gerenciais Basta um bom livro de ES para fazer bom software Um bom livro certamente ajuda, mas ele precisa refletir as técnicas mais modernas de ES e ser lido! Se estivermos com o cronograma atrasado, basta adicionar mais gente ao projeto Adicionar gente a um projeto atrasado faz o projeto atrasar mais! Se o projeto for terceirizado, todos os meus problemas estão resolvidos É mais difícil gerenciar projetos terceirizados do que projetos internos! Leonardo Murta Introdução à ES 37

Mitos do cliente Basta dar uma idéia geral do que é necessário no início Requisitos ambíguos normalmente são uma receita para desastre! Comunicação contínua com o cliente é fundamental! Modificações podem ser facilmente acomodadas, porque software é flexível O impacto de modificações no software varia em função da modificação e do momento em que ela é requisitada! Comunicação contínua com o cliente é fundamental! Leonardo Murta Introdução à ES 38

Mitos do desenvolvedor Assim que o código for escrito o trabalho termina 60% a 80% do esforço será gasto depois que o código foi escrito! Vale a pena esforçar para chegar a um bom código (boa documentação, bom projeto, etc.)! Só é possível verificar a qualidade de um software quando o executável existir Revisões usualmente são mais eficazes que testes, e podem ser utilizadas antes do software estar executável! Leonardo Murta Introdução à ES 39

Mitos do desenvolvedor O único produto a ser entregue em um projeto é o código Além do código, documentações tanto para a manutenção quanto para o uso são fundamentais! Engenharia de software gera documentação desnecessária Engenharia de software foca em criar qualidade, e não criar documentos! Algum grau de documentação é necessário para evitar retrabalho! Questione sempre que encontrar um documento desnecessário para o projeto! Leonardo Murta Introdução à ES 40

7 princípios de Hooker Tem que existir uma razão para se fazer software Se não for possível identificar essa razão, é melhor não fazer Fazer software, em última instância, consiste em agregar valor para o usuário É importante enxergar os reais requisitos do software! Keep it simple, sir! (KISS) um projeto deve ser o mais simples possível, mas não mais simples que isso As soluções mais elegantes normalmente são simples Fazer algo simples usualmente demanda mais tempo do que fazer de forma complexa Leonardo Murta Engenharia de Requisitos 41

7 princípios de Hooker Mantenha o estilo O projeto de um software deve seguir um único estilo A combinação de diferentes estilos corretos pode levar a um software incorreto Padrões e estilos devem ser estabelecidos no início e seguidos por todos O que é produzido por você é consumido por outros Sempre especifique, projete e codifique algo pensando que outros vão ler Sempre exija qualidade nos produtos que você consome e forneça qualidade nos produtos que você produz Leonardo Murta Engenharia de Requisitos 42

7 princípios de Hooker Esteja pronto para o futuro Sistemas de boa qualidade têm vida longa Projete desde o início pensando na manutenção Planeje para reutilização Pense no problema geral, e não só no problema específico Busque por soluções já existentes Pense! plano é desnecessário, mas planejar é indispensável D. Eisenhower Avalie alternativas Mitigue os riscos Leonardo Murta Engenharia de Requisitos 43

Exercício Cenário Você deseja abrir uma empresa e lançar no mercado um produto inovador Qual ciclo de vida utilizar como base? Quais outras atividades de ES você incorporaria nesse processo? Quais são os maiores riscos que você está se expondo? Leonardo Murta Introdução à ES 44

Nós precisamos de ES! Leonardo Murta Engenharia de Requisitos 45

Introdução à ES Leonardo Gresta Paulino Murta leomurta@ic.uff.br