FACULDADE LOURENÇO FILHO
SISTEMAS DE INFORMAÇÃO
NATHAN AZEVEDO GUIMARÃES
UMA ABORDAGEM DE REUSO UTILIZANDO REPOSITÓRIOS
PARA ARTEFATOS DE SOFTWARE COM REDES SOCIAIS
FORTALEZA/CE
2010
FACULDADE LOURENÇO FILHO
SISTEMAS DE INFORMAÇÃO
NATHAN AZEVEDO GUIMARÃES
UMA ABORDAGEM DE REUSO UTILIZANDO REPOSITÓRIOS
PARA ARTEFATOS DE SOFTWARE COM REDES SOCIAIS
Monografia
apresentada
à
Faculdade Lourenço Filho,
como requisito parcial para a
obtenção do grau de Bacharel
em Sistemas de informação.
Orientador: Msc. Nauber Gois
FORTALEZA/CE
2010
NATHAN AZEVEDO GUIMARÃES
UMA ABORDAGEM DE REUSO UTILIZANDO REPOSITÓRIOS
PARA ARTEFATOS DE SOFTWARE COM REDES SOCIAIS
Monografia apresentada à Faculdade Lourenço Filho como requisito parcial
para obtenção do grau de Bacharel em Sistemas de Informação.
Monografia aprovada em: ______ / ______ / ______
Nota obtida: ______________
BANCA EXAMINADORA
___________________________________
Prof. Msc. Francisco Nauber Gois(FLF)
_______________________________________
Prof. Msc. André Barros Pereira (FLF)
___________________________________
Prof. Msc. João Frederico Rolosn Viana (FLF)
DEDICATÓRIA
Dedico essa monografia a minha família.
AGRADECIMENTOS
Agradeço aos meus pais por me proporcionarem e apoiarem nessa
conquista.
Agradeço o suporte de minha família em todos os momentos difíceis,
inclusive nas revisões gramaticais da minha monografia (Neusa e Sergio).
Agradeço ao meu orientador Nauber Gois pela dedicação e o ótimo
trabalho.
Agradeço o apoio de meus amigos e colegas durante mais essa fase,
especialmente a Jehny e Michelle.
Agradeço aos meus professores pela paciência e dedicação durante minha
graduação.
Grato a todos pelo apoio que mostraram sem exigir nada em troca.
"O que prevemos raramente
ocorre;
o
que
menos
esperamos
geralmente
acontece."
Benjamin Disrael.
RESUMO
O uso de repositórios para artefatos reutilizáveis de software tem se mostrado uma
ótima abordagem para se promover o reuso sistemático, consequentemente,
diminuindo os custos do processo de desenvolvimento de software nas suas
diferentes fases. Entretanto a abordagem de reuso utilizando repositórios não é
eficiente na promoção dos artefatos contidos, bem como na evolução dos artefatos e
profissional dos próprios desenvolvedores. Esse trabalho apresenta um estudo de
uma abordagem de reuso com repositórios para artefatos de software reutilizáveis
combinada aos conceitos de redes socais para promoção evolução dos mesmos,
bem como a evolução dos desenvolvedores. O estudo foi realizado a partir de
pesquisas bibliográficas e de mercado, resultando num projeto de um ambiente onde
o reuso dos artefatos é promovido através da interação entre os desenvolvedores, o
que também promove as transformações básicas de conhecimentos tácitos em
explícitos e vice-versa.
Palavras-chave: Repositórios, Redes sociais, Reuso.
LISTA DE FIGURAS
FIGURA 1 – DIAGRAMA DE OBJETOS PARA IMPLEMENTAÇÃO DE UM REPOSITÓRIO PARA ARTEFATOS PROPOSTO
POR EZRAN.....................................................................................................................................
23
FIGURA 2 - TELA INICIAL DO SISTEMA PROPOSTO. ...................................................................................... 39
FIGURA 3 – DIAGRAMA DE CASOS DE USO DO AMBIENTE PROPOSTO. .......................................................... 40
FIGURA 4 - DIAGRAMA DE CLASSES DO CROSSDEV. .................................................................................. 41
FIGURA 5 - TELA DE VISUALIZAÇÃO DE ARTEFATOS. ................................................................................... 44
TABELA 1 - BENEFÍCIOS DO REUSO. .......................................................................................................... 14
LISTA DE SIGLAS E ABREVIATURAS
UML
– Unified Modeling Language.
CORBA
– Common Object Request Broker Architecture
CBSE
– Component-Based Software Engineering
COTS
– Comercial off-the-shelf
IDE
– Integrated Development Environment
SUMÁRIO
1
INTRODUÇÃO ...................................................................................................................................6
1.1
MOTIVAÇÃO ......................................................................................................................................6
1.2
OBJETIVOS .......................................................................................................................................8
1.4
ESTRUTURA DA MONOGRAFIA ............................................................................................................8
2
DISTRIBUIÇÃO DE ARTEFATOS UTILIZANDO UM REPOSITÓRIO.............................................9
2.1
REUSO ........................................................................................................................................... 11
2.1.1
REUSO OPORTUNÍSTICO ............................................................................................................... 12
2.1.2
REUSO DE OBJETOS E FUNÇÕES ................................................................................................... 13
2.1.3
REUSO DE COMPONENTES ........................................................................................................... 13
2.1.4
REUSO DE SISTEMAS DE APLICAÇÕES ........................................................................................... 14
2.2
TÉCNICAS PARA REUSO DE ARTEFATOS ........................................................................................... 15
2.2.1
PADRÕES DE PROJETO (DESIGN PATTERNS)................................................................................. 16
2.2.2
FRAMEWORKS DE APLICAÇÃO ...................................................................................................... 17
2.2.3
ENGENHARIA DE SOFTWARE BASEADA EM COMPONENTES .............................................................. 18
2.3
REPOSITÓRIOS PARA ARTEFATOS ................................................................................................... 20
2.3.1
CATÁLOGO .................................................................................................................................. 21
2.3.2
MODELAGEM DA ESTRUTURA DE UM REPOSITÓRIO PARA ARTEFATOS. ............................................. 22
2.4
3
EXEMPLOS DE REPOSITÓRIOS ......................................................................................................... 25
REDES SOCIAIS ............................................................................................................................ 27
3.1
AS REDES SOCIAIS E AS ORGANIZAÇÕES ......................................................................................... 28
3.2
OS TIPOS DE INFORMAÇÕES E SUA UTILIZAÇÃO NA REDE SOCIAL ...................................................... 29
3.3
A IMPORTÂNCIA DAS REDES SOCIAIS SOBRE AS INFORMAÇÕES ......................................................... 30
3.4
TIPOS DE REDES SOCIAIS ................................................................................................................ 31
3.4.1
FÓRUNS DE DISCUSSÕES ............................................................................................................. 31
3.4.2
BLOGS ........................................................................................................................................ 32
3.5
4
FERRAMENTAS PARA CRIAÇÃO DE REDES SOCIAIS ........................................................................... 33
REUSO UTILIZANDO REPOSITÓRIOS PARA ARTEFATOS COM REDES SOCIAIS. .............. 36
4.1
PESQUISA DE MERCADO.................................................................................................................. 37
4.2
REQUISITOS DO SISTEMA PROPOSTO ............................................................................................... 38
4.3
UMA VISÃO ARQUITETURAL DO SISTEMA PROPOSTO ......................................................................... 39
4.4
NOVOS CRITÉRIOS PARA CLASSIFICAÇÃO DOS ARTEFATOS. .............................................................. 43
4.5
AS INFORMAÇÕES NO REPOSITÓRIO ................................................................................................ 44
4.6
INTEGRAÇÃO COM OUTROS SISTEMAS.............................................................................................. 45
ANEXO A - WIREFRAME DA TELA INICIAL DO AMBIENTE CROSSDEV ...................................... 51
ANEXO B - WIREFRAME ARTEFATOS EM FOCO............................................................................ 52
ANEXO C - WIREFRAME DA TELA INICIAL DA ABA ARTEFATOS DO AMBIENTE CROSSDEV 53
ANEXO D - FORMULÁRIO DE PESQUISA CIENTÍFICA PARTE I. ................................................... 54
ANEXO E - FORMULÁRIO DE PESQUISA CIENTÍFICA PARTE II. ................................................. 55
ANEXO F - FORMULÁRIO DE PESQUISA CIENTÍFICA PARTE III. ................................................. 56
6
1 INTRODUÇÃO
A crescente demanda de sistemas informatizados tem desencadeado uma
busca por técnicas e boas práticas que agilizem o desenvolvimento e melhorem a
“manutenibilidade” do software a ser construído ou modificado (SOMMERVILE,
2007, p. 275).
O reuso de software já era uma prática conhecida há muitos anos, mas
somente na última década essa tornou-se de fato a ser usada no desenvolvimento
de software rotineiro. Essa mudança veio da necessidade de entregas mais rápidas,
prazos mais curtos, custos menores e manutenções mais rápidas. Em meio a essas
mudanças, o software desenvolvido ou adquirido passou a ser visto como um ativo
importante que deveria ser aproveitado ao máximo, sendo assim, pode-se concluir
que uma das soluções seria aplicar técnicas de reuso (SOMMERVILE, 2007, p. 276).
Durante o desenvolvimento dos sistemas, alguns artefatos podem ser
reusados, mesmo que informalmente. Isso ocorre quando os envolvidos no projeto
conhecem os artefatos de outros projetos e os reutilizam, às vezes até mesmo
modificando e incorporando-os em seus sistemas (SOMMERVILE, 2007, p. 275).
Conclui-se que esse tipo de reutilização não é uma abordagem eficiente, pois podem
existir artefatos que cumpram com a necessidade de um desenvolvedor da
instituição e esse não conheça o mesmo, fazendo com que seja construído um
segundo artefato, trazendo um retrabalho quando este custo poderia ser evitado.
Uma das ideias mais populares para a promoção do reuso são os repositórios
para artefatos de software, em que estes artefatos reutilizáveis são disponibilizados
num ambiente de distribuição comum para um grupo de indivíduos, seja na intranet
ou internet. Nesse trabalho serão abordadas as características comuns desses
repositórios e os conceitos envolvidos no reuso de artefatos.
1.1
Motivação
A reutilização de artefatos de software através de repositórios não é uma ideia
nova, entretanto, pode-se encontrar alguns riscos ou problemas pertinentes do fator
humano ou do processo para desenvolvimento adotado (SANCHES, 2005;
PRESSMAN, 2006). Isso pode ocorrer mesmo com todas as técnicas e conceitos
7
que facilitam e indicam essa prática, tais riscos apresentados abaixo, podem ser
minimizados através da implementação de técnicas e conceitos apresentadas no
capítulo 4.
O processo de desenvolvimento que adote o reuso de artefatos pode ser
acometido pelo insucesso devido à síndrome do NIH, do inglês Not Invented Here,
que acomete os desenvolvedores de forma a acreditar, que todo software que é
desenvolvido por terceiros não é tão eficiente e nem possui qualidade tanto quanto o
desenvolvido pessoalmente (NORTON apud SANCHES, 2005). Uma das possíveis
soluções para se resolver este problema é a de tornar mais próximos os
desenvolvedores que se utilizam dos componentes, dos seus criadores, através de
uma rede social, demonstrando suas qualificações, ou a quantidade de pessoas que
aprovam ou que já utilizaram esses componentes.
Existe também a possibilidade de que ao se adquirir um artefato de software
de terceiros, os mesmos não sejam confiáveis, sejam por questões legais, de
qualidade ou de segurança, contendo algum código malicioso em meio a seu código
fonte que possam vir a prejudicar a organização ou os usuários da aplicação
(TRACZ apud SANCHES, 2005).
Durante o desenvolvimento, é normal que o artefato contenha algumas falhas
de baixa severidade, porém, se esse componente for reusado num contexto
diferente, a falha pode tornar-se de alta severidade ou no caso de serem
encontradas diversas falhas, isso pode acabar resultando desencorajamento de todo
o programa de reuso, por parte do desenvolvedor e sua equipe (MCCONNELL apud
SANCHES, 2005). Se há uma aproximação entre a equipe que está desenvolvendo
o projeto e os criadores, os erros podem ser reportados mais diretamente, isso pode
trazer ganhos tanto na qualidade, já que erros corrigidos no artefato disponibilizado
no repositório podem ser refletidos com menos impacto nos projetos que já o
utilizam, mantendo assim a confiança e vantagem do reuso, tendo como base que
esse artefato foi construído de acordo com os padrões apresentados neste trabalho
no capitulo 2.
Verifica-se que há diversos problemas de âmbito social na utilização de
repositórios para artefatos, mesmo numa organização, onde os envolvidos no
processo de disponibilização e reuso são devidamente identificados. Uma das
soluções poderia ser a de repositório para artefatos reutilizáveis incorporado a redes
8
sociais com o intuito de aproximar os desenvolvedores como um todo, maximizando
assim o reuso e qualidade dos artefatos nas organizações, com base no aumento da
confiança dos artefatos disponibilizados, bem como na promoção desses.
1.2
Objetivos
O trabalho de monografia tem como objetivo realizar um estudo sobre o uso
de repositórios de artefatos, utilizando redes sociais com o intuito de aumentar
eficientemente o reuso, qualidade e promoção dos artefatos disponibilizados, bem
como definir as características básicas da integração de ambos os conceitos.
1.3
Estrutura da monografia
O capítulo 2 explana sobre os conceitos básicos sobre a reuso e a distribuição
de artefatos utilizando um repositório de software. Nos tópicos relativos à distribuição
de artefatos é descrito um repositório com ideias baseadas em conceitos de
diferentes autores e são citados exemplos de repositórios.
No capitulo 3 são abordadas as redes sociais, seus tipos, suas formas de
utilização e sua importância num contexto organizacional. Nesse capítulo também
são apresentados alguns exemplos de ferramentas que poderiam ser usadas para
criação de redes sociais.
No capítulo é proposto uma abordagem de reuso utilizando repositórios para
artefatos de software reutilizáveis combinada aos conceitos de redes socais. Esse
capítulo agrupa detalhes que correspondem ao planejamento do ambiente citado
anteriormente, inclusive uma pesquisa de mercado realizada em algumas
organizações para definir o nível de reuso e as ferramentas utilizadas a fim de
justificar a proposta.
9
2 DISTRIBUIÇÃO DE ARTEFATOS UTILIZANDO UM REPOSITÓRIO
Este capítulo dedica-se à explanação de conceitos referentes a um repositório
para artefatos de software, bem como os conceitos básicos que embasem a ideia,
como: componentes, artefatos e como reutilizá-los.
Segundo Pádua (2005, p. 8), um artefato é um produto de software, que pode
ser códigos executáveis, códigos fontes, modelos, relatórios e outros documentos.
Então,
temos
que
um
artefato
é
qualquer
resultado
gerado
durante
o
desenvolvimento de um software. Note que esse conceito aproxima-se do conceito
de componente, abordado por Booch et al(1998).
Conforme Booch et al(1998), um componente é qualquer elemento de
software que pode ser empacotado, tais como bibliotecas, arquivos, códigos
executáveis e documentos. Essa afirmação define o que chamamos de
componentes reutilizáveis e esses serão inseridos no repositório juntamente com os
outros artefatos reutilizáveis. Portanto, temos um componente como um artefato,
com base no conceito explicado anteriormente.
Componentes ou módulos são itens mais comuns para serem reutilizados
durante o desenvolvimento, por serem artefatos que são geralmente melhores
projetados e separados por funcionalidades ou finalidades, como explica Pádua
(2005) a seguir:
Um módulo é uma unidade de programa discreta e identificável em relação
à compilação, à combinação com outras unidades e à carga. Para UML, um
módulo é uma unidade de armazenamento e manipulação de software.
Módulos são coleções de rotinas, dados e tipos correlatados,
implementados por meio de componentes cuja interface com o restante de
um sistema é bem definida. As interfaces dos componentes de um módulo
podem também ser consideradas as interfaces do módulo. Um módulo pode
conter outros módulos, formando uma hierarquia (PÁDUA, 2005).
Segundo Ezran (apud SANCHES, 2005), podemos classificar componentes
em dois tipos distintos:

Componentes Verticais;

Componentes Horizontais.
10
Componentes Verticais são aqueles componentes que estão vinculados a um
domínio de aplicação, ou seja, englobam as regras de negócio embutidas nas
aplicações da empresa e com isso representam o know-how da organização e sua
vantagem competitiva frente à concorrência (SANCHES, 2005). Exemplos de
componentes verticais:

Modelos de objetos financeiros;

Bibliotecas C++ para instrumentos médicos;

Design e código para módulo de gerenciamento de clientes;

Algoritmos para cálculo de geoprocessamento;

Um framework para aplicações de telemetria.
Como explica Sanches (2005), esses componentes são mais difíceis de serem
reutilizados por serem muitos específicos da aplicação, mas não os impede de
serem publicados no repositório com esse intuito.
Em contra partida, Componentes Horizontais são mais genéricos e fáceis de
serem identificados e reusados, além de que geralmente são independentes do
domínio da aplicação. A maior restrição desses componentes é que a arquitetura da
aplicação deve ser compatível com o modelo arquitetural adotado pelo componente
(SANCHES, 2005). Para amenizar o problema, pode-se citar algumas técnicas que
serão abordadas no tópico 2.3.2 – Reuso de componentes. A seguir, alguns
exemplos de componentes horizontais:

Componentes de GUI (Graphical User Interface): tabelas, botões,
campos de texto;

Estrutura de dados e algoritmos básicos (como ordenação por
exemplo);

Bibliotecas de acesso a banco de dados;

Bibliotecas de comunicação de redes;

Serviço de relatórios, trace e logging.
Nota-se que por executarem ou proverem serviços mais ordinários, esses
componentes seriam ótimos candidatos a serem inseridos no repositório. Uma vez
11
inserido no repositório, um componente ou artefato precisa ser classificado para que
seja possível buscá-lo e evitar possíveis ambiguidades durante essa busca.
Segundo Sanches (2005, p. 13), durante a busca e análise de um
componente no repositório, esse pode ser considerado vertical, embora o mesmo
possa ser reusado nos subdomínios da aplicação. Isso ocorre porque os domínios
podem ser definidos de forma muito especifica, embora esses pertençam a domínios
mais genéricos. Como por exemplo, um componente para gerenciamento de
desempenho de redes que pertençam a domínios mais genéricos, como
gerenciamento de redes.
Para evitar essas ambiguidades, a classificação dos componentes deve ser
feita da forma mais precisa possível a fim de aperfeiçoar ainda mais as buscas por
componentes.
2.1
Reuso
Um dos requisitos mais importantes de um artefato a ser inserido no
repositório é que esse seja reusável, para isso existe uma série de técnicas e
padrões que definem e maximizam reusabilidade de um artefato.
Segundo All (2002), Hen (1995) e MCM (1995) (apud Pressman 2006, p. 675),
os casos de estudo aplicados na indústria elucidam substanciais benefícios na
aplicação de um reuso agressivo de software, sendo esses benefícios a qualidade
do produto, a produtividade e os custos globais melhorados.
O conceito de reuso explicado por Sommervile (2007) é baseado em outras
áreas da engenharia, é importante salientar que qualquer item que possa ser
reutilizado poderá ser inserido no repositório.
Isso nos leva a conclusão que
qualquer artefato de software com potencial de reuso possa ser inserido no
repositório.
O processo de projeto, na maioria das disciplinas de engenharia, baseia-se
no reuso de sistemas existentes ou componentes. Engenheiros mecânicos
ou elétricos normalmente não especificam um projeto em que cada
componente tenha de ser fabricado especialmente. Eles baseiam seus
projetos em componentes já experimentados e testados. Esses
componentes não são apenas pequenos componentes como flanges e
válvulas, mas incluem subsistemas maiores, como motores, condensadores
ou turbinas (SOMMERVILE, 2007, p. 275).
12
A reusabilidade não se restringe apenas a componentes de software, essa
visão limita dramaticamente os benefícios da reutilização, podendo até anular
quaisquer benefícios dessa pratica. A componentização (CBD – Component-Based
Development) tem sido uma das práticas que obteve os melhores resultados em
critérios de reutilização, pois o seu conceito de reutilização não se estende apenas
aos códigos executáveis, mas como também a todos os artefatos criados desde a
especificação até distribuição do componente (MAGELA, 2006, p. 46).
Antes de tudo, o reuso é também uma das metas da engenharia de software
mais difíceis de serem atingidas (PRESSMAN, 2006, p. 81). Atualmente, existe uma
estratégia para reuso especializada da engenharia de software, essa, conhecida
como a engenharia de software baseada em reuso, citada por Sommervile como um
processo de desenvolvimento de software voltado para o reuso do software
existente. Embora possa haver problemas na construção desses sistemas, existem
muitos casos de sucesso que demonstram sua viabilidade. (Baker, 2002; Balk e
Kedia 2000; Pfarr e Reis 2002 apud SOMMERVILE, 2007, p. 283).
Sobre a engenharia de software baseado em reuso, é possível citar quatro
tipos de reuso, caracterizados pelo “tamanho” de seus conteúdos (SOMMERVILE,
2007, p. 276):

Reuso oportunístico;

Reuso de objetos e funções;

Reuso de componentes;

Reuso de sistemas de aplicações.
2.1.1 Reuso oportunístico
Esta forma de reuso se dá quando o desenvolvedor conhece algum código ou
sistema que possua uma parte que poderá ser reutilizada mediante a alguns ajustes
quando necessário, então, esse desenvolvedor copia essas partes para o novo
sistema, reduzindo assim os investimentos de custo e tempo; essa técnica é
conhecida como “Cut-and-Paste” (SANCHES, 2005).
Essa técnica de reuso é uma das mais perigosas e ineficientes de reuso,
conforme Ezran (apud SANCHES, 2005), pois os fragmentos de códigos são
13
conhecidos apenas por poucos desenvolvedores, além de ser uma prática individual
e aleatória ao longo dos projetos, o que limita ainda mais seu reuso e torna difícil de
implantar em outras áreas ou departamentos da organização, esse artefato que é o
fragmento de código.
Esta abordagem não necessariamente reduz os custos ou melhora a
qualidade, podendo até mesmo influir negativamente nesses fatores quando há
falhas nos códigos copiados e esses se proliferam e diferenciam do código original
aumentando o tempo de desenvolvimento, porque os desenvolvedores são forçados
a corrigir as mesmas falhas diversas vezes em locais diferentes, quando esses
códigos são possíveis de serem encontrados, pois nem sempre é possível rastreálos nos projetos em que foram implantados (SCHMIDT, 2002; EZRAN, 2002 apud
SANCHES, 2005).
2.1.2 Reuso de objetos e funções
O reuso baseado em bibliotecas de funções era comumente utilizado na
década de 40, citado por Sommervile (2007, p. 276),o qual indica que era uma
abordagem particularmente eficiente, pois muitas bibliotecas de códigos para
diferentes aplicações e plataformas estão disponíveis e podem ser facilmente
acopladas a um projeto em desenvolvimento.
2.1.3 Reuso de componentes
Segundo
Sommervile
(2007,
p.
291),
um
componente
médio
é
significativamente maior que um procedimento ou função, e até pouco tempo, era
difícil reusá-los. Os avanços permitiram uma padronização promovida pelos
principais fornecedores de software que possibilitaram uma interoperabilidade de
componentes dentro de um framework, como o CORBA, que impulsionou o reuso
sistemático por meio da técnica conhecida como a CBSE – Component Based
Software Engineering.
Sommervile (2007, p. 292) explica que a CBSE é um processo de integração
de componentes independentes para formação de um novo sistema, conceito esse
fundamental para a promoção e idealização de um repositório de componentes. A
CBSE será explicada com mais detalhes no próximo tópico.
14
2.1.4 Reuso de sistemas de aplicações
Esse conceito de reuso, segundo Sommervile (2007), envolve o reuso de
aplicações inteiras com algumas configurações para integração, caracterizando-se
por ser uma das técnicas mais eficientes de reuso, pois envolve o reuso de grandes
ativos que podem ser rapidamente configurados para criação de um novo sistema.
Podemos citar como exemplo as aplicações comerciais (COTS - Commercial off-theshelf) que são disponibilizadas com uma configuração comum para serem
reutilizadas por diferentes ambientes e usuários (SOMMERVILE, 2007, p. 287).
Um exemplo comum de um produto COTS que foram reusados por muitos
anos são os sistemas de banco de dados, pois poucos desenvolvedores consideram
implementar (SOMMERVILE, 2007).
Além da vantagem óbvia do reuso que é a de redução dos custos de
desenvolvimento, notamos que menos componentes de software têm que passar
pelas fases de desenvolvimento padrões de um produto que são especificação,
projeção, implementação e validação. Entretanto, a redução de custos é apenas
uma das vantagens relativas ao reuso, como demonstrado a seguir:
Tabela 1 - Benefícios do reuso (SOMMERVILE, 2003, p. 261).
Benefícios
Explicação
Maior
Os componentes reutilizados que são empregados nos sistemas em
confiabilidade
operação devem ser mais confiáveis do que os componentes novos.
Eles já foram experimentados e testados em diferentes ambientes. Os
defeitos de projeto e de implementação são descobertos e eliminados
no uso inicial dos componentes, reduzindo, assim, o número de falhas
quando o componente é reutilizado.
Redução dos
Se recorrermos a um componente já existente, serão menores as
riscos de
incertezas sobre os riscos relacionados ao reuso desses componentes
processo
do que sobre os custos de desenvolvimento. Esse é um fator
importante para o gerenciamento do projeto, pois reduz as incertezas
nas estimativas de custos de projeto. É particularmente verdadeiro
quando reutilizamos componentes grandes, como subsistemas.
15
Uso efetivo de
Em vez de os especialistas em aplicações fazerem o mesmo trabalho
especialistas
em diferentes projetos, eles podem desenvolver componentes
reutilizáveis, que englobam seu conhecimento.
Conformidade
Alguns padrões, como padrões de interface com o usuário, podem ser
com os padrões
implementados como um conjunto de componentes-padrão. Por
exemplo, os componentes reutilizáveis podem ser desenvolvidos para
implementar menus em uma interface com o usuário. O uso de
interfaces-padrão com o usuário melhora a confiabilidade, uma vez que
os usuários possivelmente cometem menos enganos quando utilizam
uma interface familiar.
Desenvolvimento
De modo geral, é mais importante fornecer um sistema para o mercado
acelerado
o mais rápido possível do que se prender aos custos gerais de
desenvolvimento. O reuso de componentes acelera a produção, porque
o tempo de desenvolvimento e o de validação tende a ser reduzido.
Verifica-se que os níveis de reuso relacionam-se, pois grandes sistemas
ainda podem ser componentes de outros sistemas maiores, caracterizando assim
uma hierarquia que deve ser considerada ao se classificar o tipo de reuso utilizado.
É possível concluir que o reuso de software mostra-se uma alternativa a
ser considerada pelos desenvolvedores e organizações, não apenas pela redução
de custos, mas também pelo aumento da qualidade, manutenabilidade e redução
dos riscos inerentes ao desenvolvimento.
2.2
Técnicas para reuso de artefatos
O reuso pode ser abordado nos diferentes níveis de um processo de
desenvolvimento, inferindo no mesmo.
Verifica-se que os conceitos que serão apresentados estão intimamente
ligados ao conceito de arquitetura, que na Engenharia de Software possui algumas
definições diferentes dependendo em qual contexto essa palavra é empregada
(MAGELA, 2006, p. 36). Em virtude da definição de arquitetura ser um conceito
chave amplamente utilizado no processo de desenvolvimento de componentes, os
16
parágrafos seguintes definirão seu conceito em cada contexto que esse pode ser
empregado.
No contexto de estilo, arquitetura define quais padrões arquiteturais um
componente deverá atender, delimitando assim o escopo a ser construído. Essa
definição mostra que um componente ou artefato possui um conjunto limitado de
formas que permitam seu uso ou sua reutilização (MAGELA, 2006).
No contexto de software, arquitetura define a forma como um software foi
modularizado, que pode ter diversas finalidades, como induzir o baixo acoplamento
entre os subsistemas (ou módulos), reuso ou eliminação de recursividade (MAGELA,
2006).
Sob a definição de arquitetura de sistemas, temos que essa engloba todas as
dependências
do
software
em
questão,
como
redes,
banco
de
dados,
processadores, infra-estrutura e quaisquer outras dependências.
A visão arquitetural representa uma visão partilhada de todas as definições
apresentadas acima, relevando as partes ditas como menos importantes para
escopo de acordo com os riscos (MAGELA, 2006).
Existem várias técnicas ou tecnologias que através de um contexto de
arquitetura tentam aumentar a eficiência do reuso dos artefatos de software. Note
que nada impede que elas possam ser empregadas em conjunto, aumentando ainda
mais a eficiência em termos de reuso (SANCHES, 2005; SOMMERVILE, 2007). As
técnicas são as seguintes:

Padrões de Projeto;

Frameworks de Aplicação;

Processo de desenvolvimento baseado em componentes;
2.2.1 Padrões de Projeto (Design Patterns)
Ao
tentar
reutilizar
artefatos
executáveis,
o
desenvolvedor
estará
inevitavelmente limitado à arquitetura escolhida para esse artefato. Essa definição
de arquitetura pode variar desde a implementação de algoritmos específicos aos
objetos e tipos descritos nas interfaces desses artefatos (SOMMERVILE, 2007).
17
Verifica-se que projetar uma arquitetura adaptável a diversas situações pode
ser bastante problemático dependendo da complexidade do artefato para o qual
essa arquitetura é definida. Sobre essa perspectiva verificou-se que há certos
padrões no projeto de arquitetura para resolução desses problemas, padrões esses
que podem ser reusados em diferentes aplicações.
Um padrão de projeto não é uma especificação detalhada do problema, e sim
uma abstração que define uma solução baseada em conhecimentos empíricos
comprovados para os problemas descritos por eles. O uso de um padrão de projeto
se dá quando o desenvolvedor verifica que a descrição de um problema se
enquadra na descrição de um padrão de projeto comum a ele, sendo assim, o
desenvolvedor aplica esse padrão (PRESSMAN, 2006; SANCHES, 2005).
De acordo com Gamma (apud SANCHES, 2005), padrões de projeto são uma
tentativa de superar o reuso de artefatos na busca de reusar também o projeto de
arquitetura de uma aplicação. Uma clara vantagem na utilização de padrões de
projeto é a facilidade de comunicação entre os desenvolvedores, promovida pela
definição de um nome comum para uma determinada solução arquitetural (EZRAN
apud SANCHES, 2005).
2.2.2 Frameworks de Aplicação
Um framework é um agrupamento de classes concretas e abstratas, e
interfaces que tem um objetivo em comum, como um subsistema. Comportamentos
específicos são adicionados através da implementação das classes abstratas ou
configurações específicas nos insumos desse subsistema. Note que um framework
raramente é uma aplicação propriamente dita, geralmente ela é formada pela
integração de vários frameworks (SOMMERVILE, 2007, p. 282).
Conforme Sommervile (2007), um framework é uma arquitetura genérica que
pode ser utilizada para criar um subsistema ou aplicação mais específica, sendo
apontado como um problema dessa técnica o tempo necessário para se aprender a
utilizá-lo, que encoraja a criação de profissionais especialistas em determinados
frameworks. A arquitetura de um framework em particular geralmente se utiliza de
padrões de projeto para a sua organização, o que lhe garante um rápido
entendimento de como o framework poderá ser agrupado para criação de um novo
sistema.
18
2.2.3 Engenharia de software baseada em componentes
O processo de desenvolvimento de componentes reutilizáveis conta com uma
especialização da engenharia de software, chamada de engenharia de software
baseada em componentes, que prove algumas técnicas e conceitos fundamentais
no momento da projeção de um software (SOMMERVILE, 2007).
Existem alguns pontos essenciais da engenharia de software baseados em
componentes citados por Sommervile (2007, p. 292) que se deve ter em mente no
momento da projeção dos mesmos:

Componentes independentes: são componentes com a inclusão de
interfaces, que são descrições da arquitetura de comunicação de
um
componente,
implementação
em
dos
que
essas
componentes
servirão
de
para
suas
separar
a
interfaces
de
integração
de
comunicação com os sistemas que os usarão.

Padrões
de
componentes
que
facilitam
a
componentes: São padrões de interface que definem a forma como
os componentes comunicam-se, sendo assim implementados por
todos os componentes e esses estiverem de acordo com os
padrões, os mesmos deverão ser independentes de linguagem de
programação.

Um middleware que forneça apoio de software para integração de
componentes: É Utilizado quando se necessita de um software que
controle a comunicação entre componentes independentes e
distribuídos, como o CORBA, que manipula os recursos de baixo
nível eficientemente e permite enfocar problemas relacionados à
aplicação. Além disso, um middleware que implemente o modelo de
componentes pode fornecer apoio à alocação de recursos, ao
gerenciamento de transações, à proteção e à concorrência.

Processo de desenvolvimento voltado à engenharia de software
baseado em componentes.
Pressman (Engenharia de software, 2006, p. 665) explica que a engenharia
de software baseada em componentes nasceu da necessidade de construção de
19
sistemas complexos e de alta qualidade, em prazos menores. Isto também é uma
das premissas do reuso de software, sendo também uma das abordagens do reuso.
A
construção
de
componentes
reutilizáveis
procura
disponibilizar
componentes que possam ser agrupados facilmente, a fim de formar novos
sistemas. Entretanto, não se pode construir um sistema apenas selecionando
componentes de software reutilizáveis e conectá-los de forma automática a fim de
formar um sistema completo. A atividade de inter-relacionamento de componentes é
uma das mais difíceis de serem resolvidas pela engenharia de software atualmente
(SZYPERSKI apud SANCHES, 2005).
O processo CBSE (Component-Based Software Engineering) não deve
apenas ter como atividades a identificação de candidatos a componentes, mas
também a adaptação de interfaces entre os componentes a fim de criar sistemas
atendendo aos requisitos dos mesmos, atualizando-as caso necessário e
classificando-os segundo os critérios de qualidade adotados (PRESSMAN, 2006, p.
663).
O ponto crítico para um desenvolvedor que utiliza a engenharia de software
baseada em componentes é a analise de domínio, em que o desenvolvedor precisa
projetar os componentes de modo a atender a uma grande variedade de aplicações
num domínio especifico (SANCHES, 2005, p. 38).
Uma vantagem clara para a utilização dessa engenharia é eficiência na qual
se desenvolve novas aplicações em termos de prazo, pois a utilização de
componentes prontos que necessitam de poucas adaptações reduz dramaticamente
o tempo de desenvolvimento de um sistema, reduzindo por consequência o custo do
mesmo (SANCHES, 2005, p. 38).
É possível notar que o emprego da engenharia de software baseada em
componentes aumenta dramaticamente a possibilidade de reutilização e construção
de artefatos com essa característica, consequentemente propiciando uma ótima
abordagem a ser utilizada em conjunto a um ambiente para distribuição de artefatos
utilizando um repositório.
20
2.3
Repositórios para Artefatos
Um repositório para artefatos de software é um local para armazenamento de
artefatos que podem ser reutilizados, a fim de prover a disponibilização para os
interessados. Nota-se que este repositório conterá informações intelectuais
importantes da empresa, fazendo com que deva ser criada uma forma de acesso e
identificação para os usuários (SANCHES, 2005).
A distribuição de artefatos de software reutilizáveis utilizando um repositório
não é um tema novo na engenharia de software, porém ainda não existe solução
eficiente para propagação do reuso desses artefatos, bem como descrição ou
classificação dos artefatos que residem no repositório, mostrando-se ainda um
problema sem resposta definitiva (PRESSMAN, 2006, p. 273). Ainda assim, como
Pressman (2006, p. 665) sugere, num contexto ideal, onde os artefatos que já
existem, deveriam ser pesquisados e retornados de um repositório centralizado e
disponibilizados para os desenvolvedores.
Pressman (2006, p. 674) propõe que um ambiente semelhante a um conceito
de biblioteca, contendo, em vez de livros, artefatos para reuso software, devendo
preencher os seguintes critérios básicos:

Um
banco
de
dados
para
armazenar
capaz
de
guardar
componentes de software e a informação de classificação
necessária para recuperá-los;

Um sistema de gestão de bibliotecas que forneça acesso ao banco
de dados;

Um sistema de recuperação de componentes de software (por
exemplo, um negociador de solicitação entre objetos) que permita a
uma aplicação capaz de recuperar componentes e serviços do
servidor da biblioteca;

Ferramentas CBSE que dão suporte à integração de componentes
reusados a um novo projeto ou implementação.
Esta biblioteca, denominada de biblioteca de reuso, pode ser um componente
de um repositório maior para artefatos de software reusáveis, fornecendo facilidades
para a guarda de componentes de software e uma serie de artefatos reusáveis,
21
como por exemplo, especificações, projetos, padrões, frameworks, fragmentos de
código, casos de teste, guias de usuário (PRESSMAN, 2006, p. 674).
Segundo Ezran (apud SANCHES, 2005), existe uma lista de vantagens
relacionadas ao uso de um repositório para artefatos reutilizáveis de software, como
por exemplo:

Lugar único para a pesquisa e armazenamento dos artefatos;

Forma padronizada para documentar e enumerar os artefatos;

Forma padronizada para controlar mudanças e melhorias nos
artefatos.
2.3.1 Catálogo
A idéia de repositório pressupõe um catálogo, em que estes artefatos serão
devidamente identificados para um posterior reuso. No caso, onde haja poucos
artefatos reutilizáveis ou pouco desenvolvedores, pode-se questionar se há
necessidade de criação de um repositório (SANCHES, 2005).
No decorrer do crescimento do número de artefatos reusáveis, haverá a
necessidade de definir e reestruturar o catálogo dos mesmos, pois o desenvolvedor
poderá deparar-se com situações as quais não sabe que artefatos ele poderá
reutilizar, ou não saber onde encontrar um artefato, ou onde armazená-lo
(SANCHES, 2005). Verifica-se, então, que há uma necessidade de manutenção
desse repositório com relação aos artefatos que já existem nele.
Há dois modos de manutenção do repositório, a forma gerenciada, que
alguém ficará responsável pelo controle do repositório; e a forma não gerenciada, a
qual ninguém ficará responsável por esse controle. Esta segunda forma acarreta na
variação da taxa de reuso dos componentes, pois o próprio desenvolvedor ficará
responsável por saber encontrar cada artefato, que provavelmente estará misturado
em meio a outros, além do risco de utilizar uma versão obsoleta daquele
(SANCHES, 2005).
22
2.3.2 Modelagem da estrutura de um repositório para artefatos.
Embora os artefatos de software compartilhem de características comuns,
estes podem variar quanto à linguagem, ao formato de arquivo, à granularidade e à
documentação (EZRAN apud SANCHES, 2005, p. 63). Contudo, como visto
anteriormente, faz-se necessário um catalogo de artefatos para o repositório, com
intuito de facilitar as buscas e identificação dos artefatos, com isso, pode-se concluir
que o repositório será composto por um catálogo e de vários artefatos reutilizáveis.
Tem-se que os artefatos podem ser diferentes entre si, porém, em termos de
modelagem, todos possuem informações para sua classificação, as quais serão
referenciadas no catálogo. Esta parte comum são as informações, que em conjunto,
formam sua ficha cadastral, a qual será referenciada pelo catálogo. A outra parte é o
“corpo” do artefato em si, que pode conter outro conjunto de artefatos (EZRAN apud
SANCHES, 2005, p. 63).
A ficha cadastral de um artefato também pode ser chamada de metadado,
devendo essa conter uma série de campos a fim de facilitar sua busca no catálogo
(NORTON apud SANCHES, 2005). Norton propõe uma ficha cadastral para artefatos
com as seguintes informações:

Nome único de identificação do artefato;

Autor;

Data de criação;

Data da última atualização;

Versão atual;

Lista de palavras chave associadas ao artefato;

Breve descrição do componente (área de uso ou tecnologia
envolvida).
Detalhes relativos à usabilidade, instalação e descrição dos artefatos
poderiam ser descritos em documentos a parte, ou no próprio corpo do artefato.
Outra informação importante sobre o artefato seria a sua localização, seja num
servidor interno a organização ou externo em posse de terceiros (NORTON apud
SANCHES, 2005).
23
Ezran (apud SANCHES, 2005) propõe o seguinte modelo básico, descrito na
linguagem UML como um diagrama de objetos de um repositório para artefatos:
Figura 1 – Diagrama de objetos para implementação de um repositório para artefatos
proposto por Ezran (apud SANCHES, 2005).
O modelo acima representa a diagramação do repositório e pode ser descrito
da seguinte forma:

Um repositório possui apenas um catalogo;

Um catálogo possui zero ou mais fichas cadastrais;

Uma ficha cadastral descreve um componente, que por sua vez é
armazenado num único repositório;

Um componente possui um único corpo ou conteúdo.
A partir do modelo descrito por Ezran, verifica-se que esse repositório não
garante o versionamento dos artefatos inseridos, bem como também restringe o
artefato a uma localização física. Alem da visão arquitetural do contexto do
repositório Ezran propôs as possíveis atividades realizadas pelos usuários:

Busca pelo artefato;

Inclusão de um novo artefato;

Alteração de um artefato;
24

Exclusão de um artefato;

Visualização do catálogo;

Organização do catálogo;

Histórico dos artefatos;

Estatísticas sobre o repositório;

Controle de acesso.
O repositório deverá prover as informações básicas de manutenção, como
busca, inclusão, alteração e exclusão dos artefatos contidos nele bem como as
informações da ficha cadastral dos artefatos. A operação de busca poderia ser
incrementada com mecanismos avançados de busca por informações da ficha
cadastral do artefato (EZRAN, MORISIO e COLIN, 2002).
A visualização do catalogo de artefatos do repositório provê um meio rápido
de visualização de todos os artefatos contidos no repositório, que no caso de existir
apenas algumas dezenas de artefatos no repositório torna uma excelente
abordagem de busca (EZRAN, MORISIO e COLIN, 2002).
No caso do repositório conter vários artefatos, a busca sobre suas
informações podem se tornar ineficientes em vista da quantidade de resultados
retornados, sendo assim, verifica-se que pode ser necessário uma forma de
classificação dos artefatos por sua estrutura (exemplo: framework, tutorial, código,
template etc), áreas de aplicação (JAVA, Biologia, Matemática, Segurança, C++,
etc.) ou palavras que fazem analogia à descrição do artefato (EZRAN, MORISIO e
COLIN, 2002).
Durante o uso do repositório, haverá casos em que um artefato deverá ser
substituído por outro, seja por melhorias ou correções, as informações sobre essas
mudanças, como autor da mudança, uma lista de modificações feitas no artefato e
data da mudança, deverão ser armazenadas para uma futura auditoria ou contato
com os responsáveis de alguma forma, levando em consideração a sugestão de
Ezran, na sua ficha cadastral (EZRAN, MORISIO e COLIN, 2002).
25
2.4
Exemplos de repositórios
Existem diversos repositórios para artefatos de software reutilizáveis, eles
podem ser de acesso publico ou privado. Na internet encontram-se disponíveis
inúmeros repositórios públicos para artefatos, dentre eles é possível citar alguns
como:

jars (1998): Repositório especializado na linguagem Java que
apresenta componentes e programas executáveis para solução de
problemas ou que auxiliem no desenvolvimento de software. Possui
uma forma de classificação por categoria, em que os artefatos
podem ser categorizados em suas áreas de aplicação como
matemática, biologia, jogos ou gráficos 3D;

SourceForge (1999): Um dos mais conhecidos repositórios públicos
para artefatos de software de código aberto. Nesse site é possível
encontrar artefatos que podem ser agregados sem custos a uma
aplicação, ou se utilizar o próprio domínio como um repositório para
o projeto e os desenvolvedores que queiram colaborar como
codificadores;

planetsourcecode (1997): É outro repositório para artefatos e
tutoriais para diversas linguagens de programação. A maioria de
seus artefatos consiste de fragmentos de códigos, o que nos leva a
conclusão de um repositório voltado para o reuso oportunístico.
Os exemplos citados acima possuem o problema da síndrome do N.I.H. (Not
invented here), ou seja, um problema de confiança nos artefatos por parte da
organização ou dos próprios desenvolvedores. No entanto, os repositórios
desenvolvidos e utilizados internamente nas organizações estão livres da maioria
desses problemas, pois os desenvolvedores podem ser devidamente identificados.
Pode-se citar como exemplo de um repositório projetado para ser usado
internamente a organização: o CORE, utilizado e desenvolvido pela empresa
brasileira C.E.S.A.R (2008). Suas características são descritas a seguir:

Projetado para apoiar o reuso sistemático de software;
26

Reuso de artefatos no geral (templates, códigos e frameworks);

Utilizado através do browser, o que permite o uso através da
intranet da organização e um plugin integrado a IDE (Integrated
Development Environment, ou ambiente de desenvolvimento
integrado) eclipse;

Possui uma definição de responsabilidades através de papéis;

Possui as funcionalidades básicas de um repositório, como
pesquisa e manutenção dos itens inseridos.
Sobre
suas
características
é
possível
destacar
a
da
divisão
de
responsabilidades em papéis descritos a seguir (C.E.S.A.R, 2008):

Produtor: Responsável por criar e armazenar os artefatos de
software reutilizáveis;

Consumidor: Irá utilizar os artefatos de softwares publicados no
repositório;

Certificador: Esse papel é responsável pela validação da qualidade
dos artefatos publicados no repositório. No caso dos artefatos
serem documentos, esses podem ser avaliados perante o ser
formato ou padrão. E no caso dos artefatos serem executáveis, o
certificador poderá testá-los perante alguns requisitos básicos ou
premissas assumidas para aquele artefato.
Uma de suas funcionalidades é permitir que os usuários avaliem o artefato
através de uma métrica pré-definida, e essas avaliações são utilizadas como forma
de classificação desses artefatos.
Existem diversas soluções que promovem o reuso de artefatos nas
organizações, entretanto, nos capítulos seguintes, serão abordados os repositórios
para artefatos reutilizáveis demonstrando que os mesmos podem ser ineficientes na
promoção desses artefatos e na evolução profissional dos desenvolvedores.
27
3 REDES SOCIAIS
As redes sócias podem ser importantes para a distribuição da informação dos
artefatos, não somente para divulgação dos mesmos, mas como também para um
meio que favoreça a evolução e criação de novas ideias através da interação dos
desenvolvedores.
Existem diversos significados para o conceito de redes, dentre eles, as que se
aplicam a este trabalho são as seguintes: estrutura de nodos e elos; uma
comunidade não geográfica; um sistema de apoio ou sistema físico que se pareça
com uma árvore ou uma rede. A rede social, derivando deste conceito, passa a
representar um conjunto de participantes autônomos, unindo ideias e recursos em
torno de valores e interesses compartilhados (MARTELETO, 2001).
O termo rede social surgiu em conjunto com anúncio do termo Web 2.0,
descrito pela empresa O’Reilly em 2004. O termo Web 2.0 marcou uma quebra de
paradigma, onde antes, os serviços que eram oferecidos na internet tinham como
características a falta de interatividade entre os usuários e o serviço oferecido,
fazendo uma analogia ao conceito de produtor e consumidor, em que os internautas
até então, eram apenas telespectadores do conteúdo encontrado na internet
(COUTINHO, 2007).
Os padrões dos novos produtos e serviços caracterizaram uma quebra do
paradigma predominante até então, seguindo para uma nova forma de
comunicação, cujos usuários poderiam agora colaborar ou interagir com os produtos
e serviços oferecidos, além da possibilidade de poderem se expressar e interagir
(COUTINHO, 2007; PEREIRA, 2010).
Em parte, o sucesso da Web 2.0 deu-se pelo fato de que, na maioria casos,
não é mais necessário conhecimentos em programação ou a utilização de
ferramentas complexas, ou seja, seus serviços e produtos tornaram-se mais
acessíveis (COUTINHO, 2007).
A seguir, a frase de Tim O’Reilly, o primeiro a identificar e definir o termo Web
2.0 (COUTINHO, 2007, p. 2; PEREIRA, 2010):
28
A Web 2.0 é a mudança para uma Internet como plataforma, e um
entendimento das regras para obter sucesso nesta nova plataforma. Entre
outras, a regra mais importante é desenvolver aplicativos que aproveitem os
efeitos de rede para se tornarem melhores quanto mais são usados pelas
pessoas, aproveitando a inteligência coletiva.
Conclui-se então que as ferramentas criadas no contexto da Web 2.0
procuram promover a interação entre os usuários com os produtos e serviços
disponibilizados na plataforma Web, sendo esse um dos objetivos básicos do
trabalho proposto nessa monografia.
3.1
As redes sociais e as organizações
A formação de redes nas organizações ocorre de forma variada e às vezes
comum, desde a conversa na hora do café até listas de discussões. Essas
interações, quando voltadas para o âmbito organizacional, geralmente apresentam
dois objetivos básicos: confirmar a existência e conteúdo do conhecimento ou criar
novos
conhecimentos.
Esse
intercambio
de
ideias,
opiniões
e
crenças
proporcionados por essas discussões alavanca o primeiro e o mais importante passo
para a criação do conhecimento: o compartilhamento do conhecimento tácito dentro
da comunidade da rede, ou no caso, a organização (INÊS, ROSECLER e
GUERREIRO, 2005). Capra (apud INÊS, ROSECLER, & GUERREIRO, 2005)
elucida a afirmação anterior através da frase abaixo:
[...] na era da informação – na qual vivemos – as funções e processos
sociais organizam-se cada vez mais em torno de redes. Quer se trate das
grandes empresas, do mercado financeiro, dos meios de comunicação ou
das novas ONGs globais, constatamos que a organização em rede tornouse um fenômeno social importante e uma fonte crítica de poder.
A característica de dinamismo das redes sociais fez com que esta seja
aplicada no âmbito organizacional como espaços para compartilhamento da
informação e do conhecimento. Esses espaços podem ser tanto virtuais quanto
presencias, nos quais as pessoas com objetivos em comum trocam experiências,
criando bases e gerando informações importantes para o setor nas quais atuam
(INÊS, ROSECLER e GUERREIRO, 2005).
Quanto maior a interação entre os indivíduos, no contexto da troca de
conhecimento, maior será a bagagem de conhecimentos ou estoque de informação.
Entretanto, somente nas últimas décadas as redes sociais passaram a ser vistas
29
como um instrumento organizacional, mesmo constada como um importante recurso
profissional (INÊS, ROSECLER e GUERREIRO, 2005).
A importância da informação no desempenho das empresas é destacada
por diversos autores, entre os quais Lesca e Almeida (1994, p.67) quando
afirmam que “a informação é um vetor estratégico importantíssimo, pois
pode multiplicar a sinergia dos esforços ou anular o resultado do conjunto
dos esforços”. Drucker (1992 apud INÊS, ROSECLER, & GUERREIRO,
2005) acrescenta ainda que ela é fator de produção importante para a
obtenção de vantagem competitiva, uma vez que os fatores tradicionais –
terras, mão-de-obra e recursos financeiros – por si sós já não garantem a
competitividade.
Verifica-se que o principal objetivo de uma rede é a troca de informações e
evolução das mesmas, isto a torna uma excelente ferramenta a ser agregada com o
intuito de maximizar a interação entre seus participantes, assim como a evolução
das informações trocadas. Todavia, o propósito da rede poderá ser desvirtuado se
não houver uma forma de controle ou interesse de seus participantes (INÊS,
ROSECLER e GUERREIRO, 2005).
3.2
Os tipos de informações e sua utilização na rede social
As informações estão classificadas em três grupos, conforme explica Miranda
(apud INÊS, ROSECLER, & GUERREIRO, 2005):

Conhecimentos Explícitos;

Conhecimentos Tácitos;

Conhecimentos Estratégicos.
O conhecimento explícito é aquele conhecimento ou saber que já está
disponível em alguma mídia, como livros, documentos, artigos etc. Diferente do
conhecimento explícito, o conhecimento tático é o acúmulo de experiências com
base em conhecimentos explícitos (INÊS, ROSECLER e GUERREIRO, 2005).
O conhecimento estratégico é a combinação dos conhecimentos tácitos e
explícitos, a fim de elencar informações para as tomadas de decisão, sejam para
minimizar riscos ou aumentar a eficiência dos resultados das ações executadas
(INÊS, ROSECLER e GUERREIRO, 2005).
30
Numa visão organizacional, Choo ( apud INÊS, ROSECLER, & GUERREIRO,
2005) propõe que a informação é requisitada em uma rede social para ser utilizada
para três finalidades distintas:

Para construção de significados (sense making) através da coleta
de informações do ambiente;

Construção de novos conhecimentos (knowledge creating) por meio
da conversão dos conhecimentos de tácito para explícito e da
partilha desses conhecimentos a fim de inovar;

A terceira finalidade diz respeito à busca de informações para
tomada de decisão, que os indivíduos da rede usam das
informações contidas nela para tomada de decisão.
3.3
A importância das redes sociais sobre as informações
Dixon (apud INÊS, ROSECLER, & GUERREIRO, 2005) elucida que não é
eficiente criar uma grande base de dados contendo enormes volumes de
informações, quando o desafio real é responder como esses recursos serão
utilizados.
Se o recurso citado por Dixon for pensado como um repositório simples
contendo informações sobre os artefatos e os artefatos em si, o mesmo não será
devidamente aproveitado, pois esse modelo não suporta a interação entre seus
atores (desenvolvedores participantes), de forma que esses possam compartilhar
informações
e
experiências,
visando
ao
aprendizado
organizacional,
consequentemente contribuindo para o crescimento profissional individual e a
criação de novos conhecimentos (INÊS, ROSECLER e GUERREIRO, 2005).
Lemos (apud INÊS, ROSECLER, & GUERREIRO, 2005) ressalta a
importância do uso das redes sócias no contexto atual das organizações, afirmando
que sua utilização é uma das mais adequadas para intensificar o aprendizado, a
geração de conhecimentos e inovações.
31
3.4
Tipos de redes sociais
As ferramentas sociais citadas a seguir podem vir a auxiliar na troca de
informações de forma colaborativa entre seus usuários, visando também auxiliar na
evolução de cada usuário, transformando conhecimentos tácitos em explícitos e
vice-versa. O acúmulo de experiências e conhecimentos é uma base para o
conhecimento estratégico, ou seja, informações que auxiliem na tomada de decisão.
3.4.1 Fóruns de discussões
Fóruns assumem um papel de infra-estrutura base para a colaboração entre
os usuários sobre assuntos relevantes, possibilitando que qualquer usuário em
específico possa intervir nos assuntos que são objetos de estudo e responder
quaisquer questões propostas, tornando dessa forma, mais eficiente a resolução de
problemas comuns a um grupo de usuários (MIRANDA, MORAIS, et al., 2001).
A forma como acontece à comunicação entre os usuários de um fórum de
discussão permite aos participantes refletir nas contribuições anteriores e construir
com base nelas uma resposta bem elaborada antes de publicá-la. Nesse aspecto,
Karayan e Crowe( apud MIRANDA, MORAIS, DIAS, & ALMEIDA, 2001) afirmam que
a qualidade das respostas num fórum geralmente aumenta a cada resposta
publicada, pois os usuarios têm tempo para pensar, processar e relacionar suas
ideias com as publicações anteriores sobre o assunto em questão.
O fato das publicações anteriores serem registradas para uma futura
visualização ajuda a solucionar dúvidas repetidas de usuários diferentes e a
relembrar discussões anteriores ou respostas anteriores (MIRANDA, MORAIS, et al.,
2001).
O fórum, quando utilizado como ferramenta didática, promove além do reuso
uma forma eficaz para resolução de problemas, embora não seja considera uma
ferramenta que nasceu da Web 2.0. Como exemplo de fóruns de discussões
utlizados no desenvolvimento de software com sucesso tem-se a lista a seguir:

GUJ (2002 ) - Grupo de Usuários Java;

CEJUG (2002) - Ceará Java User Group;

JavaRanch (1998).
32
Todas as comunidades já citadas são exemplos de fóruns de discussão que
fazem sucesso e se tornaram uma inestimável fonte de pesquisa para diversos
desenvolvedores que além de aprimorar seus conhecimentos através de
experiências alheias que foram transmitidas para o grupo, também contribuem
formando assim uma rede social para troca de informações sobre o desenvolvimento
de software.
3.4.2 Blogs
Segundo Gomes (apud COUTINHO, 2007), o blog, ou Weblog, é uma das
ferramentas mais conhecidas e utilizadas da Web 2.0 no contexto educativo.
Segundo Gomes (Blog e Wiki: Os Futuros Professores e as Ferramentas da web 2.0,
p. 2), o termo blog é definido da seguinte forma:
É uma página na Web que se pressupõe ser atualizada com grande
frequência através da colocação de mensagens – que se designam “posts”
– constituídas por imagens e/ou textos normalmente de pequenas
dimensões (muitas vezes incluindo links para sites de interesse e/ou
comentários e pensamentos pessoais do autor) e apresentadas de forma
cronológica, sendo as mensagens mais recentes normalmente
apresentadas em primeiro lugar.
Gomes (apud COUTINHO, 2007) explica que existem duas possíveis
utilizações de blogs com intuitivo educativo:

Como recurso pedagógico;

Como estratégia educativa.
A utilização de blogs como recurso pedagógico é caracterizado, conforme
Gomes (apud COUTINHO, 2007), em dois modos, quando utilizado para
disponibilização de informações especializadas, no caso de blogs que um professor
é o autor. Dessa forma, é possível fazer uma analogia àqueles desenvolvedores que
se tornam especialistas em determinados assuntos, frameworks, banco de dados,
técnicas para gerenciamento de projeto ou que simplesmente possuem um
conhecimento diferenciado. As informações especializadas disponibilizadas nos
blogs podem ainda ser utilizadas como fonte de pesquisa para os desenvolvedores
da organização, sendo esse o seu segundo modo de utilização como recurso
pedagógico (COUTINHO, 2007).
33
A outra forma de utilização de um blog descrita como “estratégia educativa”,
cujos usuários utilizam-se do blog como integração, intercambio, debate e
colaboração, ambiente esse que é conveniente a inovação ou criação de novos
conhecimentos (COUTINHO, 2007).
Diferente de um fórum, um blog caracteriza-se por ser mantido, geralmente,
por apenas uma pessoa, porém, há blogs que são mantidos por um conjunto de
pessoas em que os responsáveis podem publicar pesquisas, trabalhos ou
experiências pessoais sobre determinados assuntos. Temos a seguir alguns
exemplos de blogs voltados para o desenvolvimento de software:

ZonaJ (2007);

Desenvolvimento para Web (2006);

Improve it – Desenvolvimento Ágil (2001).
O blog tem como foco os seus criadores, promovendo suas iniciativas
pessoais, demonstrando ser uma ótima ferramenta para implantação com intuito de
levantar novos conhecimentos e experiências que não se sobressaem nos fóruns em
que o foco são as dúvidas ou assuntos específicos levantados pelos usuários.
3.5
Ferramentas para criação de redes sociais
Existem algumas ferramentas no mercado que proporcionam a criação de
uma rede social de forma facilitada, em sua maioria esses produtos são
caracterizados como CMS (Sistema Gerenciador de Conteúdo, ou do inglês Content
Manager System), ou similares. Essas ferramentas têm como objetivo a alta
usabilidade proporcionada através de modelos pré-configurados de arquitetura, no
sentido de visão arquitetural, como estipulação de um SGBD (Sistema gerenciador
de banco de dados) padrão, ou dependência de condições especiais para execução
como ambientes com suporte a determinadas tecnologias ou mesmo um modelo
padrão de dados, onde são definidas quais informações são persistidas.
Algumas destas ferramentas são um exemplo de reuso sistemático, pois a
partir da reutilização de modelos (o conceito de modelos envolve quaisquer artefatos
que possam ser reutilizados) e configurações numa arquitetura pré-definida, é
34
possível se criar um sistema dentro do contexto ao qual sua arquitetura permita, no
caso, blogs, fóruns ou outros tipos de redes.
Existem inúmeras ferramentas no mercado que proporcionam a usuários
inexperientes um ambiente simples e eficiente para criação redes sociais. Dentre
essas ferramentas podemos citar algumas que se destacaram em números de
usuários como:

WordPress (2003);

Blogger (1999);

JForum (2005).
Dentre as ferramentas citadas, o WordPress é talvez a mais utilizada, seu
número de usuários é cerca de dez milhões. O WordPress começou em 2003, antes
da criação da Web 2.0, o que é perfeitamente normal por que mostra que o a Web
2.0 é apenas o ponto onde se percebeu a mudança de paradigma, e não
exatamente o período em que o mesmo ocorreu (WordPress, 2003).
Atualmente o WordPress passou de uma ferramenta de “blogging” para um
CMS completo, em que podem ser agregados mini-aplicativos chamados de widgets
ou plugins, que são mini-aplicações que podem ser agregadas ao blog
dinamicamente, contando que esse seja devidamente configurado, o que na maioria
das vezes não exigem muito dos usuários (WordPress, 2003).
O Blogger é uma ferramenta da Google, comprada posteriormente ao seu
lançamento em 1999, ferramenta que originou o termo blog, fazendo sucesso desde
então, porém devido à cobrança pelo serviço, não se tornou tão utilizada até que
depois da compra pela Google em 2003, seus serviços foram liberados sem custos
aos usuários. O Blogger fez uma importante inovação com a possibilidade dos
usuários lançarem os “posts” sem a necessidade de qualquer ferramenta adicional,
sendo todo o processo através do site principal, ou seja, de forma online pelo próprio
browser (Blogger, 1999).
Dentre as ferramentas para fóruns, pode-se citar uma que é conhecida e
utilizada mundialmente, e há muito tempo, o JForum, um software voltado para
criação de fóruns de discussões em geral, com conteúdo altamente adaptável e
suporte a diversas línguas com base na plataforma Java. Além de ser a base para
35
alguns dos exemplos de fóruns citados anteriormente, o JForum representa um outro
software que se utiliza de plugins e pode ser classificado em termos de reuso como
reuso sistemático (STEIL, 2005).
No próximo capítulo será apresentada a proposta de um ambiente onde os
conceitos de redes sociais e repositórios para artefatos são mesclados a fim de
formar um ambiente em que as transformações da informação possam ocorrer mais
facilmente através da interação entre os desenvolvedores e os artefatos reutilizáveis
de software para que sejam mais eficientemente promovidos.
36
4 REUSO UTILIZANDO REPOSITÓRIOS PARA ARTEFATOS COM
REDES SOCIAIS.
Este capítulo dedica-se ao planejamento de um repositório para artefatos
utilizando redes sociais com base nos conceitos que foram explicados nos capítulos
2 e 3. Será demonstrado o planejamento desse ambiente a partir de um grupo de
requisitos básicos, que serão desenvolvidos utilizando ferramentas de diagramação
e prototipação para expressar as características desse sistema.
Pressman (Engenharia de software, 2006, p. 706), na sua visão de futuro faz a
seguinte afirmação:
Quando duas importantes tecnologias são combinadas, o impacto do
resultado da combinação é frequentemente maior que a soma do impacto
de cada uma separadamente...Tecnologias frequentemente evoluem ao
longo de caminhos separados, mas um impacto significativo em negócio ou
na sociedade ocorre somente quando alguém as combina para resolver um
problema...Neste contexto, redes implicam em conexões entre pessoas ou
pessoas entre informação. À medida que a rede cresce, a probabilidade de
sinergia entre dois nós da rede (por exemplo, pessoas e fontes de
informação) também cresce. Uma conexão acidental (descoberta por acaso)
pode levar à inspiração e a uma nova tecnologia ou aplicação.
É proposto então um ambiente onde seja integrado o reuso, qualidade,
evolução dos artefatos de software reutilizáveis e a não menos importante interação
entre os próprios desenvolvedores,
a fim de aumentar a eficiência do
desenvolvimento de software em questões de qualidade, reusabilidade, evolução
dos
artefatos
e
de
crescimento
profissional
dos
desenvolvedores,
consequentemente diminuindo os custos e riscos.
Na criação de uma rede social é importante ter em mente que seu propósito
poderá ser desvirtuado se não houver uma forma de controle ou interesse de seus
participantes, podendo até necessitar de auxílio de uma metodologia ou de um forte
hábito que elucide sua utilização (MARTELETO, 2001). A fim de aumentar o
envolvimento dos desenvolvedores na rede, faz-se necessário um agrupamento das
informações relativas ao processo de desenvolvimento num ponto central que
proporcione alguma forma de comunicação, como fóruns para discussões ou blogs.
37
4.1
Pesquisa de mercado
Para melhor avaliar a importância desse trabalho, foi realizada uma pesquisa
que teve como público alvo pessoas relacionadas com as organizações que
trabalham com o desenvolvimento de software. No total foram avaliadas 13 pessoas,
das quais todas trabalhavam no desenvolvimento de software, sendo 2 em cargos
de nível gerencial, como gestores de projeto.
Em termos de meio para troca de informações, pode-se observar perante a
pesquisa realizada através do questionário no Anexo D -, que 100% das pessoas
informaram que suas organizações procuram promover a troca de informações de
seus desenvolvedores através de blogs ou fóruns internos, o que mostra a
importância que o mercado está dando às ferramentas, promovendo a interação
entre os desenvolvedores e os artefatos.
Em discordância quanto aos dados citados anteriormente, verifica-se que
58,3% dos entrevistados afirmaram que suas organizações não procuram alcançar o
reuso sistemático, desse grupo 85,7% afirmaram que sua organização possui
apenas a ferramenta de controle de versão, enquanto os 15% restante adicionou a
resposta que sua organização possui uma ferramenta para gerenciar testes
automatizados.
Como verificado anteriormente, existem ótimas ferramentas que podem ser
utilizadas para criação de redes sociais que não possuem custos e não exigem
conhecimentos avançados em informática de quem às utiliza, enquanto que a
construção de um artefato de software reutilizável consome bem mais recursos
organizacionais, como pessoas, tempo e conhecimentos específicos, podendo ser
esse o motivo pelo qual as empresas estão investindo mais em blogs do que
ferramentas para alavancar o reuso e a qualidade dos softwares. Apoiando essa
teoria, 58,3% das pessoas afirmaram que o motivo pelo qual sua organização não
promove o reuso sistemático de software é a falta de ferramentas e de um processo
de desenvolvimento que auxilie nessa tarefa.
Ainda de acordo com a pesquisa, 58,3% das pessoas afirmaram que a
organização onde trabalham não promove a evolução dos artefatos criados, e 91,6%
das pessoas entrevistadas afirmaram que sua organização não possui um
repositório para artefatos de software reutilizáveis.
38
Esses números indicam a carência das organizações quanto a um ambiente
que promova os objetivos desse trabalho.
4.2
Requisitos do sistema proposto
A fim de melhor direcionar e controlar as expectativas desse trabalho, faz-se
necessário definir os requisitos do sistema proposto no início desse capítulo, tendo
como base as informações apresentadas nos capítulos 2 e 3. Os requisitos do
sistema a seguir foram definidos a partir da técnica conhecida como brainstorming,
em que as possíveis funcionalidades do sistema são criadas a partir do seu próprio
contexto. (VARGAS, 2009).

Promover a interação entre os desenvolvedores, garantindo as
transformações dos conhecimentos em seus três níveis;

Promover para os desenvolvedores os artefatos de softwares que a
organização possui;

Promover a evolução dos artefatos e desenvolvedores através da
maior interação entre eles;

Promover o reuso sistemático e uma melhor qualidade dos
softwares da organização;

Melhorar a forma de classificação dos artefatos através da utilização
de informações dos desenvolvedores e projetos que se relacionam
com ele.
A partir dos requisitos acima, foram elaborados alguns protótipos, que estão
anexados ao final da monografia, das possíveis interfaces do sistema utilizando a
ferramenta de prototipação conhecida como Pencil. Pode-se verificar, através da tela
apresentada na figura, que foram mantidos os conceitos de repositórios e redes
sociais através da colaboração com fóruns e blogs.
39
Figura 2 - Tela inicial do sistema proposto.
A forma de funcionamento pensada foi a que cada aba representa um foco
diferente da rede social, como exemplo, no caso da aba projetos, seria mostrado
apenas às informações relacionadas com os projetos da organização. Em vista
disso, faz-se necessário a definição de um modelo de entidades para aplicação que
elucide as inter-relações e os fluxos do sistema, como demonstrado no tópico
seguinte.
4.3
Uma visão arquitetural do sistema proposto
Pode-se perceber que o diagrama de classes proposto por Ezran (apud
SANCHES, 2005), descrito na Figura 1, onde o mesmo demonstra uma visão
arquitetural do contexto do repositório, é insuficiente para agregar uma rede social,
pois não há suporte na troca de informações entre os desenvolvedores ou mesmo
no objeto que representa o próprio desenvolvedor.
Em vista da mudança de escopo do ambiente proposto por Ezran (apud
SANCHES, 2005), o ambiente deve ser modificado de forma a suportar os novos
40
requisitos levantados no tópico 4.2. Foi-se utilizada a linguagem UML para a
modelagem desse ambiente de integração, o qual será chamado de CrossDev.
Como cada desenvolvedor terá seu perfil adicionado ao sistema, bem como
suas contribuições em forma de posts e artefatos, faz-se necessário um sistema
controle de acesso. Abaixo um diagrama de casos de uso que representa o novo
ambiento em alto nível:
Figura 3 – Diagrama de casos de uso do ambiente proposto.
Pode-se perceber que a mudança de escopo do sistema acarreta na mudança
do diagrama de classes onde agora são acrescidas as informações pertinentes aos
desenvolvedores e as formas de interações escolhidas para o ambiente. A fim de
facilitar o entendimento dos relacionamentos, foi-se incorporado no diagrama de
classes as funcionalidades relativas às formas de comunicação, porém elas não
represetam entidades nativas do modelo de dados do sistema ou, em outras
palavras, as classes persistentes do sistema.
41
Figura 4 - Diagrama de classes do CrossDev.
Note que foi incrementado ao diagrama de Ezran (apud SANCHES, 2005),
citado no tópico 2.3, informações pertinentes aos desenvolvedores e as formas de
redes sociais adotadas. A seguir serão descritas as novas relações adicionadas ao
diagrama de Ezran:

Projeto;

Desenvolvedores;

Histórico;

Artefato-artefato;

Testes;

Fórum;

Blog;

Lista de discussão.
A entidade que representa o projeto é importante pois agrupa tanto um
conjunto de artefatos utilizados bem como um conjunto de desenvolvedores
elucidando o sentimento de equipe, podendo até mesmo ser relacionada com um
blog ou fórum. No caso dos blogs devem ser postados no blog de cada projeto
alguns de seus documentos de acompanhamento e suas lições aprendidas, e no
42
caso dos fóruns deve existir uma lista de discussão particular do projeto onde seriam
discutidos quaisquer tópicos relacionados ao projeto, porém essas são ideias
complementares que podem ser adaptadas sem necessidade de modificar o modelo
acima.
Os desenvolvedores são as entidades básicas do sistema, contendo seus
perfis e informações relacionadas a sua formação ou especialização. Segundo o
diagrama de classes (figura 4), os desenvolvedores possuem as seguintes relações:

Podem possui um único blog pessoal;

Podem estar participando de várias discussões nos fóruns;

Podem participar da várias discussões sobre artefatos;

Podem ter participado da criação de vários artefatos.
Um fórum é uma ideia bastante popular no contexto organizacional, pois
podem
ser
publicados
problemas
individuais
ou
comuns
ao
grupo
de
desenvolvedores da organização, bem como podem ser encontrada soluções para
problemas anteriores em seu histórico, entretanto a classe fórum, definida no
diagrama de classes acima, especifica a funcionalidade fórum e não a entidade
persistente em si, assim como a classe blog descrita abaixo.
O objeto Blog é individual para cada desenvolvedor, o que traz uma
valorização a individualidade e originalidade de cada um. Neste espaço o
desenvolvedor pode publicar e promover suas ideias em particular, assim como seus
trabalhos e pesquisas.
O objeto Histórico representa o histórico do artefato, listas de discussões
sobre as versões anteriores, testes anteriores, etc. Note que um artefato pode
possuir inúmeras versões anteriores, e essas estão vinculadas a um único artefato
que representa a versão atual. Assim como os fóruns e blogs, esse objeto histórico
representa apenas sua ideia básica e não faz menção a forma como será
implementado.
O objeto Testes representa um conjunto de testes para um artefato, esses
objetos são importantes para promover a qualidade do artefato através do total de
cobertura de seus códigos, obviamente, quanto mais coberto por testes o artefato,
mais garantido será seu comportamento esperado.
43
A lista de discussão por artefato parte do mesmo principio do fórum por
projeto, onde quaisquer questões sobre aquele artefato poderão ser expostas para
que os desenvolvedores da organização, inclusive facilitando o levantamento de
problemas.
4.4
Novos critérios para classificação dos artefatos.
Como já é sabido, uma pesquisa em um repositório com diversos de artefatos
pode retornar vários resultados: artefatos construídos por diversos desenvolvedores,
e artefatos com as mesmas funcionalidades. Para ajudar o desenvolvedor a escolher
um dentre esses resultados pode-se utilizar algumas das formas de classificação
descritas abaixo:

Nível de formação da equipe de criadores do artefato;

Quantidade de projetos que estão utilizando aquele artefato;

Total de cobertura de testes nos artefatos;

Pode-se utilizar também os posts e discussões que referenciaram
aquele artefato;

Pode-se
utilizar
de
recomendações,
feitas
pelos
próprios
desenvolvedores para um artefato.
Um dos critérios para classificação dos artefatos que poderia ser utilizados é
classificação com base nas informações dos desenvolvedores, informações sobre
suas competências ou especializações dos desenvolvedores que participaram da
construção do artefato, como conhecimentos em banco de dados, Webdesign ou
diferentes certificações (PRESSMAN, 2006).
Outra forma de classificação seria utilizando o histórico, número de falhas ou
quaisquer estatísticas que indiquem sua qualidade como o percentual de código
coberto por testes. Essas informações incrementariam a pesquisa por artefatos de
forma a prover ao desenvolvedor, não somente as informações do artefato, mas
também opiniões de outros desenvolvedores e a quantidade de projetos que utilizam
o artefato, ou seja, informações de conhecimentos empíricos.
44
Verifica-se que essa forma de classificação ajudaria a desenvolvedores a
confiar nos artefatos disponibilizado, desde que esses estejam com níveis aceitáveis
de qualidade, e esses níveis expostos nesse ambiente.
Através de wireframes, técnica que é utilizada para criação de protótipos de
interfaces gráficas, na figura 5 é demonstrado uma tela inicial do sistema proposto
que se utiliza desses critérios de classificação:
Figura 5 - Tela de visualização de artefatos.
4.5
As informações no repositório
É importante citar que a introdução de conceitos de redes sociais sobre os
repositórios implica que as informações poderão ser extraídas para fins diferentes do
propósito da rede social utilizando de técnicas como Business Intelligence (BI), onde
informações relativas a rede são extraídas e utilizadas para a tomada de decisão. Há
diversas informações que poderiam ser extraídas desse ambiente, como (AIRTON,
2009):
45

Quais artefatos são mais reutilizados provendo assim uma visão de
quais artefatos devem ser ter ênfase na sua qualidade e testes;

Quais artefatos estão trazendo mais problemas, e podem gerar
riscos aos projetos;

Através do conhecimento empírico dos desenvolvedores, obter
informações para decidir quais artefatos, ferramentas ou quaisquer
insumos usados no desenvolvimento devem ser adquiridos ou
desenvolvidos pela empresa.
Como é possível verificar nos anexos Anexo A -, Anexo B - e Anexo C - o
CrossDev possui as informações citadas acima as quais poderiam ser usadas para a
técnica de BI ou como informações de nível estratégico.
4.6
Integração com outros sistemas
A fim de incrementar suas funcionalidades e informações, é importante que o
repositório permitisse a integração com outros sistemas úteis como os sistemas para
integração contínua (ex: Hudson, CruiseControl, Continuum, Team City), controle de
dependências (MAVEN 2, MAVEN 1, Gradle, Ivy, Ant) e ou qualquer outro ambiente
para testes automatizados (SOARES, 2009).
Os ambientes de integração contínua provêem um meio de monitorar a
integração de sistemas, quando módulos novos são integrados com os antigos.
Pode-se configurar o ambiente de integração contínua para executar a compilação e
os testes vinculados aquele sistema, bem como gerar uma serie de métricas para
analise dos sistemas (SOARES, 2009).
As ferramentas para gerenciamento de dependências provêem uma forma de
controlar as dependências na fase de implementação em projetos que utilizam
inúmeros artefatos, como controle das versões dos artefatos utilizados e a forma
como são construídos.
A integração com esses sistemas agrega as vantagens para a fase de
implementação do projeto como verificações das qualidades do código e controle
das dependências do sistema, ou seja, as vantagens do uso das ferramentas em si.
46
5 CONCLUSÃO
Pode-se verificar que através do uso de redes sociais a informação pode ser
melhor aproveitada e difundida entre os seus pontos. No caso do desenvolvimento
de software, a pesquisa de mercado demonstrou que a maioria das organizações
que trabalham nesse ramo já aplica alguns conceitos de redes sociais, porem essas
organizações não se utilizam desses conceitos para promoção do reuso de seus
artefatos, consequentemente não se beneficiam de uma forma de diminuir os custos
e acelerar o desenvolvimento.
Ainda segundo a pesquisa de mercado, a maioria das organizações não
possuem um repositório ou ambiente dedicado ao armazenamento e manutenção de
artefatos reutilizáveis de software, que embora não seja eficientemente utilizado,
ainda provem alguns meios de maximizar o reuso e promover uma maior qualidade
dos softwares. Isso demonstra que provavelmente cerca de 40% das pessoas que
responderam que suas organizações promovem o reuso sistemático, tem uma ideia
errada de reuso, pois como visto, um dos pontos básicos para o reuso sistêmico é
que seus níveis menores sejam cumpridos, tarefa que sem o auxilio de uma
ferramenta como um repositório é bastante improvável de acontecer.
A ferramenta proposta nesse trabalho trás consigo os conceitos de redes
socais e repositório para artefatos de software, o que consequentemente promove o
reuso e todos os benefícios que derivam desse atributo. Como já é sabido, os custos
em se construir um software reusável são bem maiores do que softwares sem essa
possibilidade, entretanto, empresas são planejadas, em sua maioria, para ter uma
longevidade consideravelmente maior que seus softwares, o que vem a justificar os
custos dessa abordagem.
47
6 TRABALHOS FUTUROS
Como esta monografia compreende o planejamento do sistema CrossDev, em
trabalhos futuros pretendo implementar e aplicar as técnicas levantadas neste
trabalho em empresas de desenvolvimento de software.
48
7 REFERÊNCIAS
AIRTON, E. C. Inteligência competitiva e suas conexões epistemológicas com
gestão da informação e do conhecimento. Ci. Inf., Maio/Agosto 2009. 19-34.
BLOGGER. Blogger, 01 ago. 1999. Disponivel em: <http://www.blogger.com>.
Acesso em: 12 nov. 2010.
BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. The Unified Modeling Language
User Guide. [S.l.]: Addison Wesley, 1998.
C.E.S.A.R.
CORE
-
Component
Repository,
2008.
Disponivel
em:
<http://www.rise.com.br>. Acesso em: 10 Outubro 2010.
CEJUG – The Ceará Java User Group. CEJUG, 2002. Disponivel em:
<www.cejug.org>. Acesso em: 10 out. 2010.
COUTINHO, C. P. Blog e Wiki: Os Futuros Professores e as Ferramentas da web
2.0,
14
nov.
2007.
Disponivel
em:
<http://repositorium.sdum.uminho.pt/bitstream/1822/7358/1/Com%2520SIIE.pdf>.
Acesso em: 02 nov. 2010.
EZRAN, M.; MORISIO, M.; COLIN, J. T. Practical Software Reuse. Berlin: Springer
Verlag,
2002.
Disponivel
em:
<http://books.google.com.br/books?id=kIlpuK1GkLwC&printsec=frontcover&dq=ezra
n+book&source=bl&ots=X8bXWchxRX&sig=XObYxm3vBiKlq76hvg-2trMjy4o&hl=ptBR&ei=QEngTPndFoL48Abux5GSDw&sa=X&oi=book_result&ct=result&resnum=6&
ved=0CEYQ6AEwBQ#v=onepage&q&f=false>. Acesso em: 12 ago. 2010.
GRUPO de Usuários Java. Grupo de Usuários Java, 2002. Disponivel em:
<www.guj.com.br>. Acesso em: 10 out. 2010.
HTTP://GEEK.NET/.
SourceForge.
SourceForge,
1999.
Disponivel
em:
<http://sourceforge.net/about>. Acesso em: 12 out. 2010.
INÊS, T. M.; ROSECLER, A. A.; GUERREIRO, I. D. C. Das redes sociais à inovação.
Instituto Brasileiro de Informação em Ciência e Tecnologia - IBICT, 05 Agosto
2005.
49
JAVARANCH. JavaRanch, 1998. Disponivel em: <www.javaranch.com>. Acesso
em: 10 out. 2010.
MAGELA, R. Engenharia de Software Aplicada - Princípios. Rio de Janeiro: Alta
Books, 2006.
MARTELETO, R. M. Análise de redes sociais - aplicação nos estudos de
transferencia da informação. Ci. Inf., Janeiro 2001.
MIRANDA, L. et al. Ambientes para aprendizagem na web: Uma experiência com
fóruns de discussão. Conferencia Internacional de Tecnologias de Informação e
Comunicação na Educação. Centro de competencia Nónio da Universidade do
Minho: Braga. 2001. p. 585 - 593.
PÁDUA, W. P. Engenharia de Software: Fundamentos, Métodos e Padrões. Rio de
Janeiro: LTC Editora, 2005.
PEREIRA, D. R. DISCURSOS SOBRE A WEB 2.0 E A EDUCAÇÂO: UMA ANÁLISE
SEMIÓTICA, Julho 2010. Disponivel em: <http://www.scielo.br/pdf/tla/v49n1/19.pdf>.
Acesso em: 13 nov. 2010.
PLANETSOURCECODE. PlanetSourceCode. PlanetSourceCode, 1997. Disponivel
em: <http://www.planetsourcecode.com/>. Acesso em: 12 out. 2010.
PRESSMAN, R. S. Engenharia de software. São Paulo: Mc Graw Hill, 2006.
SANCHES, M. G. Um Estudo Sobre os Riscos Inerentes à Implantação do
Reuso de Componentes no Processo de Desenvolvimento de Software.
Campinas: Universidade Estadual de Campinas, 2005.
SOARES, M. D. S. Metodologias Ágeis Extreme Programming e Scrum para o
Desenvolvimento de Software. Revista Eletrônica de Sistemas de Informação,
Conselheiro Lafaiete, v. 3, n. 1, 2009. ISSN 1677-3071.
SOMMERVILE, I. Engenharia de Software. São Paulo: Pearson Addison Wesley,
2003.
SOMMERVILE, I. Engenharia de Software. São Paulo: Pearson Addison Wesley,
2007.
STEIL,
R.
G.
JForum.
JForum.net,
12
mar.
<http://jforum.net/team.jsp>. Acesso em: 2010 out. 10.
2005.
Disponivel
em:
50
VARGAS, R. Gerenciamento de projetos: Estabelecendo Diferencias Competitivos.
7º Edição. ed. Rio de Janeiro: BRASPORT Livros e Multimídia Ltda., 2009.
WORDPRESS. WordPress, 27 Maio 2003. Disponivel em: <http://wordpress.org>.
Acesso em: 12 nov. 2010.
WWW.IMPROVEIT.COM.BR.
Improve
It,
2001.
Disponivel
em:
<www.improveit.com.br>. Acesso em: 12 out. 2010.
WWW.JARS.COM. JARS. www.jars.com, 1998. Disponivel em: <www.jars.com>.
Acesso em: 12 out. 2010.
ZEMEL, T., 2006. Disponivel em: <www.desenvolvimentoparaweb.com>. Acesso
em: 12 out. 2010.
ZONA J. Zona J, 2007. Disponivel em: <www.zonaj.org>. Acesso em: 12 out. 2010.
51
Anexo A - Wireframe da tela inicial do ambiente CrossDev
52
Anexo B - Wireframe artefatos em foco.
53
Anexo C - Wireframe da tela inicial da aba artefatos do ambiente CrossDev
54
Anexo D - Formulário de pesquisa científica parte I.
55
Anexo E - Formulário de pesquisa científica parte II.
56
Anexo F - Formulário de pesquisa científica parte III.
Download

Autor: Nathan Azevedo - Faculdade Lourenço Filho