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