.:: Thálisson de Oliveira ::.
16 de setembro de 2011 – 23:07
Estive um pouco ocupado com estudos e trabalho, porém sobrou um tempo para compartilhar com vocês a minha área de pesquisa do Mestrado, Model Driven Architecture (MDA). Com isso vou lhes mostrar uma pequena introdução sobre o assunto para facilitar o entendimento.
A complexidade do processo de desenvolvimento de software e de sistemas de software tem aumentado significativamente. Com o ambiente passando por mudanças sem parar, as empresas são desafiadas a adaptar-se através de melhoria de processos de negócios e de software. Usar uma nova tecnologia envolve uma série de atividades que precisam ser feitas de maneira contínua. Sistemas raramente são baseados em uma única tecnologia e, muitas vezes os sistemas têm que se comunicar com outros sistemas.
O MDA é uma abordagem da engenharia de software no qual os modelos são sistematicamente desenvolvidos e transformados em código. O MDA está ganhando cada vez mais a atenção das comunidades de pesquisa e da indústria. O possível problema encontrado é que ele não dá orientações em termos de processos, tais como as atividades e fases, papéis e responsabilidades que estão envolvidas no processo de desenvolvimento de software. Quando uma organização considera aplicar o MDA baseado em processo de desenvolvimento de software, terá de enfrentar a falta de orientações metodológicas. O MDA ainda é uma abordagem nova e emergente, que ainda não tem sido amplamente aceita na prática. Ainda existem problemas, tais como ferramentas de apoio insuficientes e falta de estruturas metodológicas provadas na prática.
Como podem observar o texto é apenas um motivador e/ou orientador sobre o MDA, meus estudos são um pouco mais complexos e me estenderia muito em cada conceito correlacionado. Meu objetivo aqui é apenas instigar o leitor a se aprofundar no assunto, visto que nele pode se encontrar bons temas para futuras pesquisas.
Espero que tenham gostado do assunto, quem sabe não tenhamos outros posts, já que ficarei neste assunto por pelo menos mais 1 ano.
Tags: Arquitetura, Driven, Empresa, MDA, Model, Negócio, OMG, Organização, TI, TIC
Postado em Engenharia de Software por Thálisson de Oliveira | Sem comentários »
12 de agosto de 2011 – 19:30
O post de hoje tem como base as minhas dores de cabeça desta semana, dores de cabeça boas relativas à programação AS3 (depois de alguns meses programei, e programei algo do zero… :D). Vou falar sobre um recurso que ajuda na comunicação entre o Flash Player (.swf) e o JavaScript (.js), que é o ExternalInterface.
Basicamente o ExternalInterface é uma interface de programação de aplicativo que ativa a comunicação franca entre ActionScript e o container SWF – por exemplo, uma página de HTML com o Javascript ou um aplicativo que usa o Flash Player para exibir um arquivo SWF.
A vantagem desta classe é você poder chamar uma função ActionScript em tempo de execução do Flash, usando JavaScript em uma página HTML. A função ActionScript pode retornar um valor e o JavaScript a recebe imediatamente como o valor de retorno da chamada.
O exemplo a seguir demonstra como enviar dados entre o Flash Player e o contêiner HTML:
// Verificação da disponibilidade do recurso
resultado = ExternalInterface.call("enviarParaAS", "Valor AS");
trace( resultado );
trace("Ocorreu um SecurityError: " + error.message);
trace("Ocorreu um Error: " + error.message);
trace("A ExternalInterface não está disponível para este contêiner.");
Para testar o código ActionScript anterior, incorpore o arquivo SWF criado usando a função JavaScript em seu HTML:
function enviarParaAS(valor) {
Caso precisem de um ponto de partida, cliquem aqui para conhecer mais.
Me desculpem por não detalhar tanto o exemplo, pois o tempo disponível não deixa eu entrar em grandes detalhes, mais se precisarem de ajuda é só entrar em contato.
Tags: ActionScript, ActionScript 3, ActionScript 3.0, Adobe Flash Player, AS3, ExternalInterface, HTML, JavaScript
Postado em ActionScript por Thálisson de Oliveira | Sem comentários »
24 de julho de 2011 – 16:23
O post de hoje é um pouco diferente, vamos sair do nível técnico para o gerencial, irei abordar a Governança de TI, com objetivo de mostrar seus conceitos.
Com base na figura, podemos nos fazer a seguinte pergunta: O que é Governança TI? É a especificação dos direitos decisórios e do framework de responsabilidades para estimular comportamentos desejáveis na utilização da TI. Para o IT Governance Institute, a governança de TI é de responsabilidade da alta administração (incluindo diretores e executivos), ela faz parte da Governança de Corporativa – sistema pelo qual as sociedades são dirigidas e monitoradas, envolvendo os relacionamentos entre Acionistas/Cotistas, Conselho de Administração, Diretoria, Auditoria Independente e Conselho Fiscal -, e consiste em liderança, estruturas organizacionais e processos que garantem que a TI da empresa sustente e estenda as estratégias e objetivos da organização.
Para entender o conceito, precisamos apenas refletir as frases a seguir:
Governança define quem toma decisões.
Governança não é gerenciamento.
Gerenciamento é o processo de executar e implementar as decisões.
Temos como objetivos da Governança de TI:
Simplificar/Democratizar as decisões de TI
Uma boa governança de TI melhora as finanças do negócio, gera lucros crescentes…
"Empresas bem sucedidas devem vencer onde outras falham ao implementar uma governança de TI que suporte suas estratégias. Por exemplo, empresas com governança de TI acima da média que seguirem uma estratégia específica (por exemplo, intimidade com clientes) tiveram lucro 20% maior do que outras com uma governança pobre e a mesma estratégia."
(IT Governance, How Top Performers Manage IT Decisions Rights for Superior Results, Peter Weill & Jeanne W. Ross, Harvard Business School Press, 2004, p.2)
E retornos crescentes…
"Empresas podem aumentar seus retornos e reduzir o risco sobre TI ao não despender recursos em TI. A profundidade do envolvimento da gerência de negócio na TI (governança) está diretamente relacionada ao retorno e redução de risco de TI."
(IT Saavy: Achieving Industry Leading Returns from your IT Portfolio, Peter Weill & Sinan Aral, MIT Sloan School of Management's Center for Information Systems Research, Research Briefing, July 2005)
O post de hoje vai chegando ao fim, pois o assunto Governança de TI é muito extenso, e não é possível abordar em apenas um post. Espero ter esclarecido, mesmo de maneira superficial, o que é a Governança de TI.
Tags: Administração, CMMI, COBIT, Empresa, Governança, ISO, ITIL, Negócio, Normas, Organização, PMI, Serviço, TI, TIC
Postado em Negócios e Tecnologia por Thálisson de Oliveira | Sem comentários »
17 de julho de 2011 – 20:21
O assunto de hoje é bastante importante no uso de qualquer linguagem de programação que utiliza Orientação a Objetos. Esta semana promovemos mais um treinamento sobre ActionScript 3 aqui no trabalho, onde abordei as Interfaces. Objetivo deste post é trazer um breve resumo do que foi comentado no treinamento e alguns de seus exemplos. Então… Vamos lá!
Antes de qualquer coisa precisamos consolidar alguns conceitos que irão facilitar o entendimento deste assunto.
Não devemos nos confundir com interfaces gráficas, as interfaces que estamos citando são utilizadas para criar as classes que implementam um "contrato" específico. A definição da estrutura de uma interface é semelhante ao de uma classe, exceto pelo detalhe que uma interface pode conter apenas métodos sem corpo.
Aí nos vem a seguinte pergunta: Interfaces não podem conter variáveis ou constantes? Não, porém podem incluir getters e setters.
Seguem algumas diretrizes para a criação de uma Interface:
Uso da palavra-chave Interface.
Não há declaração propriedades.
Em métodos de uma interface declara-se apenas sua assinatura, não há implementação (corpo do método).
Declarações de assinatura de método não permitem modificadores (public ou private, por e exemplo).
Por convenção, nomes de interface devem começar com um "I" maiúsculo.
Têm o mesmo número de parâmetros na classe que a implementa, cada um com os tipos de dados que correspondem ao método da interface.
O método deve ter o mesmo tipo de retorno que na classe que a implementa.
A seguir, um exemplo de interface:
package br.com.thalissonoliveira
Agora, vamos criar duas classes que implementem esta interface:
trace("nom nom nom nom cheese");
trace("squeek squeek");
trace("nom nom nom poo");
trace("oink oink");
Repare que as classes não estendem a nenhuma outra classe. Quando uma classe implementa uma interface, o compilador verifica se ela implementa todos os métodos necessários, se isso não ocorrer, o compilador gerará um erro.
Uma classe pode implementar métodos além daqueles especificados pela interface, mas deve sempre implementar pelo menos os métodos descritos na interface. Uma classe também pode implementar mais de uma interface (como uma lista separada por vírgulas entre cada chamada de interface).
A seguir temos uma implementação com as já classes criadas:
public class Zoo extends MovieClip
public var porco:IAnimal;
public var rato:IAnimal;
public var vetor:Array;
porco = new Pig();
rato = new Mouse();
vetor = [porco, rato];
for each(var animal:IAnimal in vetor){
trace("Nome:",animal.getName(),"implements IAnimal");
trace(" -- ");
Como você pode ver, os resultados são semelhantes. Cada "IAnimal" no loop, parte de uma mesma interface, permitindo o acesso à seus métodos, sendo assim, as implementações de classe real não importa.
Espero que este breve post sirva de motivador para aprimorar seus conhecimentos e caso queira estudar um pouco mais, você pode começar por este link aqui.
Tags: ActionScript, ActionScript 3, ActionScript 3.0, Adobe, Adobe Flash Player, AS3, Interface, OOP, Orientação a Objetos, POO