Processo de Elaboração de Software. Ciclo de Vida

Documentos relacionados
Engenharia de Software II

2. Processos em Engenharia de Software

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

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

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

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

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

Processo de Desenvolvimento. Edjandir Corrêa Costa

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

Processos de Software

Processo de Desenvolvimento de Software

Modelos de Processo de Software

Engenharia de Software. Herbert Rausch Fernandes

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

Modelos de Processo de Software

Ciclo de Vida de Sistemas de Informação

Requisitos de Sistemas

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

Introdução ao RUP Rational Unified Process

Engenharia Software. Ení Berbert Camilo Contaiffer

Halison Miguel Edvan Pontes

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

Introdução ao RUP. Livar Correia de O. C. Cunha Effektiv Solutions

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

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

Aula 2 Processo de Software

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

Rational Unified Process (RUP)

Engenharia de Software Processo de Desenvolvimento de Software

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

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

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

APLICAÇÃO DA ENGENHARIA DE REQUISITOS E ESPECIFICAÇÃO DE REQUISITOS NA IDENTIFICAÇÃO DE ESCOPO DE SISTEMA

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

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

PROCESSO DE SOFTWARE

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

Propriedade Intelectual/Industrial do Software:

CICLO DE VIDA DO SOFTWARE. Nas empresas também é difícil adotar apenas um ciclo de vida, na maioria das vezes possui mais de um.

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

Processos de Software

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

Agenda TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS. Aula 2 19/08/2012

ENGENHARIA DE SOFTWARE. Introdução

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Processos de. Desenvolvimento de Software

Engenharia de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Modelos de Ciclo de Vida (Parte 1)

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

Modelos de Ciclo de Vida

Processos de software

INF014 Análise e Projeto de Sistemas Processos Unificado -RUP

UML 2.0 Método, Linguagem e Ferramenta. Prof. Cesar Augusto Tacla

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

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

CICLO DE VIDA DE SOFTWARE

RUP/PSDS. Introdução e Comparação

Aula 1 - Introdução à disciplina e Processos de desenvolvimento de software e suas atividades básicas

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

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

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Processos de Software

Análise e Projeto de Sistemas

RUP RATIONAL UNIFIED PROCESS

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

Prova Discursiva Engenharia de Software

Análise e projeto de sistemas

Qualidade de Software Aula 8 / 2010

Visão Geral do RUP (Rational Unified Process)

PROCESSO RUP. Progessora Lucélia

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Prof. Ms. Ronaldo Martins da Costa

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

Processos de Software

Modelos Prescritivos de Processo

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

Princípios da Engenharia de Software aula 03

Definições e ciclo de vida

Crise do Software. Crise de tecnologia - hardware caminha mais rápido que o software

Professor Emiliano S. Monteiro

Aula 3.1 Introdução e Visão Geral do Processo Unificado

Escolhendo um Modelo de Ciclo de Vida

Cadeira: Análise de Sistemas

Engenharia de Software

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

Áreas de Conhecimento, Técnicas de Análise de Negócio e Conceitos-Chave

ENGENHARIA DE SOFTWARE

Problemas e Práticas Recomendadas no Desenvolvimento de Software

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

UML Diagrama de Atividades Diagrama de Caso de Uso. ENG1518/3VB Sistemas de Informação Gerenciais Prof. Marcos Villas

Introdução. Introdução. Introdução. Planejamento da disciplina. Modelagem de Processos de Negócio. Prof.: Clarindo Isaías Pereira da Silva e Pádua

Visão Geral do RUP.

Transcrição:

Processo de Elaboração de Software Ciclo de Vida

Introdução A elaboração de software é um processo iterativo de aprendizado, e o resultado é uma incorporação de conhecimentos coletados, refinados e organizados, à medida que o processo é desenvolvido.

Processo de Software Podemos definir processo de software como um estrutura para as tarefas que são necessárias na construção de softwares de alta qualidade.

Processo Um processo define quem está fazendo o quê, quando e como para alcançar um certo objetivo. [Ivar Jacobson, Grady Booch e James Rumbaugh] Se o processo for fraco, o produto final sofrerá inevitavelmente, mas uma ênfase exagerada no processo também é perigosa. [Roger Pressman, 2006]

Panorama Sobre Processo O que é? Quando você elabora um produto ou sistema é importante percorrer uma série de passos previsíveis um roteiro que o ajuda a criar a tempo um resultado de alta qualidade. O roteiro que você segue é chamado de Processo de Software; Quem faz? Os engenheiros de software e seus gerentes adaptam o processo a suas necessidades e depois o seguem.

Panorama Sobre Processo Por que é importante? Porque fornece estabilidade, controle e organização para um atividade que pode, se deixada sem controle, tornar-se bastante caótica. Quais são os passos? Em nível de detalhe, o processo adotado depende do software que você está construindo. Um processo poderia ser apropriado à criação de softwares para o sistema de uma aeronave, enquanto um processo inteiramente diferente seria indicado para a criação de um site;

Panorama Sobre Processo Qual é o produto do trabalho? Do ponto de vista de um engenheiro de software, os produtos do trabalho são os programas, documentos e dados produzidos; Como tenho certeza de que fiz corretamente? Existem diversos mecanismos de avaliação do processo de software. Todavia, a qualidade, pontualidade e viabilidade a longo prazo do produto que você constrói são os melhores indicadores da eficácia do processo usado.

Outras Definições de Processo Dentre várias definições temos: Conjunto de tarefas ordenadas; Uma série de etapas que envolvem atividades, restrições e recursos para alcançar a saída desejada; Quando envolve a elaboração de um produto, podemos chamar de Ciclo de Vida; Descreve a vida do produto de software desde a concepção até a implementação, entrega, utilização e manutenção.

Ciclo de Vida de Software Assim, pode-se dizer que um ciclo de vida básico contém as seguintes características: Começa na concepção do problema (solicitação do usuário); Termina quando o sistema sai de uso.

Características de Processos Um processo define a abordagem que é adotada quando o software é elaborado. Um processo é caracterizado por um conjunto de: Atividades Papéis Artefatos ou produtos de trabalho de entrada ou saída Fluxos

Atividade Atividade é uma unidade de trabalho que um indivíduo naquele papel poderá ser solicitado a executar. Em um primeiro nível, as atividades são ordenadas e interligadas para descreverem um fluxo de tarefas.

Atividade Atividades definem o que deve ser feito. Exemplos de atividades em processo de software: Analisar solicitação do cliente, Levantar requisitos, Documentar requisitos, Realizar estimativas de tamanho, Validar requisito junto ao cliente, Realizar planejamento do projeto, Validar projeto junto aos stakeholders, Projetar arquitetura, Realizar testes.

Papel Um papel define as responsabilidades ou atribuições de um indivíduo, ou grupo de indivíduos, que trabalham juntos como uma equipe Uma pessoa pode ter vários papéis em um projeto. É o famoso funcionário Bombril.

Papel Papel define o que uma pessoa poderá fazer. Exemplos de papéis: Atendente Analista de Requisitos ou Analista de Negócios Analista de Sistemas, Engenheiro de Software ou Projetista Arquiteto de Software Gerente de Projetos Desenvolvedor Analista de Testes ou Testador Projetista de Banco de Dados Administrador de Banco de Dados

Artefato ou Produto de Trabalho Um artefato é um pedaço de informação que é produzida, modificada ou utilizada em um processo. São produtos tangíveis de um processo: Documentos Especificações Modelos Diagramas UML Código-fonte Executáveis Listas e cronogramas de atividades Questionário de entrevista Pauta de reunião de revisão

Fluxo Um fluxo é uma seqüência de atividades que produz um resultado de valor observável. Pode ser expresso de várias formas: Diagrama de Atividades UML Diagramas PEPP Diagramas BPMN Fluxogramas Etc..

Estrutura Básica de um Processo Estrutura = Arcabouço

Estrutura Básica de um Processo Comunicação: Envolve alta comunicação e colaboração com o cliente. Abrange o levantamento de requisitos. Planejamento: Descreve as tarefas técnicas a serem comduzidas, os riscos prováveis, os recursos que serão necessários, os artefatos a serem produzidos e um cronograma de trabalho. Modelagem: Criação de modelos que permitam ao desenvolvedor e ao cliente entender os requisitos do software. Construção: Geração de código, em alguma linguagem de programação, e os testes necessários. Implantação: O software é entregue ao cliente, que avalia o produto e fornece o feedback com base na avaliação.

Estrutura de um Processo

Estrutura de um Processo Essas cinco atividades genéricas de arcabouço podem ser usadas durante tanto no desenvolvimento de pequenos programas, aplicações para a internet ou complexos sistemas baseados em computador.

Atividades Guarda-Chuva O arcabouço descrito na visão genérica de engenharia de software é complementado por várias outras atividades, chamadas atividades guarda-chuva.

Atividades Guarda-Chuva Acompanhamento e controle de projeto de software Garantia de qualidade de software Revisões técnicas formais Medição Gestão de configuração de software Gestão de reusabilidade Preparação e produção do produto do trabalho

Padrão de Processo O processo de software pode ser definido como uma coleção de padrões que definem um conjunto de atividades, ações, tarefas de trabalho ou produtos de trabalho necessários ao desenvolvimento de software.

Padrão de Processo Dito em termos mais gerais, um padrão de processo nos fornece um gabarito um método consistente para descrever uma característica importante de processo de software.

Padrão de Processo Padrões podem ser definidos em qualquer nível de abstração em um processo ou atividade. Por exemplo: Na descrição de um processo completo (por exemplo, prototipação). Na descrição de uma importante atividade de arcabouço (por exemplo planejamento). Na descrição de uma tarefa dentro de uma atividade de arcabouço (por exemplo, estimativa de projeto).

Exemplo de Gabarito de Padrão

Padrão de Processo Os padrões de projeto fornecem um mecanismo efetivo para descrever qualquer processo de software. Uma vez que os padrões de processo tenham sido desenvolvidos, eles podem ser reutilizados para a definição de variantes do mesmo processo.

Importância do Padrão

Avaliação de Processo A simples existência de um processo de software não é a garantia de que o software será entregue no prazo, satisfaça as necessidades do cliente, ou exiba as características técnicas que levarão a qualidade no fim do prazo. A forma de produzir deve ser sempre avaliada e testada!

Avaliação de Processo

Avaliação de Processo A melhor forma de se avaliar um processo de desenvolvimento de software é através do uso de técnicas e normas de qualidade, que veremos mais a frente. Porém, a melhor maneira se produzir um produto de qualidade é melhorar o próprio processo de produção!

Modelos de Processo de Software Modelos de processo que enfatizam a definição, identificação e aplicação detalhada de atividades e tarefas de processo têm sido aplicados na comunidade de engenharia de software durante os últimos trinta anos.

Modelos de Processo de Software A aplicação inteligente de qualquer modelo de processo de software deve reconhecer que a adaptação (ao problema, ao projeto, à equipe e à cultura organizacional) é essencial para o sucesso. Mas os modelos de processo diferem fundamentalmente: No fluxo geral de atividades e tarefas; No grau em que os produtos são identificados e solicitados; No modo como o monitoramento de projeto é aplicado; No grau geral de detalhes e rigor em que o processo é descrito; No grau em que clientes estão envolvidos no projeto; No nível de autonomia da equipe de projeto de software;

Modelo de Processo O melhor modelo processo de software é aquele que se aproxima do pessoal que fará o serviço! Se um modelo de processo de software tiver sido desenvolvido no nível da empresa ou organização, ele pode ser efetivo apenas se for suscetível a adaptações significativas á realidade da equipe.

Modelo de Processo O ideal seria que cada engenheiro de software criasse um processo que melhor satisfizesse às suas necessidades e, ao mesmo tempo, às necessidades mais globais da equipe e da organização (personalização).

Modelos Pessoal e de Equipe

Modelo Pessoal

Modelo PSP O PSP (Personal Software Process) parte do princípio de que, para atingir níveis superiores de maturidade, era necessário melhorar a prática dos processos ao nível dos desenvolvedores individuais. O poder fica concentrado. A gerência mais rápida e facilitada. Isto significa que somente um profissional toma a frente das decisões sobre o processo (produção).

Modelo PSP Objetivos principais do PSP são: 1. Melhorar as estimativas; 2. Melhorar o planejamento e o acompanhamento de cronogramas; 3. Proteger contra o excesso pessoal para a qualidade; 4.Criar um comprometimento pessoal para a qualidade; 5. Envolvimento constante do engenheiro na melhoria contínua do processo. 6. Padronizar artefatos.

Modelo PSP O modelo PSP define cinco atividades de arcabouço: 1. Planejamento = requisitos e estimativas 2. Projeto de alto nível = especificações e protótipo 3. Revisão do projeto de alto nível = verificação formal 4. Desenvolvimento = geração e teste de código 5. Pós-conclusão = medição e aperfeiçoamento

Modelo De Equipe

Modelo TSP A idéia do modelo TSP (Team Software Process) é construir uma equipe de projeto que se organize para produzir softwares de alta qualidade.

Modelo TSP Uma equipe auto-dirigida tem que ter um entendimento consistente de suas metas e objetivos gerais. Ela define papéis e responsabilidades para cada membro da equipe; monitora dados de projeto; identifica uma estratégia para sua implementação; avalia continuamente o risco e reage a isso.

Modelo TSP Os objetivos para o TSP são: 1. Construir equipes auto-dirigidas que planejem e monitorem seus trabalhos, estabeleçam metas e possuam seus próprios processos e planos. 2. Mostrar aos gerentes como acompanhar e motivar suas equipes, e como ajudá-las a manter desempenho de pico. 3. Acelerar o aperfeiçoamento do processo de software. 4. Facilitar o ensino universitário das habilidades de equipe de nível industrial.

Modelo TSP O TSP define as seguintes atividades de arcabouço: Lançamento = planejamento e análise em equipe projeto de alto nível = especificações e protótipo Implementação = geração de códigos por equipe integração e teste = montagem final e teste de código pós-conclusão = medição e aperfeiçoamento

Modelo TSP O TSP usa diversos documentos, formulários e normas para guiar os membros da equipe de trabalho deles. Os documentos definem as atividades específicas do processo.

Modelo TSP Ao final deste processo a equipe terá, de acordo com o produzido: 1- Um documento escrito com os objetivos da equipe; 2- Definido os objetivos da equipe; 3- Criado um plano para o processo de desenvolvimento; 4- Criado um plano de qualidade; 5- Criado um plano de suporte ao projeto; 6- Um plano de desenvolvimento completo e um cronograma; 7- Um plano detalhado para cada membro da equipe a ser exe-cutado na próxima fase; 8- Uma avaliação de risco do projeto; 9- Um relatório do status do projeto.

Modelo TSP Deve-se notar que a atividade de lançamento pode ser aplicada antes de cada atividade de arcabouço TSP mencionada anteriormente. Isso acomoda a natureza iterativa de muitos projetos e permite à equipe adaptar-se às necessidades mutantes do cliente e às lições aprendidas nas atividades anteriores.

Modelos Prescritivos

Modelos Prescritivos de Processo Os modelos prescritivos de processo de software são a- queles prescritos (como se você uma receita de médico) como base para alguns tipos clássicos de desenvolvimento.

Modelos Prescritivos de Processo Quando esses modelos são aplicados, o objetivo é melhorar a qualidade do sistema para tornar os projetos mais gerenciáveis, as datas de entrega e os custos mais previsíveis.

Code And Fix (Constrói e Conserta) O produto é construído sem qualquer especificação ou projeto. Não existe um roteiro definido de atividades, simplesmente vai-se se implementando à medida que o contato com o cliente vai identificando novas necessidades. O produto é refeito quantas vezes forem necessárias para satisfazer o cliente. Este modelo pode funcionar razoavelmente para micro projetos. No entanto para projetos maiores ele é inadequado.

Code And Fix (Constrói e Conserta) A Figura abaixo caracteriza o modelo:

Em Cascata (Clássico) Apesar de todos os seus problemas, o modelo em cascata é utilizado há muitos anos, além de ser o mais antigo dos modelos. Atualmente, devido à complexidade cada vez maior dos sistemas, ele é pouco utilizado.

Em Cascata (Clássico)

Em Cascata (Clássico) Suas principais características: Método sistemático e seqüencial; O resultado de uma fase se constitui na entrada de outra - Cada atividade é uma fase distinta. Só após o seu total término é que a próxima atividade começa; O nível de abstração vai diminuindo a medida que se avança no processo enquanto o formalismo aumenta; Cada fase é estruturada como um conjunto de atividades que podem ser executadas por pessoas diferentes; Os requisitos do problema devem estar bem compreendidos.

Em Cascata (Clássico) Seus principais problemas: Os projetos reais raramente seguem o fluxo seqüencial que o modelo propõe. Alguma iteração sempre ocorre e traz problemas; Muitas vezes é difícil para o cliente declarar todas as exigências explicitamente no começo. Uma versão de trabalho do(s) programa(s) só estará disponível em um ponto muito tardio do cronograma do projeto. O cliente deve ter paciência; No modelo em cascata os sub-processos são executados em estrita seqüência, o que permite demarcá-los com pontos de controle bem definidos. Essa característica facilita a gestão dos projetos. Por outro lado, se interpretado literalmente, é um processo rígido e burocrático A natureza linear do modelo em cascata leva a estados de bloqueio ou gargalos.

Incremental O modelo incremental e iterativo foi proposto como uma resposta aos problemas encontrados no modelo em cascata. Um processo de desenvolvimento segundo essa abordagem divide o desenvolvimento de um produto de software em ciclos, com o software sendo desenvolvido em partes (incrementos).

Incremental

Concorrente O modelo concorrente é representado através de uma série de atividades e seus estados correspondentes. Sobre ele pode ser dito o seguinte: As atividades podem ocorrer em paralelo, mas estão em diferentes estados; O modelo define uma série de eventos que vão disparar transições de estado para estado, para cada uma das atividades; Em vez de usar uma seqüência como o modelo cascata, ele define uma rede de atividades;

RAD (Rapid Application Development) O desenvolvimento rápido de aplicação é um modelo de processo de desenvolvimento de software incremental que enfatiza um ciclo de desenvolvimento extremamente curto (por exemplo, de 60 a 90 dias).

RAD (Rapid Application Development) É uma adaptação do modelo cascata, no qual o desenvolvimento rápido é conseguido com o uso de uma abordagem de construção baseada em componentes, requerendo que os requisitos sejam bem compreendidos, os objetivos bem propostos e haja diferentes equipes de desenvolvimento envolvidas.

RAD (Rapid Application Development)

Prototipagem Protótipos são construídos para telas de entrada, de saída, para subsistemas ou mesmo para todo um sistema. A construção de protótipos costuma utilizar as denominadas linguagens de programação visual.

Prototipagem Esse modelo constrói uma versão descartável (ou protótipo), que visa a testar conceitos e requisitos e será usado para demonstrar o comportamento aos clientes. Após a concordância dos clientes, o software é desenvolvido seguindo as mesmas fases do modelo cascata. O esforço despendido no protótipo é compensado pelo não desenvolvimento de características desnecessárias;

Prototipagem

Prototipagem A prototipagem pode também ser considerada como um modelo prescritivo de processo de desenvolvimento de software, mas que pode funcionar concomitantemente com qualquer outro tipo de modelo.

Espiral O modelo espiral foi desenvolvido para abranger as melhores características do modelo clássico (no que se refere a sistematização e controle) como da prototipação (no que se refere a iteratividade), acrescentando um novo elemento a análise dos riscos que falta a esses paradigmas.

Espiral O modelo, representado pela espiral, define quatro importantes atividades representadas pelos quatro quadrantes:

Espiral Este é um modelo que atende os seguintes casos: Problema a ser resolvido não está totalmente entendido; A realidade pode mudar enquanto o sistema está sendo desenvolvido; A própria solução adotada pode ter algum efeito colateral desconhecido; A preocupação está centrada mais na qualidade e funcionalidade do que se produz;