260 likes | 407 Views
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]
E N D
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 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 Engenharia de software 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
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/
Momento RELAX • Mensagem Subliminar • Quantidade de informação dividida pelo tempo/Espaço de Exposição.