Você está na página 1de 26

Introdução aos Processos de

Software
Processo

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]
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
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)
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

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
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
 Fase (Fusion), workflow (RUP), disciplina (RUP),
atividade (conceito diferente no OPEN e no RUP)
 Mas há um esforço de padronização (SPEM –
OMG)
Modelo de processo

Formalismos podem ser classificados de várias
formas
 Diagramáticos
 Orientados a linguagens
 ...
Modelo 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
Modelo 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
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
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)
 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)
PSEE
Engenharia de processos Engenharia de software
• definição • guia (ou enforcement)
• simulação • automação
• métricas • status, ...
• melhorias, ... S
P E
E
• instanciação
• monitoramento
• mudanças (dinâmicas)
• status, ...
Gerência de projetos
PSEE
Visão geral do fluxo de dados

Requisitos do processo Requisitos do projeto


e do produto

Engenharia de Gerência de Engenharia de


processos projetos software
Modelo do Processo de software
processo desenvolvimento
PSEE

Alguns ambientes comerciais
 Process WEAVER (Cap Gemini)
 SynerVision for SoftBench (HP)

Ambos fornecem
 um formalismo apropriado para modelar processos
 Especificação de atividades e ferramentas para
execução automática
 Mecanismo de agenda orientada a processos para os
agentes
PSEE

Alguns ambientes acadêmicos
 Prism
 Smart
 Articulator
 Dynamite
 Spade
 ...
PSEE

Esforço nacional
 ExPSEE [Itana Gimenes-UEM]
 Estação TABA [Guilherme Travassos-COPPE]
 APSEE [Carla Reis-UFRGS]
Exemplos de processos

Processos tradicionais (pesados)
 RUP, OPEN, Catalysis

Processos ágeis (leves)
 XP, Agile modeling, Crystal
Exemplos 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
Exemplos 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
Exemplos de processos

A polêmica ...
 Se a tendência é ter 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???
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 (NIST-ECMA)
 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)
Algumas 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/
E depois de tudo...
Momento RELAX

Mensagem Subliminar
 Quantidade de informação dividida pelo
tempo/Espaço de Exposição.
Mensagem Subliminar
Mensagem Subliminar

Você também pode gostar