ƒ/π: Plano de Trabalho

Tempo de elaboração do documento: 36 horas

O objetivo deste texto é mostrar como elaborar um plano de trabalho para um trabalho de conclusão de curso utilizando as regras da Faculdade Senac Porto Alegre. Todas as "citações" no texto, são observações de ações do aluno,ou explicações sobre algo do TCC, e não são parte do projeto ou do texto final. Este exemplo de TCC possui quatro etapas, mas sugiro ler primeiro as dicas de como realizar um TCC. Além desta etapa, o projeto conta com mais três etapas: Relatório Parcial, Relatório de Andamento e Relatório Final.

Os detalhes do projeto ƒ/π estão também disponíveis.

Título: O título do trabalho deve mostrar sobre o que se trata o projeto, e, quando da implementação de uma ferramenta, apresentar o nome da ferramenta. Para este trabalho, o título é: ƒ/π: Sistema de gerenciamento de ativos digitais.

Resumo

Este relatório apresenta o desenvolvimento de um sistema de gestão de ativos digitais que procura atender a usuários que possuem um grande volume de arquivos de mídia e precisam organizar, localizar, e compartilhar estes arquivos com eficiência. O sistema utiliza padrões abertos e reconhecidos no mercado, e é desenvolvido baseado em ferramentas open source, sendo distrubuído sob uma dessas licenças, permitindo que seja adaptado as necessidades do usuário se este assim o desejar.

Palavras-chave: gestão de documentos, ativos digitais, fotografia, vídeo, arquivamento.

Sumário

Apresentação do Projeto

Com a popularização da fotografia e vídeo digital, o volume de produção dessas mídias aumentou muito no mundo todo. No ano de 2014, eram realizados cerca de 1.8 bilhões de uploads de fotografias a cada dia, o que é algo aproximadamente equivalente a criar, a cada dois minutos, o mesmo número de fotogafias criadas nos primeiros 150 anos de fotografia (The Atlantic, 2015). Esse volume aparece também quando examinamos a produção individual das pessoas, devido tanto ao baixo custo, quanto a ubiqüidade da posse de uma câmera digital, por exemplo, as presentes nos telefones celulares modernos.

Sabendo que um fotógrafo profissional ou aficcionado produz muito mais fotografias que uma pessoa que se utiliza da fotografia esporadicamente, e somando-se a isso a grande facilidade na produção de conteúdo digital, surge a necessidade, de organizar, catalogar e encontrar uma imagem, ou um conjunto de imagens específicas, entre todas as imagens produzidas por esta pessoa.

A gestão de ativos digitais (DAM, do inglês Digital Asset Managemente) consiste no gerencimento de tarefas e decisões acerca da ingestão, anotação, catalogação, armazenamento, recuperação e distribuição de ativos digitais, como fotografias e vídeos digitais (Wikipedia, 2016; Krogh, 2009). Sistemas de gestão de ativos digitais incluem software e hardware para auxiliar esse processo. Uma das sub-categorias do DAM, é o gerenciamento de ativos de mídia, que se preocupa com ativos como imagens e fotografias digitais, animações e vídeos.

O ƒ/π (pronuncia-se /efe-pi/) é um sistema de gestão de ativos digitais que será desenvolvido para atender um usuário que possui um grande volume de arquivos de mídia e precisa organizar e monitorar estes arquivos com eficiência. No mercado são encontrados diversos softwares para a mesma finalidade, no entanto, algumas características do ƒ/π se destacam, como a licença de uso Gnu General Public Licence 2.0 (GNU, 1991) que permite a sua livre distribuição ou alteração, a possibilidade de utilizá-lo em sistemas Linux, e o foco principal no gerenciamento destes ativos, e não em outros aspectos comuns a estes softwares como edição e alteração dos arquivos. A proposta do ƒ/π é utilizar padrões abertos reconhecidos no mercado e ferramentas livres na sua elaboração.

Descrição do Problema

Partindo da experiência pessoal do autor do projeto com uma grande biblioteca de arquivos de mídia digitais, da utilização de bons softwares proprietários para o gerenciamento dessa biblioteca, e da percepção que não há, para um conjunto específico de usuários, uma alternativa no ecossistema de software livre, foi levantada a possibilidade de desenvolvimento de um software para o gerenciamento de ativos digitais, com a eficiência dos softwares proprietários, o uso de padrões e boas práticas da indústria (de mídia digital), porém, totalmente baseado em tecnologias open source.

O usuário típico de um sistema desse tipo é o fotógrafo profissional ou amador avançado, o videógrafo, estúdios, ou qualquer outra entidade que precise gerenciar ativos digitais como produto do seu trabalho. Este usuário precisa de agilidade para localizar seus ativos, manter um controle de operações sobre estes ativos, e cumprir exigências de clientes ou do mercado com relação a esses ativos.

No mercado de imagem digital, diversos padrões são utilizados para catalogar, identificar e descrever os documentos. Estes padrões são baseados na utilização de metadados.

Os metadados são atributos que auxiliam a descrever o ativo. Por exemplo, podemos adicionar um atributo que defina a qualidade artística de uma fotografia, ou palavras que ajudem a definir o que existe na fotografia, sem que seja necessário olhar para a imagem.

Entre os principais padrões de metadados utilizados atualmente, encontramos:

  • IPTC (International Press Telecommunications Council): O IPTC, um consórcio do qual participam as maiores agências de notícias desenvolveu um conjunto de atributos (IPTC, 2014) que definem a propriedade da foto, direitos de reprodução, informações sobre o conteúdo, entre outros, utilizados, principalmente por integrantes da imprensa. Os atributos IPTC podem ser associados a fotografias, vídeos e textos.
  • EXIF (Exchangeable Image File Format): O EXIF (CIPA, 2012) é um padrão, criado pela CIPA (Camera & Imaging Products Association), que define o formato de arquivos de imagem e áudio que são gerados por câmeras digitais, além de um conjunto de metadados sobre o conteúdo gerado. Neste conjunto de metadados, são encontrados os atributos de configuração do equipamento que gerou o ativo.
  • XMP (Extensible Metadata Platform): O XMP é um padrão da ISO (ISO, 2016) (International Organization for Standardization), e define atributos de criação, processamento e intercâmbio para documentos digitais. Os metadados XMP podem ser anexados em diversos formatos de arquivos de vídeo, imagens e textos, ou serem utilizados com um arquivo auxiliar. O XMP utiliza, normalmente, um subconjunto da sintaxe XML/RDF (W3C, 2014), com osjatributos definidos pela Dublin Core Metadata Initiative, conhecidos como Dublin Core (Kunze e Baker, 2007), que é um conjunto de quinze atributos utilizados para descrever objetos de mídia que podem ser físicos (livros, CDs, quadros) ou virtuais (recursos web).

Os sistemas deste mercado gerenciam os ativos de duas formas, ou como um catálogo, que permite acessar os dados dos ativos gerenciados mesmo na ausência dos arquivos originais, e o navegador (browser), que mostra apenas os ativos cujos dados originais estão presentes no momento. O uso de uma ou outra forma modifica a forma como o usuário utilizará o sistema, uma vez que elas afetam o fluxo de trabalho.

Com o uso de um navegador, o usuário tem a certeza de estar consultando o arquivo original, e sua presença no sistema é garantida. No caso do catálogo, o usuário está visualizando uma representação da última versão do arquivo, quando armazenado no sistema. A grande vantagem do catálogo sobre o navegador, é a capacidade de vizualizar, consultar e até mesmo alterar, embora com alguma limitação, qualquer um dos ativos no sistema necessitando apenas de uma fração do espaço de armazenamento necessário, uma vez que basta uma representação de baixa fidelidade do ativo para estas operações, que podem ser sincronizadas posteriormente, quando o ativo estiver novamente disponível.

Dois aspectos importantes e relacionados dos sistemas de gerenciamento de ativos digitais é a identificação destes ativos, por meio de metadados, e a eventual procura por ativos que se enquadrem em um critério arbitrário, definido em relação aos metadados.

Alguns metadados comuns a todos os sistemas de gerenciamento de ativos digitais são as avaliações e rótulos. Embora normalmente definidas como estrelas, a avaliação é um valor de qualidade atribuído à imagem, que no caso dessas aplicações variam entre 0 (zero - nenhuma estrela), e 5 (cinco estrelas), gerando uma escala de seis valores possíseis. Os rótulos por sua vez, são uma forma de criar grandes grupos de ativos relacionados, e geralmente são identificados por cores, mas normalmente possuem uma descrição associada. Essa descrição pode repesentar as agências de notícias, bancos de imagens, ou outras características que o usuário desejar.

Outro atributo muito utilizado é a marcação de seleção ou rejeição. Em sistemas onde existe o atributo de rejeição de um ativo, normalmente existe uma opção para remover todos os ativos rejeitados. Já o atributo de seleção é utilizado para marcar o ativo como um ativo mais importante que os demais.

Os conjuntos de metadados padrão do mercado EXIF, IPTC e XMP, também oferecem ainda mais informações que podem ser utilizadas para auxiliar o gerenciamento dos ativos. Entre os mais importantes atributos destes padrões encontram-se a legenda, que é muito utilizada por fotojornalistas, o título, as informações sobre a captura do ativo, como configurações do equipamento, local (cidade, endereço ou GPS), e as palavras-chave.

As palavras-chave são um ponto importante em um sistema deste tipo, pois permitem não apenas descrever o conteúdo da imagem sem que seja necessário ver seu conteúdo, mas porque auxiliam na localização de imagens em bancos de imagem (500px, 2014; Getty, 2009) ou em ferramentas de pesquisa na internet.

Além dos metadados, outras formas de organização e localização de fotos muito utilizadas são as estruturas de diretórios, normalmente garantidas pelo sistema operacional onde o sistema irá executar, e a idéia de agrupamentos de imagens por uma característica, ou um conjunto de características comuns. Essa organização em agrupamentos é conhecida de várias formas, e depende da aplicação, sendo o mais comum "coleção", mas encontramos também "álbum", "evento", ou "projeto". Esses agrupamentos permitem uma organização mais livre, pois enquanto cada ativo é armazenado em um único diretório, os agrupamentos permitem que um mesmo ativo esteja presente em vários agrupamentos, por exemplo, uma foto de um carro vermelho ao por do sol poderia ser agrupada em "Por do Sol", "Carros", e "Vermelho", além de agrupamentos que podem ser criados automaticamente a partir de metadados, por exemplo, "vídeos com rótulo vermelho e avaliação maior ou igual a 3".

Projetos correlatos

Para a elaboração desse projeto, foram analizados alguns sistemas proprietários bastante utilizados no mercado, e alguns dos mais conhecidos sistemas open source para gerenciamento de ativos digitais. O principal objetivo desse estudo é identificar as melhores características dos sistemas proprietários e verificar quais delas estão presentes nos sistemas open source.

Adobe Lightroom

O Adobe Lightroom é um dos softwares de fluxo de trabalho mais utilizados por fotógrafos para o gerenciamento de fotografias, principalmente devido à forte integração com outro software da empresa, o Photoshop.

Desenvolvido de forma independente, mas utilizando a mesma base de código para a edição de arquivos fotográficos que o Photoshop, o Adobe Camera Raw, o Lightroom está disponível para as plataformas Microsoft Windows e Apple macOS 1.

Lançado como versão de teste (beta) para usuários cadastrados em 2006, e lançado publicamente no início de 2007, o Lightroom incorpora um poderoso processador de imagens raw 2, um gerenciador de arquivos de imagens e vídeos bastante flexível e robusto, e diversos módulos para geração de artefatos a partir das imagens (impressões, apresentação de slides, e sites web). Possui suporte a diversos tipos de arquivos de imagens, incluindo mais de 300 tipos de arquivos raw, além de JPEG (Joint Photographic Experts Group - arquivo muito utilizado para transferência via web), PSD (Photoshop Datafile - arquivo de imagem do Photoshop), TIFF (Tagged-Image File Format - arquivos utilizados na produção gráfica), DNG (Digital Negative - proposta da Adobe para um formato de arquivo universal que represente um "negativo digital"), e PNG (Portable Network Graphics - formato de arquivos aberto, com suporte a compressão sem perda de dados, canal alpha para transparência, e múltiplas camadas). Além destes formatos, comuns na fotografia digital, o Lightroom ainda suporta arquivos CMYK (Ciano, Magenta, Amarelo e Preto), que são arquivos utilizados em impressão off-set, e diversos formatos de arquivos de vídeo.

Com relação ao gerenciamento de ativos digitais, o Lightroom possui um completo sistema de edição de metadados, com suporte aos metadados EXIF, IPTC e XMP, avaliações e rótulos, palavras-chave, agrupamento por coleções, visualização de arquivos off-line, utilização de múltiplas unidades de armazenamento, incluindo dispositivos remotos.

Para organização das fotos, além da possibilidade de três tipos diferentes de classificação (avaliação de seis níveis, cinco rótulos e escolha/rejeição), o Lightroom permite o agrupamento dos arquivos em estruturas de diretórios e coleções. Nas estruturas de diretórios, os arquivos correspondentes aos ativos ficam armazenados em um local único, definido pelo usuário na estrutura de diretórios de um dispositivo de armazenamento específico. As coleções podem ser criadas manualmente, ou automaticamente, a partir de uma seleção dos atributos, e uma foto pode pertencer a diversas coleções simultâneamente.

Um dos pontos mais fortes com relação à organização dos ativos é a forma como o Lightroom lida com os metadados. Metadados são atributos que auxiliam a descrever o ativo digital. São informações como data de captura, última alteração, título, avaliação, palavras-chave, etc, onde além de prover suporte tanta a EXIF, IPTC e XMP, o Lightroom permite a utilização de palavras-chave organizadas hierarquicamente, facilitando muito o processo de adição de um grande número de palavras-chave em poucas operações.

O sistema de procura de ativos permite a busca a partir da combinação de diversos filtros, incluindo texto (que pode ser qualquer campo textual, dos metadados ou do nome do arquivo ou diretórios); metadados específicos, como modelo de câmera ou lente, palavras-chave, data, etc.; atributos como rótulos ou avaliação, tipo de arquivo (imagem, vídeo ou cópia virtual). Esse sistema de busca é realizado a partir de uma base de dados SQL (Structured Query Language - Linguagem de Consulta Estruturada), implementada em cima do SQLite 3, e apresenta um tempo de resposta muito bom, mesmo em equipamentos com menor poder de processamento e/ou utilizando discos externos mais lentos, por exemplo, utilizando um computador com 6 anos de idade e disco externo USB 2.0 (Universal Serial Bus, Barramento Serial Universal).

O Adobe Lightroom apresenta dois modelos de licenciamento, um modelo de assinatura e um modelo de licença de software perpétuo. No modelo por assinatura, uma mensalidade é paga pelo usuário que dá direito ao uso completo do software por 30 dias (em planos anuais, com doze mensalidades de igual valor), com direito a todas atualizações do software disponibilizadas durante o período da assinatura. Neste modelo, caso o usuário não pague a mensalidade, ou falhe em autenticar-se por 30 dias, o sistema continua funcionando, porém algumas funcionalidades são removidas. Ainda no modelo de licença por assinatura, o Adobe Photoshop acompanha o Lightroom. No modelo de licença perpétua, o usuário adquira a licença de uso de uma versão específica do sistema, e esta licença só permite atualizações gratuitas da mesma versão do sistema. Ambas licenças permitem a utilização do Lightroom em até dois computadores.

Com relação à cópias de segurança, o Lightroom permite duplicar os arquivos durante a ingestão dos mesmos, porém não mantém a hierarquia de diretórios aplicada durante o processo, e realiza cópias de segurança do "catálogo" (a base de dados SQL), deixando a cargo do usuário a cópia de segurança dos arquivos de dados.

Phase One Capture One

O Capture One, produzido pela Phase One, é um software originalmente destinado à conversão e otimização de arquivos raw dos equipamentos de captura digital da própria Phase One. O sistema oferece hoje suporte a diversas câmeras, e incorporou características de gerenciamento de ativos digitais.

Com suporte a catálogos, sessões, álbuns e coleções, oferece um grande gama de opções para organização dos ativos, e permite o trabalho no formato catálogo (com o uso dos catálogos), ou o formato de navegador (com o uso exclusivo de sessões). No entanto, a estrutura de diretórios utilizada para armazenar os arquivos é fortemente controlada pelo sistema, com o usuário tendo pouca escolha de como irá organizar seus arquivos.

Na organização das fotos, o Capture One oferece avaliação (zero a cinco estrelas) e rótulos, não oferecendo a opção de escolha/rejeição, comum a outros sistemas. A partir da versão 9, o sistema inclui suporte a palavras-chave hierarquicas, com a possibilidade de trabalhar com listas de palavras-chave, adicionando mais um nível de organização aos metadados.

O Capture One utiliza os sistemas de licenciamento por mensalidade, com planos de três ou doze meses, ou perpétuo, ambos sob uma licença de software proprietária.

Phase One Media Pro

O Phase One Media Pro foi originalmente desenvolvido pela iView Multimedia, com o nome de iView Pro, e em 2007, a empresa foi adquirida pela Microsoft, que manteve o software com o nome de Expression Media. Em 2010, a Microsoft parou de produzir o Expression Media, e ele foi adquirido pela Phase One, onde acabou se transformando no Media Pro.

O foco do Media Pro é o gerenciamento de arquivos digitais, e por isso oferece diversos recursos para esse fim, como avaliação (zera a cinco estrelas), rótulos (diversos), palavras-chave hierárquicas, suporte completo a metadados e o uso de gabaritos pré-configurados para acelerar o processo de edição dos metadados. Na organização das fotos, oferece além da organização em diretórios o conceito de álbuns.

Além de trabalhar com o formato de catálogo, permitindo acesso às informaçoes dos arquivos mesmo na ausência dos arquivos originais, o Media Pro pode trabalhar com múltiplas unidades de armazenamento, e múltiplos catálogos e conjuntos de católogos, permitindo ao usuário uma grande flexibilidade da escolha do seu fluxo de trabalho.

Quanto ao uso de filtros para recuperação de ativos da base de dados, o Media Pro oferece além das ferramentas comuns a outros sistemas, uma série de filtros pré-configurados, como organização das fotos por data, ou por local, automaticamente.

Apesar do sistema trabalhar com um excelente número de formatos de arquivos, permitindo a conversão entre estes, e controlar além de imagens e vídeos, arquivos de áudio, um ponto fraco do sistema é a inexistência de ferramentas de edição, que espera-se que seja suprida a partir da excelente integração com o Capture One, também da Phase One.

O software possui um sistema de licenciamento perpétuo, com uma licença de uso proprietária.

Photo Mechanic

Produzido pela empresa Camera Bits, o Photo Mechanic 5 é um dos softwares mais utilizados por fotojornalistas para organizar suas fotos devido ao poderoso sistema de legenda e edição de metadados provido pelo programa.

O Photo Mechanic procura acelerar o processo de edição dos metadados IPTC, utilizados por fotojornalistas, permitindo o uso de variáveis na edição de títulos e legendas. Além das variáveis, o sistema utiliza uma forma de substituição automática de texto, onde informações são associadas a mnemônicos, e uma vez que o mnemônico é utilizado em uma descrição, ele é automaticamente substituído pela informação completa.

Boa parte das ações realizadas no software ocorrem durante a ingestão de fotos no sistema, onde o uso de valores pré-definidos de metadados são aplicados a todas as fotos, com a possibilidade de ajustar as informações individualmente para cada foto, durante a ingestão, pelo uso de variáveis.

Também durante a importação das imagens, o Photo Mechanic pode realizar uma cópia de seguraça das imagens, mantendo assim duas cópias, uma sendo a cópia de trabalho.

A edição de legendas das imagens é o ponto mais interessante do sistema, pois permite a utilização de mnemônicos. Um exemplo da utilização desta técina é um fotógrafo esportivo, realizando a cobertura de um jogo de futebol, pode configurar uma série mnemônicos para cada um dos jogadores das equipes, e substituir, por exemplo "\inttec/" por "Argel Fucks treinador do Sport Clube Internacional de Porto Alegre". Estas listas de mnemônicos podem ser atualizadas, permitindo que os mesmos mnemônicos sejam utilizados mesmo frente a alterações nas inforações. Serviços como o CodeReplacements.com, oferecem informações atualizadas sobre diversos esportes e outros evetnos de interesse para fotojornalistas.

Para classificação das fotos, o Photo Mechanic usa os mecanismos comuns de avaliação (6 níveis), rótulos (com 8 rótulos) e marcação de fotos selecionadas.

O Photo Mechanic possui um sistema simples de pesquisa por texto, onde todos os campos de texto IPTC são avaliados. No sistema macOS, pode ser utilizado o sistema de busca do próprio sistema para criar uma busca por atributos específicos, e onde atributos podem ser combinados em relações lógicas para um formato mais preciso de busca.

O software possui um sistema de licenciamento perpétuo, com uma licença de uso proprietária.

digiKam

O digiKam é uma aplicação para gerentciamento e edição de fotografias, desenvolvido utilizando o framework gráfico Qt e o ambiente gráfico KDE. Está disponível para Linux, Windows e macOS, sendo normalmente utilizado no Linux. É considerado o programa padrão para gerenciamento de imagens do KDE. O software apresenta um conjunto completo de ferramentas para gerenciamento de ativos digitais, com suporte a diversos arquivos de imagens e formatos mais comuns de vídeo, como os produzidos por câmeras fotográficas amadoras.

Apesar de fornecer execelentes ferramentas para o gerenciamento dos ativos, como duas formas de avaliação, com suporte a 0-5 "estrelas" e 4 "bandeiras", que são normalmente utilizadas para marcar fotos selecionadas ou rejeitadas, alé de nove rótulos diferentes, e possuir um completo suporte a edição de metadados, e suporte ao uso de gabaritos pré-definidos, o sistema não utiliza a idéia de catálogo, e por esse motivo não é possível acessar os dados dos ativos quando estes não estão disponíveis.

Além do excelente sistema de atributos e metadados, o digiKam possui um excelente sistema de edição de imagens baseado em plugins que podem ser instalados a critério do usuário.

Shotwell

O Shotwell é uma aplicação simples para o gerenciamento e edição de fotografias, e a aplicação oficial do ambiente gráfico GNOME. O principal objetivo do software é a simplicidade de uso, oferecendo poucas opções para a organização e gerenciamento dos dados.

O público alvo do Shotwell é o usuário doméstico que possui um pequeno número de arquivos de vídeo e imagens (comparado com profissionais da área), e que requer um sistema fácil de utilizar com um conjunto pequeno de ferramentas, que permita alguma organização e opçõe simples para edição de fotografias.

Para a organização e gerenciamento dos ativos digitais, o Shotwell oferece a opção de centralizar o acesso aos arquivos de imagens e vídeos do usuário, ou manter uma biblioteca de arquivos em um diretório específico.

O sistema oferece acesso simples aos metadados dos arquivos, apenas exibindo alguns dados, e permitindo a classificação dos ativos com avaliações (6 níveis), marcação de foto rejeitada ou escolhida (flags), e uso de palavras-chave, porém sem hierarquias. Não há agrupamento em coleções, porém existe uma forma de agrupamento em "eventos", que são coleções de imagens obtidas no mesmo dia.

Além das poucas possibilidades de organização, o suporte a arquivos do Shotwell é também muito limitado, com suporte a poucos arquivos de imagens e vídeos, e um fraco suporte a arquivos raw.

darktable

Criado com a finalidade de ser um conversor raw que busca qualidade na ediço de imagens, o software darktable possui excelentes controles para a conversão de arquivos raw e para a edição de imagens em geral, no entanto, não é um software indicado para o gerenciamento de ativos digitais.

O darktable possui suporte básico a metadados e atributos, contando com avaliação de 0 a 5 (por "estrelas"), e cinco rótulos diferentes. Com relação aos metadados, mesmo permitindo a criação de gabaritos de metadados que podem ser utilizados posteriormente, possui suporte a um pequeno conjunto de metadadoso que podem ser alterados, com suporte apenas a título, descrição, criador, editor, e direitos autorais, além de localização geográfica, sendo que os outros metadados suportados são obtidos a partir dos arquivos, e só podem ser utilizados para filtros.

Possui um bom suporte a palavras-chave hierárquicas, porém, com relação ao gerenciamento de ativos digitais, o sistema adiciona palavras-chave automaticamente, independente do desejo do usuário, e não existe uma interface para visualizar ou sugerir palavras-chave que ainda não existam no ativo.

O suporte a coleções de imagens também é bastante simples, permitindo a criação de coleções baseadas em critérios, porém estas coleções são temporárias, e o sistema só mantém as últimas vinte coleções criadas.

O sistema possui suporte a catálogo, com suporte a múltiplas unidades de armazenamento, sendo possível acessar os ativos que não estão presentes por meio de uma cópia. Todas as opções do programa estão disponíveis e podem ser utilizados na cópia, e são sincronizadas com o ativo original, uma vez que este esteja novamente disponível.

O darktable é distribuido sob a licença GPLv3, e tem como dependências, apenas o GTK+ e parte do ambiente gráfico GNOME.

RawTherapee

O software RawTherapee é um conversor raw que busca obter o máximo de qualidade de imagem, e possui poucos recursos de organização dos ativos digitais, além de não possuir suporte a arquivos de áudio ou vídeo.

A inclusão do RawTherapee na lista de projetos correlatos vem da sua utilização em conjunto com outros sistemas, como o digiKam, onde um sistema é utilizado para o gerenciamento dos ativos digitais (por exemplo o digiKam) e a edição dos arquivos raw é realizada pelo RawTherapee.

Esta combinação de gerenciamento de ativos digitais a partir de um software, e edição com outro software, permite aproveitar o melhor de cada um, no entanto, como o RawTherapee, que talvez seja o melhor programa de conversão raw open source, utiliza um framework gráfico e o digiKam, possivelmente o melhor sistema de gerenciamento de ativos digitais open source, utiliza um outro framework gráfico, a utilização conjunta dos dois acaba exigindo mais recursos de hardware que seriam necessários se ambos utilizassem os mesmos recursos e estes fossem compartilhados.

Comparativo entre os sistemas

Nem todos os sistemas apresentados apresentam as mesmas características, e embora sejam utilizados para finalidades semelhantes, nem todos os sitemas possuem o mesmo público alvo ou os mesmos objetivos. Estes sistemas foram escolhidos por serem reconhecidos como bons ou excelentes sistemas nos seus nichos de atuação, todos pertencentes ao gerenciamento de ativos digitais.

Para que a comparação de sistemas diferentes possa fazer sentido, foram selecionadas características importantes para o público alvo deste projeto, e estas características são:

  • Sistema operacional: plataforma na qual o software pode ser utilizado.
  • Múltiplas unidades de armazenamento: quando o sistema trabalha com um grande volume de ativos, é importante que se possível armazenar os arquivos em múltiplas unidades de armazenamento.
  • Estrutruas de diretórios: um dos mais básicos modos de organização, a partir de diretórios no sistema de arquivos, que permite que um ativo esteja presente em um único diretório.
  • Agrupamento em Coleções: uma abordagem de organização que permite agrupar ativos de acordo com algum critério especîfico, permitindo que o mesmo ativo seja adicionado a diferentes coleções, por se adequar a cada um dos critérios utilizados.
  • Coleções baseadas em atributos: criação de coleções onde os ativos são selecionados automaticamente de acordo com os valores de seus atributos e metadados, podendo ser passivas, onde uma vez criada a coleção não se altere sem intervenção do usuário, ou ativas, onde a coleção é modificada cada vez que um ativo se enquadra nos critérios de criação da coleção, seja um ativo novo, ou devido a alteração dos metadados.
  • Metadados: suporte aos padrões de metadados utilizados no mercado.
  • Avaliações e Rótulos: utilizados para seleção de fotos com relação a sua qualidade ou finalidade.
  • Palavras-chave: utilizadas para inserir informações textuais sobre o conteúdo da imagem, e muito utilizadas em bancos de imagens. Seu uso é facilitado quando existe suporte a palavras-chave hierarquicas.
  • Visualização off-line: o modo de "catálogo" é muito útil quando as bases de ativos são muito grandes, pois permite seu uso apenas com visualizações dos ativos, acelerando o processo, e permitindo que se utilize o sistema, mesmo na ausência dos ativos originais.
  • Cópias de Segurança: quanto o sistema auxilia na criação e recuperação de cópias de segurança no caso de problemas com os dados originais. A maioria dos sistemas, garante apenas a duplicação dos ativos durante a ingestão, sem monitorar as duplicatas, e, em alguns casos, realizam a cópia de segurança dos dados do próprio sistema.
  • Pesquisa por atributos ou metadados: qando o sistema permite a localização de ativos por meio de pesquisa por atributos ou metadados dos ativos gerenciados.
  • Formatos de arquivos: com a grande quantidade de formatos de arquivos para ativos digitais diferentes, como o sistema se enquadra com relação a esse espectro, permitindo ou não o uso dos formatos mais conhecidos.
  • Licenciamento: a forma de licenciamento do sistema.
  • Ferramentas de Edição: mostra a capacidade do sistema de ser utilizado não apenas no gerenciamento dos ativos, mas também na produção destes.

As características relacionadas ao sistema operacional foram avaliadas para identificar se existia um sistema que atendesse as necessidades do sistema de gestão de ativos digitais para o sistema operacional Linux, sem a utliização do ambiente KDE, que utiliza a biblioteca gráfica Qt, uma vez que estes não são utilizados por diversos usuários do sistema Linux, e um estudo inicial indicou a inexistência de um sistema semelhante para esta configuração, como pode ser confirmado nesta comparação. As outras características foram selecionadas pois são consideradas importantes para qualquer sistema de gestão de ativos digitais.

O Quadro 1 mostra as características dos sistemas com licenças de software proprietárias, e o Quadro 2, os sistemas com licenças de software open source.

Comparação entre os sistemas proprietários.

Carcterística Lightroom Capture One Media Pro Photo Mechanic
Sistema Operacional macOS, Windows macOS, Windows macOS, Windows macOS, Windows
Múltiplas unidades de armazenamento Sim Sim Sim Sim
Estruturas de Diretórios Sim Sim Sim Sim
Agrupamento em coleções Sim Sim Sim Não
Coleções baseadas em atributos Sim Sim Sim N/A
Metadados Completo Completo Completo Completo
Avaliações e Rótulos Sim Sim* Sim Sim
Palavras-chave Hierarquicas Hierárquicas Hierárquicas Simples
Visualizações off-line Sim Sim** Sim Não
Cópia de segurança Parcial Parcial Completo Parcial
Pesquisa por atributos ou metadados Sim Sim Sim Sim, no macOS
Formatos de arquivos Muito bom Bom Excelente*** Bom
Licenciamento Mensalidade ou perpétuo. Mensalidade ou perpétuo. Perpétuo Perpétuo
Ferramentas de Edição Excelente Excelente Inexistente Básico

* Seleção/Rejeição é feita par "pastas" e não por atributos.
** Quando utilizado no modo catálogo.
*** Provê suporte a arquivos de áudio, além de vídeos e imagens.

Autor do projeto.

Uma característica importante nos sistemas open source (Quadro 2), são as dependências com relação à interface gráfica, uma vez que os usuários utilizam ambientes gráficos que já adicionam algumas destas dependências, fazendo com que as escolhas de softwares recaiam em sistemas que utilizam as mesmas bibliotecas, evitando aplicações com aparência diferente das outras, e poupando recursos da máqina, como memória e espaço de armazenamento.

Comparação entre os sistemas open source.

Carcterística digiKam Shotwell RawTherapee darktable
Sistema Operacional macOS, Linux, Windows Linux macOS, Linux, Windows macOS, Linux
Múltiplas unidades de armazenamento Não Não Sim Sim
Estruturas de Diretórios Sim Sim Não Não
Agrupamento em coleções Sim Sim Não Sim*
Coleções baseadas em atributos Sim Não N/A Sim
Metadados Excelente Limitado Não Sim
Avaliações e Rótulos Sim Sim Sim Sim
Visualizações off-line Não Não Não Sim
Cópia de segurança Não Não Não Não
Pesquisa por atributos ou metadados Sim Não Parcial Sim
Suporte a arquivos digitais Muito Bom Limitado Bom Muito Bom
Licenciamento GPLv2 LGPL 2.1 GPLv3 GPLv3
Ferramentas de Edição Avançado** Simples Avançado Avançado
Framework de interface gráfica KDE/Qt GNOME/GTK+ GTK+ GNOME/GTK+

* Coleções são temporárias.
** Dependendo da escolha dos plugins instalados.

Autor do projeto.

Analisando os dados apresentados, destacam-se as aplicações com licenciamento proprietário, e, com licenças de código aberto, o digiKam e o darktable.

O digiKam é claramente o mais completo software open source com relação ao gerenciamento dos ativos digitais, e embora também apresente uma excelente gama de ferramentas de edição, o darktable oferece uma melhor qualidade no resultado final nesse aspecto. O grande defeito para o gerenciamento de ativos digitais utilizando o dikiKam e a falta de suporte ao modo de "catálogo", não permitindo acessar os dados dos ativos quando estes não estão disponíveis.

Um outro aspecto importante quando se trata de software open source, principalmente no sistema operacional Linux, é a necessidade de instalação de frameworks e bibliotecas auxiliares. Apesar do custo de armazenamento ter diminuído muito nos últimos anos, o uso de diversas bibliotecas de software diferentes, ao mesmo tempo, tem impacto no uso de memória, e possievelmente, na velocidade de processamento do equipamento. No caso do digiKam, a instalação do programa em um ambiente já em funcionamento (Debian Jessie 8.5), com diversas aplicações para edição de fotografias, requer a obtenção de mais de 200 MB (Mega Bytes) de dados, que após a instalação representarão o uso de quase 0.5 GB (Giga Bytes) de dados. Embora o software Shotwell, na mesma instalação citada anteriormente adicione apenas 16 MB (Mega Bytes) de bibliotecas necessárias (uma redução de aproximadamente 25x em relação ao digiKam), não atende as necessidades do usuário com perfil alvo desse projeto. Um outro empecilho no uso do Shotwell é o histórico de abandono dos softwares baseados no ambiente Gnome para o gerenciamento de fotografias, como o F-Spot, cuja última atualização data de 2010.

Com a revisão dos projetos correlatos, nota-se que a percepção que não existiria um sistema open source baseado na biblioteca GTK+, voltado a usuários com grandes bibliotecas de ativos digitais se confirma. Sendo assim, sugere-se a implementação de um novo software para gerenciamento de ativos digitais, baseado na biblioteca GTK+, de forma a atender usuários dos ambientes XFCE e Gnome, entre outros, que utilizam este toolkit gráfico (ao invés do Qt), utilizando apenas ferramentas open source, e padrões abertos e reconhecidos no mercado. O sistema desenvolvido deverá possuir as seguintes características:

  • suporte ao sistema operacional Linux, sem a necessidade de instalação dos ambientes gráficos KDE ou GNOME, ou do toolkit Qt;
  • suporte a múltiplas unidades de armazenamento e visualização e gerenciamento dos ativos mesmo na ausência dos arquivos originais;
  • suporta a organização dos ativos por meio de estruturas de diretórios e coleções;
  • suporte completo a metadados EXIF, IPTC e XMP (imagens e vídeos), e ID3 (áudio);
  • suporte a atributos de avaliação, rótulos, seleção;
  • gerenciamento de cópias de segurança.

Uma restrição imposta ao sistema a ser desenvolvido é a forma de licensiamento, pois o sistema será disponibilizado sob a licença GPL versão 3, o que acaba por limitar as ferramentas que podem ser utilizadas na sua criação.

Objetivos

Objetivos Geral

O objetivo deste projeto é criar um sistema de gestão de ativos digitais, capaz de controlar dezenas de milhares de arquivos, de forma segura e eficiente, baseando seu desenvovimento em tecnologias livres e padrões abertos do mercado.

Objetivos Específicos

Para atingir o objetivo principal do projeto, deverão ser realizados os seguintes objetivos específicos:

  1. ingestão de arquivos de mídia com controle sobre o nome dos arquivos e estrutura de diretórios;
  2. facilitar a organização e localização de ativos digitais, em bibliotecas com dezenas de milhares de elementos;
  3. auxiliar na manutenção dos metadados dos ativos;
  4. permitir a classificação dos ativos a partir de atributos como avaliação, rótulo e seleção;
  5. facilitar a utilização de palavras-chave para classificar e encontrar ativos, utilizando hierarquias de palavras-chave;
  6. facilitar operações em grandes volumes de arquivos e em tarefas repetitivas com a utilização de gabaritos criados pelo usuário;
  7. facilitar a conversão dos ativos para o formato desejado quando da exportação do ativo para uso externo ao sistema;
  8. permitir a visualização de ativos e a modificação dos seus atributos e metadados, mesmo na ausência do ativo original, realizando a sincronização das informações quando o ativo estiver novamente presente;
  9. gerenciar os ativos digitais presentes em múltiplos volumes de armazenamento;
  10. gerenciar cópias de segurança dos ativos, durante a ingestão e durante a utilização do sistema.

Análise de Tecnologias de Ferramentas

As ferramentas e tecnologias citadas nesta seção estão sendo avaliadas com relação a sua utilização ou não no projeto. A primeira etapa do desenvolvimento do projeto incluirá a avaliação de cada uma delas, para se sejam definidas quais tecnologias e ferramentas serão aplicadas.

Uma restrição que se impõe na escolha das ferramentas é a sua distribuição sob alguma licença de software compatível com a licença GPL versão 3 (FSF, 2016), os conceitos de software livre da Free Software Foundation.

Python

A linguagem de programação Python3 foi desenvolvida por Guido van Rossum, com divulgação pública em fevereiro de 1991. Os principais objetivos da linguagem são manter a simplicidade e a facilidade de leitura do código. Atualmente, a linguagem possui duas versões que são mantidas em paralelo, a versão 2.7 e a versão 3.5, que são incompatíveis entre si.

Neste projeto será utilizada a versão 3.5 da linguagem. A linguagem foi escolhida por fornecer uma estrutura muito eficiente para o processamento de listas de elementos, facilidades para integração com o sistema operacional e o uma grande quantidade de módulos desenvolvidos para auxiliar em diversas tarefas, disponíveis no Python Package Index (PyPI) (em julho de 2016, haviam 83.944 módulos disponíveis no PyPI).

Gtk+

O toolkit gráfico GTK+, atualmente na versão 3.20, provê uma coleção de objetos como botões, menus, e diálogos, para a criação de interfaces gráficas em aplicações desktop, oferecendo suporte aos sistemas operacionais Windows, Linux e macOS. Distrubuido sob a licença GNU LGPL, o GTK+ é utilizado pelos ambientes gráficos GNOME e XFCE, e por programas como GIMP, programa para edição de imagens e a origem do GTK+, Inkscape, programa para edição de gráficos vetoriais, e o VMware Workstation, aplicação para virtualização de hardware.

Para poder utilizar o GTK+ em conjunto com a linguagem Python, será utilizado o módulo PyGObject (PyGI).

ExifTool

O ExifTool permite a leitura e alteração de metadados em diversos formatos de arquivos, incluindo arquivos de áudio, imagens e vídeo, provendo suporte a diversos conjuntos de metadados, como EXIF, IPTC e XMP. Foi desenvolvido por Phil Harvey e distribuida sob uma licença de software open source, será utilizada no projeto para obter os metadados dos arquivos originais e criar os arquivos XMP, quando necessário.

O uso desta ferramenta adiciona ao projeto a dependência a um interpretador Perl, linguagem de programação na qual foi desenvolvida a ferramenta.

Pillow Python Imaging Library

O Pillow é um módulo de tratamento de imagens da linguagem Pyhton, que oferece excelente suporte a diferentes tipos de arquivos de imagem, e diversos serviços para o tratamento e processamento de imagens.

O módulo é derivado de um outro módulo, o PIL (Python Image Library), e o principal motivo que levou a criação do Pillow, é que o módulo PIL original não provê suporte à versão 3 da linguagem Python, e este também é o motivo da escolha do Pillow para este projeto.

FFMpeg

O FFMpeg é um framework multimidia cujo objetivo, de acordo com a descrição do próprio projeto (FFMpeg,2016), é realizar todos os tipos de operações esperadas em "todos os formatos criados por humanos e máquinas". O framework oferece, realmente, suporte a maioria dos formatos de áudio e vídeo existentes no mundo, e está disponíveil para diversas plataformas, incluindo Linux, Windows e macOS.

Neste projeto, o FFMpeg e suas ferramentas serão utilizados no processamento de arquivos de áudio e vídeo.

SQLite

O SQLite 3 é uma biblioteca de software que implementa um sistema de banco de dados SQL que funciona sem um servidor externo, criando um banco de dados relacional completo, que inclui múltiplas tabelas, índices, e outros elementos embutidos em um único arquivo no sistema de arquivos utilizado.

Utilizado por vários sistemas de gerenciameno de ativos digitais, como o Adobe Lightroom e o Phase One Media Pro, o SQLite oferece uma boa opção com relação a velocidade de processamento, a capacidade de lidar com grandes bibliotecas de ativos, e uma interface SQL (structured Query Language) para acesso aos dados.

Outras ferramentas

O sistema utilizará outras ferramentas na sua elaboração e para a execução de algumas tarefas. O principal aspecto na escolha dessas ferramentas, além de suas funcionalidades, é a licença sob a qual são distribuídas, que deve ser compatível com a licença GNU GPL versão 3.

rsync

O rsync é uma ferramenta que provê cópia incremental de arquivos, distribuída sob a licença GNU GPL versão 3. Com a utilização desta ferramenta, é possível reduzir o tempo de cópia dos arquivos na realização de cópias de segurança, e, utilizando algumas de suas opções, copiar apenas arquivos alterados, arquivar arquivos excluídos de forma que seja possível corrigir exclusões acidentais, e utilizar armazenamento externo ou remoto. No caso de cópia remota, permite utilizar um canal segura de comunicação, com criptografia.

Dia

Todo os diagramas necessários para descrever o sistema serão gerados utilizando-se o Dia, um software para criação de diagramas com suporte a vários tipos de diagrama, desenvolvido para ambientes que utilizam o toolkit GTK+, e distribuído sob a licença GNU GPL versão 2.

Embora não seja a aplicação mais produtiva, ou que gere os diagramas com a melhor qualidade, esta aplicação foi escolhida devido ao ambiente para o qual foi desenvolvido, semelhante ao ambiente para o qual o projeto está sendo desenvolvido, e por causa da licença utilizada.

Descrição da Solução

O sistema proposto irá gerenciar ativos, utilizando o conceito de catálogo, ou seja, será possível utilizar as funcionalidades do sistema mesmo na ausência dos ativos. A Figura 1 mostra o fluxo de trabalho utilizado no sistema. As etapas desse fluxo de trabalho são explicadas a seguir.

Visão Geral do Sistema Proposto.

Autor do projeto.

Sendo o objetivo principal do projeto, auxiliar o gerenciamento de grandes bibliotecas de ativos digitais, com foco em usuários do sistema Linux que utilizam ambientes gráficos baseados no framework GTK+, a solução proposta deverá permitir que o usuário possa realizar a ingestão de novos ativos no sistema, organizar estes ativos e selecioná-los por meios de filtros. Além disso, deve ser possível ao usuário, exportar estes ativos para utilização em outros sistemas, realizar cópias de segurança dos ativos e do próprio sistema, visualizar os ativos existentes, e verificar o histório de alterações realizadas em um ativo.

Todo sistema de gerenciamento de ativos digitais oferece um ou mais fluxos de trabalho aos usuários, e o sistema desenvolvido nesse projeto atuará de forma semelhante, permitindo que o usuário defina, com alguma liberdade, o melhor fluxo de trabalho que se adequa as suas necessidades.

O processo de ingestão dos ativos faz com que o sistema passe a controlar os metadados de um ativo, sua localização no sistema de arquivos, e obtenha informações sobre o ativo de forma que possa localizá-lo no caso de pesquisas futuras. Este processo, no entanto, deve ser realizado de forma que o ativo original não se perca no processo de ingestão, pois em diversos casos, a cópia original é a única existente (por exemplo, na ingestão de imagens recém obtidas por uma câmera fotográfica digital). Para garantir que o ativo foi inserido corretamente no sistema, não será permitido que o ativo original seja excluído antes que sua existência no sistema seja garantida. Para garantir a cópia correta do ativo durante a ingestão, quando esta for necessária, será realizado um cálculo de assinatura digital do arquivo utilizando o algoritmo MD5 (Rivest, 1992). Apesar dos problemas com relação a colisões no uso do MD5 para criptografia (Sotirov et al., 2008), o algoritmo é útil para verificar se dois arquivos são diferentes, pois mesmo uma pequena modificação em um dos arquivos irá gerar códigos MD5 completamente diferentes. Para evitar a leitura de todo o arquivo, o algoritmo de comparação utilizará apenas os metadados do arquivo para calcular a sua assinatura.

Para o usuário, a ingestão de ativos no sistema oferecerá opções para copiar ou mover o arquivo original para uma estrutura de diretórios escolhida pelo usuário, ou criada de acordo com regras definidas também pelo usuário. Estas regras podem incluir informações relativas a data de criação do arquivo original, ou informações inseridas pelo usuário. O nome do arquivo também pode ser alterado utilizando informações inseridas pelo usuário, ou utilizando metadados obtidos a partir do arquivo original. A opção de mover um arquivo será executada mediante uma cópia do arquivo, e remoção do arquivo original apenas em caso de sucesso desta cópia, como descrito anteriormente. Outra opção dada ao usuário na ingestão de ativos é utilizar o arquivo original sem alterar a sua localização.

Durante a ingestão, o sistema irá extrair os metadados do ativo e alimentar a base de dados do sistema com esses dados. Para cada ativo será criado também uma pré-visualização, mediante conversão do ativo para um formato que permita visualizar o ativo, mantendo suas características, porém utilizando compressão de dados para que diminua o impacto no consumo de armazenamento secundário.

Para alguns usuários, por exemplo fotojornalistas, é importante que o sistema facilite a inclusão e edição de alguns metadados específicos, principalmente os relacionados ao conjunto IPTC. Para auxiliar nesse aspecto, o sistema permitirá a criação de gabaritos definidos pelo usuário contendo um conjunto de metadados que poderão ser aplicados aos ativos durante a ingestão no sistema, ou após, quando já estiverem catalogados.

Também durante a ingestão, será dada ao usuário a opção de criar uma cópia de segurança dos ativos. Esta cópia de segurança seguirá as mesmas regras definidas para a ingestão no sistema, incluindo a estrutura de diretórios. Podem ser escolhidos até dois dispositivos para efetuar esta cópia de segurança. Ao contrário das cópias de segurança realizadas após a ingestão dos ativos, esta não será monitorada pelo sistema, e o seu objetivo é apenas garantir uma segunda cópia imediata do arquivo original, para diminuir os riscos de perda dos ativos em caso de problemas de hardware, ou corrupção de dados.

Com a criação de um pré-visualização do ativo, e a inclusão dos seus metadados na base de dados do sistema, será possível a utilização do sistema para pesquisa e visualização dos ativos mesmo que o arquivo do ativo não esteja disponível. Dessa forma, o sistema permitirá a sua utilização como um catálogo, permitindo ao usuário todas as funcionalidades do sistema, que serão sincronizadas com o arquivo original no momento que este arquivo esteja novamente acessível.

Com relação a organização dos ativos, o sistema permitirá o controle da estrutura de diretórios tanto na ingestão, como posteriormente, permitindo que os ativos sejam movidos a partir do sistema. O usuário poderá também renomear os arquivos a partir do sistema, com as mesmas funcionalidades oferecidas durante a ingestão.

Além do controle de diretórios, o sistema contará com organização em coleções, que podem ser criadas pelo usuário mediante a inserção manual de ativos, ou criando as coleções a partir de regras de pesquisa, que podem incluir atributos e metadados. As coleções criadas a partir de regras podem ser abertas, onde novos ativos são adicionados ou removidos automaticamente caso seus metadados ou atributos sejam alterados e com isso a regra se aplique ao ativo, ou fechadas, quando os ativos ao quais a regra se aplique serão adicionados à coleção, mas a regra não será mais aplicada a novos ativos ou à ativos que tenham seus metadados e atributos alterados. As coleções criadas a partir de regras, e abertas, serão chamadas de "coleções inteligentes".

O sistema criará para todos os ativos um conjunto de atributos que permitirá, junto com os metadados, auxiliar da seleção destes ativos. Os atributos utilizados serão a avaliação, onde será utilizado o sistema de zero a cinco estrelas, comum na maioria dos projetos correlatos analizados, a utilização de marcação de seleção e rejeição, e a utilização de rótulos, com 10 cores e nomes definidos pelo usuário.

Para identificação e seleção dos ativos, será utilizado também um sistema de palavras-chave, com a utilização de palavras-chave hierárquicas. A vantagem da utilização de hierarquias nas palavras-chave é facilitar a adição de diversas palavras chave a um ativo a partir da seleção de poucas palavras-chave, uma vez que ao aplicar a palavra-chave selecionada, todas as palavras-chave da hierarquia também são adicionadas ao ativo. As palavras-chave terão controle sobre quais serão exportadas junto com o ativo, permitindo ao usuário a criação de palavras-chave privadas, que podem ser utilizadas para pesquisar por um ativo dentro do sistema, mas não são apresentadas a sistemas externos, quando o ativo é exportado para uso nestes sistemas.

Uma das grandes vantagens de se utilizar um sistema de gerenciamento de ativos digitais com cátalogo, é a possibilidade de localizar rapiademente os ativos baseados nos metadados e atributos. O sistema proposto neste projeto permitirá a pesquisa por ativos utilizando qualquer atributo ou metadado. O usuário poderá criar uma seleção com regras como "fotos com três estrelas, cavalos, em orientação vertical", e o sistema criará um filtro mostrando as fotos que possuem estas características. O mesmo sistema de seleção será utilizado para a criação de coleções.

O sistema proposto também terá a capacidade de exportar o ativo gerenciado para uso em outras aplicações, como outros sistemas, impressão, publicação, etc. Para isso, o sistema irá utilizar ferramentas já existes que permitem a conversão entre tipos diferentes de arquivos, e permitirá ao usuário configurar a forma como o ativo será exportado, dentro das limitações apresentadas pelas ferramentas utilizadas.

Uma das características a serem desenvolvidas que não estão presentes nos sistemas analizados é o gerenciamento de cópias de segurança, tanto dos dados do catálogo de ativos, quanto dos ativos gerenciados. O sistema permitirá ao usuário configurar dispositivos de armazenamento externo ou remotos para realizar as cópias de segurança, e irá avisar o usuário quando não for possível realizar estas cópias por um tempo muito longo. Uma restrição desta funcionalidade com relação aos dispositivos remotos de armazenamento é a necessidade de acessar o dispositivo utilizando a ferramenta rsync, ou que seja possível acessar o dispositivo remoto como se ele fosse um dispositivo local.

O sistema será implementado em módulos independentes, permitindo que sejam desenvolvidas interfaces de usuário diferentes para o sistema. Desta forma, será possível utiliar o sistema de várias formas, dependendo do ambiente do usuário. Duas interfaces serão implementadas, uma interface em ambiente gráfico com GTK+, e uma em linha de comando, para testes das funcionalidades, o que facilitará a criação de outras interfaces no futuro.

Abordagem de Desenvolvimento

Para o desenvolvimento do sistema será adotada uma abordagem baseada no Scrum, que é um framework para o gerenciamento de projetos ágeis de desenvolvimento de software, porém, como o Scrum é definido para pequenos times de desenvolvimento, e o projeto será desenvolvido por apenas uma pessoa, serão realizadas algumas modificações no framework para adptá-lo a realidade do projeto.

Os pilares do Scrum (Scrum Alliance, 2014) são:

  • a transparência, que garante que todos saibam claramente o que está acontecendo no projeto e possam tomar ações necessárias, o que exige uma comunicação clara e objetiva de todos os envolvidos;

  • a inspeção, para que sejam identificadas variações não desejadas no desenvolvimento que possam impedir que o objetivo de cada ciclo de desenvolvimento seja atingido;

  • a adaptação, que requer que o processo seja adaptado sempre que este não auxiliar para que o time atinja os objetivos traçados.

O Scrum, quando utilizado com uma equipe de desenvolvimento, apresenta três papéis principais que são o Product Owner (dono do produto), o Scrum Master e o Development Team (time de desenvolvimento). A principal responsabilidade do Product Owner é gerenciar o Product Backlog, uma lista ordenada por prioridade de tudo que será necessário para a criação do produto, incluindo todas as funcionalidades, requisitos, melhorias e correções que serão realizadas no produto nas suas versões futuras. O Scrum Master é responsável por garantir que o processo é compreendido e corretamente utilizado. O Develpment Team é responsável por construir o produto, garantindo que ao final do ciclo de desenvolvimento seja entregue um incremento ao produto de forma que este possa ser liberado ao cliente.

Para que o processo seja eficiente, alguns eventos são definidos pelo Scrum. Todos os eventos são centrados na Sprint, ou ciclo de desenvolvimento. Uma sprint tem duração de uma a quatro semanas, onde é desenvolvido um incremento ao produto que potencialmente será liberado para o cliente. As sprints contém os outros eventos do Scrum, como as reuniões diárias, micro-reuniões realizadas normalmente em pé, onde cada membro da equipe relata o que fez no dia anterior, o que fará naquele dia, e se possui algo impossibilitando seu trabalho. Outros eventos que ocorrem durante a sprint são a Sprint Planning (planejamento), onde o Product Owner define que itens do Backlog de Produto serão desenvolvidos; a Sprint Review (revisão de sprint), onde o que foi criado é avaliado e o Backlog de Produto é atualizado, com repriorização dos itens; e a Sprint Retrospective (retrospectiva de sprint), onde são avaliados os aspectos positivos e negativos com relação ao processo.

Um conceito importante dentro da Sprint é a avaliação do término das funcionalidades, e para isso, deve ficar claro, em cada tarefa a ser executada, o "conceito de pronto" (Panchal, 2008). Definindo corretamente quando algo está pronto, tanto em termos de funcionalidades, como com relação a qualidade da entrega, permite avaliar melhor a evolução do produto e possíveis problemas que possam surgir durante o seu desenvolvimento.

Este projeto irá utilizar Scrum para o gerenciamento do projeto, porém, algumas ressalvas deverão ser criadas e o framework deverá ser adaptado ao desenvolvimento com um time de um único desenvolvedor.

Uma forma de adaptar o uso do Scrum, documentando estas adaptações é utilizar os Scrumbuts. Um scrumbut é uma justificativa pela qual algum dos eventos, papéis ou artefatos do Scrum deve sofrer alguma alteração, sempre com o intuito de manter o projeto em direção a seus objetivos. Os scrumbuts possuem uma sintaxe específica: (ScrumBut)(Motivo)(Modificação).

Para a realização deste projeto serão utilizados os seguintes Scrumbuts:

  • (Será utilizado Scrum, mas)(há apenas um desenvolvedor,) (logo, não existirá o papel de Scrum Master).
  • (Será utilizado Scrum, mas)(há apenas um desenvolvedor,) (logo, não existirão reuniões diárias).
  • (Será utilizado Scrum, mas)(o desenvolvedor é especialista no problema sendo tratado,) (logo, acumulaŕa o papel de Product Owner).
  • (Será utilizado Scrum, mas)(o desenvolvedor é o Product Owner,) (logo, não serão realizadas Sprint Reviews).

Em resumo, para a execução do projeto, será adotada uma versão adaptada do Scrum, onde o projeto será desenvolvido por apenas uma pessoa, que irá acumular os papéis de time de desenvolvimento e Product Owner, serão executadas sprints de duas semanas, onde ocorrerão os eventos Sprint Planning, Sprint Retrospective. Serão utilizados os artefatos Backlog de Produto, para o gerenciamento das funcionalidades a serem desenvolvidas, e Sprint Backlog para o gerenciamento das tarefas a serem realizadas em cada sprint.

Como o projeto utiliza um único desenvolvedor, o qual também assume o papel de Product Owner, serão realizadas Experiências Hands-On, onde o sistema desenvolvido será apresentado para a avaliação de usuários. Estes eventos podem não ser realizados a cada sprint, e dependerão do produto entregue na sprint, e da disponibilidade de usuários para esta avaliação.

Arquitetura do Sistema

Durante o desenvolvimento do sistema, serão criados artefatos para definir funcionalidades específicas do sistema, de acordo com a necessidade, como o diagrama Entidade-Relacionamento (ER), para a modelagem de dados, diagramas de fluxo de dados (DFD), quando o fluxo dos dados for importante, ou diagramas de classes ou seqüência. A interface com o usuário, também será definida apenas quando necessário.

Serão descritas também as Sprints realizadas, onde serão mostrados os resultados dos eventos de planning, review e retrospectiva, e a cada sprint será gerado Sprint Backlog e atualizado o backlog do produto.

A cada sprint, serão utilizadas histórias de usuário para definir os requisitos de cada funcionalidade, as quais terão o formato semelhante à "Sendo eu <ator>, Quero <ação>, Para <objetivo>", e incluirão também a definição do "conceito de pronto", que servirá de guia para a validação da sprint e de testes que garantirão a qualidade da entrega.

Product Backlog

Devido a abordagem de desenvolvimento escolhida, neste momento, o projeto é orientado pelos objetivos a serem alcançados, e a partir destes, foram criadas uma série de funcionalidades que se acredita serem necessárias para atingir os objetivos propostos. O Quadro 3 mostra os itens do Product Backlog, como definidos na incepção do projeto.

Backlog do produto.

Item Prioridade
Ingestão de ativos digitais. Alta
Extração de metadados dos ativos digitais e inclusão na base de dados. Alta
Localização de ativos digitais a partir de metadados. Alta
Associar palavras-chave aos ativos do sistema para identificação dos mesmos Alta
Criar estrurutras hierarquicas de palavras-chave e permitir a associação de toda a estrutura a um ativo do sistema. Alta
Exportar ativos do sistema para distrubuição, incluindo metadados e palavras-chave. Alta
Criar e gerenciar cópias de segurança do catálogo e dos ativos ingeridos no sistema. Alta
Permitir a atribuição um valor (rating) ao ativo. Média
Permitir a atribuição um rótulo (label) ao ativo. Média
Permitir a atribuição uma marcação de selecionado ou rejeitado ao ativo. Média
Permitir que palavras-chave selecionadas não sejam exportadas junto com os ativos. Média
Criação de coleções de ativos do sistema por seleção ou a partir de metadados ou atributos. Média
Criar e aplicar pré-definições de metadados. Baixa
Converter ativos do sistema para outros formatos. Baixa
Gravação dos metadados de ativos do sistema no formato XMP. Baixa
Importação dos metadados de ativos que possuam metadados no formato XMP. Baixa

Autor do projeto.

Validação

Ao desenvolver um sistema utilizando Scrum, estamos adicionando novas funcionalidades, ou melhorando funcionalidades existentes com o sistema em produção. Isto requer que todas as entregas do sistema tenham grande qualidade para que funcionalidades do sistema não parem de funcionar, ou que não sejam negativamente afetadas por novas modificações.

Para garantir esta qualidade, na definição das tarefas das sprints é criado o conceito de pronto para cada tarefa (neste projeto, serão utilizadas histórias de usuário). Uma vez que as funcionalidades foram entregues de acordo com o conceito de pronto, e ao final da sprint sejam aceitas pelo Product Owner (papel desenmpenhado pelo autor do projeto), a sprint e as funcionalidades implementadas serão consideradas entregues com sucesso.

Estratégia de Validação

O usuário alvo deste projeto é um usuário que mantém uma grande base de dados de imagens, vídeos e/ou audio. Em geral, este usuário já utiliza algum sistema para gerenciamento de seus ativos digitais, mesmo que o sistema utilizado atenda apenas em parte as características propostas neste projeto. Para este usuário, a substituição do sistema é algo custoso, pois envolve o aprendizado de um novo sistema, e a transferência dos dados de um sistema a outro, e não há previsão, neste momento, de realizar a importação de ativos de outros sistemas.

Como o autor e único desenvolvedor do projeto acumula também o papel de Product Owner, ao longo do desenvolvimento serão realizados eventos de Experiência Hands-On, onde o projeto será apresentado a usuários de sistemas correlatos, os quais são possíveis usuários futuros do sistema, que utilizarão o sistema em uma instalação de teste, e após, serão entrevistados com questões sobre a usabilidade do sistema, sua percepção sobre a utilidade das funcionalidades propostas, e sobre a possibilidade do usuário adotar o sistema no futuro.

Cronograma

Este projeto está sendo executado durante o meu tempo extra, e não há previsão de reserva de horas para executar o projeto. O cronograma apresentado aqui é um cronograma que seria viável se este projeto fosse realmente executado como um trabalho de conclusão de curso. Consulte o Cronograma de TCC para ter uma ideia do período disponível para execução do TCC.

Lembre-se, ao criar o cronograma e o escopo do projeto, que você terá, sem contar o período de férias, aproximadamente 24 semanas dedicadas ao desenvolvimento do sistema, as outras 16 semanas serão dedicadas a outras tarefas do projeto, como preparação do texto, bancas avaliadoras, etc.

Em um TCC "regular", você indicaria datas e não "semanas". Fiz o cronograma dessa forma "atemporal"para ajudá-lo a definir o seu cronograma.

O cronograma do projeto foi dividido em ciclos de desenvolvimento, com uma previsão dos itens que serão desenvolvidos em cada ciclo. No entanto, devido à repriorização de itens, comum em abordagens de desenvolvimento ágeis, as datas e a ordem das atividades poderá ser alterada. O cronograma também inclui as datas definidas para atividades e entrega de artefatos requeridas pela Faculdade Senac Porto Alegre para a execução do Trabalho de Conclusão de Curso.

Cronograma do Trabalho de Conclusão 1.

Atividade Data de Início Descrição
Entrega do Plano de Trabalho 6a semana Elaboração do plano de trabalho.
Primeiro ciclo de desenvolvimento 7a semana Ingestão de ativos.
Segundo ciclo de desenvolvimento 9a semana Localização de ativos a partir de metadados.
Terceiro ciclo de desenvolvimento 11a semana Atribuição de palavras-chave.
Quarto ciclo de desenvolvimento 13a semana Gerenciamento de cópias de segurança.
Entrega do Relatório Parcial 15a semana
Quinto ciclo de desenvolvimento 16a semana Exportar ativos do sistema.
Banca avaliadora do Relatório Parcial 17a semana
Sexto ciclo de desenvolvimento 19a semana Atribuição de valores, rótulos e seleção a ativos.

Autor do projeto.

Cronograma do Trabalho de Conclusão 2.

Atividade Data Descrição
Sétimo ciclo de desenvolvimento 1a semana Controle das palavras-chave exportadas.
Oitavo ciclo de desenvolvimento 3a semana Criação de coleções por seleção ou metadados/atributos.
Nono ciclo de desenvolvimento 5a semana Suporte a pré-definições de metadados.
Décimo ciclo de desenvolvimento 7a semana Conversão de formatos de ativos.
Entrega do Relatório de Andamento 8a semana
Apresentação do Relatório de Andamento 9a semana Banca de qualificação do TCC.
Décimo Primeiro ciclo de desenvolvimento 10a semana Suporte a arquivos XMP.
Décimo Segundo ciclo de desenvolvimento 12a semana Correções de defeitos.
Validação final 14a semana Validação final e e análise dos resultados.
Entrega do Relatório Final 16a semana
Apresentação do Relatório Final 18a semana Banca avaliadora final.
Correções do Relatório Final 19a semana
Entrega do Relatório Final corrigido. 20a semana Publicação do documento na biblioteca.

Autor do projeto.

Componentes Reutilizados

rsync
O rsync é um utilitário para cópia de arquivos utilizado para arquivamento e cópia remota dos dados, permitindo copiar apenas arquivos que foram modificados, reduzindo o volume de dados que devem ser copiados, acelerando o processo.

md5sum
O md5sum é um aplicativo que gera uma assinatura digital a partir de um conjunto de dados, e será utilizado para verificar se as cópias de arquivos realizadas terminaram com sucesso, sem corromper os dados dos arquivos.

Referências

Uma "liberdade poética" que está sendo tomada neste trabalho é a utilização de hiperlinks para as referências. Em um TCC regular, você iria inserir aqui todas as referências utilizadas para consulta e citações, e estas deveriam ser, preferencialmente, publicações revisadas, como livros, artigos científicos em congressos e periódicos, etc.

Revise o texto e veja onde e como as referências foram utilizadas. Cada link no texto é uma referência, uma citação.

  1. 500px: How to add effective keywords to your photos and get discovered by buyers.
  2. Adobe Camera Raw: Software Adobe Camera Raw.
  3. Adobe Lightroom: Software Adobe Photoshop Lightroom.
  4. Adobe Photoshop: Software Adobe Photoshop.
  5. Apple: Apple, Inc.
  6. Apple macOS: Sistema Operacional macOS.
  7. Atlantic, The: How Many Photo.
  8. Capture One: Software Phase One Capture One.
  9. CodeReplacements.com: Serviço de mnemonicos para fotojornalistas.
  10. COHN, Mike: Succeding with Agile. Addison Wesley, 2009.
  11. darktable: Software darktable.
  12. Dia: Ferramenta para criação de diagramas.
  13. digiKam: Software para gerenciamento de imagens do KDE.
  14. Digital Asset Management: Digital Asset Management, Wikipedia.
  15. Digital Negative - DNG: Adobe Digital Negative.
  16. Dublin Core Metadata Initiative: Dublin Core Metadata Initiative.
  17. ExifTool: Ferramenta para leitura e alteração de metadados.
  18. F-Spot: Antigo gerenciador de imagens do GNOME.
  19. FFMpeg: Framework para processamento de vídeo e áudio.
  20. Free Software Foundation: Free Software Foundation.
  21. ______: Licenças compatíveis com a GPL versão 3. 2016. Acessado em 06/07/2016.
  22. Getty Images: Getty Images keyword guide.
  23. GIMP: GNU Image Manipulation Program.
  24. GNOME: The GNOME Desktop.
  25. GNU General Public License v.2.0: Licença de software publicada pela Free Software Foundation.
  26. GNU General Public License v.3.0: Licença de software publicada pela Free Software Foundation.
  27. GNU Lesser General Public License v.2.1: Licença de software publicada pela Free Software Foundation.
  28. Inkscape: Software para desenho vetorial.
  29. IPTC: International Press Telcommunication Council
  30. IPTC Photo Metadata: IPTC Photo Metadata Standard. 2014. Acessado em 11/07/2016.
  31. ISO:Graphic technology -- Metadata for graphic arts workflow -- XMP metadata for image and document proofing.
  32. JPEG: Formato de arquivo JPEG.
  33. KDE: The K Desktop Environment.
  34. KROGH, Peter: The DAM Book, 2a Edição.
  35. Linux: Sistema Operacional Linux.
  36. Media Pro: Software Phase One Media Pro SE.
  37. Microsoft: Microsoft, Corp.
  38. Microsoft Windows: Sistema Operacional Microsoft Windows.
  39. Oluhole, Dele: Agile Methodology Is Not All About Exploratory Testing. Março, 2013. Acessado em 10/07/2016.
  40. PANCHAL, David: What is Definition of Done (DoD)?. Setembro, 2008. Acessado em 09/07/2016.
  41. Perl: Pratical Extraction and Report Language.
  42. Phase One: Phase One.
  43. Photomechanic: Camera Bits Photo Mechanic 5.
  44. PIL: Python Imaging Library.
  45. PNG: Portable Network Graphics file format specification.
  46. PyGObject: Módulo GTK+ 3 para a linguagem Python.
  47. Python: Linguagem de programação Python.
  48. Python Package Index: Repositório de módulos para a linguagem Python.
  49. Qt: The Qt Framework.
  50. RawTherapee: Software RawTherapee.
  51. RFC 5013: The Dublin Core Metadata Element Set RFC.
  52. RIVEST, Ron: The MD5 Message-Digest Algorithm. Abril, 1992. Acessado em 11/07/2016.
  53. rsync: Ferramenta para cópia incremental de arquivos.
  54. Scrum Alliance: The Scrum Guide, 2014.
  55. Scrum.org: What is Scrum?. Acesso em 09/07/2016.
  56. ______: Scrumbuts and Modifying Scrum. Acesso em 09/07/2016.
  57. Shotwell: Shotwell Photo Organizer.
  58. SOTIROV, Alexander; et al.: MD5 considered harmful today. Dezembro, 2008. Acessado em 09/07/2016.
  59. SQL: Structured Query Language.
  60. SQLite 3: The SQLite Software Library.
  61. TIFF: Tagged Image File Format Specification.
  62. Universal Serial Bus: Universal Seria Bus.
  63. VMware: VMware Workstation Pro.
  64. XFCE: Ambiente gráfico para sistemas operacionais baseados no UNIX.


  1. Em junho de 2016, a Apple alterou o nome do seu sistema operacional de Mac OS X para macOS↩︎

  2. Raw, em português "cru", é um formato de arquivo específico de cada câmera digital, que contém os dados como foram obtidos pelo sensor da câmera, o que, teoricamente, permite uma maior amplitude de alterações mantendo a qualidade da captura, ao contrário de formatos de arquivos já processados, como JPEG, no entanto, é necessária a utilização de um programa "conversor RAW", para que os dados possam ser visualizados e utilizados. ↩︎

  3. O nome da linguagem é baseado no grupo humorístico inglês Monty Python↩︎