segunda-feira, dezembro 17, 2007

Arquitetura de Sistemas de Informação

A idéia de que sistemas de informação devem ter uma arquitetura é compartilhada por vários autores e é anterior ao movimento, hoje em moda, chamado SOA. Essa nota é preliminar a uma futura nota sobre SOA.

No artigo sobre Organização Federativa eu tinha proposto uma visão de arquitetura centrada na idéia de federação.

O que vou relatar aqui é um resumo de um livro, lido há bastante tempo, que considero bastante relevante para o entendimento do conceito de arquitetura de sistemas de informação. Trata-se do livro “ Building Enterprise Information Architectures” de Melissa A. Cook. Melissa fornece uma visão prática de como propor uma arquitetura de SI, baseada em sua experiência profissional, na HP, e no artigo, clássico, de John Zachman.

O livro baseia-se na primeira versão do “framework” de Zachman (em Inglês, em Português (Wikipedia)). Vale lembrar que esse “framework” evoluiu e incorporou o esquema das perguntas de qualidade (5w1h), e é, hoje, uma referência na área. Na visão de Cook, existem três tipos de arquitetura (dados, processos e tecnologia), mas no artigo de Zachman têm-se: dados, processos e rede.

O “framework” usado no livro é uma matriz com 6 linhas e 3 colunas. As colunas representam a perspectiva que pode ser: dados, processos e tecnologia. As linhas são: Visão Geral, Visão do Dono, Visão do Arquiteto (“Designer”), Visão do Construtor, Representação Detalhada e Sistema em Funcionamento. O livro tem por objetivo abordar a sub-matriz (1,1;1,2;2,1;2,2) ou seja os dois primeiros níveis de abstração (Visão Geral e Visão do Dono) tanto sob a perspectiva de dados como pela perspectiva de processos. Com isso acredita que terá uma visão da organização. A grande ênfase é que essa visão é uma visão horizontal e não vertical da organização. Ou seja, ou invés de entender a organização através do conhecimento acumulado de cada um dos seus departamentos (visão vertical) passa-se a ter uma visão integradora e entendida como horizontal. A perspectiva tecnológica é tratada a parte.

O processo sugerido pelo livro é o seguinte:

Sub-Matriz (Visão Geral, Processo): a construção da visão geral da arquitetura de processos é feita com base em um processo de colaborativo no qual lista-se as principais classes de processos da organização, ou funções da organização e suas definições. Por exemplo: vendas, marketing, produção. Para isso utiliza-se o conceito de classificação e evita-se redundância entre essas descrições.

Sub-Matriz (Visão Geral, Dados): a construção da visão geral da arquitetura de dados é também baseada em um processo colaborativo para chegar-se as classes de dados. Parte-se das funções para, utilizando-se de técnicas de modelagem de dados, chegar-se à classes de dados refinadas. A autora sugere o uso de meta classes do tipo: gente, lugar, coisa e evento. O uso dessas meta classes ajuda na elaboração de classes de dados. Por exemplo: (pessoa, organização), (ordens de compra, vendedores), (orçamento, previsão, cotas).

As Sub-Matrizes da Visão do Dono é considerada pela autora a visão do sistema de informação. Seu processo básico é composto de 3 sub-processos. Primeiro, para cada função do negócio identifica-se todas as entidades presentes na lista da visão geral que são criadas por esta função. Segundo, refina-se a Visão Geral de tal modo que haja um mapeamento um para um entre funções e classes de dados. Esse mapeamento define fronteiras entre sistemas de informação. Terceiro, identifique para cada entidade das classes de dados, uma função primitiva, que pertença à classe de funções, que crie essa identidade. O ferramental básico para a criação da Visão do Dono é uma matriz que mapeia funções primitivas e entidades e nomeia as células com as etiquetas cria, lê, atualiza e apaga. Em inglês essa matriz é conhecida pelo nome de “CRUD” (veja nas páginas de 36 a 42, uma explicaçõe e um exemplo dessa matriz) e é bastante útil no mapeamento entre dados e processos.

O resultado esperado é que se define um conjunto de sistemas de informação em que cada um é coeso e em que cada um está fracamente acoplado com outros. Isso ocorre porque cada sistema de informação servira uma função do negócio e terá acesso de escrita a apenas àquelas entidades que são de sua responsabilidade criar. Outros sistemas interagem com um sistema na medida em que tem acesso de leitura aos dados criados por este sistema. Essa visão de sistemas de informação baseia-se na perspectiva de tecnológica em que sistemas de informação comunicam-se através de permissão de leitura entre servidores de diferentes sistemas.

É interessante notar que nesse livro desenham-se heurísticas gerais para a obtenção de uma federação de sistemas, baseadas em um planejamento global com base no “framework” de Zachman. Muitas propostas atuais de SOA utilizam-se desse mesmo conjunto de premissas.

Em futura nota comentarei em mais detalhes os prós e contras dessa visão de arquitetura.

quinta-feira, novembro 29, 2007

O que faz o Profissional de Sistemas de Informação?

A atuação principal do bacharel em Sistemas de Informação é lidar com a informática no mundo corporativo. Seu constante desafio é saber empregar as tecnologias de informação ao contexto organizacional de forma eficaz e eficiente.

Portanto, sua atuação caracteriza-se por buscar uma sintonia entre uma infinidade de possíveis soluções de tecnologia e seu uso adequado numa organização Em função disso há enorme variedade nessa atuação profissional, tanto pelo universo das tecnologias de informação tanto como pelas diferentes características das organizações, que podem ser privadas, públicas, governamentais, não governamentais, reguladoras, internacionais, virtuais entre outras.

As organizações precisam de informações para seu funcionamento adequado. Essas informações são de tipos variados e servem diferentes propósitos.

Listamos abaixo algumas das tarefas que um profissional na área de Sistemas de Informação tem que fazer. É uma tentativa de ater-se, num alto nível de abstração, ao que consideramos as tarefas básicas sob o ponto de vista técnico. Aqui não incluímos os aspectos gerenciais, nem sociais relacionados.

As tarefas básicas são:

Lidar com Clientes (Clientes)

Esse tipo de tarefa exige contato com clientes, isto é com pessoas que querem algum resultado que envolve a informática.

Essas tarefas são particularmente interessantes para aquelas pessoas mais extrovertidas e que gostam de manter contato com outros profissionais. Reuniões e entrevistas são práticas freqüentes nesse tipo de tarefa. Aqui o profissional de informática tem possibilidade de aprender ou aprofundar seus conhecimentos em assuntos não diretamente ligados à informática.
Muitas vezes esse contato pode ser feito externamente a organização onde atua o profissional e pode envolver viagens.

Caso o profissional seja um vendedor ou consultor de empresas fornecedoras de tecnologia, seus clientes serão outros profissionais de informática que desejam algum serviço.

Lidar com Fornecedores (Fornecedores)

Esse tipo de tarefa exige que os profissionais tenham contato com outros profissionais da área, que desempenham funções ou de vendedores ou de consultores.
Essa tarefa exige dos profissionais da organização conhecimento técnico das tecnologias para que a decisão de compra seja a melhor possível. Nessa função é importante também estar pronto para aprender, porque na área de informática é grande a oferta de novos produtos ou serviços.
Muitas vezes é necessário que os profissionais tenham que fazer cursos de atualização para saberem escolher dentre as novas tecnologias. Esse tipo de tarefa exige também um viés empresarial, visto que muitas vezes o profissional pode estar encarregado de negociações. A convivência com consultores é comum na profissão o que aumenta também a oportunidade da aquisição de novos conhecimentos. Nesse tipo de tarefa também é comum o profissional participar de congressos ou feiras ou de visitas a fornecedores.

Vale observar que os pessoas trabalhando como fornecedores podem, também, ser profissionais de informática.

Escrever Documentos Técnicos (Escrever)

Esse tipo de tarefa é a que envolve mais conhecimento técnico. O profissional de informática escreve constantemente. Só que não necessariamente escreve em Português. Ele escreve normalmente em linguagens artificiais, isto é linguagens que tem regras próprias e muitas vezes são bem diferentes do Português ou do Inglês. Típico é escrever no que são chamadas linguagens de programação tais como C, Java, Visual Basic, Delphi, Php entre outras ou em linguagens de definição de texto como XML ou de marcação como Html. Usam-se também linguagens gráficas como a UML ou o MER ou o DFD para organizar o trabalho. Usam-se também linguagens parecidas com linguagens de lógica ou matemática. Claro que, para escrever nessas linguagens o profissional tem que saber lê-las. Essas linguagens são fundamentais, porque auxiliam o profissional na comunicação entre seus pares e auxiliam a comunicação com o computador.

Criar Organizadamente (Criar)

Mas o que escreve o profissional?

Os documentos que o profissional produz são os resultados de seu trabalho. Ele escreve sobre o entendimento do problema, ele escreve sobre as vantagens ou desvantagens de uma tecnologia, ele escreve a especificação de uma nova ou renovada solução de informática, ele escreve o conjunto de programas de computador, ele escreve os manuais, ele escreve as estruturas de dados (organização das informações), ele escreve os procedimentos que a organização usará para lidar com a solução de informática.

Mas é só escrever?

Claro que para escrever o profissional terá que utilizar seus conhecimentos técnicos para criar soluções que sejam condizentes com a organização. Essa criação de soluções necessita criatividade associada com as práticas já consolidadas na profissão.

Usar Conhecimentos Técnicos (Técnicas)

Esse tipo de tarefa pode envolver cálculos simples ou complexos, manipulação de fórmulas complexas, composição de "quebra-cabeças", raciocínio lógico, cálculos lógicos, indução, dedução e capacidade de reconhecer situações onde uma solução já existente pode ser aplicada.

Um matemático famoso, George Poyla, escreveu que, para se solucionar um problema, deve-se: a) entender o problema, b) propor um plano, c) levar o plano adiante e d) conferir o resultado. Esses passos devem ser uma preocupação constante no uso de conhecimentos técnicos.

Informações Adicionais:

Veja, aqui (click), a palestra proferida na PUC-Rio em Abril de 2008.; veja, também, outra nota sobre o tema (onde o modelo SADT é apresentado na versão 1.1).

Veja, aqui, uma lista de currículos de algumas universidades que oferecem o curso de bacharel em sistemas de informação.  Ajuda a ter uma idéia do que se precisa estudar, de acordo com cada universidade.

sábado, novembro 10, 2007

Ética Profissional

A razão dessa nota é o final do Capítulo 8 do livro do Sá Carvalho, que diz:

“Assim, poderíamos, sem grandes pretensões, relacionar alguns itens de uma possível ética profissional do Analista de Sistemas, tal como o entendemos:
1- Trabalhar para a obtenção de benefícios reais, ao nível da empresa e do país, através da elaboração de sistemas de informações úteis, eficazes, que atendam às efetivas necessidades de informações dos usuários, dentro de uma perspectiva de apoio as suas ações concretas no seu meio ambiente; evitar a simples mecanização geradora de desemprego de outros profissionais.
2- Disseminar a informação tecnológica aberta e claramente, traduzindo, para o público leigo, todos os aspectos que, por terem possível influência sobre suas vidas, lhe interessarem; desmistificar permanentemente o jargão e as colocações publicitárias que tendam a transmitir idéias falsas acerca de custos, benefícios e conseqüências práticas da tecnologia sobre a vida das pessoas e das empresas.
3- Manter perfeito sigilo acerca de todas as informações que tiver, por força de sua atividade profissional, acesso, concernentes a pessoas físicas e jurídicas, sua intimidade e interesse diretos.
4- Defender e desenvolver, por todos os meios, a tecnologia nacional adequada e adaptada às necessidades do país, evitando contribuir para a desnacionalização de nossos meios de produção, de nossa economia e, principalmente, de nossa cultura.
5- Não estudar ou projetar sistemas que possam representar prejuízos sociais ou ambientais.” Luiz Carlos de Sá Carvalho (Análise de Sistemas O Outro Lado da Informática, Editora LTC, 1988)

No texto de Sá Carvalho, vemos um viés nacionalista (4), uma preocupação com a privacidade (3), um princípio de preocupação com a transparência (2) e uma preocupação com o meio ambiente (5) e uma preocupação básica com os requisitos (exatidão) (1).

O texto de Sá Carvalho representa uma visão pessoal, sobre ética. Em minha opinião é um texto atual e mantêm os pontos principais de muito dos códigos de ética de entidades profissionais. Claro, sua visão nacionalista pode ser criticada por alguns. Sobre visões sobre ética vale a pena ler um comentário de Frei Betto sobre visões sobre o conceito de ética. Veja também o comentário do Frei Bento sobre ética.

O especialista nesse tópico, no Brasil, é o Professor Masiero da Universidade de São Paulo. É de sua autoria, o livro Ética em Computação da Editora da Universidade de São Paulo, publicado no ano 2000. Dois artigos do Professor Masiero estão disponíveis: um comentando o caso da votação do Senado Federal e outro com uma visão mais ampla sobre a interseção do Direito e da Informática.

De rápida busca na rede coletei uma série de sítios que merecem uma visita. Particularmente, indico um resumo feito pelo Professor Porfirio Barroso Asenjo que faz um estudo de vários códigos de ética, de diferentes países, e confirma quatro pontos básicos já reportados por Mason. Esses pontos são: privacidade, exatidão, propriedade intelectual e facilidade de acesso.

Alguns outros recursos podem ajudar a uma melhor compreensão desse importante tema.

a) Um artigo do Professor Michael Stanton,
b) Um curso da Universidade do Porto (vários elos de interesse),
c) O código de ética do Instituto de Engenheiros Elétricos e Eletrônicos (IEEE), a maior organização profissional do mundo. Em particular é interessante a menção explícita quando ao ato de receber propina, mas não ao ato de oferecer. Afora esse detalhe, creio que o código é conciso e bastante apropriado (Em Inglês),
d) O código de ética da Associação de Computação (ACM) ( Em Inglês), e
e) O código da Ordem dos Engenheiros de Portugal.

domingo, outubro 14, 2007

Gerência de Tecnologia

Defini, de maneira geral, o termo "Gerência de Tecnologia" em
um artigo, já utilizado como tema de postagem.

No entanto, creio que vale a pena repetir, explicitamente, o texto do artigo.


"Ao gerente de Tecnologia cabe a seleção de tecnologias
informáticas. Este órgão serve não só como o
negociador de tecnologia com o mundo exterior, mas
também como um filtro e buffer para aliviar as pressões
do ``marketing'' sobre os atores ligados as funções
de informática.

Longe de ter como objetivo a decisão-chave de poder
usar ou não poder usar, esta gerência deve ser bastante
flexível e ter uma visão muito próxima da própria visão
do negócio.

Cabe a esta gerência a tarefa de transferência de tecnologia.
O gerente de Tecnologia necessita uma sólida formação
universitária, preferencialmente à nível de pós-graduação e
manter-se constantemente atualizado com as tendências
das tecnologias do ramo. Uma característica fundamental
desse profissional é a capacidade de análise criteriosa das
tecnologias envolvidas, o que certamente exige não só
uma pessoa de extrema capacidade intelectual e técnica,
como um profissional com experiência considerável na
seleção de tecnologiasatravés de avaliações, uso de
consultores, negociação comfornecedores, entre outras.

Importante frisar, que a este perfil deve-se somar
uma perfeita adequação à própria organização,
entendendo seus desejos e suas áreas de competência."

sábado, agosto 25, 2007

Mini Mundo

Em Banco de Dados, alguns autores usam o termo mini mundo para denotar o contexto: no qual o banco de dados atua, e do qual o seu esquema lógico foi baseado.

Em Engenharia de Requisitos utilizamos o conceito de Universo de Informações para denotar o contexto onde o software irá atuar e de onde os requisitos serão elicitados.

sábado, agosto 18, 2007

Folksonomia

O Estado de São Paulo, um dos mais tradicionais jornais do país, reformou seu visual na rede. Uma das novidades é o uso de marcadores ou etiquetas. O jornal optou por usar um anglicismo, já que usa a palavra “tags”. Esse fato reforça o que tínhamos escrito sobre essa maneira de organizar conhecimento. O jornal foi conservador, já que permite, apenas, que seus editores e jornalistas etiquetem ou marquem. O ideal seria se tivessem deixado que os leitores fizessem a marcação, mas claro, isso teria um custo.

O título da nota usa um neologismo para definir a prática do uso de etiquetas ou marcadores. É interessante ver como a palavra é definida na Wikipédia em Português, em Italiano, em Espanhol e em Francês.





quarta-feira, agosto 15, 2007

Um Clássico

Incrível! Acabei de descobrir que o artigo
"Strategies for Information Determination"
de Gordon Davis está disponível na rede. Veja aqui.

Esse artigo é um clássico. Vale a pena ler. Creio que permanece atual.

sábado, julho 21, 2007

Biblioteca Digital - Engenharia de Requisitos

Já está disponível o novo conjunto de artigos do Workshop em Engenharia de Requisitos.

Nessa edição, a língua inglesa foi preponderante, principalmente porque o evento foi organizado pela Universidade de York no Canadá. São 21 artigos tratando de diferentes temas, tais como: elicitação de requisitos, modelagem de processos, testes, inspeções, variabilidade, aspectos, requisitos não-funcionais entre outros. Confira.

Vale lembrar que o WERpapers é uma biblioteca digital que disponibiliza todos os artigos aceitos e revistos que foram selecionados ao longo dos dez anos de existência do Workshop em Engenharia de Requisitos.

Essa biblioteca digital é de livre acesso e pode ser pesquisada em todo seu conteúdo usando o “Google”. Além disso, a biblioteca fornece a lista das citações dos artigos publicados fornecida pelo “Google Scholar”.

A WERpapers é indexada no BDBComp e na DBLP.

quarta-feira, junho 06, 2007

Qualidade em Sistemas de Informação

A palavra qualidade é utilizada em vários contextos. De maneira geral, todos querem qualidade. Na ótica de Sistemas de Informação, ensino que o ponto fundamental para que um Sistema de Informação seja considerado de qualidade é a coerência.

Segundo o dicionário do Aurélio (Novo Dicionário da Língua Portuguesa, Aurélio Buarque de Holanda Ferreira, 1° edição, Nova Fronteira), coerência é a “Qualidade, estado ou atitude de coerente.” e “Ligação ou harmonia entre situações, acontecimentos ou idéias; relação harmônica; conexão, nexo, lógica”. Usando a mesma fonte encontramos que coerente é “Em que há coesão, ligação ou adesão recíproca.”

Como um Sistema de Informação deve refletir o que ocorre numa organização, como um espelho, enfatizamos que o mesmo deve ser coerente com a realidade. O que significa ser coerente com a realidade? Em última análise, significa que as informações, que o sistema contém, refletem a realidade.

Um exemplo simples, mas elucidativo, é o seguinte: suponha uma concessionária de veículos, nela existem veículos sendo vendidos. Suponha que uma contagem no pátio dessa concessionária mostra a existência de 10 veículos. Suponha que, no mesmo instante dessa contagem, temos acesso ao Sistema de Informação da organização. Se encontrarmos, ao consultar esse sistema, os mesmos 10 veículos, diremos que o sistema é coerente.

É claro que manter a coerência é difícil face à forma, idade ou freqüência da informação que estamos lidando. No entanto, de nada serve um Sistema de Informação onde a informação não é coerente com a realidade.

Para obtermos Sistemas de Informação onde as informações são coerentes com a realidade, precisamos, antes de tudo, modelar o Sistema de Informação de forma coerente com a realidade. Isso será tema de outra nota.

Para enfatizar o conceito de coerência, contrasto-o com o conceito de consistência. Usando a mesma fonte acima, dicionário do Aurélio, entendemos consistência como: “ Concordância aproximada entre os resultados de várias medições de uma mesma quantidade”. Portanto, consistência é um conceito aplicado a uma entidade, é um conceito interno, contrário à coerência que é um conceito de relacionamento entre partes.

Utilizando o exemplo da concessionária podemos dizer que o Sistema de Informações é consistente se, dos 10 veículos, temos 4 veículos utilitários e 6 veículos de passeio. Portanto, ao dizer que são 10 os veículos, estamos sendo consistentes com o fato de haverem 4 veículos de um tipo e 6 de outro tipo. No entanto, suponha que, por alguma razão, o Sistema de Informação registrasse, na mesma situação descrita acima, 9 veículos sendo 4 veículos utilitários e 5 veículos de passeio. Nesse caso o Sistema de Informação seria consistente, apesar de ser incoerente.

Pense sobre isso. Consistência é um conceito interno. Coerência é um conceito de ligação, externo. Não basta um Sistema de Informação ser consistente, ele tem que, obrigatoriamente, ser coerente.

Sistemas de Informação bem desenhados usam redundância para poder verificar a consistência. Essa redundância é desenhada de forma que a informação redundante seja provida por diferentes fontes. Portanto, a detecção de inconsistência é um alerta para uma possível presença de incoerência. O uso apropriado da redundância será tema de uma futura nota.

A Figura abaixo é a que costumo utilizar para explicar a dicotomia entre consistência e coerência. A consistência pode ser verificada, mas a coerência precisa ser validada. Portanto a consistência pode ser feita sem o envolvimento dos clientes, mas a coerência necessita da participação de clientes.





Portanto toda vez que escutar falar sobre qualidade, lembrem: um Sistema de Informação só tem qualidade se suas informações forem coerentes com a realidade!

segunda-feira, abril 02, 2007

RetroAlimentação :"feedback"

Retroalimentação ou "feedback" é um conceito fundamental para a teoria do controle. O "feedack" é uma informação produzida por um sistema que informa sobre o compartamento daquele sistema.

Sistemas podem ser definidos por meio de entradas e saídas. Um sistema consome entradas e produz saídas. O "feedback" é uma saída que transforma-se em entrada. Sistemas que tratam esse tipo de informação têm a possibilidade de conhecer sobre seu próprio funcionamento. Conhecer sobre seu próprio funcionamento ou desempenho é de fundamental importância para o auto-aprendizado, para a evolução.

No entanto, o esquema de "feedback", como uma entrada particular para um sistema, tem limitações.

Para um entendimento mais profundo sobre o conceito de controle creio que o modelo ultra-estável de Ashby(veja 1 e 2) é de fundamental importância.

Aprendi sobre esse modelo há muitos anos atrás com a leitura do excelente livro "A Gestão pelos Sistemas" de Jacques Mélèse, traduzido por Antonio de Garcia de Miranda Neto e publicado em 1973 pela LTC. Nele Mélèse explora a idéia de ultra-estabilidade para a gestão organizacional.

Recentemente aprendi que autores da área de "Autonomic Computing" (2006) estão usando o modelo de Ashby.

Abaixo vai a figura que representa o modelo ultra-estável de Ashby. Usarei as palavras de Mélèse para descrever esse modelo: "O sistema se chama ultra-estável porque possui dois níveis de estabilidade e dois sistemas de guiagem: o primeiro nível é o regulador, que assegura a estabilidade, seguindo o ritmo das pertubações exteriores; o segundo é o controle que, em ritmo mais lento, fonfere ao sisema um segundo grau de estabilidade, modificando a ajustagem do regulador".

segunda-feira, janeiro 01, 2007

Sistema de Bilhetagem da Gol

Em nota anterior, sobre competitividade, falei sobre o caso da Gol.

Lá resumia em 4 pontos a estratégia da empresa:

1) frota completamente nova,
2) bilhetagem simplificada,
3) preço sobre demanda, e
3) venda direta, primeiro via telefone e hoje fundamentalmete na Web.

O que não ressaltei na nota anterior, é que a Gol não utiliza o conceito de reserva de lugar. Inexiste reserva na Gol. O usário compra o bilhete. Nesse sentido a Gol utilizou o mesmo princípio já empregado pelas empresas de ônibus. É um grande diferencial. A eliminação da reserva é, não só uma economia para o Sistema de Informação, mas elimina uma redundância de informação que o mercado demonstrou ser desnecessária.