O que é um processo de software?



Documentos relacionados
Modelos de Processo (métodos)

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

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

Processo de Software

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA

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

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

O que é um processo de software?

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

Processo Unificado (RUP)

Engenharia de Software I Modelos de Processo de Software

Professor: Curso: Disciplina:

Pós Graduação Engenharia de Software

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

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

RUP Rational Unified Process

Processos de Software

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

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

Visão Geral Parte 1. O que é engenharia de software?

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

Processos de Desenvolvimento de Software

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

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

ENG1000 Introdução à Engenharia

Processo de Desenvolvimento Unificado

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

Abordagem baseada numa visão evolutiva do desenvolvimento de software, afetando o processo como um todo Protótipo de software é um sistema que...

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

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

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

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

ENGENHARIA DE SOFTWARE I

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

Engenharia de Software

Engenharia de Software Processo de Desenvolvimento de Software

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Engenharia de Software II

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Planejamento e Gerenciamento de Software. Tema 3. Gerência de Projetos Profa. Susana M. Iglesias

Desenvolvimento Ágil de Software

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

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

Engenharia de Software

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

Segurança de Aplicações Aula 6

PROFESSOR: CRISTIANO MARIOTTI

Sistemas de Informação I

Engenharia de Software I

PROJETO DE FÁBRICA DE SOFTWARE

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

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Planejamento e Gerenciamento de Projeto de Software

Engenharia de Software

Metodologia e Gerenciamento do Projeto na Fábrica de Software

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

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

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

A Disciplina Gerência de Projetos

Planejamento Iterativo

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

Engenharia de Software II

TUTORIAIS. Framework SCRUM. Rafael Buck Eduardo Franceschini. MSc., PMP, CSM MBA

O Processo Unificado

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

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

Gerência de Projetos

Introdução Engenharia de Software

Processo de Desenvolvimento de Software. Engenharia de Software.

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

Unidade I Conceitos BásicosB. Conceitos BásicosB

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

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

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

Engenharia de Software

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

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

Modelos de processos de desenvolvimento de software

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

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

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

Engenharia de Requisitos Estudo de Caso

Engenharia de Negócios. Gestão de Sistemas Complexos. Planejamento Time Box

Projeto de Sistemas I

Modelos do Design de Software

Introdução ao Processo Unificado (PU)

Metodologia de Gerenciamento de Projetos da Justiça Federal

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

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

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

LISTA DE EXERCÍCIOS METODOLOGIAS ÁGEIS ENGENHARIA DE SOFTWARE 10/08/2013

Engenharia de Software I

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Transcrição:

O que é um processo de software? Um conjunto de atividades realizadas por pessoas cujo objetivo é desenvolvimento ou evolução de software e sua documentação. Atividades genéricas em todos os processos: Especificação o que o sistema deve fazer (funcionalidade) e quais as restrições Desenvolvimento produção do software Verificação avaliar correção, validação e outros aspectos de qualidade Manutenção mudanças no software Um modelo de processo de software é uma representação abstrata das atividades, papéis e artefatos, cronograma. Processo Desenvolvimento de Software Requisitos do Usuário Processo de Desenvolvimento de Software Sistema novo ou modificado Um processo é o conjunto total de atividades de engenharia necessárias para transformar requisitos do usuário em software Managing the Process, Humphrey, 1989

Modelo X Processo Um modelo é algo teórico, um conjunto de possíveis ações. O processo deve determinar ações práticas a serem realizadas pela equipe como prazos definidos e métricas para se avaliar como elas estão sendo realizadas. Define quem faz o que, quando e como. Modelo + Planejamento = Processo Atividades, Artefatos, Marcos e Entregas Um processo é organizado em atividades. Atividades são de responsabilidade de um membro da equipe (trabalhador). Atividades devem gerar um artefato de saída, que possa ser verificado, e podem requisitar um artefato de entrada. Um artefato é um modelo, documento ou código produzido por uma atividade. Uma entrega (liberação) é um artefato entregue ao cliente Um processo deve estabelecer uma série de marcos. Um marco é um ponto final de uma atividade de processo.

Modelos de Processo Um modelo de processo ou método define um conjunto de atividades específicas. Principais modelos: Cascata (Waterfall) Espiral (Spiral) Evolutivo Incremental Processo Unificado da Rational (Rational Unified Process RUP) extreme Programming (XP) Modelo Cascata Requirements definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance Fonte: Ian Sommerville

Atividades típicas do modelo Cascata Análise e definição de requisitos Objetivos, funções e restrições são definidos, com ajuda de clientes e usuários, e servem como uma especificação do sistema, indicando o que deve ser implementado. Design de sistemas e software Envolve a descrição do sistema e do software em termos de unidades abstratas e de suas relações, indicando como o software deve ser implementado. Implementação e testes de unidade As unidades do software devem ser codificadas e testadas individualmente. Integração e testes de sistema A unidades são integradas e testadas Entrega, operação e manutenção O sistema é instalado e colocando em operação. A manutenção envolve a correção de erros e evolução do sistema para atender a novos requisitos. Características do modelo Cascata Divisão inflexível do projeto em estágios distintos. A fase seguinte só deve iniciar quando a anterior tiver sido concluída e aprovada pelas partes envolvidas. Por exemplo,o design apenas deve começar quando os requisitos estiverem totalmente definidos e aprovados Dificuldade em realizar mudanças com o processo em andamento requisitos sempre mudam. O modelo em cascata é apropriado quanto se tem um entendimento claro dos requisitos. Oferece maior previsibilidade de prazos e custo: melhor planejamento e gerenciamento. A engenharia do sistema segue este tipo de modelo.

Prototipação Abordagem baseada numa visão evolutiva do desenvolvimento de software, afetando o processo como um todo Protótipo de software é um sistema que... funciona não tem tempo de vida definido pode servir a múltiplos propósitos deve ser construído rapidamente e com baixo custo é parte integrante de um design centrado no usuário, para avaliação e modificação Tipos e objetivos dos protótipos Tipos Falso Autêntico Funcional Sistema piloto Objetivos Exploração Experimentação Evolução

Prototipação Desenvolvimento Evolutivo Desenvolvimento Exploratório A partir de requisitos iniciais, é elaborado um protótipo que permite, junto ao cliente, explorar novos requisitos. Prototipagem Protótipo descartáveis Protótipo evolutivos - evolui para o produto final Características Útil quando os requisitos estão obscuros Especificação é construída gradativamente Possibilitam um rápido desenvolvimento da aplicação Requer ferramentas específicas Os sistemas são freqüentemente mal-estruturados e maldocumentados. Processo não é claro, dificuldade de planejamento e gerenciamento

Desenvolvimento Evolutivo Concurrent activities Specification Initial version Outline description Development Intermediate versions Validation Final version Fonte: Ian Sommerville Desenvolvimento incremental Desenvolvimento iterativo, em ciclos que permitem revisões de atividades anteriores. O sistema é particionado em partes independentes que podem ser entregues à medida que forem ficando prontas e avaliadas. A arquitetura do sistema deve possibilitar a entrega das partes independentes. Define outline requirements Assign requirements to increments Design system architecture Develop system increment Valida te increment System incomplete Integrate increment Vali dat e system Final system

Características do modelo incremental Os incrementos funcionam como protótipos do sistema. A avaliação do cliente pode ser feitas a partir das experiências do usuário com as entregas parciais. Novos requisitos podem ser incorporados aos outros incrementos do sistema. Deve-se identificar funcionalidade prioritárias que serão desenvolvidas primeiro. Os processos de cada incremento podem ser independentes. Pode-se utilizar Cascata. Risco menor de fracasso completo do sistema. A funções entregues primeiro são testadas mais vezes, à medida que os incrementos são entregues. Desenvolvimento formal de sistemas Baseado na transformação de uma série representações matemáticas da especificação em um programa executável. A especificação de requisitos, informal ou semi-formal, é redefinida em uma especificação formal detalhada, utilizando uma notação matemática: VDM, Z, B, Larch e outras As atividades de design, implementação e testes são substituídas por um processo transformacional. As transformações devem ser matematicamente corretas, baseadas em provas-de-correção. As provas são longas e impraticáveis para sistemas de grande porte. É adequado a sistemas com exigências rigorosas de segurança, confiança e garantia.

Transformações formais Requirements definition Formal specification Formal transformation Integration and system testing Formal transformations T1 T2 T3 T4 Formal specification R1 R2 R3 Executable program P1 P2 P3 P4 Fonte: Ian Sommerville Proofs of transformation correctness Modelo Espiral O processo é representado como uma espiral. Cada ciclo do espiral é uma fase do processo Cada ciclo determina quatro etapas fundamentais: Definição de objetivos, alternativas e restrições Análise e redução de riscos Desenvolvimento e validação Planejamento do próximo ciclo Protótipos são construídos em cada ciclo. Não há fases fixas pré-definidas. Elas são definidas de acordo com os objetivos. É um meta-modelo: qualquer modelo pode ser derivado a partir do modelo espiral

Modelo Espiral (Spiral) Determine objectives alternatives and constraints Plan next p hase REVIEW Requirements plan Life-cycle plan Development plan Integration and test p lan Risk analysis Risk analysis Risk analysis Prototyp e 2 Risk analysis Prototy pe 1 Concept of Operation S/W requirements Requirement valid ati on Design V&V Service Acceptance test Evaluate alternatives iden tify, resolve risks Prototyp e 3 Operational protoyp e Simulations, models, b en ch marks Product design Code Unit test Integr ation test Detail ed design Develop, v erify next-level p rod uct Programação extrema (XP) Abordagem baseada no desenvolvimento e entrega de pequenas partes da funcionalidade do software. As partes devem ser incrementadas e requer a melhoria constante do código (re-trabalho). Requer o envolvimento constante do cliente Os sistema é concebido a partir de uma metáfora e descritos em estórias do usuário. É necessário a definição de testes de aceitação. Não existe um processo de design tradicional e não são gerados modelos da arquitetura do software A programação é feita por pares de programadores. Prática do codifica-e-conserta.

Regras e Práticas - 1 Planejando Estórias do usuário Planejando liberações (releases) e pequenas liberações Dividir projetos em iterações (ciclos) Medindo velocidade do projeto Dinâmica de pessoal Reuniões diárias em pé Projetando (designing) Simplicidade (não adicione funcionalidades antes do tempo) Metáfora Cartões CRC (Classes, Responsabilidades e Colaboração) Re-fabricar (refactor) Regras e Práticas - 2 Codificando O cliente deve estar sempre disponível. Programação em pares. Codificar de acordo com padrões acordados. Codificar testes de unidade primeiro. Integrar com freqüência. O código é propriedade coletiva. Não atrase. Testando Todo código deve ter os testes de unidade. Cada unidade deve ser testada antes de liberada. Quando um erro é encontrado, testes devem ser realizados. Testes de aceitação devem ser freqüentes.

XP - Projeto XP - Iteração

XP - Desenvolvimento XP Propriedade coletiva do código