VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Utilização do TSP para a Gerência de Equipes Nível 2 do CMMI Samuel Dall Agnol1, Juliana Silva Herbert1 1 ESICenter UNISINOS – Universidade do Vale do Rio dos Sinos Av. Unisinos, 950 – CEP 93.022-000 – São Leopoldo – RS – Brasil [email protected], [email protected] Abstract.The use of models and methodologies scientifically developed is gaining maturity and visibility due to the increasing concern of software developers with the common problems of their area. Although TSP does not describe methods that address all process areas of CMMI, this combination represents an ideal strategy to make process improvement projects faster in software development companies. This paper presents the adherence of TSP methods to the CMMI and the description of a process for the development of systems based on COTS to address the CMMI process area not covered by TSP. Resumo. A utilização de modelos e metodologias desenvolvidos cientificamente como o CMMI e o TSP têm ganhado, recentemente, maturidade e visibilidade, em função do aumento da preocupação das empresas de desenvolvimento de software com os problemas típicos da área. Embora o TSP não descreva métodos para cobrir todas as áreas de processo do CMMI, esta combinação configura uma ótima estratégia para acelerar projetos de melhoria de processos em organizações de desenvolvimento de software. Este trabalho apresenta, portanto, a aderência entre os métodos do TSP ao CMMI e a descrição de um processo para desenvolvimento de sistemas baseados em COTS para atender a área de processo do CMMI não coberta pelo TSP. 1. Introdução Nos últimos anos, as organizações de desenvolvimento de software têm aumentado sua percepção em relação aos problemas que tipicamente ocorrem neste contexto. Software com defeitos, prazos e orçamentos não cumpridos e insatisfação de clientes, são eventos muito mais freqüentes do que se deseja [SOM03]. Desde a década de 1970, existe um consenso na comunidade de Engenharia de Software de que estes problemas estão, em grande parte, relacionados ao fato de que o desenvolvimento de software é muitas vezes realizado de forma "artesanal", isto é, através de métodos improvisados pelos desenvolvedores, onde o sucesso depende muito mais de seu talento individual (nem sempre abundante) do que de uma sólida formação acompanhada de métodos formais que dirijam suas atividades [SOM03]. Um exemplo de modelo que de alguma forma considera estes métodos formais é o CMMI (Capability Maturity Model Integration) que é um framework focado no processo de desenvolvimento de software. Ele foi desenvolvido através de observações das melhores 107 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br práticas nas organizações de software e reflete uma coletânea de experiências e expectativas de muitas delas [JAL99]. Embora este modelo seja completo e abrangente, segundo o SEI/CMU (Software Engineering Institute/ Carnegie Mellon University) [DAV03], a preocupação dele está em descrever o quê uma organização em certo nível de maturidade deve praticar. O CMMI não orienta como a empresa deve implementar suas áreas de processo para atingir os níveis de excelência propostos pelo modelo. Esta lacuna pode ser preenchida com as diversas metodologias para desenvolvimento de software. Neste artigo, considera-se o TSP (Team Software Process) [HUM00]. A alta aderência de métodos do TSP com as práticas propostas pelo CMMI acelera processos de melhoria de software baseados neste modelo e permite que altos níveis de excelência sejam obtidos em tempos menores que a utilização de outras metodologias [DAV03, NAV03]. Por isso este artigo apresenta uma proposta de métodos de desenvolvimento de software que atendam todas as áreas de processo do nível 2 do CMMI. A proposta está fortemente embasada no uso de TSP, porém para área de Gerência de Acordos com Fornecedores é utilizado um processo baseado em COTS (Commercial off-the-shelf), visto que o TSP não endereça nenhum método neste aspecto. 1.1 Objetivos do trabalho Sommerville [SOM03] aponta como principal causa dos problemas de qualidade de software o fato de que as organizações precisam competir para sobreviver. O chamado “preço definido para ganhar” espreme cronogramas e orçamentos para ganhar o contrato de desenvolvimento. Em conseqüência deste sistema, a qualidade do produto é afetada diretamente. Com base nisso o trabalho descrito neste artigo teve como objetivo principal identificar, à luz do referencial teórico, métodos para desenvolvimento de software alinhados ao nível 2 do modelo CMMI. Acredita-se que o auxílio de métodos comprovados para o desenvolvimento de software possa diminuir o impacto sobre a qualidade dos produtos de software provocado pela competição acirrada do mercado atual. Em contra-partida o alinhamento dos métodos ao CMMI garante adequação dos métodos a um modelo de qualidade estabelecido e aceito mundialmente [JAL99]. Além disso, são objetivos parciais do trabalho: • identificar as áreas de processo do CMMI através de revisão bibliográfica; • identificar os métodos para desenvolvimento de software do TSP; • estabelecer relações entre os métodos identificados e as melhores práticas propostas pelo CMMI. 1.2 Metodologia Para alcançar os objetivos propostos, uma série de atividades foi realizada, cada uma gerando um resultado importante para a composição deste trabalho: • Determinação dos objetivos: as fases seguintes estão baseadas no objetivo principal deste trabalho que é identificar métodos de desenvolvimento de software à luz do referencial teórico. 108 VI Simpósio Internacional de Melhoria de Processos de Software • São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Elaboração do plano de trabalho: o plano elaborado, muitas vezes, é provisório e passa por reformulações sucessivas [GIL91]. O plano adotado para este trabalho compreende: o identificar as fontes bibliográficas para o embasamento sobre o CMMI. Foram utilizados, nesta etapa, os artigos e relatórios técnicos publicados pelo SEI/CMU, instituto mantenedor do modelo CMMI; o leitura destes artigos com especial atenção às áreas de processo descritas no modelo; o descrever os métodos propostos pelo TSP e descrever os relacionamentos entre estes métodos e as áreas de processo do CMMI. • Identificação das fontes: nesta etapa foram identificadas as fontes capazes de fornecer as respostas adequadas para atingir o objetivo proposto. As fontes identificadas estão listadas na Seção Referências. • Leitura do material: segundo Gil [GIL91] a leitura que se faz na pesquisa bibliográfica deve servir os seguintes objetivos: o identificar as informações e os dados constantes do material impresso; o estabelecer relações entre as informações e os dados obtidos com o problema proposto; o analisar a consistência das informações e dados apresentados pelos autores. • Redação do trabalho: nesta etapa será confeccionado o relatório apresentando: o problema que deu origem à investigação, a delimitação dos objetivos, o contexto do trabalho e as conclusões obtidas. 1.3 Estrutura do Artigo Esta seção apresentará resumidamente cada seção deste artigo. A presente seção apresentou brevemente a motivação, os objetivos e a metodologia de desenvolvimento deste artigo. Na segunda e terceira seção, serão apresentados os conceitos do CMMI e TSP respectivamente, mais relevantes para este trabalho. Já na Seção 4, será apresentada a aderência entre os métodos do TSP e as práticas propostas pelo CMMI. Em seguida, na Seção 5, será apresentado brevemente um processo para desenvolvimento de software baseado em COTS. Esta abordagem é necessária para cobrir a lacuna deixada pelo TSP na área de processo de gerência de acordos com fornecedores do CMMI. Na Seção 6 será apresentado um caso prático de aplicação dos métodos propostos pelo TSP numa empresa de desenvolvimento de software. A Seção 7 traz as conclusões deste artigo. Nele estão as dificuldades encontradas e os resultados obtidos, bem como as possíveis extensões futuras deste trabalho. 2. CMMI O CMMI é um framework que possui os elementos necessários para tornar um processo de desenvolvimento de software mais eficiente e controlado [BAR02] e foi construído para integrar os diferentes modelos criados a partir do sucesso alcançado pelo CMM para software. O termo disciplina foi adotado para representar os diferentes corpos de 109 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br conhecimento integrados no CMMI. Para atingir os objetivos propostos (métodos para o desenvolvimento de software), este trabalho adotará as disciplinas de Engenharia de Software e Engenharia de Sistemas como guias porque segundo o SEI/CMU [SEI04], estas disciplinas são escolhidas pela grande maioria das organizações que implementam processos de melhoria em desenvolvimento de software. Além disso, o CMMI introduziu duas representações para apresentar seu conteúdo. Este trabalho adotou a representação por estágios pois além de prover uma seqüência comprovada de melhorias, iniciando com práticas básicas e evoluindo através de um caminho pré-definido de níveis sucessivos, permite comparações no âmbito da uma organização, ou entre organizações; e é a representação mais utilizada por organizações de software segundo os resultados de avaliação do CMMI reportados1 ao SEI/CMU [SEI04]. Na representação por estágios os níveis de maturidade são uma forma de priorizar as ações de melhoria de tal forma que se aumente a maturidade do processo de software. Com exceção do nível 1 (considerado imaturidade organizacional), todos os níveis restantes (gerenciado, definido, quantitativamente gerenciado e em otimização) são compostos de PAs (Process Areas) que tratam aspectos de cada componente do processo. A PA é um conjunto de práticas relacionadas em uma determinada área que, quando executadas coletivamente, satisfazem um conjunto de objetivos considerados importantes para executar significantes melhorias naquela área. O nível 2 do CMMI (objeto deste trabalho) é composto das PAs: Gerência de Requisitos, Planejamento de Projetos, Acompanhamento e Controle de Projetos, Gerenciamento de Acordos com Fornecedores, Medição e Análise, Garantia de Qualidade de Produto e Processo e Gerenciamento de Configuração. Portanto, este estudo estará focado em demonstrar a aderência entre as práticas relacionadas em cada PA do CMMI com os métodos propostos por Humphrey [HUM00] na metodologia TSP. 3. Metodologia TSP O objetivo do TSP é criar um ambiente de trabalho em equipe que suporte o trabalho individual disciplinado e mantenha-o direcionado à equipe [DAV03]. O TSP faz uso do PSP (Personal Software Process [HUM97]) para guiar o trabalho individual dos desenvolvedores de software, mostrando-lhes como medir seu trabalho e utilizar estes dados para melhorar seu desempenho. Basicamente os métodos do PSP são utilizados pelos desenvolvedores no seu trabalho rotineiro. Além disso, a metodologia TSP conduz o desenvolvimento de software através de vários ciclos rápidos até atingir o produto final. Cada ciclo guia a equipe através de sete passos: lançamento, estratégia, planejamento, requisitos, projeto, implementação, teste e postmortem. Em cada ciclo os desenvolvedores repetem os mesmos passos (Figura 1) e aumentam o produto construído no ciclo anterior [HUM00]. 1 223 (duzentas e vinte e três) avaliações foram reportadas ao SEI/CMU entre abril de 2002 e março de 2004 utilizando-se o método SCAMPI classe A versão 1.1 para avaliar organizações que implementaram o modelo CMMI versão 1.1 [SEI04] 110 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br 3. Componentes do TSP O TSP fornece um framework simples e bem definido do processo que será usado para construção do software. Além disso a metodologia fornece orientação específica na formação de equipes, dispensando especial atenção na definição dos papéis e responsabilidades de cada membro, bem como na definição dos objetivos de cada um [HUM00]. Para compor este framework o TSP utiliza-se de scripts de processo (Tabela 2) e formulários (Tabela 1). Os scripts de processo descrevem detalhadamente as atividades que devem ser executadas em cada etapa do processo de desenvolvimento. Já os formulários são utilizados para coletar e apresentar os dados usados no controle do processo. Para completar os componentes do TSP são utilizados também definições de padrões e sugestões de métricas para controlar o processo. Os componentes do TSP serão confrontados contras as práticas específicas do CMMI no nível 2 para determinar o nível de aderência das duas abordagens. Necessidade de produto Ciclo 1 - Lançamento Estratégia 1 Ciclo 2 - Lançamento Plano 1 Requisitos 1 Estratégia 2 Projeto 1 Ciclo 3 - Lançamento Plano 2 Implementação 1 Requisitos 2 Estratégia 3 Projeto 2 Plano 3 Implementação 2 Requisitos 3 Teste 2 Projeto 3 Postmortem 2 Implementação 3 Teste 1 Postmortem 1 Teste 3 Postmortem 3 Produto final Versão final Figura 1 - Estrutura e fluxo do TSP. 111 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Tabela 1 - Formulários do TSP Formulário Requisição de alteração da configuração Relatório de posição da configuração Informações do membro da equipe Relatório de inspeções Rastreabilidade dos riscos do projeto Registro de defeitos Registros de tempos Registros de testes Avaliação da equipe e dos pares Proposta de melhorias de processo Modelo de planejamento cronograma Abrev CCR CSR INFO INS ITL LOGD LOGT LOGTEST PEER PIP SCHEDULE Formulário Formulário da estratégia Sumário dos defeitos injetados Sumário dos defeitos removidos Sumário do plano Plano de qualidade Sumário de tamanho Sumário de tempo de desenvolvimento Sumário de tarefas Modelo de planejamento de tarefas Relatório de posição semanal Abrev STRAT SUMDI SUMDR SUMP SUMQ SUMS SUMT SUMTASK TASK WEEK Tabela 2 - Scripts de processo do TSP Formulário Projeto (Design) Processo de desenvolvimento do software Implementação Inspeção Lançamento do projeto Desenvolvimento do plano Postmortem Abrev DES DEV IMP INS LAU PLAN PM Formulário Desenvolvimento dos requisitos Gerenciamento de configuração de software Desenvolvimento da estratégia Teste de sistema e integração Teste unitário Reuniões semanais Abrev REQ SCM STRAT TEST UT WEEK 4. O TSP e o nível 2 do CMMI O objetivo desta seção é de justificar a escolha do TSP como processo de desenvolvimento de software que acelera os esforços de evolução para o CMMI demonstrando a alta aderência entre as duas abordagens. Por se tratar de um assunto demasiadamente extenso não é objetivo esgotá-lo (certamente existe conteúdo suficiente para um estudo exclusivo desta questão). Portanto, casos como as práticas genéricas que no CMMI são apresentadas ao final de cada PA para demonstrar como cada prática deve ser aplicada exclusivamente naquela PA, serão apresentadas apenas uma vez no modo mais amplo abordando apenas a aderência ao TSP de cada grupo de práticas genéricas. Cabe registrar também que, devido ao escopo deste trabalho, será coberta apenas a aderência entre o TSP e as PAs do nível dois do CMMI. Grande parte do embasamento deste capítulo foi obtida em estudos do SEI [DAV03a] que relatam o mapeamento dos componentes do TSP com o SW-CMM. Isto foi possível devido ao fato do CMMI ser a evolução natural do SW-CMM e a similaridade entre as duas versões ser extremamente alta [SEI02]. Estudos do SEI [DAV00] apontam para forte aderência entre o SW-CMM e o TSP porém algumas lacunas são salientes. Cita-se como exemplo a total ausência de cobertura do TSP para área de gerenciamento de acordos com fornecedores, justificada pelo SEI [DAV03a] na ausência de necessidade pelas empresas que adotam o TSP. Para assegurar um framework completo de métodos para atender o nível 2 do CMMI será descrita na Seção 5 a base de um processo para montagem de sistemas baseados em COTS. 112 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br 4.1 TSP e o grupo de práticas genéricas Durante a etapa de lançamento do projeto do TSP assegura-se que os fundos e recursos, ferramentas e habilidades necessárias serão providos, desta forma as práticas para habilidades a executar são atendidas. Para o grupo de práticas de direção da implementação o TSP direciona procedimentos específicos e detalhados para gerência de configuração e, construção e revisão do plano geral para o projeto. Já na verificação da implementação o TSP envolve a gerência no lançamento do projeto e no entendimento e confirmação dos planos para a equipe. Além de definir vários marcos, reuniões de revisão e relatórios para atender as práticas deste grupo. Enquanto isso no grupo de compromissos para executar o TSP não direciona a criação de políticas organizacionais, entretanto o comportamento de suas equipes usualmente é consistente com as políticas já existentes na organização. 4.2 Medições e Análises “O objetivo das Medições e Análise é desenvolver e sustentar a capacidade de medição que é usada para suportar as informações de gerenciamento necessárias.” [SEI02] A Tabela 3 exibe de forma resumida as práticas específicas da PA de Medições e Análise do CMMI e seu relacionamento com os elementos do TSP [DAV03a, HUM00]. Tabela 3 - TSP X Medições e Análises MEDIÇÕES E ANÁLISE OBJETIVO CMMI COMENTÁRIOS SG 1 – Alinhar atividades de medição e Na etapa de lançamento do projeto são definidos os objetivos do projeto, os dados que deverão ser coletados para avaliar o análise: progresso do projeto e a periodicidade que estes dados serão Atividades e objetivos de medição são alinhados com as informações necessárias avaliados pela equipe. identificadas e os objetivos. PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 1.1 Definir e estabelecer objetivos de medição Script LAU, PLAN, DES e formulários TASK, WEEK, LOGT, LOGD SP 1.2 Especificar métricas Padrões de qualidade SP 1.3 Especificar coleção de dados e procedimentos de Script PLAN, formulários TASK, SUMQ, armazenamento LOGD, LOGT SP 1.4 Especificar procedimentos de análise Não endereçado OBJETIVO CMMI COMENTÁRIOS O TSP provê diversos formulários que exibem o andamento do SG 2 – Prover resultados de medição: Resultados de medições que endereçam as projeto composto pelo resultado das medições feitas até o informações necessárias identificadas e os momento. Ao final da etapa de Postmortem é produzido um relatório incluindo as principais medições feitas durante o projeto. objetivos são disponibilizados PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 2.1 Coletar dados de medição Script PLAN, forms. LOGD e LOGT SP 2.2 Analisar dados de medição Script Postmortem, revisão do projeto SP 2.3 Armazenar dados e resultados Formulários LOGD e LOGT, SUMP SP 2.4 Comunicar os resultados Script Postmortem 4.3 Planejamento de Projetos “O objetivo do planejamento de projetos é estabelecer e manter planos que definam as atividades do projeto.” [SEI02] 113 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br A Tabela 4 exibe de forma resumida as práticas específicas da PA de Planejamento de Projetos do CMMI e seu relacionamento com os elementos do TSP [DAV03a, HUM00]. Tabela 4 - TSP X Planejamento de Projetos PLANEJAMENTO DE PROJETOS OBJETIVO CMMI COMENTÁRIOS SG 1 – Estabelecer Estimativas: Equipes TSP documentam e rastreiam estimativas utilizando Estabelecer e manter estimativas dos processos definidos de estimativa parâmetros para o planejamento do projeto PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 1.1 Estimar o escopo do projeto Script e formulário STRAT SP 1.2 Estabelecer estimativas de produtos de trabalho e Scripts LAU, STRAT e PLAN, forms. atributos de tarefa SUMS, TASK e SCHEDULE SP 1.3 Definir o ciclo de vida do projeto Script e formulário STRAT SP 1.4 Determinar estimativas de custo e esforço Scripts LAU, STRAT e PLAN, forms. SUMS, TASK e SCHEDULE OBJETIVO CMMI COMENTÁRIOS SG 2 – Desenvolver um plano de projeto: Um Equipes TSP utilizam a etapa de lançamento para criar e plano de projeto é estabelecido e mantido como documentar um plano com as atividades e responsabilidades base para gerenciar o projeto PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 2.1 Definir o cronograma e o orçamento Script PLAN, forms. TASK, SCHEDULE e WEEK SP 2.2 Identificar os riscos do projeto Script STRAT e formulário ITL SP 2.3 Planejar dados para o gerenciamento Script LAU SP 2.4 Planejar os recursos para o projeto Script PLAN, forms. TASK, SCHEDULE para cada membro SP 2.5 Planejar as necessidades de conhecimentos Script LAU, formulário INFO e habilidades SP 2.6 Planejar o envolvimento dos stakeholders Não endereçada SP 2.7 Estabelecer o plano de projetos Script PLAN, formulário SUMP OBJETIVO CMMI COMENTÁRIOS SG 3 – Obter o compromisso para o plano: O membro no papel de gerente do projeto, obtém o Compromissos para o plano são estabelecidos e compromisso de todos para o projeto, porém a organização mantidos deve determinar qual será a participação e como serão feitos compromissos com pessoas externas a organização. PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 3.1 Rever planos que afetam o projeto Script LAU, STRAT e PLAN, formulário SUMP e STRAT SP 3.2 Reconciliar diferenças entre estimativas e Script PLAN, formulários TASK e disponibilidade recursos SCHEDULE SP 3.3 Obter os compromissos para o plano Não endereçada 4.4 Monitoramento e Controle de Projetos “O objetivo do monitoramento e controle de projetos é prover o conhecimento necessário do progresso da execução do projeto que propicie a tomada de ações corretivas apropriadas quando detectados desvios significantes do planejado.” [SEI02] A Tabela 5 exibe de forma resumida as práticas específicas da PA de Monitoramento e Controle de Projetos do CMMI e seu relacionamento com os elementos do TSP [DAV03a, HUM00]. 114 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Tabela 5 - TSP X Monitoramento e Controle de Projetos MONITORAMENTO E CONTROLE DE PROJETOS OBJETIVO CMMI SG 1 – Monitorar o projeto através do plano: Desempenho atual e progresso do projeto são monitorados através do plano de projeto COMENTÁRIOS As equipes TSP monitoram os resultados atuais e desempenho através dos planos periodicamente (normalmente em semanas). Membros da equipe monitoram seus planos individuais diariamente. ELEMENTO TSP PRÁTICA CMMI Práticas Específicas SP 1.1 Monitorar os parâmetros do plano de projeto Script PLAN, formulários SUMP, TASK e SCHEDULE SP 1.2 Monitorar os compromissos com o plano Script PLAN, formulários SUMP, TASK e SCHEDULE SP 1.3 Monitorar os riscos do projeto Formulário ITL SP 1.4 Monitorar os dados de gerenciamento Script PLAN, formulários SUMP, TASK e SCHEDULE SP 1.5 Monitorar o envolvimento dos stakeholders Não endereçada SP 1.6 Conduzir revisões de progresso do projeto Especificação de papéis, Script PLAN, forms. SUMP, TASK e SCHEDULE SP 1.7 Conduzir revisões nos Milestones (marcos do projeto) Especificação de papéis, Script PLAN, formulários SUMP, SUMQ, SUMS, TASK e SCHEDULE OBJETIVO CMMI COMENTÁRIOS As equipes do TSP fazem pequenos ajustes aos planos SG 2 – Gerenciar ações corretivas: Ações corretivas são gerenciadas para serem periodicamente (normalmente semanas) para minimizar os desvios entre os resultados atuais e o planejado. Quando o aplicadas quando o desempenho ou os resultados do projeto desvia significantemente desvio é significativo, as equipes relançam o projeto para replanejar seu trabalho. do planejado PRÁTICA CMMI ELEMENTO TSP Práticas Específicas SP 2.1 Avaliar cada assunto (Coletar e analisar cada assunto Especificação de papéis, Script PLAN, para determinar a ação corretiva apropriada a tomar) forms. SUMP, TASK e SCHEDULE SP 2.2 Tomar ações corretivas Script PLAN SP 1.3 Gerenciar as ações corretivas (analisar resultados das Especificação de papéis, reuniões ações corretivas para determinar a efetividade na periódicas de revisão, Postmortem correção do problema) 5. COTS Segundo a definição de Pressman [PRE02], COTS “são componentes comprados de terceiros, prontos para uso no projeto atual e plenamente válidos”. A montagem de sistemas baseados em COTS atende uma alternativa específica do desenvolvimento de software e permite que este trabalho aborde métodos para todas as áreas do CMMI. Este trabalho adotou para estudos o APCS (Assembly Process for COTS-Based Systems), descrito pelo SEI/CMU [CAR03]. No mais alto nível o APCS é um processo em espiral contendo uma série de iterações, cada qual com forma e atividades similares. Além das atividades iterativas para desenvolvimento do software o APCS apóia-se sobre outros dois grupos de atividades de extrema importância para o sucesso do processo: 115 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br • organizacionais (pervasive): são atividades que tendem em longo prazo e estão no escopo da organização; • executivas (executive): são atividades dirigidas a eventos e estão direcionadas à tomada de decisões. As atividades iterativas começam com planejamento, seguidas de um período de exploração, montagem de um protótipo executável e finalmente a avaliação do sistema como parte da preparação para a próxima iteração. Está implícito que a duração de cada iteração geralmente é breve devido à “rápida prototipagem” e que as iterações ocorrem até que o sistema esteja construído e aceitável para deployment [CAR03]. 5.1 COTS X CMMI “O objetivo da Gerência de Acordos com Fornecedores é gerenciar a aquisição de produtos de fornecedores para que exista um acordo formal.” [SEI02] A Tabela 6 apresenta graficamente a aderência de um processo COTS ao CMMI. Tabela 6 - COTS X CMMI GERÊNCIA DE ACORDOS COM FORNECEDORES OBJETIVO CMMI SG 1 – Estabelecer acordos com fornecedores: Acordos com fornecedores são estabelecidos e mantidos PRÁTICA CMMI Práticas Específicas SP 1.1 Determinar tipo de aquisição COMENTÁRIOS O auxilio do fornecedor será um diferencial positivo na construção do sistema e isto pode ser garantido através de bons acordos com fornecedores. COTS Uma vez definida a estratégia de utilizar COTS o tipo de aquisição já está definido. SP 1.2 Selecionar fornecedores Uma vez decidido que a funcionalidade será atendida por um COTS, deve-se selecionar dentre os fornecedores que implementam a funcionalidade desejada. SP 1.3 Estabelecer acordos com fornecedore Um acordo formal é necessário quando um COTS é adquirido. OBJETIVO CMMI COMENTÁRIOS SG 2 – Satisfazer acordos com fornecedores: Além de estabelecer acordos com fornecedores é crucial Acordos com fornecedores são satisfeitos pelo para o sucesso do projeto baseado em COTS que os fornecedor e pelos responsáveis pelo projeto compromissos estabelecidos nos acordos sejam cumpridos por ambos os lados. PRÁTICA CMMI COTS Práticas Específicas SP 2.1 Rever produtos COTS A construção do protótipo permite que os produtos COTS sejam revisados para identificar se atendem o que está descrito nos acordos de aquisição firmados. SP 2.2 Executar os acordos com Não endereçada fornecedores SP 2.3 Aceitar os produtos adquiridos Até a etapa de avaliação os produtos já passaram pela revisão, testes e auditorias pertinentes ao processo de desenvolvimento de software provendo para esta fase argumentos suficientes para aprovar ou reprovar o produto. SP 2.4 Transição de produtos Cada ciclo do processo inicia com uma fase de planejamento para garantir que a integração de cada COTS ao projeto será eficiente e tranqüila. 116 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br 6. Aplicação de conceitos de melhoria de processos A TDS Sistemas de Informação LTDA (www.tds.com.br) é uma pequena empresa de desenvolvimento de software. Fundada em 1993 e instalada em Bento Gonçalves, RS. A partir do ano 2000 a TDS concentrou seus esforços na construção de um único produto (software de gestão empresarial) para oferecer aos seus clientes. Desde então, os projetos desenvolvidos pela empresa estão focados em adicionar novas funcionalidades e criar novas versões deste produto. Os clientes da TDS são, em sua maioria, pequenas e médias empresas e a equipe da TDS, atualmente, é composta por 8 membros. A quase totalidade dos projetos da TDS era concluída com sucesso, porém não eram raros os casos em que houvesse atrasos no cronograma, ou que demandassem mais recursos que os previstos para que o cronograma fosse cumprido; gerando, assim, prejuízos que sempre foram absorvidos pela empresa. A oportunidade para aplicação dos conceitos de melhoria de processo surgiu durante o desenvolvimento de um trabalho de final de curso graduação [DAL04] e seguiu os conceitos e métodos apresentados neste artigo. Dentre os métodos aplicados, destacam-se: • aumento do detalhamento dos requisitos do projeto antes do início da implementação para diminuir ambigüidades; • coleta dos tempos gastos nas atividades desenvolvidas e utilização destes dados como embasamento para estimar prazos nos novos projetos; • utilização de métricas confiáveis para o entendimento das causas que provocavam as principais falhas nos projetos; • uso de milestones para avaliar produtos de trabalho e detectar erros e desvios do plano de projeto antes que este chegue ao final. A TDS está aplicando melhorias gradativamente, no entanto já é possível notar uma reação positiva em relação às mudanças já implantadas. 7. Considerações Finais A primeira constatação é que, mesmo não cobrindo todas as áreas de processo do CMMI, a aderência do TSP ao modelo do SEI/CMU é suficientemente alta para ser utilizado para acelerar processos de melhoria de processo baseadas no CMMI. Disciplina, treinamento e comprometimento (da alta gerência e dos membros da equipe). Estes três fatores são fundamentais para o processo de melhoria e principalmente para que a metodologia TSP seja usada corretamente e com sucesso pela organização que à escolheu. Tanto o CMMI como o TSP guiam somente o processo da organização. Este aspecto permite a utilização, sem restrições, de conceitos que estão em destaque como UML ou PMBOK. Por outro lado, a falta de uma ferramenta que auxiliem os membros da equipe na coleta e compilação dos dados torna-o de difícil aplicação como está proposto. Embora Humphrey proponha uma ferramenta em [HUM00], a falta de recursos computacionais nesta ferramenta dificulta sua utilização por equipes com membros geograficamente distribuídos, por exemplo, desenvolvedores localizados em cidades diferentes. 117 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Por fim, é inegável a importância das abordagens como o TSP para que o desenvolvimento de software abandone a imagem “artesanal” e seja considerada uma atividade com embasamento científico capaz de produzir produtos de qualidade comprovada de modo eficaz como o fazem outras ciências tais como a engenharia, nas suas mais variadas áreas, a medicina, o direito e outras ciências. Referências [BAR02] BARTIÉ, Alexandre. Garantia da qualidade de software: adquirindo maturidade organizacional. Rio de Janeiro, Elsevier, 2002. [CAR03] CARNEY, David J.; OBERNDORF, Patricia A.; PLACE, Patrick R.H. A Basis for an Assembly Process for COTS-Based Systems (COTS), Software Engineering Institute, CMU/SEI-2003-TR-010, Maio 2003. [DAL04] DALL’AGNOL, Samuel, Métodos de Desenvolvimento de Software para os Processos do Nível 2 do CMMI: Proposta de Framework, Unisinos, Julho 2004. [DAV00] DAVIS, Noopur; MCHALE, James, The TSP At Any CMM Level, Software Engineering Institute, 2000. [DAV03] DAVIS, Noopur; MULLANEY, Julia, The Team Software Process (TSP) in Practice: A Summary of Recent Results, Software Engineering Institute, CMU/SEI-2003-TR-014, Março 2003. [DAV03a] DAVIS, Noopur; MCHALE Jim, Relating the Team Software Process (TSP) to the Capability Maturity Model for Software (SW-CMM), Software Engineering Institute, CMU/SEI-2002-TR008, Março 2003. [GIL91] GIL, Antônio Carlos, Como elaborar projetos de pesquisa, 3ª ed. São Paulo: Atlas, 1991. [HUM97] HUMPHREY, Watts S., Introduction to the Personal Software Process, Addison Wesley Longman, 1997. [HUM00] HUMPHREY, Watts S., Introduction to the Team Software Process, Addison Wesley Longman, 2000. [JAL99] JALOTE, P. CMM in practice: processes for executing software projects at Infosys, Addison Wesley Longman, 1999. [NAV03] NAVAIR News Release ECL200301101, “AV-8B JSSA Team Soars to Level 4,” Naval Air Systems Command, Naval Air Warfare Center, Weapons Division, China Lake, CA, 10 de Janeiro de 2003. [PRE02] PRESSMAN, Roger S., Engenharia de software, 5ª ed., McGraw-Hill, 2002. [SEI02] CMMI for Software Engineering, Version 1.1, Staged Representation Software Engineering Institute, CMU/SEI-2002-TR-029, 2002. [SEI04] Process Maturity Profile, Software Engineering Institute, Março 2004. [SOM03] SOMMERVILLE, Ian, Engenharia de software, 6ª ed., Addison Wesley, 2003. 118