Demonstração Prática e Banca do Projeto de Formatura

O ano está chegando ao fim e com ele a apresentação final do projeto de formatura. Não que isso seja o fim do projeto. Ele irá ser implantado ano que vem pelo LSI, o que é uma grande notícia. Logo, ele não será só mais um projeto acadêmico engavetado; ele estará no ar!

A intenção desse post é convidá-los para a demonstração prática e a banca do nosso projeto de formatura e para conhecer a FEBRACEv ao vivo.

A demonstração prática do projeto de formatura será segunda, dia 14/12, a tarde (das 13h30 às 16h30) na sala C1-49 do prédio da Engenharia Elétrica da Escola Politécnica da USP. A banca será terça, dia 15/12, de manhã (às 9h15) na sala B2-08, também na Elétrica.

Veja o pôster e o press release do projeto.

Esperamos vocês lá!

Anúncios

09/12/2009 at 4:55 pm Deixe um comentário

Um pouco sobre XP

A programação extrema (eXtreme Programming ou XP) é um método leve para que equipes pequenas ou médias desenvolvam software em face a requisitos vagos ou que mudem constantemente. Pela definição de seu autor, Kent Beck, o XP é leve porque é focado na realização das tarefas que criem valor para o cliente. Seu principal objetivo é o desenvolvimento de software com qualidade, por meio de um estilo de desenvolvimento focado nas melhores práticas de programação, comunicação clara e trabalho em equipe.

Como outras metodologias ágeis, o XP se opõe a diversas premissas assumidas pelas metodologias tradicionais de engenharia de software. Uma dessas premissas é a possibilidade de prever todos os passos necessários para o desenvolvimento de um sistema, por um detalhado levantamento de características do problema a ser resolvido e da solução a ser desenvolvida. O XP assume a presença constante das mudanças durante o processo de desenvolvimento e propõe uma série de práticas para lidar com elas.

A programação extrema é descrita por meio de seus valores, princípios e práticas. As práticas são uma série de técnicas a serem aplicadas no dia-a-dia de trabalho da equipe. Os valores são a noção do que é certo e do que é errado no relacionamento da equipe com o trabalho e entre si. Os valores fundamentam as práticas. Porém, os valores do XP são universais e independem do contexto do desenvolvimento de software, estando assim muito distante das práticas. A ponte entre os valores e as práticas são os princípios, que trazem orientações para um contexto específico.

Uma equipe usando XP possui quatro papéis principais:

  • Programadores: foco central da metodologia, sem hierarquia.
  • Coach: pessoa com mais experiência no time, responsável por lembrar os outros das práticas e dos valores de XP. O coach não é necessariamente o melhor programador da equipe, mas deve ser o que mais entende da metodologia XP.
  • Tracker: pessoa responsável por coletar dados e informações, e apresentar para a equipe em algum formato que possa ser facilmente entendido (por exemplo usando gráficos). O intuito é mostrar o andamento do projeto e ajudar a tomar decisões de implementação, arquitetura e design. O próprio coach pode fazer esse papel ou o time escolhe quem o exercerá.
  • Cliente: em XP o cliente faz parte da equipe. Deve estar sempre presente e pronto para responder às dúvidas dos programadores.

Valores
O primeiro dos valores do XP é a Comunicação, por pressupor que a maioria dos problemas de um projeto ocorrem por dificuldades nesse aspecto. A comunicação constante e eficaz entre os membros da equipe permeia todo processo de desenvolvimento, e é ressaltado em diversas das práticas do XP.

Outro princípio é a Simplicidade, que leva a equipe a buscar sempre as soluções mais simples a um dado problema, sem tentar otimizações precoces ou a a tentativa de resolução de um problema futuro.

Como não há uma direção pré-definida a ser seguida, a equipe de XP precisa constantemente saber onde se encontra para poder determinar seus próximos passos. O valor que orienta a equipe à rápida resposta sobre as ações realizadas é o Feedback.

Coragem é a ação efetiva frente à insegurança, para a tomada de decisões necessárias ao projeto.

O último valor é o Respeito. Os membros da equipe devem se importar uns com os outros e com as ações realizadas.

Princípios

Os princípios definidos na segunda edição do livro Extreme Programming Explained do Kent Bech são as seguintes:

  • Humanidade: O software é desenvolvido por pessoas. As necessidades pessoais dos membros da equipe devem ser levadas em consideração no processo de desenvolvimento.
  • Economia: A produção de software não está à parte do processo econômico, e seus aspectos devem ser considerados.
  • Benefício mútuo: Qualquer atividade deve beneficiar todas as pessoas envolvidas (desenvolvedores e clientes). Decisões emergenciais, que custem a uma pessoa, representam uma perda ao projeto como um todo.
  • Auto semelhança: A estrutura de uma solução deve ser utilizada em outros contextos, mesmo que em diferentes escalas.
  • Aperfeiçoamento: Deve-se sempre buscar a realização do melhor trabalho possível no dia de hoje.
  • Diversidade: As equipes devem ser formadas por pessoas com diferentes perfis. Os conflitos que possam surgir dessa escolha são compensados pelo benefício das múltiplas visões sobre um problema.
  • Reflexão: Não é suficiente realizar tarefas, é necessário constantemente revisitar o trabalho feito e refletir sobre as decisões tomadas, analisando as razões dos sucessos e das falhas.
  • Fluxo: O fluxo é a realização simultânea de várias etapas do processo de desenvolvimento, ao invés de separar as fases e trabalhá-las isoladamente.
  • Oportunidade: Problemas devem ser vistos como oportunidades de mudança.
  • Redundância: Normalmente vista como desperdício, a redundância é o melhor caminho para lidar com as falhas, e deve ser empregada em diversos contextos (múltipla resolução de um problema, programação pareada, etc.).
  • Falha: Quando não se sabe a maneira de resolver um problema, deve-se implementar uma alternativa que falhe e aprender com ela. As falhas não são um desperdício, e sim conhecimento.
  • Qualidade: Qualidade não deve ser vista como uma variável de controle, negociável, e deve ser sempre buscada.
  • Pequenos passos: Ao dar grandes passos, leva-se muito tempo para realizá-los e, caso tenham sido dados na direção errada, é mais difícil voltar atrás. Agindo dessa maneira, é frequente o temor da necessidade de mudanças. Pequenos passos são uma postura mais adequada em processos complexos.
  • Aceitação de responsabilidade: A responsabilidade não deve ser designada, deve ser aceita.

Uma figura que é resume bem os valores, os princípios e as práticas está mostrada abaixo.

07/12/2009 at 12:45 am Deixe um comentário

Design Patterns em usabilidade

Devido a preocupação com a usabilidade do FEBRACEv, na quinta da semana passada, conversamos com a prof Lucia Filgueiras, que é especialista em IHC e usabilidade do PCS.

Ela disse que basicamente existem duas formas de fazer um estudo de usabilidade. Uma é fazendo a aplicação de heurísticas e a outra é fazendo testes com usuários. No caso de aplicação de heurísticas, existe o que chamam de Design Patterns, que é um conceito de arquitetura. Nesse caso, pattern não possui o mesmo sentido de standard (padrão), mas sim de “estampa”, coisas que se repetem com frequência.

A prof Lucia indicou vários sites sobre o assunto, os quais compartilhamos com vocês.

A grande pesquisadora de patterns é a Jenifer Tidwell e que ela tem vários matérias disponíveis na web:
http://jtidwell.net/ (site pessoal)
http://designinginterfaces.com/ (site do livro dela)
http://www.time-tripper.com/uipatterns/ (site com os patterns dela)
http://www.mit.edu/~jtidwell/interaction_patterns.html (site com uma parte do conteúdo do livro dela)

Outro site legal que tem vários exemplos de patterns é o Quince: http://quince.infragistics.com/UX-Design-Patterns.aspx

Outra pessoa que mexe com isso é o Van Welie e o no site dele tem vários patterns disponíveis: http://www.welie.com/patterns/index.php

Bom, essas são as dicas de hoje!

12/10/2009 at 7:15 pm 1 comentário

A preocupação com a usabilidade no FEBRACEv

Uma preocupação desde o início do projeto é com a usabilidade da rede social.

Mas o que é usabilidade?

Segundo Nielsen, usabilidade é um atributo qualitativo que avalia o quanto fácil é uma interface de usuário para ser usada. A palavra “usabilidade” também se refere ao método de melhorar a facilidade de uso durante o processo de design.

Usabilidade é definida por cinco componentes qualitativos:

  • Aprendizado: Quão fácil é para usuários realizar tarefas básicas na primeira vez que eles defrontam-se com o design?
  • Eficiência: Uma vez que os usuários aprenderam o design, quão rápido eles podem realizar as tarefas?
  • Memorização: Quando os usuários retornam para o design depois de um período sem usá-lo, quão fácil eles podem restabelecer a proficiência?
  • Erros: Quantos erros os usuários cometem, qual a gravidade desses erros, e quão fácil eles recuperam dos erros?
  • Satisfação: Quão é agradável de usar o design?

Há muitos outros atributos qualitativos importantes. Um dos mais importantes é a utilidade, que remete para a funcionalidade do design: Será que o design permite aos usuários fazer o que eles necessitam? Usabilidade e utilidade são igualmente importantes: pouco importa que algo é fácil de fazer, se não é o que você quer fazer.

E porque a usabilidade é importante na web?

A usabilidade é uma condição necessária para se “sobreviver” na web. Se o usuário achar difícil usar seu site, ele simplesmente não usará mais e irá procurar outro que ofereça a mesma coisa. Se a home do site não for clara em transmitir o que o site faz e para que serve, o usuário não entenderá e irá embora. Se os usuários se sentirem perdidos no site, eles simplesmente sairão dele. Se as informações do site forem difíceis de ler ou de entender, outro motivo que eles o abandonarão. Enfim, se o usuário encontrar dificuldades em usar seu site, ele simplesmente o abandonará sem maiores constrangimentos. Isso mostra a importância do design na retenção de usuários no seu site.

Não é a toa que essa é uma preocupação que temos na construção no nosso sistema. Afinal, queremos reter e atrair usuários para a rede social e isso será decisivo para o sucesso e o cumprimento de um dos nossos principais objetivos que é o de fomentar e estimular os jovens a discutir e fazer ciência.

Como a parte de programação do projeto está praticamente terminada no FEBRACEv, a partir de agora nos focaremos em melhorar a usabilidade dele.

Continuaremos postando aqui as novidades do projeto.

11/10/2009 at 5:21 am 1 comentário

Sobre Python e Django

No último post falamos sobre módulos reusáveis em Django, porém não falamos anteriormente o que é o Django. Para corrigir essa pequena falha, este post tratará sobre isso.

O Django é um framework para desenvolvimento web. A linguagem de programação usada com esse framework é o Python.

O Python é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991. Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation.

Uma das principais características do Python é ser uma linguagem de fácil leitura e entendimento. Para a separação de blocos de código, a linguagem usa espaços em branco e indentação ao invés de delimitadores visuais como chaves (C, Java) ou palavras (BASIC, Fortran, Pascal). Diferente de linguagens com delimitadores visuais de blocos, em Python a indentação é obrigatória e não só uma boa prática de programação.

O Django usa uma arquitetura conhecida como MTV, Model-Template-View, que nada mais é que uma variação do modelo MVC (Model, View, Controller), arquitetura na qual separam-se as regras de negócios (Controller), os dados e métodos de acessos aos mesmos (Model) e as regras de apresentação (View). Essa separação tem por objetivo o desacoplamento da lógica entre essas camadas, de maneira que cada uma delas pode ser modificada sem alterar o funcionamento das outras. Essa arquitetura também facilita a modularidade do sistema.

No caso da arquitetura MTV, o framework Django é o que faz as vezes de controlador da arquitetura MVC. Sendo assim, na arquitetura MTV, o Controller não é responsável pela lógica do negócio e sim pelo funcionamento do sistema. Além de models, views e templates, no Django há também o URL dispatcher, middlewares e handlers e são estes que são encarados como Controller.

O URL dispatcher é o componente responsável em analisar os endereços requisitados pelo cliente e redirecionar essa requisição para a aplicação correta. Já o middleware é um conjunto de componentes que realizam pré e pós filtragens nas requisições, o que possibilita funcionalidade como internacionalização de uma aplicação e gerenciamento de sessões autenticadas.

No Model, são escritas as classes que designarão as tabelas no banco de dados. A manipulação dessas tabelas ocorre através do ORM (mapeamento objeto relacional) e, por isso, não é necessária a escrita de querys em SQL para a persistência dos dados. Uma outra vantagem é baixa preocupação com qual sistema gerenciador de banco de dados será usado, uma vez que o ORM suporta vários sistemas. Há suporte atualmente para MySQL, PostgreSQL e SQLite.

Nessa camada também devem ser escritas as regras de acesso às informações, regras para os eventos de cada modelo (métodos save, delete, etc.), e também regras genéricas para eventos que podem ser usados em mais de um modelo (sinais). Toda a lógica de manipulação da informação de uma aplicação estará em seu modelo.

Na camada View, são escritas as regras de negócio e as regras de apresentação do sistema.

Na camada Template é definida a forma de apresentação dos dados que a View envia. Com o sistema de templates do Django é possível criar heranças, ou seja, um template base contendo a estrutura básica do sistema e templates específicos que herdam as características deste template base e atribuem/criam suas próprias características.

Com o uso do framework Django, um projeto é um conjunto de aplicações. Uma aplicação é uma determinada funcionalidade que compõe um projeto. Por causa disso, há a idéia de aplicações plugáveis no Django que é uma aplicação que pode ser usada em mais de um projeto com nenhuma ou quase nenhuma alteração de código. Isso quer dizer que a aplicação deve ter seus próprios modelos, suas próprias views, seus próprios templates e encapsular o máximo possível de código que não se enquadre em um desses elementos.

Para quem deseja aprender Django uma boa referência é o Django Book, que é um livro disponível na web, escrito pelo Bennet, que é um desenvolvedor bastante conceituado em Django.

Outra referência bastante completa é a própria documentação disponível no site do django (http://docs.djangoproject.com/en/dev/).

Até mais!

10/10/2009 at 5:13 pm 2 comentários

Módulos reusáveis em Django

O FEBRACEv está em fase adiantada de desenvolvimento.

O que muito ajudou para que isso fosse possível foi o uso de modelos reusáveis em Django.  Existe um site que agrega muitos modelos reusáveis de boa qualidade que é o Django Pluggables.

A vantagem de usar módulos reusáveis é não ter que implementar novamente funcionalidades muito comuns em diversos aplicativos. Por exemplo, muitos sites possuem um fórum para discussão e é muito interessante que isso seja um módulo reusável que pode ser usado nos diversos sites sem a necessidade de cada um reprogramar isso.

No caso do FEBRACEv, os modelos reusáveis são todos de código-aberto. A vantagem dos módulos serem de código-fonte aberto é a possibilidade de alteração deles para que se adequem para o nosso caso. Apesar dos modelos possuírem funcionalidades “padrão”, algumas vezes é necessário fazer alguma adaptação para se integrar ao aplicativo em específico. Por exemplo, no nosso caso temos uma galeria de fotos, porém foi necessário fazer algumas alterações no código-fonte para que cada projeto pudesse ter a sua própria galeria e só os participantes de um determinado projeto pudessem alterá-la.

Os módulos reusáveis que usamos no FEBRACEv foram:

  • Django Profiles: módulo para a criação, edição e gerenciamento de perfis para rede sociais. O autor desse módulo é Bennet, que é um dos desenvolvedores mais conceitados em Django. Está disponível no Bit Bucket;
  • Django Photologue: módulo para gerenciamento de galerias de fotos. É bem completo e pelo que pudermos perceber e ler por aí é o módulo mais completo em Django para essa funcionalidade. Está disponível no Google Code;
  • Django Basic Blog: módulo para gerenciamento de blog. Ele é bem simples e é um sistema para um blog só. Está disponível no Google Code;
  • Django Tagging: módulo que permite associar tags com algum conteúdo. Está disponível no Google Code;
  • Django Registration: módulo para cadastro de novo usuário e para login em um sistema. Está disponível no Bit Bucket e
  • Django Messages: módulo para envio de mensagens diretas entre dois usuários. Possui uma caixa de entrada, uma caixa de saída e lixeira onde os usuários podem verificar suas mensagens e respondê-las. Está disponível no Google Code.

A grande maioria dos módulos reusáveis já possuem templates bem simples, o que faz com que eles sejam bem simples de “plugar” na sua aplicação. Na grande maioria dos casos, basta você alterar o settings.py da sua aplicação, adicionando na lista INSTALLED_APPS o novo módulo e alterar o urls.py para filtrar as urls para redirecionar para a pasta certa.

É isso!

09/10/2009 at 6:05 pm 1 comentário

Faz tempo…

Faz um bom tempo que não postamos nada aqui, mas não é porque o projeto está parado. É exatamente pelo o oposto! Muito trabalho a fazer e pouco tempo disponível, isso fez com que praticamente abandonássemos o blog.

Nesse meio tempo, ocorreram muitas coisas. Houve a banca do projeto de formatura no PSI no fim de junho e tivemos que correr para implementar mais funcionalidades para apresentação. Também tivemos que correr para escrever a monografia (ou pelo menos uma primeira versão dela para entregar no PSI). No final, tudo deu certo! Apresentamos no PSI e os professores gostaram muito do projeto. E o Leandro se formou, pois só faltava essa matéria para ele…

Bom, depois dessa correria, não páramos não. Ainda temos que apresentar o projeto em dezembro no PCS, mas claro que uma versão mais refinada da que foi apresentada no PSI. E o trabalho prossegue!

Vamos fazer mais alguns posts em breve contando mais uma coisinhas do projeto!

08/10/2009 at 9:33 pm Deixe um comentário

Posts antigos


Tópicos recentes

Licença

Creative Commons License
Este blog está licenciado sob uma Licença Creative Commons.