Processos de Software
Prof. Alexandre Vasconcelos
([email protected])
Adaptado a partir de slides produzidos
por Augusto Sampaio
1/27
Processo
• Ação regular e contínua (ou sucessão de
ações) realizada de forma bem definida,
levando a um resultado [Oxford English
Dictionary]
• Conjunto parcialmente ordenado de
atividades (ou passos) para se atingir um
objetivo [Feiler & Humphrey]
• Define quem está fazendo o que, quando
e como para atingir um certo objetivo
[Jacobson, Booch, Rumbaugh]
2/27
Processo de software

Um conjunto estruturado de atividades,
procedimentos, artefatos e ferramentas necessários
para o desenvolvimento de um sistema de software
– Exemplo de Atividades: Especificação, Projeto,
Validação, Evolução

Processos tradicionais
– RUP, OPEN, Catalysis
• Processos ágeis (mais leves)
– XP, Agile modeling, Crystal, FDD, Scrum, ...

Processo híbrido: OPENUP
3/27
Processo de software:
pontos de consenso




Iteratividade
Participação de usuários
Flexibilidade de configuração para projetos
específicos
Comunicação entre membros da equipe
4/27
Processo de software:
pontos de divergência

Nível de detalhamento de atividades a serem seguidas

Critério de conclusão da 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

Nível de Automação

Nível de (im)pessoalidade
5/27
Processo de software: polêmica

Se a tendência é processos 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???
Compromisso
• Balancing agility and discipline
6/27
Processo 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
7/27
Modelo 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)
8/27
Modelo 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
• A descrição deve ser apresentada em diferentes
níveis de abstração
• Idealmente a descrição deve ser formal e
completa para permitir, por exemplo, automação
9/27
Modelo 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 – ex: Fase, workflow,
disciplina, atividade
– Mas há esforço de padronização (SPEM e BPMN –
OMG)
10/27
Modelos genéricos de processo
de software


Representação abstrata e simplificada do
processo de desenvolvimento de software
Exemplos:

Modelo cascata

Fases separadas e distintas de especificação e
desenvolvimento.
Engenharia de software baseada em
componentes


O sistema é montado a partir de componentes existentes.
Desenvolvimento iterativo


O sistema desenvolvido através de várias etapas (iterações)
14/27
Engenharia de Processo
• Em engenharia de software, o objetivo é o
desenvolvimento de um produto de
software
• Em engenharia de processos, o objetivo é
desenvolvimento de um (modelo de)
processo
15/27
Ciclo de vida de processos
Exemplo de ciclo de vida (meta-modelo) de processos
Análise de
requisitos
Projeto
(modelo)
Instanciação
Avaliação
Execução
Simulação
Software processes are software too [Osterweil]
16/27
PSEE
• Um PSEE (Process-centred Software
Engineering Environment) é um ambiente de
desenvolvimento de software no qual os
processos utilizados são definidos
explicitamente pelo usuário e modelados no
ambiente
– Apóia a atividade de definir, monitorar e avaliar um
processo para um projeto específico
– Usualmente automatizam parte do processo e guiam
o desenvolvedor
– Alguns (poucos) ambientes suportam modificações
dinâmicas no processo durante execução
17/27
PSEE
• PSEEs suportam e relacionam três disciplinas
importantes
– Engenharia de processos
• definição e evolução de modelos de processos (em geral
independentes de projetos específicos)
– 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)
– Engenharia de software
• desenvolvimento e evolução de produtos de software
18/27
PSEE
Visão geral do fluxo de dados
Requisitos do processo
Requisitos do projeto
e do produto
Engenharia de
processos
Modelo do
processo
Gerência de
projetos
Engenharia de
software
Processo de
desenvolvimento
software
20/27
Alguns Desafios
• Organizações oferecem forte resistência à implantação
(ou modificação) de processos
• PSEEs exigem mudanças organizacionais ainda mais
significativas (principalmente quando exigem aderência
ao processo)
– Resistência também por receio de avaliação individual como resultado
dos dados coletados em PSEEs
– Ainda não parece existir consenso sobre uma arquitetura para PSEEs
(exemplo, projeto do repositório); mas há modelos de referência (NISTECMA)
– Modelos de processos têm impacto direto em interface com usuário,
granularidade e automação de atividades
• Modificações dinâmicas oferecem flexibilidade e podem
ser uma solução (tópico atual de pesquisa)
25/27
Algumas referências
• Process-Centered Software Engineering Environments. P. K.
Garg & M. Jazayeri. IEEE Computer Society Press
• The OPEN Process Specification. I. Graham, B. HendersonSellers & H. Younessi
• The Unified Software Development Process. I, Jacobson, G.
Booch & J. Rumbaugh
• New Directions on Agile Methods: A Comparative Analysis. P.
Abrahamsson, et al. ICSE´03. IEEE Press.
• http://www.rational.com/products/rup/
• http://www.catalysis.org/
• http://www.extremeprogramming.org/
• http://www.agilemodeling.com/
• http://www.crystalmethodologies.org/
27/27
Download

Introdução aos Processos de Software e aos Ambientes PSEE