prof. sandro bezerra ([email protected]) adaptado a partir de ... · processos de software prof. sandro...
TRANSCRIPT
Processos de Software
Prof. Sandro Bezerra ([email protected])
Adaptado a partir de slides produzidos pelo Prof. Dr. Alexandre Vasconcelos
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/45
5/45
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
6/45
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
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
Modelo de Processo
• Formalismos podem ser classificados de várias formas – Orientado a produto ou à atividade – Diagramáticos ou Orientados a linguagens – ...
11/27
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)
– BPMN Business Process Modeling Notation (padrão OMG)
– Petri nets
12/27
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 13/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
16/27
Análise de requisitos
Projeto (modelo)
Instanciação
Exemplo de ciclo de vida (meta-modelo) de processos
Avaliação Execução Simulação
Software processes are software too [Osterweil]
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
19/27
Engenharia de software
Gerência de projetos
Engenharia de processos
• guia (ou enforcement) • automação • status, ... • ...
• instanciação • monitoramento • mudanças (dinâmicas) • status, ...
• definição • simulação • métricas • melhorias, ...
P S
E E
PSEE
20/27
Visão geral do fluxo de dados
Engenharia de processos
Gerência de projetos
Engenharia de software
Requisitos do processo Requisitos do projeto e do produto
Modelo do processo
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
21/27
PSEE
• Alguns ambientes acadêmicos – Prism – Smart – Articulator – Dynamite – Spade – ...
22/27
PSEE
• Esforço nacional – ExPSEE [Itana Gimenes-UEM] – Estação TABA [Guilherme Travassos-
COPPE] – APSEE [Carla Reis-UFRGS] (no contexto do
projeto ProSoft) – Imppros [Sandro Oliveira e Alexandre
Vasconcelos-UFPE]
23/27
PSEE
• Pesquisa relacionada – CSCW (Computer-supported cooperative work)
• Como PSSE, natureza multidisciplinar: organizacional, humano, construção de sistemas
• Sistemas de CSCW podem prover parte da infra-estrutura de um PSEE
– Sistemas de gerenciamento de Workflow • Suportam processos organizacionais • Semelhantes a PSSEs em vários aspectos
– Tecnologia de banco de dados • PSEE manipulam processos e relacionamentos que
requerem padrões de acesso elaborados
24/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 (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)
25/27
Alguns temas de pesquisa
• Uso ou análise comparativa de notações para modelagem (representação) de processos
• Modelagem de processos (exemplo, RUP) em PSEE • Projeto e implementação de PSEE • Integração de processos (como RUP, XP, ...) com
modelos de qualidade (como CMMI) • Análise comparativa entre processos ágeis e tradicionais • Integração entre processos ágeis e tradicionais • Adaptação de processos para novos paradigmas
(exemplo: aspectos, agentes, ...) • ...
26/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. Henderson-
Sellers & 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