Pular para o conteúdo principal

Postagens

Mostrando postagens de 2014

Programação Paralela e por que você deveria se preocupar com isso (Parte 3)

Nas publicações anteriores (veja as partes 1 e 2 desta série) foram discutidas diversas questões sobre o paradigma de Programação Paralela, tais como a importância de entender o paralelismo na construção de sistemas, os conceitos básicos, incluindo a taxonomia de Flynn, além de a iminência de sistemas cada vez mais concorrentes e paralelos.

Nesta parte, irei apresentar mais alguns conceitos de programação paralela, focando naqueles que definem o potencial de paralelismo de um sistema. Além disso, irei apresentar a lei de Amdahl, a qual é utilizada para calcular o ganho real na velocidade de processamento ao utilizar técnicas de paralelismo em um sistema.

Programação Paralela e por que você deveria se preocupar com isso (Parte 2)

Como defini na parte 1 desta série de publicações, irei descrever, resumidamente, alguns tipos de conceitos e terminologias associados à Programação Paralela e a organização dos computadores que suportam este paradigma. Pra começar, é conhecido que existem diferentes caminhos para se classificar computadores paralelos. Exemplos podem ser encontrados aqui. (Fonte: http://vedyadhara.ignou.ac.in/wiki/images/8/8e/B1U2mcse-011.pdf)
Nesta publicação iremos conhecer a classificação de computadores paralelos de acordo com a famosa Taxonomia de Flynn.

Programação Paralela e por que você deveria se preocupar com isso (Parte 1)

Creio que a maioria dos desenvolvedores já deve ter ouvido falar de threads, aprendeu um pouco sobre semáforos, monitores e travas. Partindo desse meu pensamento, imagino que essa mesma maioria não utiliza nenhuma forma de programação paralela em suas aplicações. A pergunta que fica é: utilizar paralelismo e lidar com concorrência tem baixa popularidade entre os desenvolvedores porque não tem utilidade ou porque os cursos de graduação em computação estão carentes de uma disciplina que ensine aos graduandos os reais benefícios em ter uma base sólida nesta área?

Esta série de publicações irá trazer uma visão básica sobre Parallel Programming, os exemplos serão baseados em Java e muito do que mostro aqui pode ser encontrado de maneira mais aprofundada no livro "The Art of Multiprocessor Programming", dos autores Maurice Herlihy e Nir Shavit.

A Ascensão do Desenvolvedor e suas Implicações

Mais do que nunca, esta é a era do desenvolvedor (em um passado não muito distante, chamado programador). Considerando que até pouco tempo atrás, os programadores estavam trancados em salas cheias de máquinas, hoje vemos desenvolvedores que são fundadores, executivos, e muitos estão entre os mais valiosos colaboradores das empresas. Hoje somos um número significante. Em um estudo publicado em julho de 2013, o Evans Data estimou que existem 18,2 milhões de desenvolvedores de software em todo o mundo, um número que irá crescer para 26,4 milhões até 2019, um crescimento de 45%.

O Mito da Graduação. A Necessidade de Ser um Case.

Estamos na época em que, se você atirar um pedra para cima, ou ela cai em um estudante universitário ou em um rebelde esquerdista político Che Guevara Human Rights Homosexuality Defensor Certified. Na maioria das vezes, essa pedra acerta um aluno de computação ou de direito.

Para se ter um ideia, existem cerca de 1600 faculdades de direito no mundo. O interessante é que só no Brasil são 1230 instituições. Outra curiosidade, envolvendo o incentivo à formação universitária por aqui, e focando na área de computação, é que desde quando entrei na minha graduação (Sistemas de Informação) em 2008, se ouve falar que o mercado de TI é promissor, carente de profissionais, e, inclusive, ótimo para empreender negócios com chance de faturamento milionário. Mas, se formos passar pela peneira da realidade, quantos dos 65 mil alunos formados na área de TI por ano obtém um lugar ao sol?

Tutorial: Desenvolvimento de Software Baseado em Modelos na Prática com Epsilon, Parte 3

Continuando a série de publicações deste tutorial, que ensina como desenvolver software utilizando a abordagem MDD, nesta terceira parte, iremos finalizar o desenvolvimento da ferramenta CASE, adicionando a funcionalidade de geração de código e como gerar a versão standalone do editor.

Sei que você deve estar pensando que é muita coisa, mas tá quase acabando. :)

Tutorial: Desenvolvimento de Software Baseado em Modelos na Prática com Epsilon, Parte 2

Na primeira parte deste tutorial, foi implementada de forma básica uma ferramenta CASE para o desenvolvimento de um sistema de arquivos, utilizando a Epsilon para realizar esta implementação. Nesta ferramenta é possível criar modelos e gerar código que reflita o sistema modelado. Até aqui, foi definido o metamodelo que descreve o domínio, seus conceitos e como estes conceitos estão relacionados.

Nesta segunda etapa irei mostrar como definir a sintaxe concreta da sua DSML, de forma que a ferramenta gerada contenha esta sintaxe. Além disso, será definida a geração de código, finalizando o processo MDD proposto neste tutorial.

Tutorial: Desenvolvimento de Software Baseado em Modelos na Prática com Epsilon, Parte 1

O MDD (Model-Driven Development) pode ser utilizado na prática seguindo o processo de criação e aplicação de uma DSML (Domain Specific Language). Para isso, como foi descrito aqui, primeiramente é necessário satisfazer três requisitos:
Sintaxe Abstrata: o metamodelo que descreve conceitos e regras de modelagem da DSML, equivalente a uma gramática das linguagens de programação;Sintaxe Concreta: a notação gráfica da DSML, seus elementos representativos;Semântica: o significado de cada elemento gráfico da DSML. Após estes requisitos serem atendidos, o gerador de código é implementado e, consequentemente, deve ser possível utilizar modelos executáveis, através de uma ferramenta CASE, produto do MDD, finalizando as etapas.
Nesta publicação irei mostrar como criar a sintaxe abstrata, a sintaxe concreta, e a semântica, utilizando como exemplo um Sistema de Arquivos. A implementação deste exemplo utiliza a Epsilon, uma família de linguagens e ferramentas para geração de código, transformações …

MDD e DSML, O Potencial da Modelagem no Desenvolvimento de Software

Apesar de não ter realizado uma publicação exclusiva falando sobre MDD (Model-Driven Development), grande parte da sua definição está contida na MDA (Model-Driven Architecture). O Desenvolvimento Orientado a Modelos é um paradigma que envolve todo processo de criação de software, gerando código a partir de modelos (semelhante à arquitetura MDA). Este paradigma, cada vez mais aplicado no meio acadêmico e nas empresas, abstrai a complexidade das linguagens de programação e seus códigos-fonte, já que os sistemas são desenvolvidos a partir de modelos criados para serem transformados automaticamente em código executável. Geralmente a criação destes modelos e a transformação para código executável é realizada a partir de uma ferramenta CASE (Computer-Aided Software Engineering).

Relacionamento entre MDA, MDD e MDE

Existe uma certa confusão sobre o relacionamento entre MDA (model-driven architecture), MDD (model-driven development) e MDE (model-driven engineering).

Eu estava lendo este blog e encontrei um bom resumo que ilustra claramente o que fica complicado de entender, na maioria das vezes, quando se busca informações sobre MD*.

MDA na Prática com Acceleo, Construindo um Gerador de XHTML

Continuando a série de posts sobre Model Driven Architecture (MDA), irei mostrar como desenvolver um gerador de XHTML baseado em um processo MDA, a partir da ferramenta Acceleo.

A Acceleo é uma ferramenta de código aberto, sob a Eclipse Public License (EPL). Ou seja, ela pode ser baixada e utilizada de forma gratuita.

Padrões da OMG com suporte à MDA

Na publicação anterior mostrei um resumo do que é MDA, suas características e benefícios. Nesta publicação irei discutir sobre o que existe de concreto para realizar o desenvolvimento utilizando este padrão arquitetural da engenharia de software.

Os seguintes padrões: UML (Unified Modeling Language), MOF (Meta Object Facility), QVT (Query, View and Transformation), OCL (Object Constraint Language) e XMI (XML Metadata Interchange) compõem as especificações do OMG para desenvolver software utilizando a arquitetura MDA.

Reflexões sobre a especificação da OMG, Model Driven Architecture (MDA)?

Irei iniciar uma série de publicações envolvendo Arquitetura Orientada à Modelos (Model Driven Architecture, MDA), um padrão arquitetural, criado pela OMG (Object Management Group), que tem como objetivo realizar a separação entre: lógica de negócio da aplicação, evolução e manutenção do software. Através da utilização da MDA, é possível construir sistemas de forma rápida, consistente e independente de plataforma.

Estudo, Trabalho ou Crio uma Startup?

Ultimamente tenho entrado em algumas discussões sobre carreira profissional e acadêmica, já escutei diversas opiniões sobre os melhores caminhos para um estudante ou profissional em computação, gente que cursou uma graduação por 4, 5 anos e depois fala que título de mestre ou doutor numa área não significa nada, outros que largaram a faculdade para empreender (e depois explico porque coloquei essa palavra em itálico), e ainda escutei os mais tradicionais que defendem a busca por um bom emprego em uma boa empresa ou concurso como o melhor caminho.

SDN: O Ano de Jogar o Jogo.

Uma medida do progresso da indústria de redes definidas por software é o momento da Open Networking Foundation (ONF), o grupo líder de usuários que está definindo os padrões em SDN e ganhando a causa.

O chairman do comitê de mercado e educação da ONF, Marc Cohn, tem dito que a ONF agora está próxima de 110 membros, fornecedores lançaram mais de 60 produtos que suportam o protocolo OpenFlow da ONF, e algumas 30 milhões de portas habilitadas com OpenFlow foram entregues.