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. 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
Visão geral de um processo WBS Work Breakdown Structure Trabalhador (papel) Atividades (WBS) Atividade (tarefas) Artefatos Planejamento Alocação pessoa-atividade Gerenciamento Equipe Diagrama de Gantt (prazos) Método x Processo Um método (ou modelo de processo) é algo teórico, um conjunto de possíveis ações conteúdo do método. Define o que, como e porque fazer 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 e quando fazer. Método + Planejamento = Processo
Método e Processo no SPEM 2.0 SPEM = Software Process Engineering Meta-model Qualquer processo pode ser representado utilizando o SPEM Diferença entre Conteúdo do Método e Processo Atividades, Artefatos e Papéis Trabalhador (papel) responsável Realizada por Artefatos (produto do trabalho) Atividade (tarefas) Entrada/saída Um processo é organizado em atividades. Atividades são de responsabilidade de um papel (membro da equipe ou trabalhador). Um artefato (produto do trabalho) é um modelo, documento ou código produzido por uma atividade. Atividades devem gerar um artefato de saída, que possa ser verificado, e podem requisitar um artefato de entrada.
Papéis Na definição de um método, deve-se definir quais são os papéis. Na elaboração de um processo, deve-se definir quais pessoas desempenham papéis. Os papéis podem variar de um processo para outro Analista João Desenvolvedor Pedro Método Arquiteto Testador Gerente Envolvido Qualquer Maria Paulo Claudia Ana Atividades (disciplinas) Em um método, as atividades ou tarefas a serem realizadas são as disciplinas. Em um processo, as atividades devem ser alocadas aos papéis...... e deve ser determinados o fluxo de trabalho, a rede de dependências e os marcos Requisitos Arquitetura Desenvolvimento Gerenciamento Método Teste Processo
Exemplo de estrutura de processo (WBS) WBS Work Breakdown Structure termo tradicional da área de gerência de projetos para determinar a estrutura de atividades, dependências, marcos Artefatos Artefatos podem ser documentos, modelos, códigos, incrementos, builds, releases, etc. Em um método, as disciplinas e papéis produzem e consomem artefatos Um processo define quem produz e consome os artefatos e quando eles serão produzidos (marcos) Modelos Documentos Builds Componentes Método Processo
Incrementos, builds e releases Um incremento é um componente de software compilado, utilizado na composição de builds. Um build é um artefato parciais de software composto por incrementos. Uma release é um build entregue ao cliente com executáveis (bin), bibliotecas (lib), manuais, etc. compilação build liberação Código fonte Componente (incremento) Build1.2.0.1 Relase1.2 Código fonte Componente (incremento) Marcos (milestones) Um marco (milestone) é um ponto final de uma atividade de processo. Um processo deve estabelecer uma série de marcos. Marcos principais delimitam fases Marcos intermediários permitem avaliar o progresso do processo de software Marcos Marcos intermediários build release Marcos principais tempo
Diagrama de Gantt Determina a linha de tempo na qual as atividades serão executadas Deve refletir os marcos e as dependências