domingo, 10 de junho de 2012

Agilidade com Django - Parte 2

Olá amigos,
Estamos de volta em mais um capítulo sobre este excelente framework chamado Django.
Minha intenção é dar continuidade, e hoje atacarmos a criação básica de um projeto Django.

Vou ficar devendo um aprofundamento maior, mas creio que você poderá fazer caso tenha interesse em se aprofundar neste excelente, porque não dizer, melhor framework do mercado.
Aliás, não é atoa que grandes players como Google investem pesado em Python.

Vamos lá...


Iniciando um projeto com Django (Eu vou usar o Ubuntu Linux, mas você poderá usar qualquer S.O. com o Python e Django devidamente instalado).

 Primeiro passo, abra a o seu prompt e digite:

django-admin.py startproject helloworld
Após, basta executar um comando "ls" ou "dir" na pasta em que você executou o comando.
Como podemos ver o django-admin.py criou um diretório com o nome do nosso projeto (helloworld). Dentro deste diretório, você deverá ver um conjunto de arquivos que será o esqueleto da aplicação que estamos criando.

Você deverá ter uma estrutura igual a esta:

drwxr-xr-x 2 alexandre alexandre 4096 2012-06-10 18:05 ./
drwxr-xr-x 3 alexandre alexandre 4096 2012-06-10 18:05 ../
-rw-r--r-- 1 alexandre alexandre    0 2012-06-10 18:05 __init__.py
-rw-r--r-- 1 alexandre alexandre  503 2012-06-10 18:05 manage.py
-rw-r--r-- 1 alexandre alexandre 5039 2012-06-10 18:05 settings.py
-rw-r--r-- 1 alexandre alexandre  577 2012-06-10 18:05 urls.py
Vamos entender para que serve cada arquivo um destes arquivos.
  • __init__.py - Arquivo vazio utilizado pelo Python para identificar um pacote.
  • manage.py - módulo/classe criada pelo Django para facilitar tarefas específicas da nossa aplicação.
  • settings.py - Arquivo utilizado pelo Django para armazenar as configurações do projeto. (O próprio nome já facilita a nossa dedução)
  • urls.py - Utilizado para configurar as urls do projeto. Por ex: Definições dos padrões de URL, acesso serão feitas por aqui.
Feito, isso vamos agora vamos testar o nosso projeto e ver se tudo ocorreu bem.
Ainda em seu prompt de comando digite:
python manage.py runserver

Se tudo ocorrer bem, você deverá ver uma saída como esta:

Validating models...
0 errors found
Django version 1.3.1, using settings 'helloworld.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Agora, basta acessar o seu navegador e digitar a seguinte url:
http://localhost:8000
Você deverá ver uma tela igual a esta:

Isso mesmo, o Django, já vem com um serviço (server) para testes, no qual não aconselho a utilizar em ambiente de produção.

Parabéns, você acaba de criar o seu primeiro projeto com Django.

Vamos dar continuidade em noso projeto no próximo Post.




quarta-feira, 22 de fevereiro de 2012

Agilidade com Django

Nos pots anteriores, vinha falando sobre APM ou Agile Project Management, ou ainda apenas Desenvolvimento Ágil.
Enfim, resolvi diversificar o blog, e escrever também sobre ferramentas que auxiliam a produtividade de equipes ágeis, e a escolhida da vez será o framework - Django.

Vamos lá...
Para começar Django é um framework web de alto nível e escrito em Python, uma poderosa linguagem multiparadigma, caso não conheça a linguagem, aconselho a dar uma visitada no site oficial, clicando aqui.

Django


O framework foi criado pelo grupo editorial "The World Company" para a criação da versão web de seus jornais. Posteriormente, em 2005, foi liberado sob a licença BSD, tornando-se assim um software de código aberto.
Assim como outros frameworks ágeis, Django utiliza o conceito DRY (Don't Repeat Yourself) ou em português "Não se repita".
O framework, adota o modelo de convenção, no lugar das massantes configurações, isso acaba agilizando bastante o desenvolvimento.


Inside of Dango


Model Layer - Camada de representação de dados do projeto. No caso do Django, o sistema ORM (Object-relational mapper) é frequentemente utilizado na criação dos nossos modelos de classes.
Templates - Comumente conhecido como View no modelo MVC, neste caso alterado para template, pois o framework lida nesta camada com modelos de templates html.
Controller - Em Django essa camada é feita por dois componentes: URL Dispatcher e as Templates (Views)
Resumindo: Django trabalha com o conceito: MTV (Modelo, Template e View), conforme você poderá observar na figura abaixo:


Django overview

Alguns aspectos interessantes sobre o framework:

  • Interface Administrativa automática - Isso mesmo, com Django, você elimina o trabalho de ter que criar uma interface de administração para o seu sistema ou site, ele faz isso automaticamente para você.
  • Suporte a internacionalização
  • Formulários - geração automática de formulários (Html) e fácil manipulação dos dados enviados por eles.
  • Segurança - gerenciamento de autenticação de usuário e controle de permissões.
  • Sistema de cache - componentes prontos para serem utilizados no cacheamento do seu sistema.
  • Sistema de templates - fácil manipulação dos templates, em uma linguagem de manipulação de dados clara e simples de utilizar até por não desenvolvedores, por ex: Webdesigner ou desenvolvedores de interface.
  • Outros componentes - serialização de dados, sistema de testes automatizado, serviço de mensagens (e-mail e troca de mensagens entre usuários), geração de feeds (RSS/Atom), paginação de resultados e etc.

Instalando
  1. Você irá precisar do Python instalado, você poderá obter daqui: http://python/download. Aqui uma OBSERVAÇÃO importante: Caso você opte pela versão 3.x de Python, procure a versão mais atual, neste caso a 1.3
  2. Baixe a última versão do framework do site do projeto, neste caso deste endereço: www.djangoproject.com/download
  3. Descompacte tudo
  4. Com o Python já instalado, abra um terminal (prompt no Windows) com a permissão de Administrador (Windows, acima da versão XP) e vá até o diretório em que o Django foi descompactado.
  5. Agora execute o comando python setup.py install como administrador (Windows, acima da versão XP), caso opte pelo linux/OS X não esqueça de usar o comando sudo.
 O resultado deverá ser igual a imagem abaixo:



Pronto você deverá ter seu Python e o Django devidamente instalados em seu computador, agora é só praticar.
No próximo post, vou explicar como criar uma app com Python Django.


Abraços e até a próxima.


Referências:
Novatec - Python e Django - Osvlado Santana e Thiago Galesi
Django Brasil - www.djangobrasil.org
Django Project - www.djangoproject.com



domingo, 29 de janeiro de 2012

Como obter uma visão consistente em um projeto ágil.


Em muitas empresas que adotam o desenvolvimento ágil, o Product Owner é  reposnsável por manter a visão dos produtos, dos sistemas e de aplicações que estejam sob sua responsabilidade, ou área.
É de responsabilidade do product owner os seguintes itens:
  • Manter a visão atualizada, como já dissemos;
  • Promover a visão junto ao time;
  • Responsável pelos requisitos e documentações;
  • Participar das cerimônias de entregas;
  • Participar do planejamento das iterações representando o cliente;
...
Geralmente os questionamentos ligados a visão do produto/projeto, que um Product Owner bem treinado deveria fazer são:
  • Qual problema este produto/projeto resolve para o meu cliente?
  • Quais as funções e benefícios a solução agregaria ao meu cliente ?
  • Para quem é esta solução ?
  • Que performance, segurança, escalabilidade e outras coisas, preciso entregar para o meu cliente ?
  • Quais plataformas, padrões, aplicações e etc, terá que suportar?
"O resultado da reunião para criar a visão será uma lista de funcionalidades, com uma breve descrição do cenário."
A visão poderá ser mantida em um documento, no qual descreva de forma clara e sucinta, descrevendo o seu valor para o usuário. Poderá ser um documento formal, ou uma lista de requisitos.
Ainda no documento de visão, deveríamos incluir os requisitos não funcionais, no qual incluem:  segurança, performance, qualidade, compatibilidade, entre outros itens que serão necessários para construir o sistema.
Você pode se perguntar: Preciso de todas essas informações no documento de visão ? Nãoo seria mais fácil chamar esse documento de Documento de Escopo do Projeto ?
R: O importante é você ter um documento com as informações que serão necessários para começar o projeto, o nome ou a forma como você irá formalizar essas informações, ao meu ver tanto faz, desde que você as tenha de forma clara e objetiva.
Elas serão úteis mais para frente, principalmente para decomposição da deste documento ou visão, como chamamos.
Como pode se observar, um documento de visão, é muito similar ao documento de escopo de projeto, no qual o PMBOK  adota, onde você tem uma breve descrição do projeto, os requisitos, funcionais e não funcionais e toda e qualquer informação que seja relevante ao projeto.
Calma, sei que essa declaração  é um pouco estranha e vai de contra a muitos pensamentos agilistas, mas francamente, não sejamos puritanos. Qual o problema de montar um documento bem elaborado, que será crucial para ajudar a decompor a visão de forma mais segura?  Claro que não precisamos seguir o modelo do PMBOK, mas é importantes termos bem claros quais são os objetivos do projeto, e francamente o modelo sugerido pelo PMBOK casa bem com determinados projetos.
No próximo post, vamos abordar uma forma de decompor esta visão.

sábado, 28 de janeiro de 2012

Agile Development - The customer in site role


Hi, in this post I’ll write about the confusion that many agile teams are doing about the role of Customers and Product Owners. I hope that you enjoy.
Let’s to the work…
In the Agile Development we see the Customer role are the principle business owner. Well, and where stays the Product Owner role ?
As you can see, this roles cause confusion in agile teams beginners, because it is difficult to distinguish to what extent do each role.
Therefore, I’ll try to show the main differences between the role of Customer and Product Owner role.
Below is a brief description of the differences:
The Customer (in site) Role:
  1. Focus on the vision of the product
  2. Helps the team to build the product vision
  3. Participates in frequent deliveries
and more…
The Product Owner:
  1. Maintain the vision of the product
  2. Promote the vision
  3. Responsible of the requisites and documents
  4. Participates in frequent deliveries with their ideas
  5. They can be a Product Manager
and more…
Well, As you can see the papers often seem confusing, but in their essence they are totally different.