VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Desenvolvimento e Replicação de Uma Fábrica de Software José Augusto Fabri Alexandre L’Erário André Luiz Presende Trindade Marcelo S. de Paula Pessôa Mauro de Mesquita Spínola Eng. de Produção Tópicos desse Tutorial • Envolvidos • Introdução ao Tema • O Processo Fabril • Fábricas de Software (Definições) • Implementando uma Fábrica de Software • Replicando uma Fábrica de Software • Conclusão • Referências bibliográficas 3-1 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Envolvidos • Fundação Educacional do Município de Assis. – Objetivos: Formar mão de obra qualificada nas mais variadas áreas do conhecimento. – Conta com 09 cursos superiores, entre eles o curso de Ciência da Computação e Tecnologia em Processamento de Dados. • Área de Computação: – 15 professores. – 300 alunos. – Pesquisa (curso de graduação e pós-graduação) • Engenharia de Software, Teoria da Computação, Informática Aplicada ao Ensino e Inteligência Artificial Envolvidos • Centro de Pesquisas em Informática (CEPEIN) – Unidade de opera junto a FEMA. – Objetivo: • Agregar as atividade de pesquisas na área de computação em informática. • Prestar serviço de desenvolvimento software e projetos de TI junto ao poder público. 3-2 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Envolvidos • Departamento de Engenharia de Produção da Escola Politécnica da Universidade de São Paulo. • Primeiro Departamento de Engenharia de Produção do País. – 45 professores. – 450 alunos de graduação. – 200 alunos de pós graduação Envolvidos • Grupos de Pesquisas: – GOL: Grupo de Gestão de Operações Logísticas – TTO: Tecnologia Trabalho e Organização – QEP: Qualidade em Engenharia do Produto – EPEF: Economia da Produção e Engenharia Financeira – GTI: Gestão em Tecnologia da Informação 3-3 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Envolvidos • GTI: – Objetivos: Planejar o desenvolvimento e implantação de Sistemas e ativos relacionados a TI. – Atualmente conta com 30 alunos de pós-graduação. – Destaque para área de qualidade de software com mais de 15 dissertações e teses concluídas Envolvidos • Fundação Vanzolini: – Formada em 1967 pelos professores do Departamento de Engenharia de Produção da Escola Politécnica. – Entidades sem fins lucrativos que opera em convênio com a universidade de São Paulo. – Objetivos: Divulgar conhecimento científicos e tecnológicos inerentes à área de Engenharia de Produção e à Administração Industrial. – Produtos: • Treinamento; Certificações; Assessoria; Projeto 3-4 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Introdução ao Tema • Fábrica de Software: Utilizado pela primeira vez no Japão em 1969. Várias empresas associam o termo FÁBRICA DE SOFTWARE ao mero desenvolvimento de software Introdução ao Tema • Características fabris para software (Segundo Cusumano): – Produção de Software em Massa e em Larga Escala. – Padronização e controle de tarefas. – Divisão do Trabalho – Mecanização e Automatização – Desenvolvimento de software baseados em Componentes. – Gerenciamento das atividades por projeto e por processo. 3-5 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Introdução ao Tema • Pesquisa: – 31 Fábricas – Empresas Nacionais e Multinacionais. • Resultados: – – – – – – – Certificação (ISO ou CMM): Opera como célula do cliente: Ciclo de vida definido: Metodologia própria: Usa software de controle de projetos: Usa ferramentas CASE (automação): Aplica métricas de qualidade: 14% 16% 42% 45% 16% 13% 10% Fonte (Ivanir Costa) Introdução ao Tema • Relatório do MCT (2001) – – – – – Desenvolvedores com ferramentas de automação: Processo formal documentado: Certificado ISO : Avaliação CMM: Uso de gerência da configuração: 30% 30% 29% 02% 10% – Brasil importa dez vezes o que exporta em Software gerando assim um déficit de 1 BiUS$ Gazeta Mercantil (ago2002) 3-6 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Introdução ao Tema • Modelos tradicionais de desenvolvimento de software se autodenominam fábrica. Puro marketing. • Enfim, há muito o que fazer para solucionar esse problema e alavancar as exportações no mercado internacional de software. O que fazer então? Introdução ao Tema Formalizar o conceito de FS para realidade brasileira Conscientizar o mercado Prover técnicas de replicação de FS para o mercado Quem pode fazer isso? Universidades Governo empresas 3-7 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Introdução ao Tema Como fazer? Desenvolvendo um mecanismo de replicação de técnicas fabris Medida adotada pelos envolvidos no projeto eLabTI – Um ambiente replicável de FS O Processo Fabril • Henry Ford “Construirei um carro para as grandes massas, feito com os melhores materiais, pelos melhores homens que puderem ser contratados e seguindo os projetos mais simples que a moderna engenharia pode conceber [...] de preço tão baixo que qualquer homem que ganhe um bom salário seja capaz de possuir – e desfrutar com sua família a bênção das horas de prazer nos grandes espaços abertos da natureza” – declaração de Henry Ford no início de carreira como produtor de carros (Tedlow 2002). 3-8 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br O Processo Fabril • Adaptação da citação de Henry Ford (Utopia?) Replicaremos uma série de entidades que produzirá softwares para as “grandes massas empresariais”, feito com os melhores componentes e seguindo projetos mais simples que a moderna engenharia de software possa conceber. O preço do software deve ser baixo que qualquer empresa que tenha um rendimento condizente com a realidade possa crescer utilizando um software que supra as suas necessidades e esteja alinhado com a sua estratégia O Processo Fabril • Em 1910 foi inaugurada a fábrica de Highlang Park (uma fábrica que produzia um modelo complexo como Ford T). • Produção em fluxo sem interrupção (idéia desenvolvida por Henry Ford). • A decisão de fixar-se num só modelo (T) permitiu que os projetistas especificassem e produzissem equipamentos dedicados esse tipo de modelo (Isso não funciona para software) • 1913 – mudança no processo de produção do Ford T – aumento drástico da produtividade. 3-9 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br O Processo Fabril • Principal mudança: – os produtos a serem montados agora fluiriam de estação de trabalho em estação de trabalho, indo ao encontro dos montadores, e não ao contrário. Estava criada a linha de montagem móvel (Corrêa 2003). • Henry Ford apresentou ao mundo a união dos princípios da: – Administração científica • Divisão do trabalho; • Escolha do trabalhador certo para a tarefa certa. – Intercambialidade de peças (desenvolvida por Eli Whitney (Hounshell 1984)). – Princípio da Padronização dos Produtos – • e a idéia de fazer produtos moverem-se enquanto estações de trabalho ficavam estáticas. O Processo Fabril “Antes da implementação da linha de montagem, um chassi levava 12 horas e 28 minutos para ser montado. Na primavera de 1914 a tarefa podia ser feita em 1 hora e 33 minutos.” (Corrêa 2003) • Em 1926 a Ford produzia sozinha em torno de 2 milhões de carros por ano (Corrêa 2003). 3 - 10 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br O Processo Fabril • Por volta de 1910 surgiu a GM. • A GM possuia sete linhas veículos. • – Chevrolet – Oakland – Olds – Scripps-Booths – Sheridam – Buick – Cadillac Destes carros o Buick tinha preço médio/alto e o Cadillac possuía um conceito luxuoso e altos preços (Sloan JR. 2001). O Processo Fabril • Problema enfrentado pela GM – O Ford T era 300 US$ mais barato que o GM Chevrolet – 1920 - GM apenas com 17% do mercado – 1921 – índice baixou para 12% • Estratégia da GM para reverter o quadro: – introduzir uma linha de montagem de veículos para cada segmento da sociedade, diversificando assim os preços. – Esta estratégia considerada de longo prazo apostava que o consumidor norte-americano iria possuir um poder aquisitivo maior e tornar-se mais exigente. 3 - 11 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br O Processo Fabril • Quando a Ford percebeu que estava perdendo mercado resolveu adotar a mesma estratégia da GM. • A Ford teve necessidade de mudar toda a sua linha de produção. • Em 1927 a Fábrica de River Rouge ficou fechada por 06 meses. • Resultados: – Isso custou a Ford cerca de 200 a 250 milhões de dólares. – A mudança repentina a linha de produção da Ford representou muitos desperdícios, levando a atividades descoordenadas entre a engenharia do produto e o processo de produção. O Processo Fabril • Para software é necessário ter uma linha de produção: – Dinâmica com conceitos adaptativos. – Divisão do trabalho. – Intercambialidade de componentes de software. • Resultados: – Produção de software para segmentos diversificados. – Na produção de software a diversificação é mais volumosa e o conceito de produção em massa de um único software não constitui uma realidade. – Por meio deste contexto, verifica-se que não é trivial implementar o conceito de linha de produção de software ou fábrica de software. 3 - 12 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Fábricas de Software (Definições) • Definições sobre Fábrica de Software: Fábrica de software é um ambiente no qual se constrói programas e efetua testes. Neste ambiente devem existir ferramentas para realizar as ações de construir e testar. Uma fábrica possui medidas de produtividade e qualidade, os registros financeiros são mantidos por custo da programação e a forma de gerenciamento deve dar subsídios para prever ou estimar dados de futuros projetos. (Berner 1969) Fábricas de Software (Definições) • Definições sobre Fábrica de Software: • Uma fábrica de software deve: – ser flexível, capaz de produzir vários tipos de produtos; – implementar os conceitos de engenharia de software (metodologia, ferramental, configuração do ambiente, guia para construção de fábricas de softwares avançadas) e, – também, ser capaz de estudar, projetar, implementar, evoluir e melhorar os sistemas. Cantone (1992) 3 - 13 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Fábricas de Software (Definições) • Definições sobre Fábrica de Software: Conceitualmente, fábrica de software é definida como uma estrutura de desenvolvimento que reúne alguns requisitos básicos, como a capacidade de atender clientes, de projetar o produto, de planejar e controlar a produção, de produzir e de controlar a qualidade Fagundes (2004) Fábricas de Software (Definições) • Nosso entendimento sobre o conceito de Fábrica de Software. • Fábrica de software é uma organização estruturada, voltada para a produção do produto software, totalmente alicerçada na engenharia e com forte caracterização pela organização do trabalho, pela capacidade de modularização de componentes e pela escalabilidade produtiva. • É com base na engenharia que se pode pensar em produzir software de forma modular e distribuída, valendo-se da figura de componentes hermeticamente encapsulados e totalmente reutilizáveis (como futuras partes de composição na montagem do produto final), por meio de um processo ágil, flexível e de rápida progressão. 3 - 14 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software • Seleção de um modelo de fábrica de software, vindo da literatura; • Adequação do modelo à realidade da Organização (Caso do CEPEIN); • Desenvolvimento do processo fabril para a área de desenvolvimento de software, este processo está alicerçado no modelo selecionado; • Configuração de um conjunto de ferramentas (toolkit) para atender, de forma dinâmica ao processo fabril. • Desenvolvimento de um projeto piloto para testar modelo, processo e ferramentas. • Implantação gradativa do conceito de fábrica de software. Implementando uma Fábrica de Software (1) Fábrica de componentes Fábrica de software produtos planejar dados construir planos componentes Implantar Implementação componentes Análise de componentes modelos Modelo de Basili 3 - 15 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (2) Produção de componentes Analisar produtos Projetar dados implementar implementar planos testar Projetar testar armazenar implantar componentes revisar modelos Padronização de tarefas Automatização de procedimentos Divisão do Trabalho Gerenciamento de projetos e administração de componentes Gerenciamento de projetos Produção de software distribuir Medidas de qualidade produtividade Flexibilidade na Produção Implementando uma Fábrica de Software • Seleção de um modelo de fábrica de software, vindo da literatura; • Adequação do modelo à realidade da Organização (Caso do CEPEIN); • Desenvolvimento do processo fabril para a área de desenvolvimento de software, este processo está alicerçado no modelo selecionado; • Configuração de um conjunto de ferramentas (toolkit) para atender, de forma dinâmica ao processo fabril. • Desenvolvimento de um projeto piloto para testar modelo, processo e ferramentas. • Implantação gradativa do conceito de fábrica de software. 3 - 16 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (3) • Orientado a Reuso (desenvolvimento Baseado em Componentes) • Incremental • Evolucionário (na Unidade de Produção de Componentes) Implementando uma Fábrica de Software (3) analisar V GHILQLomR GRV DJHQWHV H[WHUQRV GHILQLomR GR HVFRSR GR VLVWHPD H LQWHUDJLU FRP R FOLHQWH PRGHODU HYHQWRV VLVWrPLFRV GHILQLomR GRV HYHQWRV VLVWrPLFR SUHYLVmR GR WDPDQKR GR VRIWZDUH V SUHYHU EDVHV WHFQROyJLFDV *HUHQFLDU D DWLYLGDGH GH DQDOLVH *HUHQFLDU D DWLYLGDGH GH DQDOLVH 3 - 17 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (3) projetar Implementando uma Fábrica de Software (3) implementar JHUHQFLDU DWYLGDGH GH LPSOHPHQWDomR V H PRQWDU VRIWZDUH 3 - 18 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (3) validar: estamos construíndo o produto certo interação com o usuário aceitação dos requisitos espeficificação do sistema projeto do sistema uma validação pode gerar uma correção implementação verificar: estamos construído certo o produto métodos de teste testar implantar software integração de requisitos componentes integração componentes implementação modelagem aceitação Processo de Teste caixa preta caixa branca forma de teste Implementando uma Fábrica de Software (3) testar V SURMHWDU FDVRV GH WHVWH SUHSDUDU FDVRV GH WHVWH WHVWDU XQLGDGH GH VRIWZDUH V FRPSDUDU RV UHVXOWDGRV WHVWH GH DFHLWDomR WHVWDU FRPSRQHQWHV H JHUHQFLDU DWLYLGDGH GH WHVWH V JHUHQFLDU DWLYLGDGH GH WHVWH 3 - 19 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (3) implantar YHULILFDU EDVH WHFQROyJLFDV FRQILJXUDU R VRIWZDUH WUHLQDU XVXiULRV H V *HUHQFLDU D DWLYLGDGH LPSODQWDomR *HUHQFLDU D DWLYLGDGH GH LPSODQWDomR Implementando uma Fábrica de Software (3) revisar H V YHULILFDU QRYR FRPSRQHQWH QD EDVH FRPXQLFDU DR FOLHQWH VREUH FRPSRQHQWH VXEVWLWXLU FRPSRQHQWH H V *HUHQFLDU D DWLYLGDGH GH UHYLVmR *HUHQFLDU D DWLYLGDGH GH UHYLVmR 3 - 20 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (3) armazenar GRFXPHQWDU R FRPSRQHQWH FRPXQLFDU RV LQWHJUDQWHV GR SURFHVVR H V *HUHQFLDU D DWLYLGDGH GH DUPD]HQDU *HUHQFLDU D DWLYLGDGH DUPD]HQDU Implementando uma Fábrica de Software (3) Distribuir YHULILFDU VH FRPSRQHQWH DWHQGH VROLFDomR YHULILFDU SHUPLVV}HV GH DFHVVR H V *HUHQFLDU D DWLYLGDGH GH GLVWULEXLomR *HUHQFLDU D DWLYLGDGH GH GLVEUXLomR 3 - 21 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software • Seleção de um modelo de fábrica de software, vindo da literatura; • Adequação do modelo à realidade da Organização (Caso do CEPEIN); • Desenvolvimento do processo fabril para a área de desenvolvimento de software, este processo está alicerçado no modelo selecionado; • Configuração de um conjunto de ferramentas (toolkit) para atender, de forma dinâmica ao processo fabril. • Desenvolvimento de um projeto piloto para testar modelo, processo e ferramentas. • Implantação gradativa do conceito de fábrica de software. Implementando uma Fábrica de Software (4) • Configuração de Conjuntos de Ferramentas para atender o processo fabril. – Aderência ao processo fabril. – Escolha amarrada a questão de qualidade e custo. – Parte das ferramentas foram desenvolvidas internamente parte foram compradas e algumas são caracterizadas como Freeware. 3 - 22 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (4) • Ferramenta de gerenciamento de projetos de software: – Destinada ao suporte a gerentes de projeto no desenvolvimento de software, provendo informações de controle de projetos em andamento (recursos necessários para seus desenvolvimentos), de mão de obra (alocação de pessoal por projeto), de fornecedores e dos riscos do projeto. – Ferramenta desenvolvida Implementando uma Fábrica de Software (4) • Ferramenta de gerenciamento de processos, para um determinado projeto de software: – Dá suporte aos engenheiros de software, analistas de sistemas, desenvolvedores e arquitetos, para controlar as informações dos agentes externos de um determinado projeto de software e a relação entre os agentes, as restrições inerentes ao software, o modelo de dados a ser desenvolvido, as fases do projeto em relação ao ciclo de vida e o desenvolvimento de componentes (código, projeto, coleções e documentos). 3 - 23 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (4) • Ferramenta para modelagem UML (Unified Modeling Language): – especificação de diagramas de use cases, de classes, de transição de estados, de atividades, de seqüências, de colaborações e de componentes. – Após a especificação do software, com esta ferramenta é possível gerar a assinatura das classes e dos métodos para o desenvolvimento dos componentes de código. Implementando uma Fábrica de Software (4) • Ferramenta para desenvolvimento de componentes de código: – Tecnologia Java. – IDE: NetBeans (v. 3.5.1) 3 - 24 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (4) • Ferramenta para metrificar software: – Objetivo: automatizar o cálculo do tamanho do software a ser desenvolvido pelo projeto. – Esta ferramenta está baseada na teoria de COCOMO 2. Implementando uma Fábrica de Software (4) • Estrutura Modular do Conjunto de Ferramentas conjunto ferramenta projeto processo de software modelagem visual fortemente acoplada fracamente acoplada 3 - 25 desenvolvimento de componente de código métricas VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (4) • Estrutura Modular do Conjunto de Ferramentas conjunto ferramenta projeto riscos visões escopo recursos (equipamentos) cronograma mão de obra especialidades fornecedores componentes envolvidos Implementando uma Fábrica de Software (4) • Estrutura Modular do Conjunto de Ferramentas conjunto ferramenta dados processo de software fase atividades agentes externos tempo gasto no desenvolvimento relação agentes 3 - 26 modelo de dados componentes modelagem implementação VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (4) • Estrutura Modular do Conjunto de Ferramentas implementação restrições atributos não funcionais funcionalidades status da versão versões desenvolvedores envolvidos c/ a versão teste da versão correções da versão Implementando uma Fábrica de Software (4) • Estrutura Modular do Conjunto de Ferramentas modelagem restrições status da versão versões desenvolvedores envolvidos c/ a versão 3 - 27 teste da versão correções da versão VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software • Seleção de um modelo de fábrica de software, vindo da literatura; • Adequação do modelo à realidade da Organização (Caso do CEPEIN); • Desenvolvimento do processo fabril para a área de desenvolvimento de software, este processo está alicerçado no modelo selecionado; • Configuração de um conjunto de ferramentas (toolkit) para atender, de forma dinâmica ao processo fabril. • Desenvolvimento de um projeto piloto para testar modelo, processo e ferramentas. • Implantação gradativa do conceito de fábrica de software. Implementando uma Fábrica de Software (5) • Projeto Piloto: • Objetivo do software a ser fabricado: O software de agendamento de consulta tem como objetivos armazenar os dados dos consultores (neste caso os médicos); os dados dos pacientes; agendar consultas; prover um mecanismo de validação das consultas agendadas e emitir relatórios em relação aos dados armazenados. 3 - 28 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Atividades do ciclo de vida a serem desenvolvidas: – o levantamento dos requisitos; – a analise e projeto dos requisitos levantados; – a implementação e teste das informações inferidas nas atividades de analise e projeto; – a implantação do software. Implementando uma Fábrica de Software (5) • O levantamento de requisitos é realizado utilizando componentes de infraestrutura. • Os requisitos: – Principais necessidades: SURYHU L QWHUIDFHDPHQWR SDUD SUHHQFL PHQWR GR DWHQGL PHQWR HP XP FRPSXGDGRU SRUWDWLO /DQoDU DV Do}HV UHDOL]DGDV MXQWR DR FO LHQWH Sistema de Atendimento ao Cliente HPLWLU UHODWyULRV HVWDWtVWLFRV DJHQGDU VREUH DWHQGL PHQWR DWHGL PHQWR 3 - 29 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Os objetivos do software, suas principais necessidades e o diagrama de causa-efeito são capturadas no módulo de gerenciamento de projetos/gerência de escopo do projeto (uma das ferramentas do tookit). conjunto ferramenta projeto riscos visões escopo recursos (equipamentos) cronograma mão de obra especialidades fornecedores componentes envolvidos Implementando uma Fábrica de Software (5) • Agentes externos envolvidos no contexto do sistema: – Os agentes externos (atores e usuários do software) também são mapeados utilizando componente de infra-estrutura/formulários – Agente Externo 1: Médico – Responsabilidade: Atende um paciente e fornece um diagnóstico. – Uso do Software: Armazena os dados do diagnóstico fornecido ao paciente. Valida o agendamento de uma consulta, quando este é efetuado por um paciente. – Ambiente: Pode trabalhar em qualquer ambiente, utilizando a web. – Agente Externo 2: paciente – Responsabilidade: Agenda consulta. Pessoa que recebe o atendimento de um médico. – Uso do Software: O paciente pode agendar um atendimento via web. Nota esse atendimento só é valido se o médico validá-lo – Ambiente: Trabalho em qualquer ambiente, o mesmo pode usar a web. – Relação entre os agentes: Médico atende um paciente 3 - 30 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • As informações relativas aos agentes externos são capturadas no módulo de gerenciamento das informações das atividades de desenvolvimento de software/agentes externos (uma das ferramentas do tookit). conjunto ferramenta dados processo de software fase atividades agentes externos tempo gasto no desenvolvimento relação agentes modelo de dados componentes modelagem implementação Implementando uma Fábrica de Software (5) • Mapeadas as informações sobre as principais necessidades do software e dos agentes externos é possível inferir alguns eventos cuja as atividades fazem parte do contexto sistêmico no qual o software vai ser desenvolvido. – Armazenar e recuperar informações de médicos – Armazenar e recuperar informações de pacientes – Agendar consultas – Validar consultas – Armazenar informações sobre o atendimento – Emitir relatório dos dados armazenados 3 - 31 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Representação das atividades Essenciais: Implementando uma Fábrica de Software (5) • Desenvolvimento de um cronograma para realização das atividades de levantamento de requisitos e análise de sistemas. • Necessidade de realização de uma interação com o cliente para validar o modelo sistêmico proposto. 3 - 32 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • O tempo do projeto é capturado no sub-módulo gerência de tempo de projeto, o custo, no submódulo de gerência de custo de projeto e os recursos, no sub-módulo de gerência de recursos humanos do projeto. conjunto ferramenta projeto riscos visões escopo recursos (equipamentos) cronograma mão de obra especialidades fornecedores componentes envolvidos Implementando uma Fábrica de Software (5) • Na interação realizada junto ao cliente do software, são priorizadas as atividades essenciais que devem ser implementadas (processo incremental). • Atividades Essenciais: – Armazenar e recuperar informações de médicos. – Armazenar e recuperar informações de pacientes. • Surge a questão: Quais são essas informações? 3 - 33 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Para responder essa questão, é necessário realizar consulta ao cliente, denominado no contexto fabril de levantamento de requisitos de componentes. Implementando uma Fábrica de Software (5) • Levantados os requisitos de um determinado componente, o próximo passo é estabelecer uma versão para o desenvolvimento do mesmo. – componente armazenar e recuperar informações de médicos está na versão 001. – Versão Datada de 21 de maio de 2004. – Agente Externo: Médico. – Início do Levantamento de Requisitos: 21 de maio de 2004. – Término da Atividade de Levantamento de Requisitos: agendada para 22 de maio de 2004. – Liberação das informações para o desenvolvimento da atividade de projeto: 22 de maio de 2004. – Foram gastas 04 horas no Levantamento de Requisitos. 3 - 34 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Com isso é possível concluir que: FRPSRQHQWH WHP UHVWULomR UHVWULomR $W1) Q $W1) YHUVmR Q YHUVmR Q WHP UHTXLVLWRV SURMHWR WHVWH PRQWDJHP $W1) LPSODQWDomR $WULEXWRV QmR IXQFLRQDLV Implementando uma Fábrica de Software (5) • O projeto do componente: – Desenvolvimento do modelo funcional (Diagramas Use-Case e Seqüência). – Desenvolvimento do Modelo de Dados (Diagrama de Classes 3 - 35 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Os diagramas de use case (com seus fluxos normal e alternativo) e de seqüências, a data de início, a previsão para data de termino, a data de liberação e a quantidade de horas gasta na atividade de projeto de um componente são capturadas pelo módulo de gerenciamento das informações das atividades de desenvolvimento de software (Ferramenta). conjunto ferramenta dados processo de software fase atividades agentes externos tempo gasto no desenvolvimento relação agentes modelo de dados componentes modelagem implementação Implementando uma Fábrica de Software (5) • Ordem Montagem 3 - 36 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) DUPD]HQDU H UHFXSHUDU LQIRUPDo}HV GH PpGLFRV YHUVmR Q JHUD XPD QRYD YHUVmR YHUVmR Q WHP UHTXLVLWRV ,QtFLR 7pUPLQR /LEHUDomR 4WGH GH +RUDV SURMHWR ,QtFLR 7pUPLQR /LEHUDomR 4WGH GH +RUDV PRQWDJHP YDOLGDGR LQtFLR GD LPSODQWDomR WHP WHVWH ,QtFLR 7pUPLQR /LEHUDomR 4WGH GH +RUDV PRQWDJHP ,QtFLR 7pUPLQR /LEHUDomR 6WDWXV &RP (UUR Q WHVWH ,QtFLR 7pUPLQR /LEHUDomR 4WGH GH +RUDV ,QtFLR 7pUPLQR /LEHUDomR 6WDWXV 6HP (UUR &RP (UUR rastreabilidade Implementando uma Fábrica de Software (5) • Informações sobre o Projeto Piloto: – Uma equipe de desenvolvimento de software foi destacada, especialmente, para desenvolver este projeto. – Esta equipe recebeu treinamento e tarefas lhe foram distribuídas (alguns membros da equipe foram treinados para fabricar componentes, outros para fabricar software). 3 - 37 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (5) • Desenvolvimento de um Projeto Piloto para testar modelo, processo e ferramentas (Resultados Iniciais). – Configuração de uma unidade de produção de componentes e uma unidade de produção de software (divisão do trabalho). – Introdução de técnicas de gerenciamento de projetos. – Padronização de tarefas e controles podem ser inferidos. – Automatização de procedimento, no desenvolvimento de software. – Adoção de uma linguagem de modelagem comum no desenvolvimento de projetos de softwares (a linguagem adotada: UML). – Algumas medidas de produtividade e qualidade já podem ser inferidas. – Configuração de um ambiente de teste de software. Implementando uma Fábrica de Software • Seleção de um modelo de fábrica de software, vindo da literatura; • Adequação do modelo à realidade da Organização (Caso do CEPEIN); • Desenvolvimento do processo fabril para a área de desenvolvimento de software, este processo está alicerçado no modelo selecionado; • Configuração de um conjunto de ferramentas (toolkit) para atender, de forma dinâmica ao processo fabril. • Desenvolvimento de um projeto piloto para testar modelo, processo e ferramentas. • Implantação gradativa do conceito de fábrica de software. 3 - 38 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Implementando uma Fábrica de Software (6) • Plano para Implantação do conceito fabril. – Mapeamento de projetos que estão sendo desenvolvidos pelo CEPEIN e os projetos que estão na fila de espera para iniciar o desenvolvimento. – Classificação das equipes e dos projetos que irão trabalhar de forma semelhante ao projeto piloto. O critério utilizado na classificação atenderá, primeiro, os projetos com maior prioridade. – Treinamento dos integrantes dos projetos classificados. – Gerenciamento dos projetos classificados, utilizando os conceitos definidos no projeto piloto, de forma gradativa (um projeto por vez). Implementando uma Fábrica de Software • Análise dos modelos fabris da literatura. • Seleção de um modelo levando em consideração alguns critérios. – uma fábrica de software é baseada na produção de software por meio de componentes. – a padronização de técnicas e a flexibilidade na produção. • Adequação do modelo a realidade (customização). • Desenvolvimento de um processo fabril. • Institucionalizar o processo desenvolvido (sugestão: desenvolvimento de um projeto piloto). • Configurar um conjunto de ferramentas para apoio ao processo. • Desenvolvimento de um plano de implantação. 3 - 39 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Replicando uma Fábrica de Software • Passos a serem seguidos: – Definir um macro processo para transferência de conhecimento e tecnologia. – Definir passos para customizar e adaptar o conhecimento e a tecnologia para a organização receptora do processo fabril. – Criar uma Base de Conhecimento com informações sobre os vários aspectos do desenvolvimento do software. Nishiyama, Ikeda e Niwa (2000) Replicando uma Fábrica de Software (MP) • Macro processo de transferência: – Definir o conhecimento que será transferido (já realizado – processo e tecnologia de suporte) – Estabelecer o modelo de transferência de conhecimento S H VV R D V S U R F HV V R W UD QV IH Ur QF LD G H F RQ K H F LP H Q WR F R Q IL J X U D o m R G R D P E LHQ WH 3 - 40 IH U U D P H Q W D WH FQ R OR JLD VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Replicando uma Fábrica de Software (MP) • Formas de transferir conhecimento. – “learning by doing”; – treinamento convencional (ensino e aprendizagem – professor e aluno); – auto aprendizagem: consulta a uma base de conhecimento (livros, cursos on-line, manuais, formalização de processos). Replicando uma Fábrica de Software (MP) • Formas de transferir conhecimento. – “learning by doing”; RULHQWDU PRQLWRUDU DSULPRUDU 3 - 41 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Replicando uma Fábrica de Software (MP) • Configuração do ambiente: – Instalar as ferramentas; – Iniciar a base de componentes e de conhecimento; Replicando uma Fábrica de Software (MP) • Configuração do ambiente: – Definir a planta do ambiente fabril. ,/+$ '( )$%5,&$d2 %& ,/+$ '( )$%5,&$d2 3 - 42 ,/+$ '( )$%5,&$d2 1 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Replicando uma Fábrica de Software (CUS) • Customizar processo e da tecnologia: – Análise dos modelos fabris. – Adaptar o modelo a realidade da organização. – Customizar o conjunto de ferramentas. – Propor um projeto piloto. Replicando uma Fábrica de Software (BC) • Configuração de uma base de conhecimento. estrutura do processo (apresentada na seção 2), informações que respondem como utilizar o processo; tutoriais relacionados às atividades de processo; informações que respondem como configurar as ferramentas; tutoriais sobre as ferramentas; como aplicar as ferramentas em conjunto com o processo; informações relativas aos componentes (permissões, regras, autor do componente) – informações que respondem como utilizar um determinado componente na atividade implementação; – informações relativas a estrutura dos componentes e a biblioteca de componentes. – – – – – – – 3 - 43 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Replicando uma Fábrica de Software (Recursos) • Customizar as ferramentas de gerenciamento de projeto e de processos de acordo com o processo definido. • Configurar o ambiente: estabelecer um número x de ilhas de fabricação de software, x pode variar de acordo com as pretensões da organização. • Configurar a base de conhecimento: criar um mecanismo que propicie a compartilhamento do processo e das ferramentas. • Estabelecer o número de integrantes que irão participar no processo de fabricação de software. Replicando uma Fábrica de Software (Recursos) • Transferir conhecimento: todos os integrantes que irão participar do processo de fabricação de software devem ser treinados. Os treinamentos sugeridos são: – Treinamento no processo (orientado a processo ou orientado a objetos), utilizando as ferramentas de gerenciamento de projetos e de processos (60 horas). – Treinamento em métricas (20 horas). – Treinamento na tecnologia JAVA (60 horas). – Treinamento na ferramenta de modelagem do processo fabril (20 horas). • Desenvolver um projeto piloto para balizar o processo fabril e as ferramentas. 3 - 44 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Conclusão • Casos de Sucesso de empresas que implementaram o conceito de Linha de Produto de Software. • Caso: CelsiusTech (empresa sub-contratada da marinha sueca para o desenvolvimento de sistemas para embarcações militares). – A participação do software no custo total dos sistemas caiu de 65% para 20%; – Redução da mão de obra de desenvolvimento de software (dos projetos de uma família) de 200 pessoas para menos de 50; – O tempo de entrega (time-to-market) passou de poucos anos para meses; – 70% a 80% dos sistemas de software eram compostos de componentes do repositório de ativos; – Houve um aumento na qualidade dos sistemas desenvolvidos e na satisfação dos clientes. Dusrcki e Spínola 2004 • Outros casos - Nokia, Philips e Avaya Telecom Conclusão • Este trabalho apresentou as técnicas utilizadas para o desenvolvimento da fábrica de software do CEPEIN. Após apresentar tais técnicas o trabalho provê um modelo genérico para desenvolver e replicar fábricas de software. • É possível verificar que as técnicas apresentadas necessitam do suporte do conceito de fábrica de software (amplamente discutido no meio científico). Tais técnicas estão embasadas nas idéias de padronização de tarefas, divisão do trabalho, automatização de procedimentos, medidas de qualidade e produtividade e flexibilidade na produção, propostas por Basili et. al. (1992), Berner (1969), Cantone (1992) e Cusumano (1989). 3 - 45 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Conclusão • Ao definir as técnicas e aplicá-las no desenvolvimento da fábrica de software do CEPEIN, houve a tentativa de responder algumas questões, entre elas, destaca-se: Quais os critérios para selecionar um modelo para implementar uma fábrica de software? • Critérios: – Uma fábrica de software é baseada na produção de software por meio de componentes, com isso o modelo escolhido deve apresentar este conceito. – A padronização de técnicas e a flexibilidade na produção Conclusão • Com certeza, outros critérios podem surgir e alterar a configuração do modelo utilizado para implementar uma fábrica de software em outros ambientes, com isso é possível afirmar que a questão não está totalmente solucionada. • Outras questões devem ser respondidas pelos autores deste trabalho, entre elas: Como adequar um modelo selecionado na literatura à realidade de uma organização? Quais são os passos para desenvolver um processo de desenvolvimento de software aderente ao modelo selecionado? Como escolher e configurar um conjunto de ferramentas para desenvolver software em uma fábrica? • Tais questões merecem grande atenção da comunidade científica e, possivelmente, quando respondidas de forma definitiva solucionarão muitos problemas da área de engenharia de software. 3 - 46 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Referências bibliográficas • Basili, V. R.; Caldiera G.; Cantone G. A Reference Archiecture for the Component Factory. ACM Transaction on Software Engineering and Methodology. Vol 1. nº 1, January 1992. pp 53-80. • Cusumano, Michael A.. Software Factory: A Historical Interpretation. IEEE Software – March de 1989. • Cantone, G. Software Factory: Modeling the Improvement. IEEE Software. 1992. • Li, Chao; Li Huaizhang; Li Mingshu. A Software Factory Modelo Based on ISO 9000 and CMM for Chinese Small Organizations. IEEE, 2001. • Fernstrom, C.; Narfelt, Kjell-Hakan; Ohlsson, L. Software Factory Principles, Architecture and Experiments. IEEE Software, March 1992. • Bux, G.; Marzano, G. Library of Predefined Software Process Models as Support for Software Factory Design. The SFINX Proposal Proposal. IEEE, 1992. Referências bibliográficas • Noboru, Akima; Ooi, Fusatake. Insdustrializing Software Development A Japanese Approach. IEEE Software, March 1989. • Humphrey, S. Watts. Software and the Factory Paradigm. Software Engineering Journal, September 1991. • Cesar, Ricardo. Fábrica de Software uma Vocação Nacional, extraíde de www.computerworld.terra.com.br em 2003. • IEEE Std 830-1998 – Recommended Practice for Software Requirements Specifications. • Bayer, J.; Flege, O.; Laqua, R.; Muthig, D.; Schmid, K.; Widen, T. PulSE: A Methodology to Develop Software Product Lines. SSR’99 Los Angeles CA USA. ACM. • Chatters, Brain. Implementing an Experience Factory. Maintenance and Evolution of the Software and System Developement Process. 3 - 47 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Referências bibliográficas • IEEE Std 1016-1998. Recommend Practice For Software Design Descriptions. • Sommerville, Ian Engenharia de Software. 6ª Edição, Addison Wesley. 2003. • Fernandes, Agnaldo Aragon; Teixeira, Descartes de Souza. Fábrica de Software: Implantação e Gestão de Operações. Editora Atlas. 2004. • Processo RUP. • PMBOK • Berner, R. W. Position Papers For Painel Discussion: The Economics of Program Producition. In Information Processing 68, North-Holland, Amsterdan. 1969. Referências bibliográficas • Laszlo A. Belady. The Disappearance of the “Pure” Software Industry • Ivica Crnkovic; Stig Larsson; Judith Stafford. Component-Based Software Engineering: Building systems from Components at 9th IEEE Conference and Workshops on Engineering of Computer-Based Systems. 3 - 48 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Referências bibliográficas • D. L. Parnas. A Technique for Software Module Specification with Examples. • Stefano Cinti, Giandomenico Oldano, Elena Orazi Alfonso Fuggetta, Luigi Lavazza, Sandro Morasca Applying GQM in an Industrial Software Factory. • Michael A. Cusumano, Richard W. Selby. How Microsoft Biulds Softwares. • John D. Tvedt, Roseanne Tesoriero, Kevin A. Gary. The Software Factory: Combining Undergraduate Computer Science and Software Engineering Education. • Victor Basili, Frank McGarry. The Experience Factory: How to Build and Run One. • SWEBOK Referências bibliográficas • Slack, N. Lewis, M. Operations Strategy. Londres: Pitman, 2002. • Corrêa, Henrique Luiz. Teoria Geral da Administração: Abordagem Histórica da Gestão de Produção e Operações. São Paulo. Ed. Atlas, 2003. • Nieto, M.; Arias, D.; Miguela, B; Rodrigues, A. The Evolution of Management Contentes: An Analysis of th Most Relevant Textbooks. Industrial Management and Data Systems. 99/8 p. 345-352. MCB University Press, 1999. • Sloan JR., A. E. Meus anos com a General Motors. S. Paulo. Negócio Editora. 2001. • Hounshell D. From the American System to Mass Production 1800-1934. Johns Hopkins University-Press, 1984 • Tedlow, R. S. Sete Homens e os Impérios que Construíram. S. Paulo: Futura 2002. • COSTA, Ivanir; Contribuição para o aumento da qualidade e produtividade de uma Fábrica de Software através da padronização do processo de recebimento de serviços de construção de software; exame de qualificação de doutorado Poli Produção; 2003. • Durskcki, R. C. Linhas de Produto de Software: riscos e vantagens de sua implantação. Simpósio Brasileiro de Processo de Software. S. Paulo. 2004 3 - 49 VI Simpósio Internacional de Melhoria de Processos de Software São Paulo, SP – Brasil 24-26/11/2004 www.simpros.com.br Desenvolvimento e Replicação de Uma Fábrica de Software Repositório Fabril – CEPEIN e eLabTI www.femanet.com.br/fs [email protected] Eng. de Produção 3 - 50