Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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