Model Driven Architecture – Introdução

16 de setembro de 2011 – 23:07

Boa noite galera,
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.

MDA

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. :)

Até mais! ;)

Tags: , , , , , , , , ,

Comunicação entre ActionScript e JavaScript

12 de agosto de 2011 – 19:30

Boa noite pessoal,
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import flash.external.ExternalInterface;

var resultado:String;
   
// Verificação da disponibilidade do recurso 
if (ExternalInterface.available) {
   
    // Tratamento de erros
    try {
       
       resultado = ExternalInterface.call("enviarParaAS", "Valor AS");
       
       trace( resultado );
       
    } catch (error:SecurityError) {
       
        trace("Ocorreu um SecurityError: " + error.message);
       
    } catch (error:Error) {
       
        trace("Ocorreu um Error: " + error.message);
       
    }
   
} else {
   
    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:

1
2
3
     function enviarParaAS(valor) {
         return 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.
Até a próxima! ;)

Tags: , , , , , , ,

A Governança de TI

24 de julho de 2011 – 16:23

Boa tarde a todos!
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.
Veja o esquema abaixo:
Esquema de Governança TI
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
  • Simplificar as operações e/ou serviços de TI
  • Melhorar o nível de qualidade dos serviços de TI
  • Estabelecer e manter relacionamento com clientes e fornecedores
  • Maximizar uso de recursos
  • Otimizar custos
  • Gestão de riscos (Identificar, analisar e mitigar)
  • Estabelecer e manter a conformidade com as leis e regulamentos
  • Promover a integração entre o Negócio e a TI
  • Gerar valor para empresa

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.
Até a próxima! ;)

Tags: , , , , , , , , , , , , ,

Implementando uma interface com AS3

17 de julho de 2011 – 20:21

Boa noite galera,
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á! :D
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:

1
2
3
4
5
6
7
8
9
10
package br.com.thalissonoliveira
{
    public interface IAnimal
    {
        function getName():String;
        function eat():void;
        function talk():void;
       
    }
}

Agora, vamos criar duas classes que implementem esta interface:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package br.com.thalissonoliveira
{
    public class Mouse implements IAnimal
    {
        public function Mouse()
        {
        }
       
        public function getName():String
        {
            return "Mouse";
        }
       
        public function eat():void
        {
            trace("nom nom nom nom cheese");
        }
       
        public function talk():void
        {
            trace("squeek squeek");
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package br.com.thalissonoliveira
{
    public class Pig implements IAnimal
    {
        public function Pig()
        {
        }
       
        public function getName():String
        {
            return "Pig";
        }
       
        public function eat():void
        {
            trace("nom nom nom poo");
        }
       
        public function talk():void
        {
            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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package br.com.thalissonoliveira
{
    import flash.display.MovieClip;
   
    public class Zoo extends MovieClip
    {
       
        public var porco:IAnimal;
        public var rato:IAnimal;
       
        public var vetor:Array;
       
        public function Zoo()
        {
            super();
           
            porco = new Pig();
            rato = new Mouse();
           
            vetor = [porco, rato];
           
            for each(var animal:IAnimal in vetor){
           
                trace("Nome:",animal.getName(),"implements IAnimal");
               
                animal.eat();
                animal.talk();
               
                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.
Até a próxima! ;)

Tags: , , , , , , , , ,

Flex Mania 2011

6 de julho de 2011 – 9:34

FlexMania 2011

O Flex Mania é a primeira conferência Brasileira para plataforma Flash que vem sendo realizada desde 2009. Voltado para o público de desenvolvedores e designers, ela tenta trazer os tópicos mais badalados da plataforma para você caro participante.
Diferente de conferências realizadas presencialmente, o Flex Mania é realizado on-line em um ambiente criado especial para tal fim; O conhecido software da Adobe chamado Adobe Connect.
O Flex Mania não quer apenas envolver o pessoal do Flex framework, mais também contar com a participação de outros projetos open-source ou tecnologias ligadas a plataforma de aplicações ricas com uso ou não da plataforma Flash.
É por este motivo que o Flex Mania tem um excelente time de palestrantes. Juntos acumulam uma vasta experiência no mercado e gostam de compartilhar um pouco de suas experiências.
Organizado e realizado pela RIACycle Inc, o Flex Mania entrou no calendário nacional como um evento oficial da comunidade Flex brasileira atraindo assim diversas comunidades pelo Brasil e fora dele para conhecer de perto o conteúdo que sempre é postado durante os dias do evento.
Sempre há novos palestrantes, os palestrantes são convidados para palestrar no evento e demonstrar suas habilidades, novos frameworks e bibliotecas open-source criadas para amadurecer o mercado e ajudar outros desenvolvedores a criar soluções sobre suas criações e também para a plataforma Flash.
Conheça mais em www.flexmania.com.br.

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,