Padrões de projeto

Padrões de projeto Deixe um comentário »

Qual programador que nunca teve um tremendo medo de alterações de sistema, que normalmente surgem com um pedido do cliente por novas implementações. E qual gerente de projetos ou diretor de empresa de desenvolvimento de software que nunca ficou com os cabelos em pé ao ver várias partes do sistema serem reescritas, simplesmente por terem sido desenvolvidas ao acaso, sem seguir nenhuma regra ou processo de desenvolvimento, sem uma lógica que futuramente permitisse que o sistema fosse flexível o suficiente para ser escalonável e reaproveitado.

Este tipo de situação normalmente ocorre devido a más práticas de desenvolvimento ou mesmo por maneiras individualistas e próprias de cada programador escrever seu código, o que arruina qualquer desenvolvimento em equipe e também acarreta em desgaste dos desenvolvedores, como por exemplo na saída de um integrante da equipe. Pois aos que ficam, resta entender o que foi escrito por outra pessoa e assim poder dar manutenção ou fazer uma nova implementação num código que não foi escrito por eles, ou seja, levarão muito tempo para entender a lógica de outra pessoa e que possivelmente terá seu código reescrito, por levar menos tempo.

Mas desta forma ficamos num ciclo vicioso onde o código estará sendo reescrito cada vez que passar na mão de um novo programador.

Este processo é desgastante e extremamente desmotivador, sem falar nos prejuízos para a empresa. Mas existem diversas práticas e disciplinas para amenizar este processo, além de implantar um processo de desenvolvimento, documentando, especificando, e sobretudo projetando.

Estas práticas e disciplinas nomeamos de PADRÕES DE PROJETO, ou do inglês Design Patterns. Termo criado pelo arquiteto Christopher Alexander na década de 1970.

Os Padrões de Projeto descrevem características comuns em projetos que devem ter, idealmente, as seguintes características (WIKIPÉDIA, 2007):

  • Encapsulamento : um padrão encapsula um problema/solução bem definido. Ele deve ser independente, específico e formulado de maneira a ficar claro onde ele se aplica.
  • Generalidade : todo padrão deve permitir a construção de outras realizações a partir deste padrão.
  • Equilíbrio : quando um padrão é utilizado em uma aplicação, o equilíbrio dá a razão, relacionada com cada uma das restrições envolvidas, para cada passo do projeto. Uma análise racional que envolva uma abstração de dados empíricos, uma observação da aplicação de padrões em artefatos tradicionais, uma série convincente de exemplos e uma análise de soluções ruins ou fracassadas pode ser a forma de encontrar este equilíbrio.
  • Abstração : os padrões representam abstrações da experiência empírica ou do conhecimento cotidiano.
  • Abertura : um padrão deve permitir a sua extensão para níveis mais baixos de detalhe.
  • Combinatoriedade : os padrões são relacionados hierarquicamente. Padrões de alto nível podem ser compostos ou relacionados com padrões que endereçam problemas de nível mais baixo.

Além da definição das características de um padrão, Alexander definiu o formato que a descrição de um padrão deve ter. Ele estabeleceu que um padrão deve ser descrito em cinco partes:

  • Nome : referência que descreve de forma bastante sucinta o padrão.
  • Exemplo : uma ou mais figuras, diagramas ou descrições que ilustrem um protótipo de aplicação.
  • Contexto : a descrição das situações sob as quais o padrão se aplica.
  • Problema : (motivação, intenção e objjetiivos, aplicabilidade): apresenta o contexto do padrão e quando
    ele pode ser usado.
  • Solução : (estrutura, participantes, exemplos de código): descreve a solução e os elementos que a compõem

Além disso, os Padrões possuem características comuns quanto aos problemas que são resolvidos, possibilitando a reunião em 3 grupos, chamados também de famílias: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais.

Seguiremos nos próximos posts, discutindo cada um destes grupos juntamente com o paradigma de orientação a objetos e sobre a linguagem de programação ActionScript 3.0. Todos estes serão de grande importância no nosso processo de aprendizagem de desenvolvimento com qualidade.

Feliz Natal e um 2008 SHOW!

souweb Deixe um comentário »

Cartão de NatalDesejo a todas às pessoas que estão acessando o blog souweb.info, um Feliz Natal e um 2008 cheio de conquistas e realizações, paz, amor e alegrias.

Um grande abraço à todos e até o ano que vem!

Carlos Tristacci

Flex Data Services

Adobe Flex Deixe um comentário »

Depois de um tempo estudando sobre o assunto, posso descrever com mais confiança sobre Serviços de Dados do Flex.

Um Flex Data Service é um Objeto inserido em um arquivo MXML para comunicação com a camada de negócios de uma aplicação multi-camadas. Você usa data services para enviar e receber dados de web services, URLs HTTP e Remote Objects tais como os objetos Java baseados em servidor.

Em muitas aplicações, a camada de apresentação (a interface do usuário) é separada da camada de negócios contendo o código que implementa as funcionalidades ou as regras de negócio da aplicação, e a camada de dados contém banco de dados e outros formas de armazenamento de dados. A camada de apresentação interage com as camadas de negócios e de dados na produção de aplicações integradas.

Como uma camada tecnológica de apresentação, Flex não suporta o acesso direto a banco de dados. O código contido na camada de negócios é responsável para comunicação com banco. Em outras palavras, Flex deve trabalhar com a camada de negócios para obter acesso aos dados.

Um web service é um software projetado para suportar interação máquina-máquina na rede. Isto tem uma interface descrita em um formato processo-máquina chamado WSDL.

Um HTTP service é nada mais que uma requisição HTTP para uma URL. O principal propósito de HTTP services é recuperar dados XML de uma fonte externa.

Um remote object é um objeto Java no classpath da aplicação Flex.

Sincronização de dados

Flex Data Services gerencia este importante processo de sincronização de dados. Isto remove a complexidade e erros em potencial por prover uma robusta sincronização de dados de entre cliente e servidor. Também pode ser facilmente integrado com outras tecnologias para desenvolver novas soluções.

Gerenciamento de dados

Flex Data Services gerencia automaticamente a grandes conjuntos de dados, permitindo aos desenvolvedores focarem-se na essência da aplicação, na lógica de negócio, ao em vez de se preocupar tanto a infra-estrutura de gerenciamento de dados.

OCC (ODC)

Flex Data Services manuseia automaticamente desconexões temporárias, assegurando a entrega de dados para e a partir da aplicação cliente.

Para maiores informações : http://www.adobe.com/products/flex/dataservices/

Vida de web

souweb 3 Comentários »

Dae pessoal…

Fiquei sumido por alguns dias devido aos projetos que estou desenvolvendo, em Flex claro… e devido a estar no final do semestre e cheio de provas e trabalhos na faculdade.
Depois de algumas semanas de muito estudo e trabalho finalizo minha primeira aplicação em Flex o que me leva a uma pequena reflexão por tudo que já passei.

Pois já fazem 4 anos que conheci o Flash e hoje concluo meu primeiro aplicativo com seu primo criado para programadores, e apesar de gostar de design foi inevitável me atrair pela programação.

É… aquilo que nenhum usuário costuma ver e se quer dá algum valor, mas é o que faz tudo acontecer na internet.

Lembro dos meus estudos sobre desenvolvimento de aplicativos para internet no meu início na web, e como tudo aquilo me fascinava mesmo não conhecendo a fundo qualquer linguagem de programação, e talvez tenha sido este o real motivo de minha fascinação.

O mais interessante deste tempo na web foram as mudanças que ocorreram. Da época em que se desenvolvia o layout no Fireworks ou no Photoshop, depois fatiava para exportar como HTML e Imagens, segundo com o acabamento no Dreamweaver, inserido as animações feitas em Flash e era só publicar… barbada!

Até que em um domingo monótono resolvo pegar um livro de HTML e estudá-lo querendo entender o que o Dreamweaver já sabia fazer e eu não.

Como qualquer profissão ligada a informática surgem algumas frustrações, principalmente quando falamos do surgimento de novas versões das tecnologias que usamos para desenvolver, a minha primeira foi quando conheci melhor a W3C (World Wide Web Consortium : www.w3.org) e sua GRANDE contribuição para internet, desde sua criação até tudo aquilo que usamos hoje e percebi que muitas daquelas tags HTML já estavam depreciadas, fora de uso, ou seja, o que tinha aprendido já não servia… putz.

Foi ai que descobri que tinha uma linguagem chamada CSS, que era usada para formatar e estruturar o conteúdo de um site no lugar das tradicionais e desprezíveis tags <table> e <font>.

E que tal juntar as duas linguagenss juntamente com padrões de desenvolvimento web, webstandards e uma metodologia chamada tableless ( que quer dizer: com menos tabelas ou sem tabelas).

E por que padronizar? Imagine-se desenvolvendo um site e você desenvolve da maneira que achar mais conveniente, mas de repente começa a desenvolver com um amigo que desenvolve de um jeito que ele mesmo inventou, como muitos fazem…, o que será o futuro desta aplicação? … bom pelo que já adquire de experiência, tenho apenas um futuro para esta aplicação, principalmente quando o cliente pedir uma nova implementação… Ctrl + A e Delete… é isso ai amigo… é melhor apagar tudo e escrever de novo, pois vai levar menos tempo.

Agora se ambos seguirem padrões fica mais fácil, pois no futuro se alguém precisar alterar esta aplicação, vai ter uma base para se apoiar e continuar a desenvolver de onde parou.

Bom todos que me conhecem sabem que no início eu odiei tudo isso, como muitos dos meus alunos do curso de webdesign da Infoserv odeiam no início também. Mas sempre tive algo que me anima-se a continuar… o Flash e as animações que encheram meus olhos e de muitos outros internautas também tem código, que vai além do básico gotoAndPlay dos animadores ou flash designers.

O programa interage com o HTML… tá certo que é o velho e pobre HTML 2, mas não há necessidade demais recursos que este oferece… e também…  o CSS formata o HTML embutido no flash, até com pseudo-classes como o a:hover… que tal!?

Bom, depois de toda esta empolgação com o desenvolvimento para a web, com o Flash e outras linguagens como o JavaScript e o PHP, só para citar mais algumas, toda aquela motivação diminui, então que surge o AJAX, que para mim foi passageiro, pois já tinha perdido a paciência depois de tanto tempo verificando incompatibilidades entre navegadores e espero sinceramente que a Microsoft, que a cada evento que participo fala mais e faz menos, comece a pensar melhor no usuário da internet e no desenvolver… e para quem desenvolve… posta ai o que acha de legal nisso, pois eu acho um saco… sou da teoria da simplicidade.

Eis o Flex, com o Action Script 3.0 orientado a objetos e a componentes, para colocar um pouco de sal na minha relação com a web. No qual já desenvolvi com a equipe da Info webdesign: o novo gerenciador de conteúdo, um gerenciador de conteúdo com seções e um sistema para agências de emprego.

Só para terminar, não esqueci do último post que prometi que iria falar sobre Flex Data Services. Será o próximo… prometo… estou demorando um pouquinho para poder postar com mais detalhes, pois é o mais interessante e amplo do Flex e depois deste também irei postar alguns tutoriais práticos.

Um abraço e até a próxima!

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Login