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



Documentos relacionados
Unidade I Conceitos BásicosB. Conceitos BásicosB

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

ENGENHARIA DE SOFTWARE II. Modelos de Ciclo de Vida e Processos de Software AULA 2

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

Modelos do Design de Software

Pós Graduação Engenharia de Software

Processos de Desenvolvimento de Software

Professor: Curso: Disciplina:

PROFESSOR: CRISTIANO MARIOTTI

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Definição de Processos

Engenharia de Software

ISO/IEC 12207: Gerência de Configuração

Engenharia de Software

ENGENHARIA DE SOFTWARE I

Prof. Me. Marcos Echevarria

Engenharia de Software II

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

Tecnologias Atuais 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

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

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

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

Processo de Desenvolvimento Unificado

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

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

AUTOR(ES): IANKSAN SILVA PEREIRA, ALINE GRAZIELE CARDOSO FEITOSA, DANIELE TAMIE HAYASAKA, GABRIELA LOPES COELHO, MARIA LETICIA VIEIRA DE SOUSA

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I Aula 3

Engenharia de Requisitos

GESTÃO DAS INFORMAÇÕES DAS ORGANIZAÇÕES MÓDULO 11

Gerência de Projetos

AVALIAÇÃO DE INTERFACES UTILIZANDO O MÉTODO DE AVALIAÇÃO HEURÍSTICA E SUA IMPORTÂNCIA PARA AUDITORIA DE SISTEMAS DE INFORMAÇÕES

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

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

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

ENG1000 Introdução à Engenharia

Engenharia de Requisitos

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

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

Ciclo de Vida de um Projeto

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

Melhorias de Processos de Engenharia de Software

Processo de Desenvolvimento de Software Workshop de Engenharia de Software

21/03/2012. WorkFlow. Gestão Eletrônica de Documentos. Workflow HISTÓRICO

Projeto de Sistemas I

Gestão da Qualidade por Processos

O Processo Unificado

O Processo Unificado: Captura de requisitos

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

Sistemas de Informação I

Introdução a UML. Hélder Antero Amaral Nunes haanunes@gmail.com

Desenvolvimento Ágil de Software

Sistemas de Informação I

Extração de Requisitos

MODELO CMM MATURIDADE DE SOFTWARE

Modelos de Processo (métodos)

Dicionário da EAP - Software FarmaInfor

Engenharia de Software

3 Qualidade de Software

5 EDI - As montadores e suas distribuidoras

Qualidade em Projetos aperfeiçoamento de processos Entendimento/Monitoração e Controle. 0 - Generalidades

Engenharia de Software Processo de Desenvolvimento de Software

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

ERP Enterprise Resource Planning

Quem vem primeiro? Projeto de Sw ou Projeto de IHC? Melhor virem juntos, integrados.

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

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

Técnicas de Teste de Software

Gerenciamento de Projetos Modulo II Clico de Vida e Organização

Tecnologia e Sistemas de Informações

Carreira: definição de papéis e comparação de modelos

Prof. Marcelo Henrique dos Santos

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

Introdução à Computação

Universidade Paulista

PROPOSTA DE DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE ADMINISTRATIVO PARA MICRO EMPRESA DE INFORMÁTICA: O CASO INFOCENTER

Software livre: solução ou problema? Autores: Prates, C. F., Souza, C. H. F. B., Castro, C. V., Vilela, D. R. G., Almeida, N. M

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Engenharia de Software

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009

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

Engenharia de Software I

Engenharia de Software: Introdução e uma Visão do Processo de Software

COMO ENTENDER O VALOR EMPRESARIAL DOS SISTEMAS E COMO GERENCIAR A MUDANÇA

Pesquisa Etnográfica

Coletividade; Diferenciais; Informação; Dado; Informação; Conhecimento. Coletar informação; e Identificar as direções.

BASE CONCEITUAL. Secretaria de Gestão (Seges)

UNIP Ciência da Computação / Sistemas de Informação TED I - Orientações Gerais para Elaboração dos Documentos

CÓDIGO CRÉDITOS PERÍODO PRÉ-REQUISITO TURMA ANO INTRODUÇÃO

PROVA DISCURSIVA. UnB/CESPE BACEN/2013

Requisitos. Sistemas de Informações

Guia de recomendações para implementação de PLM em PME s

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

ACOMPANHAMENTO GERENCIAL SANKHYA

07/06/2014. Segunda Parte Prof. William C. Rodrigues Copyright 2014 Todos direitos reservados.

Transcrição:

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL Um processo é um conjunto de passos parcialmente ordenados, constituídos por atividades, métodos, práticas e transformações, usado para atingir uma meta. Esta meta geralmente está associada a um ou mais resultados concretos finais, que são os produtos da execução do processo. Um processo é uma receita que é seguida por um projeto; o projeto concretiza uma abstração, que é o processo. Não se deve confundir um processo (digamos, uma receita de risoto de camarão) com o respectivo produto (risoto de camarão) ou com execução do processo através de um projeto (a confecção de um risoto de camarão por determinado cozinheiro, em determinado dia). Um processo é definido quando tem documentação que detalha: o que é feito (produto), quando (passos), por quem (agentes), as coisas que usa (insumos) e as coisas que produz (resultados). Processos podem ser definidos com mais ou menos detalhes, como acontece com qualquer receita. Os passos de um processo podem ter ordenação apenas parcial, o que pode permitir paralelismo entre alguns passos. Por exemplo, na figura acima, um processo é representado na forma de um grafo. Existe paralelismo entre os passos 2a e 2b. Passos, agentes, insumos e resultados estão entre os elementos de um processo. A arquitetura de um processo define um arcabouço conceitual para a organização dos elementos de um processo. 1.2. PROCESSOS DE SOFTWARE Em engenharia de software, processos podem ser definidos para atividades como desenvolvimento, manutenção, aquisição e contratação de software. Pode-se também definir subprocessos para cada um desses; por exemplo, um processo de desenvolvimento abrange subprocessos de determinação dos requisitos, análise, desenho, implementação e testes. Em um processo de desenvolvimento de software, o ponto de partida para a arquitetura de um processo é a escolha de um modelo de ciclo de vida. O ciclo de vida mais caótico é aquele que pode ser chamado de Codifica-remenda. Partindo apenas de uma especificação (ou nem isso), os desenvolvedores começam imediatamente a codificar, remendando à medida que os erros vão sendo descobertos. Nenhum processo definido é seguido. Infelizmente, é provavelmente o ciclo de vida mais usado. Para alguns desenvolvedores, esse modelo é atraente porque não exige nenhuma sofisticação técnica ou gerencial. Por outro lado, é um modelo de alto risco, impossível de gerir e que não permite assumir compromissos confiáveis. No modelo de ciclo de vida em Cascata, os principais subprocessos são executados em estrita seqüência, o que permite demarcá-los com pontos de controle bem-definidos. Esses pontos de controle facilitam muito a gestão dos projetos, o que faz com que esse processo seja, em princípio, confiável e utilizável em projetos de qualquer escala. Por outro lado, se interpretado literalmente, é um processo rígido e burocrático, em que as atividades de requisitos, análise e desenho têm de ser muito bem dominadas, pois

não são permitidos erros. O modelo em cascata puro é de baixa visibilidade para o cliente, que só recebe o resultado final do projeto. Na prática, é sempre necessário permitir que, em fases posteriores, haja revisão e alteração de resultados das fases anteriores. Por exemplo, os modelos e documentos de desenho podem ser alterados durante a implementação, à medida que os problemas vão sendo descobertos. Uma variante que permite superposição entre fases e a realimentação de correções é um modelo mais realista, com realimentação entre as fases. A realimentação entre fases toma difícil gerenciar projetos baseados nesse modelo de ciclo de vida. Um modelo de ciclo de vida radicalmente diferente é o modelo em Espiral. O produto é desenvolvido em uma série de iterações. Cada nova iteração corresponde a uma volta na espiral. Isso permite construir produtos em prazos curtos, com novas características e recursos que são agregados à medida que a experiência descobre sua necessidade. As atividades de manutenção são usadas para identificar problemas; seus registros fornecem dados para definir os requisitos das próximas liberações. O principal problema do ciclo de vida em espiral é que ele requer gestão muito sofisticada para ser previsível e confiável. Quando o modelo em espiral é aplicado a um único projeto, tem-se o modelo de Prototipagem evolutiva. Nesse modelo, a espiral é usada não para desenvolver o produto completo, mas para construir uma série de versões provisórias que são chamadas de protótipos. Os protótipos cobrem cada vez mais requisitos, até que se atinja o produto desejado. A prototipagem evolutiva permite que os requisitos sejam definidos progressivamente, e apresenta alta flexibilidade e visibilidade para os clientes. Entretanto, também requer gestão sofisticada, e o desenho deve ser muito robusto, para que a estrutura do produto não se degenere ao longo dos protótipos. Além disso, requer equipe muito disciplinada e experiente. Esse modelo de ciclo de vida é aplicado em processos recentes que se dizem ágeis, dos quais o XP é o mais conhecido. Uma combinação dos modelos em Cascata e Prototipagem evolutiva forma o modelo de Entrega Evolutiva. Esse modelo permite que, em pontos bem-definidos, os usuários possam avaliar partes do produto e fornecer realimentação quanto às decisões tomadas. Facilita também o acompanhamento do progresso de cada projeto, tanto por parte de seus gerentes como dos clientes. A principal dificuldade é a realização do desenho arquitetônico (isto é, dos aspectos de mais alto nível de abstração): ele deve produzir uma arquitetura de produto robusta, que se mantenha íntegra ao longo dos ciclos de liberações parciais. Em modelos dirigidos por prazo (time-boxed), o produto é aquilo que se consegue fazer dentro de determinado prazo. Esses modelos podem ser razoáveis quando se consegue definir um conjunto de requisitos indispensáveis para os quais se sabe que os prazos estabelecidos são suficientes, e as folgas são usadas apenas para implementar requisitos opcionais. Na prática, os prazos costumam ser definidos de forma política, e o produto que se entrega no final do prazo é apenas um resultado parcial. Este será completado aos trancos e barrancos em desenvolvimento posterior, disfarçado de manutenção. O ciclo de vida pode ser também dirigido por ferramenta (que pode ser chamada, pelos respectivos fabricantes, de ferramenta de CASE ou plataforma de desenvolvimento). Algumas ferramentas impõem processos rígidos, que podem ser adequados para tipos bem específicos de produtos. A qualidade desses processos depende fundamentalmente da qualidade da ferramenta e de que o uso do processo seja restrito ao seu domínio de aplicação. Uma solução tentadora pode ser comprar em vez de desenvolver. Quando se encontra um produto que atende aos requisitos desejados, é uma boa solução. Nesse caso, não há processo de desenvolvimento, mas existirão processos de aquisição, de implantação e, possivelmente, de adaptação e integração com outros sistemas. Dependendo dos casos, esse conjunto de processos pode ser mais sofisticado e caro do que um processo de desenvolvimento.

Muitos outros detalhes podem ser discutidos a respeito dos modelos de ciclo de vida de software.