Post on 18-Apr-2015
1/22
Introdução aos Processos de Introdução aos Processos de SoftwareSoftware
© Alexandre Vasconcelosamlv@cin.ufpe.bralexandre@qualiti.com.br
Centro de Informática da UFPE/Qualiti Software Processes
2/22
ProcessoProcesso
Uma ação regular e contínua (ou sucessão de ações) realizada de forma bem definida, levando a um resultado [Oxford English Dictionary]
Um conjunto parcialmente ordenado de atividades (ou passos) para se atingir um objetivo [Feiler & Humphrey]
Define quem está fazendo o quê, quando e como para atingir um certo objetivo [Jacobson, Booch, Rumbaugh]
O termo ciclo de vida evoluiu para processo Software processes are software too [Osterweil]
3/22
Processo versus metodologiaProcesso versus metodologia
Alguns autores consideram que processos incluem uma metodologia pessoas tecnologia (suporte de ferramentas)
Outros consideram que uma metodologia é a especialização de um processo com um conjunto de métodos
4/22
Padronização de processosPadronização de processos
Ajuda a reduzir problemas de treinamento, revisões e ferramentas de apoio.
Com métodos padrões, cada experiência de projeto pode contribuir com a melhoria do processo como um todo.
Processos padronizados fornecem a base para medições de qualidade entre os projetos.
5/22
Modelo de processoModelo de processo
Uma representação de um processo, usualmente envolvendo atividades a serem realizadas agentes que realizam as atividades artefatos (produtos) gerados recursos necessários (consumidos)
6/22
Modelo de processoModelo de processo
Um modelo é usado para entendimento e comunicação do processo, e como base para análise, execução, gerência e melhoria do processo
Idealmente a descrição deve ser formal e completa para permitir, por exemplo, automação
A descrição deve ser apresentada em diferentes níveis de abstração
7/22
Modelo de processoModelo de processo
O formalismo utilizado para representar o processo é o ingrediente mais importante da modelagem
Não parece haver consenso sobre um formalismo ideal Terminologias distintas
Fase (Fusion), workflow (RUP), disciplina (RUP), atividade (conceito diferente no OPEN e no RUP)
Mas há um esforço de padronização (SPEM – OMG)
8/22
Modelo de processoModelo de processo
Formalismos podem ser classificados de várias formas Diagramáticos Orientados a linguagens ...
9/22
Modelo de processoModelo de processo
Alguns exemplos de formalismos diagramáticos Diagramas de transição de estados
Máquina de estados finitos, statecharts Técnicas de análise e projeto estruturados
(SADT) UML profiles e conceitos de OO
SPEM – Software Process Engineering Metamodel (padrão OMG)
Petri nets
10/22
Modelo de processoModelo de processo
Alguns exemplos de formalismos orientados a linguagens Linguagens de programação de processos
Estendem uma linguagem de programação usual APPL/A é um exemplo (extensão de Ada)
Notações baseadas em regras e fatos Exemplo: extensões de Prolog
Notações que usam conceitos de OO Exemplo: uso de herança para relacionar um
modelo de processo com instâncias
11/22
Engenharia de Processos x Engenharia Engenharia de Processos x Engenharia de Software x Gerência de Projetosde Software x Gerência de Projetos
Engenharia de processos definição e evolução de modelos de processos (em geral
independentes de projetos específicos) Engenharia de software
desenvolvimento e evolução de produtos de software Gerência de projetos
criação de processos específicos para um projeto, coordenação e monitoramento das atividades de desenvolvimento (assegura que o processo é seguido)
12/22
Engenharia de Processos x Engenharia Engenharia de Processos x Engenharia de Software x Gerência de Projetosde Software x Gerência de Projetos
Engenharia de software
Gerência de projetos
Engenharia de processos
• guia (ou enforcement)• automação• status, ...
• instanciação• monitoramento• mudanças (dinâmicas)• status, ...
• definição• simulação• métricas• melhorias, ...
13/22
Engenharia de Processos x Engenharia Engenharia de Processos x Engenharia de Software x Gerência de Projetosde Software x Gerência de Projetos
Engenharia deprocessos
Gerência deprojetos
Engenharia desoftware
Requisitos do processo Requisitos do projetoe do produto
Modelo doprocesso
Processo dedesenvolvimento
software
14/22
Exemplos de processosExemplos de processos
Processos tradicionais (pesados) RUP, OPEN, Catalysis
Processos ágeis (leves) XP, Agile modeling, Crystal
15/22
Exemplos de processosExemplos de processos
Consenso em torno de Iteratividade Participação de usuários Flexibilidade de configuração para projetos
específicos Comunicação entre membros da equipe
16/22
Exemplos de processosExemplos de processos
Divergências Detalhamento de atividades a serem seguidas Ordem de execução das atividades
Arquitetura robusta (RUP) Arquitetura para o contexto da iteração atual (agile
modeling) Rigor na atribuição de tarefas a responsáveis
workers (RUP) alocação sob demanda e interesse (XP)
Artefatos (documentação) gerados Grau de automação (im)pessoalidade
17/22
Exemplos de processosExemplos de processos
A polêmica ... Se a tendência é ter processos mais leves,
afinal o desenvolvimento de software é Arte+Sociologia+Psicologia+...
ou Lógica+Modelos+Engenharia+...??? E todo o esforço de consolidação da Engenharia
de Software como uma ciência exata???
18/22
Institucionalização de processos: Institucionalização de processos: pontos críticospontos críticos Comprometimento da alta administração O processo precisa ajudar e não burocratizar
procedimentos adequados ferramentas para facilitarem o trabalho.
Envolvimento de todos Treinamento e orientação de pessoas envolvidas nos
padrões e técnicas Disponibilização da infra-estrutura necessária Disciplina e motivação Revisão e melhoria contínua
19/22
Institucionalização de processos: Institucionalização de processos: planejamento, estruturação e planejamento, estruturação e implantaçãoimplantação Alocar um líder exclusivo para o projeto de
institucionalização Treinar o líder do projeto Efetuar diagnóstico da situação atual Selecionar o processo a ser adotado Definir recursos necessários Definir cronograma de atividades / tempo Constituir uma equipe de implantação Treinar a equipe no processo selecionado
20/22
Institucionalização de processos: Institucionalização de processos: planejamento, estruturação e planejamento, estruturação e implantaçãoimplantação Estabelecer um sistema de controle de documentos Definir/adequar procedimentos/atividades Avaliar ferramentas que possam automatizar os
procedimentos Treinar nos procedimentos Implantar os procedimentos Formar auditores/avaliadores internos Realizar auditorias/avaliações internas Promover ações corretivas Avaliar e melhorar continuamente
21/22
Algumas referênciasAlgumas referências
Process-Centered Software Engineering Environments. P. K. Garg & M. Jazayeri. IEEE Computer Society Press
The OPEN Process Specification. I. Graham, B. Henderson-Sellers & H. Younessi
The Unified Software Development Process. I, Jacobson, G. Booch & J. Rumbaugh
http://www.rational.com/products/rup/ http://www.catalysis.org/ http://www.extremeprogramming.org/ http://www.agilemodeling.com/ http://www.crystalmethodologies.org/
22/22
Introdução aos Processos de Introdução aos Processos de SoftwareSoftware
© Alexandre Vasconcelosamlv@cin.ufpe.bralexandre@qualiti.com.br
Centro de Informática da UFPE/Qualiti Software Processes