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) há um esforço de padronização (SPEM – OMG) Mas 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 Máquina Técnicas de transição de estados de estados finitos, statecharts de análise e projeto estruturados (SADT) UML profiles e conceitos de OO – Software Process Engineering Metamodel (padrão OMG) SPEM 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: Notações extensões de Prolog 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 Engenharia de software definição e evolução de modelos de processos (em geral independentes de projetos específicos) 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 software Engenharia de processos • guia (ou enforcement) • automação • status, ... • definição • simulação • métricas • 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 processos Gerência de projetos Modelo do processo Engenharia de software Processo de desenvolvimento software 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