220 likes | 327 Views
Introdução aos Processos de Software. © Alexandre Vasconcelos amlv@cin.ufpe.br alexandre@qualiti.com.br Centro de Informática da UFPE/ Qualiti Software Processes. Processo.
E N D
Introdução aos Processos de Software © Alexandre Vasconcelos amlv@cin.ufpe.br alexandre@qualiti.com.br Centro de Informática da UFPE/ Qualiti Software Processes
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
Padronização de processos • Ajuda a reduzir problemas de treinamento, revisões e ferramentas de apoio. • Com métodos padrões, cada experiência de projeto pode contribuir com a melhoria do processo como um todo. • Processos padronizados fornecem a base para medições de qualidade entre os projetos.
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
Engenharia de Processos x Engenharia de Software x Gerência de Projetos • 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)
Engenharia de Processos x Engenharia de Software x Gerência de Projetos Engenharia de software Engenharia de processos • guia (ou enforcement) • automação • status, ... • definição • simulação • métricas • melhorias, ... • instanciação • monitoramento • mudanças (dinâmicas) • status, ... Gerência de projetos
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 Engenharia de Processos x Engenharia de Software x Gerência de Projetos
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 mais 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???
Institucionalização de processos: pontos críticos • Comprometimento da alta administração • O processo precisa ajudar e não burocratizar • procedimentos adequados • ferramentas para facilitarem o trabalho. • Envolvimento de todos • Treinamento e orientação de pessoas envolvidas nos padrões e técnicas • Disponibilização da infra-estrutura necessária • Disciplina e motivação • Revisão e melhoria contínua
Institucionalização de processos: planejamento, estruturação e implantação • Alocar um líder exclusivo para o projeto de institucionalização • Treinar o líder do projeto • Efetuar diagnóstico da situação atual • Selecionar o processo a ser adotado • Definir recursos necessários • Definir cronograma de atividades / tempo • Constituir uma equipe de implantação • Treinar a equipe no processo selecionado
Institucionalização de processos: planejamento, estruturação e implantação • Estabelecer um sistema de controle de documentos • Definir/adequar procedimentos/atividades • Avaliar ferramentas que possam automatizar os procedimentos • Treinar nos procedimentos • Implantar os procedimentos • Formar auditores/avaliadores internos • Realizar auditorias/avaliações internas • Promover ações corretivas • Avaliar e melhorar continuamente
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/
Introdução aos Processos de Software © Alexandre Vasconcelos amlv@cin.ufpe.br alexandre@qualiti.com.br Centro de Informática da UFPE/ Qualiti Software Processes