05/05/2010. Década de 60: a chamada Crise do Software

Documentos relacionados
Desenvolvimento Ágil de Software

ENGENHARIA DE SOFTWARE I

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

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

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Processo de Desenvolvimento Unificado

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

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

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

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

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

Sistemas de Informação I

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

Engenharia de Software Processo de Desenvolvimento de Software

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

Engenharia de Software

Engenharia de Software II

Engenharia de Software II

Processos de Software

Jonas de Souza H2W SYSTEMS

Metodologias Ágeis. Aécio Costa

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

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

Sistemas de Informação I

Desenvolvimento Ágil de Software em Larga Escala

Daniel Wildt

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

Prof. Me. Marcos Echevarria

O Processo Unificado

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

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

Com metodologias de desenvolvimento

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Engenharia de Software

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

Projeto de Sistemas I

Processos de Desenvolvimento de Software

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

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

ENG1000 Introdução à Engenharia

Modelos de Processo (métodos)

Unidade I Conceitos BásicosB. Conceitos BásicosB

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

Engenharia de Software

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

Desenvolvendo Software Livre com Programação extrema

Professor: Curso: Disciplina:

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Engenharia de Software I

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

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

Pós Graduação Engenharia de Software

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

Géssica Talita. Márcia Verônica. Prof.: Edmilson

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Engenharia de Requisitos Estudo de Caso

Processo de Desenvolvimento de Software Scrum. Prof. Antonio Almeida de Barros Jr.

Introdução à Engenharia de Software

O que é um processo de software?

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

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

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

Feature-Driven Development

5. Métodos ágeis de desenvolvimento de software

Programa do Módulo 2. Processo Unificado: Visão Geral

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

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

Comparativo entre Processos Ágeis. Daniel Ferreira

Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF

Engenharia de Software

Processo Unificado (RUP)

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

EXIN Agile Scrum Fundamentos

SCRUM Gerência de Projetos Ágil. Prof. Elias Ferreira

ELABORAÇÃO DE UM PRODUCT BACKLOG EFETIVO

A Evolução de XP segundo Kent Beck Parte 2

Gerenciamento de Projetos de Software esenvolvidos à Luz das Metodologias Ágeis. Ana Liddy C C Magalhães

Fundamentos de Engenharia de Software. Josino Rodrigues

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

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho.

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Engenharia de Software I: Análise e Projeto de Software Usando UML

Wesley Torres Galindo.

SCRUM. Otimizando projetos. Adilson Taub Júnior tecproit.com.br

Uma introdução ao SCRUM. Evandro João Agnes

Capítulo 1. Extreme Programming: visão geral

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

Engenharia da Web. Professor MSc Wylliams Barbosa Santos Disciplina: Projeto de Sistemas Web wylliams.wordpress.com

Transcrição:

Pressman, Roger S. Software Engineering: A Practiotioner s Approach. Editora: McGraw- Hill. Ano: 2001. Edição: 5 Introdução Sommerville, Ian. SW Engineering. Editora: Addison Wesley. Ano: 2003. Edição: 6 2 Disciplina gerencial e tecnológica lida com a produção e manutenção de produtos de software desenvolvidos dentro de estimativas de custo e tempo. Trata aspectos relacionados a Processos, Métodos, Técnicas, Ferramentas e Ambientes de suporte Desenvolver Software não é só programação! Obter software de qualidade Com produtividade no seu desenvolvimento, operação e manutenção Dentro de custos, prazos e níveis de qualidade controlados Com o melhor custo-benefício entre Qualidade e Produtividade 3 4 Década de 60: a chamada Crise do Software Desenvolvimento fora de controle Iniciou como um problema de Custo e Produtividade. Mais importante: era um problema de Qualidade Década de 70 Programação Estruturada Projeto Estruturado 5 6 1

Década de 80 Análise Estruturada (DFDs, Dicionário de Dados, Diagrama ER, de Estados, etc.) Ferramentas CASE Década de 90 Análise e Projeto OO. Modelagem de acordo com o mundo real. Características e Comportamento de Objetos. Processo Unificado Anos 2000 Metodologias Ágeis Novos paradigmas: SOA, Aspectos, Model-Driven Architecture, etc. 7 8 Software Programa de computador e documentação associada. Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral. Processo Uma série conectada de ações, atividades, mudanças, etc., realizada de forma bem definida por atores com a intenção de satisfazer um propósito ou objetivo. Define quem está fazendo o quê, quando e como para atingir um certo objetivo Entrada Processo (atividades e sub-processos) Saída 9 10 Processo de Software Conjunto de atividades, métodos, práticas e transformações que guiam pessoas na construção de Software 11 12 2

São uma representação abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software. Contêm: Esqueleto do processo Ordem de precedência das atividades Artefatos e produtos gerados Seqüenciais Cascata ou Clássico Modelos Evolucionários Programação Exploratória Prototipagem Descartável Específicos Métodos formais Iterativos Espiral Incremental 13 14 Modelo Clássico, derivado de modelos existentes em outras engenharias Sua estrutura é composta por várias etapas que são executadas de forma sistemática e seqüencial Na prática, existe uma interação entre as etapas e cada etapa pode levar a modificações nas etapas anteriores Requisitos Análise Projeto lementação Testes Operação e Manutenção 15 16 Requisitos Comunicação Análise - Iniciação do projeto - Levantamento de Requisitos Planejamento Projeto lementação - Estimativas - Cronograma - Monitoramento - Análise - Projeto Modelagem Construção Testes - Codificação - Teste lantação Operação e Manutenção - Entrega - Manutenção - Teste 17 18 3

Progresso do projeto (% codificado) 05/05/2010 É simples e fácil de aplicar, facilitando o planejamento Fixa pontos específicos para a entrega de artefatos Pressupõe que os requisitos ficarão estáveis 100% Início da integração Deadline original Porém, atrasa a redução de riscos! Tempo 19 20 Planejamento Esboçar escopo e requisitos Fazer estimativas razoáveis sobre recursos, custos e prazos Análise e Especificação de Requisitos Refinar requisitos e escopo Entender o domínio do problema, com comportamento e funcionalidades esperados Projeto Incorporar requisitos tecnológicos aos requisitos essenciais do sistema Fazer o projeto da arquitetura do sistema e projeto detalhado do sistema lementação Traduzir o projeto em uma forma passível de execução pela máquina. Codificação. 21 22 Testes Realizar diversos níveis de teste, de forma a fazer a verificação do software. lantação, Operação e Manutenção Colocar o software em produção Treinar pessoas Manter o software Gerenciar os serviços Programação exploratória Idéia geral: Modificações sucessivas até que o sistema seja considerado adequado Desenvolvimento da primeira versão do sistema o mais rápido possível Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários 23 24 4

Programação exploratória Adequado para o desenvolvimento de sistemas onde é difícil ou impossível se fazer uma especificação detalhada do sistema Principal diferença para os outros modelos é a ausência da noção de programa correto Prototipagem Como na programação exploratória, a primeira fase prevê o desenvolvimento de um programa para o usuário experimentar No entanto, o objetivo aqui é estabelecer os requisitos do sistema O software deve ser reimplementado na fase seguinte 25 26 Prototipagem Prototipagem É útil para sistemas grandes e complicados Ou quando não existe um sistema anterior ou manual que ajude a especificar os requisitos 27 28 Métodos Formais Idéia geral: Uma especificação formal (definição matemática, não ambígua) do software é desenvolvida e posteriormente transformada em um programa através de regras que preservam a corretude da especificação esp. 1 esp. 2 implement. Métodos Formais O próprio processo de desenvolvimento garante que o programa faz exatamente o que foi especificado É possível gerar programas corretos e completos por construção Têm sido aplicados apenas ao desenvolvimento de sistemas críticos (por questões de segurança!) 29 30 5

Motivação: requisitos de sistema sempre evoluem durante o projeto Deve-se dividir para conquistar Duas abordagens Desenvolvimento Incremental Desenvolvimento Espiral Desenvolvimento Incremental A idéia é de desenvolver e entregar o software em incrementos, com cada incremento entregando parte da funcionalidade requerida. Requisitos são definidos antes do desenvolvimento do incremento, sendo os mais críticos priorizados. Req A&P I/T Iteração 1 Req A&P I/T Iteração 2 Req A&P I/T Iteração 3 TEMPO 31 32 Incremental: são adicionados pedaços completos Iterativo: esboços ou pedaços incompletos do produto são adicionados a cada iteração Desenvolvimento em Espiral O processo é representado como uma espiral em vez de uma seqüência de atividades. Cada volta na espiral representa uma fase no processo Acrescenta aspectos gerenciais Planejamento, tomada de decisão Análise de Riscos Porém, é complexo e requer experiência na avaliação de riscos! 33 34 Desenvolvimento em Espiral [Pressman] Desenvolvimento em Espiral [Boehm] 35 36 6

Progresso do projeto (% codificado) 05/05/2010 100% Ciclo de vida iterativo Ciclo de vida tradicional Tempo 37 38 Início: década de 90 Reação contra métodos pesados, vistos como lentos e burocráticos Idéia central: tornar simples o que dificultava o desenvolvimento de software Geralmente aplicado em projetos onde os Requisitos e Prioridades são instáveis Hoje representa uma família de processos de desenvolvimento. Estamos evidenciando maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a entender que: Indivíduos e interações são mais importantes que processos e ferramentas. Software funcionando é mais importante do que documentação completa e detalhada. Colaboração com o cliente é mais importante do que negociação de contratos. Adaptação a mudanças é mais importante do que seguir o plano inicial. Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda. 39 40 extreme Programming Scrum FDD Lean Software Development Cristal Family (...) Errado - Metodologia Ágil não é o caos! 41 42 7

Surgimento Em meados de 1990, Kent Beck, procurou formas mais simples e eficientes de desenvolver Software. Em Março de 1996, ele iniciou um projeto com novos conceitos que resultaram na metodologia XP - extreme Programming Trata-se de uma metodologia ágil para equipes pequenas e médias desenvolvendo software com requisitos vagos e em constante mudança 43 44 Levar todas as boas práticas ao extremo Se testar é bom, vamos testar toda hora! Se projetar é bom, vamos fazer disso parte do trabalho diário de cada pessoa! Se integrar é bom, vamos integrar a maior quantidade de vezes possível! Se iterações curtas são boas, vamos deixar as iterações realmente curtas! Metáfora Procura facilitar a comunicação com o cliente, entendendo a realidade dele. Projeto simples O código está, a qualquer momento, na forma mais simples que passe todos os testes. Pequenas versões O software é entregue em pequenas versões para que o cliente possa obter o seu ganho o mais cedo possível e para minimizar riscos. 45 46 Refatoração Padrão de codificação A reconstrução baseia-se na remoção de redundância, eliminação de funcionalidades inúteis, e reconstrução de projetos obsoletos. Programação em Pares Todo código de produção é desenvolvido por duas pessoas trabalhando com o mesmo teclado, o mesmo mouse e o mesmo monitor. Propriedade coletiva do código A equipe como um todo é responsável por cada arquivo de código. Não é preciso pedir autorização para alterar qualquer arquivo. Todo código é desenvolvido segundo um padrão. 40 horas por semana Cada programador trabalha 40 horas por semana, no máximo Reuniões em pé Reuniões rápidas e diárias com a equipe, para discutir apenas o essencial Cliente sempre presente E com conhecimento sobre o negócio 47 48 8

Testes de Aceitação São definidos pelo usuário e são os critérios de aceitação do software. Desenvolvimento Orientado a Testes A criação de testes leva em conta não só o tempo ganho com a criação dos mesmos antes da codificação, mas conhecer previamente as possíveis falhas do seu sistema. Integração Contínua Os diversos módulos do software são integrados diversas vezes por dia e todos os testes unitários são executados. O código não passa até obter sucesso em 100% dos testes unitários. Comunicação Métodos para rapidamente construir e disseminar conhecimento Simplicidade XP encoraja que você comece, sempre, pela solução mais simples Feedback Do cliente, do sistema e da equipe Coragem Design simples, refatoração Respeito Respeito da Equipe, do Cliente, dos Usuários 49 50 O nome é derivado de uma atividade que ocorre durante um jogo de Rugby Princípios: Pequenas equipes de trabalho são organizadas de modo a maximizar a comunicação, minimizar a supervisão e maximizar o compartilhamento de conhecimento tácito informal. O processo precisa ser adaptável tanto a modificações técnicas como de negócio. O processo produz frequentes incrementos de software. Atividades do processo requisitos análise projeto evolução entrega. Principais papéis ScrumMaster; Product Owner; Team 51 52 Início: Jeff de Luca e Peter Coad em 1997-98 A FDD é focada na entrega regular de funcionalidades valiosas para o cliente Tem mais estrutura do que o XP, porém é mais enxuto do que o RUP é um meio termo. Seis Papéis Project Manager Chief Architect Development Manager Chief Programmers Class Owners (aka Developers) Domain Experts 53 54 9

Cinco processos 55 56 Antes da década de 90 casa de ferreiro, espeto de pau Hoje em dia as ferramentas CASE ainda não são tão variadas nem fornecem tudo aquilo que os desenvolvedores queriam, mas são um aparato essencial para o engenheiro de software O que são? São ferramentas que auxiliam o engenheiro de SW em cada atividade associada ao desenvolvimento de SW Quem usa? Gerentes de projeto e engenheiros de SW Por que são importantes? Reduzem o esforço necessário para produzir artefatos e alcançar metas Aumentam a qualidade do software 57 58 Quais são os passos? Ferramentas CASE são usadas em conjunto com o modelo de processo adotado. Se for escolhida uma ferramenta completa, pode passar por quase todos os passos do desenvolvimento de SW Como são usadas? Como complemento às boas práticas de Engenharia de Software. Ferramentas CASE não substituem uma metodologia de desenvolvimento de software sólida Um tolo com ferramentas, ainda é apenas um tolo 59 60 10

Horizontais São utilizados durante todo o processo de desenvolvimento de software Verticais São específicas para uma disciplina de software Por funções [Pressman] Processos de negócio, Planejamento de projeto, Análise de Riscos, Rastreamento de Requisitos, IDEs, Gerenciamento de BDs, Análise Estática, Análise Dinâmica,... Como não há um padrão para categorizar ferramentas CASE, a seguinte proposta foi feita: Front-end ou Upper CASE apóiam as etapas iniciais da criação dos sistemas: as fases de planejamento, análise e projeto da aplicação Back-end ou Lower CASE dão apoio à parte física, i.e, código, testes e manutenção I-CASE ou Integrated CASE cobrem todo o ciclo de vida, do início ao fim 61 62 11