The Software Component Market on The Internet Current Status and Conditions for Growth Vicent Traas Jos van Hillegersberg January, 2000 Component Based Development (CBD) Maximização do reuso no desenvolvimento de software Novos sistemas a partir da combinação e integração de componentes de software pré-fabricados e pré-testados Mercado de componentes Mercado interno de componentes Internet: mercado mais apropriado Foco na funcionalidade específica do projeto e em localizar e integrar componentes disponíveis Baixo custo Objetivos da Pesquisa Já existe um mercado de componentes na Internet, e se existe, qual a sua situação? Quais as condições para o seu crescimento? Overview do Mercado de Componentes na Internet (1) Inclui todos os sites onde componentes de software pudessem ser encontrados e/ou comprados Busca: Yahoo, Alta Vista, Lycos, Infoseek, Metacrawler, Excite e Hotbot Termos: software component, component, CBD, componentware, ActiveX, Java-Beans, CORBA Pesquisa realizada entre Novembro/1998 e Março/1999 Total de 38 sites Overview do Mercado de Componentes na Internet (2) Classificação do Website Produtor (Producer) – site de uma organização que vende os seus próprios componentes Catálogo (Catalogue) – site de uma organização que compila uma lista de hiperlinks para componentes – não realiza venda Intermediário (Intermediary) – site de uma organização que vende componentes produzidos por terceiros Descrição dos componentes Número total de componentes Padrão: ActiveX, JavaBeans e CORBA Classificação por tipo Documentação Taxonomia de Tipos de Componentes Visuais Container – pode fornecer contexto (HTML browser) Control – não fornece contexto (editor) Não visuais Command package – interage com objetos visuais (spelling checker) Library – coleção de funções e classes independentes Framework – pode ser expandido por plug-ins Business component – implementa lógica de um domínio específico Classificação da Documentação Fornecida Descrição simples Detalhes técnicos Demos Relatórios de testes Código fonte Resultados Website www.active-x.com beans.cuesta.com browserwatch.internet.com www.findcomponents.com www.iversonsoftware.com www.javashareware.com java.wiwi.uni-frankfurt.de www.beyond.com www.buydirect.com www.componentsource.com www.flashline.com www.aspexsc.com www.artisoft.com www.baysidecomputing.com www.brattberg.se www.cereus7.com crescent.progress.com www.dameware.com www.data-tech.com www.dbi-tech.com www.dharbor.com www.dolphinsys.com ... Mkt Std C C C C C C C,I I I I I P P P P P P P P P P P A B A A,B A B B B A,B A,B A,B A A B A,B B A A A A B A Ctr x x x x x x x x x x x x x x x Type Ctn Pck Lib Fwk Bss x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x Documentation Sp Tec Dem o Tes Code 180 x 308 150 329 x 40 30 1.326 x x x <10 x 60 x 1.200 x x x x 101 x x x <25 x x <10 x x <10 x x <25 x x x x <10 x x x <25 x x x <10 x x <10 x x x <10 x x <10 x x <10 x x x Nr. Conclusões Poucos fornecedores Nenhum deles oferece componentes CORBA A maioria dos componentes podem ser caracterizados como controles, containeres ou pacotes A maioria deles oferecem um número limitado de componentes Produção em pequena escala Mercado pequeno Poucos intermediários fornecem a grande maioria de componentes disponíveis Componentes visuais e não visuais de baixa complexidade podem ser usados por uma grande variedade de usuários Na maioria dos casos apenas uma descrição limitada e um demo do componente é oferecido Condições para Crescimento do Mercado (1) Durante maio/1999 uma pesquisa por e-mail foi enviada a especialistas no campo de CBD para classificar as condições para crescimento do mercado Enviado a 103 especialistas Apenas 35 responderam ao questionário 25% fornecedores, 44% cientistas, 31% desenv. 39% EUA, 56% Europa, 5% Ásia e Austrália Condições para Crescimento do Mercado (2) Consumidores devem poder determinar o valor de um componente de maneira fácil – 8,8 Especificação deve seguir a um método de documentação padrão – 7,6 O foco do mercado deve ser o reuso black-box – 7,4 Deve existir uma solução de uso geral para a proteção da propriedade intelectual – 6,8 Fornecedores devem manter o foco em especialização, anúncio, marca e imagem – 6,0 Fornecedores devem fornecer informação extensiva (demos e documentação) Muitos fornecedores pequenos irão aparecer, oferecendo componentes de diferentes usos e qualidades Listas de preços de componentes – 5,9 Máquina de busca de componentes independente – 5,6 Conclusões É mais importante como os componentes são oferecidos do que quem os oferece As três primeiras condições são relativas à documentação e informações do componente a venda Participantes discordam de mercado apenas com componentes de pequeno porte (mais baratos e de fácil entendimento) e do estabelecimento de um padrão único Strategies for Software Reuse: A Principal Component Analysis of Reuse Practices Marcus A. Rothenberger Kevin J. Dooley Uday R. Kulkarni September, 2003 Objetivos O sucesso no reuso de software varia de acordo com a estratégia de reuso empregada Deve-se entender as alternativas de estratégias de reuso e suas implicações Apresenta seis dimensões que descrevem as práticas empregadas em programas de reuso Investiga o efeito de estratégias de reuso no sucesso de programas de reuso Reuso de Software Reuso sistemático de software Reuso não planejado Técnica empregada para aumentar a qualidade e eficiência no desenvolvimento de software Envolve o uso de artefatos de sistemas existentes para construção de novos sistemas com o objetivo de aumentar a qualidade e manutenibilidade e reduzir custos e tempo de desenvolvimento Desenvolvedores reconhecem oportunidades de reuso informalmente Reuso planejado Construção e manutenção de repositório de software Desenvolvimento de Software para Reuso Requer esforço adicional comparado com o desenvolvimento tradicional Componentes reusáveis precisam ser desenvolvidos de forma genérica Criação e população de um repositório de software com componentes reusáveis Permitindo o seu uso em vários contextos Investimento considerável com retorno a longo prazo Envolve riscos Escolha da estratégia de reuso é crucial Abordagem da Pesquisa Foco no reuso de software a nível de código “Dimensão de reuso” Conjunto de múltiplas práticas de reuso relacionadas que uma organização pode empregar Permite uma visão de alto nível das várias variáveis de reuso que podem participar da estratégia de reuso Cada dimensão pode ser proativamente empregada na formulação de uma estratégia de reuso 71 participantes de 67 organizações diferentes Apenas um pequeno número de grupos de desenvolvimento atualmente empregam reuso Dimensões de Estratégias de Reuso Sistemático de Software Planning and Improvement Formalized Process Management Support Project Similarity Object Tecnologies Common Architecture Planning and Improvement (1) Planejamento Análise de domínio Requisitos ligados a componentes de software reusáveis Processo construído em torno de um conjunto central de componentes reusáveis Permite à organização identificar quais os requisitos do produto e planejar quais oportunidades de reuso podem ser executadas Planning and Improvement (2) Métrica Medidas de performance do reuso Fornece feedback a desenvolvedores e gerentes que permite melhor entendimento de como aumentar a performance Permite identificar problemas rapidamente Deve levar em conta as várias tarefas que envolvem o reuso: produção, recuperação e integração de componentes Aperfeiçoamento do processo Refinamento de “boas práticas” através de projetos pilotos Documentação das lições aprendidas para melhorar o processo de reuso Deve ser testado em pequena escala inicialmente (alto custo) Formalized Process Questões Desenvolvedores seguem um processo detalhado Processo de certificação de componentes Registro de ocorrências de reuso (para projeto/ componente) Aumenta as chances de que um projeto de sucesso possa ser repetido Facilita o estabelecimento de boas práticas, a padronização de práticas através de múltiplos projetos e ajuda desenvolvedores menos experientes Um processo de certificação pode garantir que cada parte do repositório atende aos padrões desejados de performance Management Support Disponibilidade de treinamento para reuso pode ser um indicador de apoio da gerência Engloba Liderança Tomada de decisão Recursos organizacionais Consiste na alocação de recursos para reuso em um período extenso de tempo Recursos físicos (infra-estrutura) Humanos (pessoas e habilidades) Organizacionais (regras, rotinas, recompensas) Project Similarity Aborda similaridade em requisitos, projeto e implementação Projetos podem ser similares por projeto ou por acidente Projetos podem ser similares se uma organização desenvolve produtos para uma faixa limitada de clientes ou restringe os tipos de projetos em que trabalha Pode diminuir a capacidade de adaptação da empresa Permite o desenvolvimento de um conjunto central de componentes reusáveis muito úteis dentro de um domínio Object Technologies Captura a extensão da tecnologia de objetos usada em projetos de reuso Inclui Cobre todas as fases de desenvolvimento Linguagens de programação Técnicas de objetos distribuídos Linguagens de modelagem Da análise de domínio à programação Análise e projeto OO força o desenvolvedor a pensar no problema em termos de processos do negócio, o que pode fornecer oportunidades para reuso Common Architecture Arquitetura comum através de linha de produtos Pode ser vista, por ela mesma, como uma forma de reuso Pode facilitar o reuso de determinados módulos do software Permite a criação de plataforma de produtos Conjunto de produtos similares que são desenvolvidos rapidamente a partir de um ponto de em comum Força a definição de padrões de reuso Interfaces comuns, tamanho dos componentes, maneiras de especificar entrada/saída, documentação Medidas de Sucesso do Reuso Benefícios do reuso Impacto estratégico Redução do esforço de desenvolvimento e custo Time-to-market menor Redução do esforço de manutenção Mede em quanto os benefícios esperados pela adoção do reuso foram materializados Realização de novas oportunidades de negócio Benefícios obtidos a partir do reuso por alcançar novos mercados Qualidade de software Reuso reduz o número de erros no produto final Componentes previamente usados já foram testados Conclusões Métodos de orientação a objetos nem sempre levam ao reuso eficiente Organizações podem obter sucesso no reuso mesmo sem empregar métodos orientados a objetos Não contradiz a noção de que o reuso se beneficia da orientação a objetos, apenas que ela precisa mais do que isso para obter sucesso Qualidade de software poder ser alcançada sem ênfase no processo de reuso Uma organização somente irá conseguir benefício completo do reuso se empregar um programa formal de reuso e realizar controle de qualidade através de planejamento formal e melhoria contínua