Posts de agosto, 2007

Três Pontos Fundamentais

agosto 27, 2007

Um engenheiro de software para ter sucesso em sua profissão precisa de conhecimento em três áreas.

Além desses conhecimentos é necessário que o engenheiro de software fique atento a três pontos fundamentais. São eles:

Primeiro ponto: A definição do software sempre está relacionada à implantação de outro artefato(s), que eventualmente pode ainda não estar implantado ou terminado. Em muitas situações, onde os artefatos hospedeiros ainda estão sendo desenhados, os conceitos de engenharia concorrente (veja aqui em Português) precisam ser utilizados. Ou seja, o processo de construção de um artefato tem um paralelismo com o processo de construção de outro. Para definir-se um software, seria o ideal que o artefato hospedeiro estivesse “pronto”, mas muitas vezes isso pode não ocorrer. Esse primeiro ponto tem como fonte principal o artigo da Professora Mary Lou Maher, “Process Models for Design Synthesis”.

Segundo ponto. Diferentes interessados (atores) do Universo de Informações podem ter opiniões diferentes sobre constituintes ou componentes do Universo de Informações. Portanto o processo de engenharia de requisitos, que construirá a definição do software, tem que entender que podem existir diferentes opiniões e lidar com esse fato. Diferentes pontos de vista podem ser conflitantes e precisam ser mapeados e discutidos. Esse processo pode necessitar de atividades de negociação entre os interessados. Um ponto positivo em mapear diferentes pontos de vista é que o processo de resolução de conflitos aumenta o conhecimento sobre o Universo de Informações. Veja o artigo “Viewpoints on Viewpoints”. Se tiver mais interesse no tópico, veja um sítio dedicado ao tema.

Terceiro ponto. Os desenvolvedores de software podem escolher qual o conjunto de métodos, técnicas e ferramentas (MTFs) querem utilizar no processo de produção. A seleção de um conjunto de MTF´s, deve depender do contexto. Não existem MTF´s que sejam unanimidade, portanto essa variedade é presente nos processos de produção e dependem, como dito, do universo de informações. O conceito de perspectiva está diretamente ligado a este ponto. A escolha de MTFs embutem a escolha de como, o software será modelado, isto é sob qual perspectiva. Uma perspectiva impõe restrições sobre o que pode ser modelado e com que ênfase. Uma modelagem orientada a dados, impõe uma perspectiva distinta de uma modelagem orientada a processos.
…………

Leia sobre Sistemas de Informação.

Veja a página do autor.

Triângulo do Conhecimento

agosto 26, 2007

Para produzirmos software temos que ter fundamentalmente três tipos de conhecimento: conhecimento da engenharia de software, conhecimento do contexto (Universo de Informações) em que o software será aplicado e conhecimento da máquina computacional da qual o software fará parte.

triang-conh.jpg

O conhecimento da engenharia de software permite que o engenheiro tenha proficiência no uso de métodos, técnicas e ferramentas.

O conhecimento do contexto é adquirido com a ajuda das MTFs.

O conhecimento da máquina computacional é proporcionada pela fundamentação teórica em várias disciplinas da ciência da computação.

O grande desafio da engenharia de software é prover MTFs que ajudem os engenheiros de software entenderem o contexto onde o software irá atuar e as limitações da máquina computacional em que o software irá residir. Para isso é inevitável que o engenheiro de software trate o problema da transição de descrições informais para descrições formais e que também modele adequadamente as restrições da máquina escolhida. Essa máquina computacional é uma combinação de hardware e software. Portanto, vale notar que quando produzimos software, temos que levar em consideração outros software já pre-existentes na máquina computacional escolhida.

Essa idéia é fundamentada na visão de Peter Freeman sobre os conhecimentos necessários ao engenheiro de software.
…………

Leia sobre Sistemas de Informação.

Veja a página do autor.

Número Mágico

agosto 21, 2007

Soube do número mágico quando estava fazendo mestrado. Sabia da referência ao artigo original que gerou essa idéia, mas só fui ler esse artigo agora no século XXI.

O número mágico é utilizado em várias áreas do conhecimento para apoiar a idéia de que devemos manter a complexidade sob controle. Os primeiros autores de engenharia de software, como Yourdon e De Marco faziam referencia a esse “número”.

Tempos depois, muito tempo depois, comecei a ser um usuário do sistema Wordnet, principalmente devido ao meu trabalho com o léxico ampliado da linguagem.

Recentemente, no meu blogue sobre Sistemas de Informação passei a utilizar o sistema AdSense.

O que une todas essas coisas? O Professor George A. Miller.

Redes de Produtos (Mineração de Dados Econômicos)

agosto 18, 2007

Um dos livros que recomendo é o livro do Professor Barabási sobre conectividade. O Professor e seu grupo na universidade de Notre Dame especializaram-se no estudo de redes complexas. Já produziram vários trabalhos de importância mostrando a complexidade de diferentes redes em várias situações.

Recentemente, o grupo de Notre Dame e pesquisadores da Escola Kennedy da Universidade de Harvard publicaram um artigo na revista Science que chamou minha atenção. Creio que é um excelente exemplo de como o tratamento de redes com ênfase na mineração de dados pode trazer mais transparência para um conceito tão complexo como o da riqueza das nações.

Vejam a Figura abaixo. Nela podemos ver padrões diferentes do uso da cor preta. Essa cor mostra produtos que tem o total de exportação maior que de importação. Ou seja os padrões em preto mostram a origem de determinados produtos comercializados no mercado global. Vejam que o padrão apresentado pelos países ricos é de centralização da cor preta.

317_482_f2.jpg

O que isso significa? Ocorre que no trabalho de mineração de dados do mercado mundial, usando dados do NBER, os pesquisadores demonstraram que os países mais ricos concentram suas atividades em produtos de alto valor (máquinas, eletrônicos, veículos), ou bens de capitais. Uma vez visualizando esse espaço de produto esses produtos concentram-se no centro do grafo de produtos. O artigo argumenta que o tipo de conectividade entre os produtos do grafo mostra a diferença de um país pouco desenvolvido (vide grafos acima) se comparado ao de país desenvolvido (isto é com uma maior participação no mercado mundial de produtos de maior valor agregado). Quanto mais proxima a concetividade entre produtos, maior o grau de desenvolvimento.

Não li o artigo, ainda, mas li partes do material exposto no sítio do Professor Barabási e uma nota de John Daly (de onde tireio o grafo acima, que foi retirado do artigo da revista Science).

Creio que o artigo sobre o espaço de produtos tem grande importância para que possamos melhor entender a economia. Creio que esse tipo de instrumental é também muito útil para a definição de políticas de desenvolvimento.

Vejam como estava o Brasil em 1985 e em 2000. Comparem com a República Tcheca em 2000 e com a Espanha (1985, 2000). Vejam também os gráficos dos Estados Unidos, da Alemanha, e do Japão para o ano 2000. Os produtos com a moldura preta são aqueles produtos onde os países exportam mais do que importam.

Enfim achei essa pesquisa simplesmente incrível (Amazing)!

Maturidade

agosto 12, 2007

O que me motivou a escrever essa nota foi uma mensagem do Professor Erney Plessmann Camargo, aos pesquisadores do CNPq relatando sobre sua gestão na presidência do órgão. Em função do seguinte trecho da mensagem do Professor:
“A partir de Junho, a circulação de
pedidos em papel praticamente desaparecerá do CNPq. Nosso corpo técnico
terá, assim, mais liberdade e tempo para se dedicar a questões
substantivas e de mérito, parcialmente liberado da burocracia documental.
O programa, como sempre, ainda não está isento de defeitos e “bugs”.” ,
resolvi escrever-lhe uma carta.

Em minha carta disse sobre a maturidade da Engenharia de software e também solicitei ao Professor sua anuência para que eu pudesse tornar público essa minha observação. Através de seu chefe de gabinete, Carlos Pittaluga., o Prof. concordou e pediu que eu fizesse saber que:
“Nesse particular, solicitou o Sr. Presidente que deixasse
expresso o fato do novo software ter sido inteiramente desenvolvido pelos funcionários do CNPq, e que não recorremos a nenhuma empresa desenvolvedora de software. No momento, e a exemplo do que ocorreu com outros programas por nós desenvolvidos, estamos solicitando a colaboração dos pesquisadores, cujas observações, críticas e sugestões
sempre são úteis e que, ao longo do tempo, vêm permitindo o constante aperfeiçoamento de nossos sistemas”.

O “como sempre” utilizado pelo presidente do CNPq é o reflexo de como o processo de produção de software é visto por muitos executivos. São muitos os exemplos de falhas no processo de produção de software.

Costumo dizer que a sociedade, aos poucos, desperta para a importância da qualidade de software, e um dos primeiros avisos foi o movimento Y2K, ou o problema do ano 2000. Poucos produtos de software oferecem garantia de funcionamento, se duvidar dê uma olhada nos contratos dos software de prateleira que normalmente usamos. Se por um lado isso é um fato, é verdade também que a comunidade de engenharia de software tem trabalhado na formação e divulgação de boas práticas de software.

Um dos melhores exemplos é o trabalho do SEI, Software Engineering Institute, uma organização estatal em associação com a Universidade Carnegie Mellon nos Estados Unidos. O SEI é fruto de um movimento que se iniciou na década de 80 nos Estados Unidos em contraposição ao esforço do Japão na construção da Quinta Geração com a criação do MCC(Microelectronics and Computer Technology Corporation).

Coube ao SEI trazer para a Engenharia de Software o conceito de Maturidade. Este conceito é aplicado tanto a indivíduos como a organizações. Em particular, modelos de maturidade ou de estágios foram bastante utilizados em Sistemas de Informação, sendo o modelo de Nolan um dos pioneiros. Veja um estudo de Álvaro Rocha da Universidade Fernando Pessoa sobre modelos de maturidade organizacional e uma apresentação da PMI-Rio sobre o padrão OPM3 para maturidade em gerência de projetos.

O modelo de maturidade proposto pelo SEI é o CMM (Capability Maturity Model) . É interessante notar o que escreveu o líder desse projeto, Bill Curtis, sobre o sucesso da transferência de tecnologia que foi o CMM. O modelo CMM, hoje atualizado com a versão CMM-I, é um modelo de maturidade onde o conhecimento específico de engenharia de software é base para a avaliação. Os níveis indicam de que maneira a organização produtora de software é madura em relação ao uso de MTF´s (métodos, técnicas, e ferramentas) de Engenharia de Software.

O modelo CMM usa tanto a perspectiva de processo, como são feitas as tarefas, como a perspectiva de documentos, ou seja o tipo de documentos produzidos pela organização. A SEI juntou e continua aperfeiçoando um conjunto de boas práticas que ajudam a caracterizar o nível de maturidade. A cada nível, são cinco os níveis, um conjunto de áreas chave de competência são definidos. A visão de qualidade do CMM é mais voltada para as práticas internas do processo.

Veja abaixo como no meu pre-livro de Engenharia de Requisitos eu classifico os cinco estágios:
cmm.jpg

Empresas de software podem ser certificadas por consultoras ligadas a SEI que aplicam um processo de avaliação padrão. O custo da implantação das práticas CMM é um investimento alto e o custo da certificação também é alto. Mais detalhes sobre o CMM/CMM-I podem ser encontrados nos elos apontados abaixo.

Algumas organizações brasileiras produtoras de software têm certificação pelo modelo do SEI. Veja aqui um recente relatório do Ministério de Ciência e Tecnologia sobre o assunto. Como o custo para certificação CMM é alto e seu processo é voltado principalmente para organizações americanas, o Brasil, através de um processo de redução sociológica, elaborou normas que medem a maturidade de organizações produtoras de software. Mais detalhes sobre Mps Br podem ser encontrados aqui.

Vale ressaltar que existem outros modelos de avaliação/certificação de qualidade do processo de produção. Dentre esses modelos os que são mais frequentemente utilizados, principalmente por empresas Européias, são os modelo ISO (International Standards Organization). Os modelos derivados da ISO são fundamentalmente orientados a processos e apresentam uma visão sob a ótica do consumidor diferentemente daquela do CMM original. Hoje, os novos modelos da SEI como os da ISO já refletem os impactos do uso de ambas as formas de certificação.

Veja mais detalhes sobre as normas ISO aplicadas a software nos elos abaixo:

…………

Leia sobre Sistemas de Informação.

Veja a página do autor.

Carta

agosto 12, 2007

Segue abaixo carta destinada ao Professor Erney Plessmann Camargo, presidente do CNPq. Essa carta está relacionada à nota sobre maturidade de software publicada nesse mesmo espaço. Nessa nota comento sobre a autorização do Professor para a publicação dessa carta.

Professor Erney Plessmann Camargo,

Gostaria de comentar sobre sua recente carta destinada aos pesquisadores
do Cnpq.

Começarei pelo fim. Parabéns por uma administração, que, creio, ficou
marcada por uma maior transparência no trato desse fundamental serviço à
nação brasileira. Obrigado por sua dedicação a essa causa.

Antes de tudo, há que se congratular o Cnpq pela iniciativa de aprofundar a automação de seus processos. A política de informatização, se bem executada, certamente atingirá os benefícios apontados pelo Professor em sua carta. A automação dos procedimentos de análise e submissão de
propostas e a plataforma Lattes foram importantes passos e que agora, entendo, terão uma amplitude ainda maior.

Na carta do Professor há uma parte que, particularmente, chamou minha atenção, segue-se a citação literal: “A partir de Junho, a circulação de pedidos em papel praticamente desaparecerá do CNPq. Nosso corpo técnico
terá, assim, mais liberdade e tempo para se dedicar a questões
substantivas e de mérito, parcialmente liberado da burocracia documental. O programa, como sempre, ainda não está isento de defeitos e “bugs”.”.

Professor Erney Plessmann Camargo, como cientista da área de Engenharia de Software, sinto-me na obrigação de comentar o “como sempre” do texto acima. É importante dizer que a Engenharia de Software, hoje, já dispõe de métodos, técnicas e ferramentas que possibilitam níveis de qualidade
comparáveis aos das engenharias tradicionais. Por outro lado, existe uma infinidade de barreiras técnicas e não técnicas que bloqueiam o uso do conhecimento hoje disponível. Entendo que o “como sempre” é uma reclamação justa de quem, certamente, em várias ocasiões, já se defrontou com a justificativa, mal utilizada, de que defeitos são da natureza do software. Software, como qualquer artefato, é o resultado de um processo
de construção. O nível de qualidade desses artefatos resulta do nível de qualidade dos processos empregados na sua construção.

Creio que sua carta é uma importante mensagem aos produtores de software assim como para a comunidade de pesquisa em Engenharia de Software. Já ouvi várias vezes, de atores organizacionais com alto poder de decisão,
frases semelhantes ao “como sempre”. É um fenômeno sociológico, porque essa constatação é universal. No entanto, cada vez mais se encontra uma resistência a essa constatação. A sociedade começa a exigir, com razão, que o software tenha mais qualidade, que seu processo seja mais
transparente.

Quero entender seu “como sempre” como uma exigência e não uma resignação. Os desafios são grandes tanto do ponto de vista educacional: levar aos produtores o conhecimento dos processos hoje existentes, como também de pesquisa: reduzir os custos dos processos de construção de software com
qualidade.

Gostaria de solicitar ao Professor sua concordância para que torne pública essa carta.

Mais uma vez obrigado por sua dedicação à ciência e tecnologia do nosso país.

Atenciosamente,
                                        julio cesar leite

Alguns Elos sobre Falhas no Processo de Produção de Software

agosto 11, 2007

Relaciono abaixo alguns elos que reportam sobre problemas na produção de software. Estão em Inglês. Vou atualizar a lista com textos em Português na medida em que encontrá-los.

—- 3/16/08

Veja uma nota sobre falhas em Sistemas de Informação onde há uma referência para  matéria jornalística  em Português.