Upload de arquivo com Servlet e Flex – Parte I
Segue um exemplo de como desenvolver um Servlet para upload de arquivos realizando a integração com Flex. Confira a solução adotada para resolver o problema de perda de sessão do upload com Flex nos browsers Firefox e Chrome.
Segue o código java:
package com.xxx.business.services;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import sun.misc.BASE64Decoder;
import com.xxx.commons.AccessProperties;
import com.xxx.core.exception.BusinessException;
public class ServletUploadFile extends HttpServlet {
public ServletUploadFile() {
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
// Verifica se é upload
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item, "arquivos");
}
}
}
} catch (Exception e) {
e.printStackTrace();
throw (new ServletException(e.getMessage()));
}
}
private void processFormField(FileItem item) throws ServletException {
String name = item.getFieldName();
String value = item.getString();
System.out.println("Item name: " + name + " ; value: " + value);
}
private void processUploadedFile(FileItem item, String caminho)
throws Exception {
String fileName = item.getName();
AccessProperties prop = new AccessProperties();
String path = prop.getCaminhoPadrao() + caminho + "/upload/";
// Verifica a existencia da pasta e se não existir ja cria
if (FileUtils.verificaSeExisteECriaPasta(path)) {
File uploadedFile = new File(path + fileName);
if (!uploadedFile.exists()) {
uploadedFile.createNewFile();
}
item.write(uploadedFile);
} else {
throw (new BusinessException(
"Não foi possível criar uma pasta no servidor para o arquivo do upload."));
}
}
}
Agora vamos ao Flex:
Note que passamos o atributo?jsessionid que é utilizado para a sessão não ser perdida.
public function executaUploadFTP( file:FileReference ):void{
var mile:Number = new Date().getUTCMilliseconds();
var params:URLVariables = new URLVariables();
params.jsessionid = this.sessionId;
params.cod = mile;
var servletTarget:URLRequest = new URLRequest("/ServletUploadFile;jsessionid=" +
this.sessionId + "?cod=" + mile);
servletTarget.method = URLRequestMethod.POST;
servletTarget.data = params;
file.upload(servletTarget, "Filedata", true);
}
Na ?Parte II será abordado como recuperar o?jsessionid?e a construção da Tela Flex com seus métodos de busca do arquivo a ser enviado entre outro detalhes.
Download de arquivo com Servlet e Flex
Segue um exemplo de como desenvolver um Servlet para download de arquivos realizando a integração com Flex.
Vamos ao Servlet:
package com.xxx.business.services;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.agriness.produto31.business.db.entities.Usuario;
import com.agriness.produto31.business.dto.Arquivo;
import com.agriness.produto31.commons.AccessProperties;
import com.agriness.produto31.core.exception.BusinessException;
import com.agriness.produto31.recurso310003.business.services.ArquivoDownload;
public class ServletDownloadFile extends HttpServlet {
private static final long serialVersionUID = -1783732558472851554L;
@Override
@SuppressWarnings("unchecked")
protected void service(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
ArquivoDownload arqDown = new ArquivoDownload();
Arquivo arq = new Arquivo();
arq.setNome(request.getParameter("nome"));
arq.setExtensao(request.getParameter("extensao"));
arqDown.setArquivo(arq);
arqDown.setCaminho("/download/");
PrintWriter printwriter = response.getWriter();
if (arqDown.getArquivo().getNome().length() == 0) {
response.setContentType("text/html");
printwriter.println("Nome do arquivo inválido");
printwriter.flush();
printwriter.close();
return;
}
if (arqDown.getCaminho() == null) {
response.setContentType("text/html");
printwriter.println("Caminho do arquivo inválido");
printwriter.flush();
printwriter.close();
return;
}
File file = new File(arqDown.getCaminho()
+ arqDown.getArquivo().getNome());
if (file == null) {
response.setContentType("text/html");
printwriter.println("Arquivo não pode ser lido");
printwriter.flush();
printwriter.close();
return;
}
if (!file.exists() || !file.canRead() || file.isDirectory()) {
response.setContentType("text/html");
if (!file.exists())
printwriter.println("Arquivo inexistente");
else if (file.isDirectory())
printwriter.println("O arquivo é um diretório");
else
printwriter.println("Arquivo não pode ser lido");
printwriter.flush();
printwriter.close();
return;
}
response.setHeader("Content-Disposition", "attachment; filename = "
+ arqDown.getArquivo().getNome());
response.setContentType("octet-stream");
int BUFF_SIZE = 1024;
byte[] buffer = new byte[BUFF_SIZE];
response.setContentLength((int) file.length());
FileInputStream fis = new FileInputStream(file);
OutputStream os = response.getOutputStream();
int byteCount = 0;
try {
do {
byteCount = fis.read(buffer);
if (byteCount == -1)
break;
os.write(buffer, 0, byteCount);
os.flush();
} while (true);
} catch (Exception excp) {
excp.printStackTrace();
} finally {
os.close();
fis.close();
}
}
}
Segue o código Flex:
public function executaDownloadFromUrl( url:String ):void{
if( url == null ){
return;
}
var u:URLRequest = new URLRequest(url);
navigateToURL(u);
}
Monte a url conforme os atributos definidos no Servlet.
ex: http://meudominio.com/Servlet/?nome=nomeArquivo&extensao=.pdf
Caso sua aplicação esteja apresentando datas com um dia a menos ou erradas essa pode ser a solução.
Crie a classe?ServletContextListenerTimefix.java :
package com.xxx.business.listeners;
import java.util.TimeZone;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletContextListenerTimefix implements ServletContextListener {
@Override
public void contextDestroyed(final ServletContextEvent $event) {
}
@Override
public void contextInitialized(final ServletContextEvent $event) {
TimeZone.setDefault(TimeZone.getTimeZone("GMT-3"));
}
}
Depois set ela no web.xml:
com.xxx.business.listeners.ServletContextListenerTimefix
UX Specialist – Links para “entrar na profissão”
What the hell is UX, e IxD – Design de Interação, abordagem direta uma galera tem me perguntado sobre a carreira de UX Specialist, o que é, o que deixa de ser, onde encontra-se material, etc.
Vou resumir, ou tentar.
UX Specialist é o indivíduo especializado em User Experience, a essa altura você deve dizer “você está de brincadeira comigo…”, mas não poderia deixar de enfatizar isso, já que, quando falo especialista, é especialista mesmo, é alguém que entende o assunto, não é apenas um termo.
Portanto, sem entrar no mérito da profissão, já que não existe faculdade para formar especialistas em UX, e muito menos cursos sobre o assunto. Os profissionais vem de diversas áreas do design, mas quando falamos em usuário temos que pensar em algo muito peculiar, INTERFACES, a maioria esmagadora vem do segmento de design de interfaces e do estudo em IxD.
Se em um futuro próximo eu ver de acordo com a perguntas dos leitores que há ainda falta de entendimento em relação a esse tema eu posso postar o que é essa carreira em alguns dos seus detalhes, por hora vou municiar vocês com material, muito material, links e mais links para você encontrar o que quiser a respeito de User Experience, mas já aviso, em português não tem coisa boa, não significativa, mas com esforço você encontra, portanto terá que ser em inglês, e se, teu inglês não está lá aquelas coisas faz um esforcinho e pede ajuda ao titio Google, garanto que vai valer a pena.
De quebra, vou dar um Help com um vídeo de introdução muito interessante… do Don Norman, (@becknovaes gosta muito dos conceitos desse especialista), acho o velhinho simpático e com uma bagagem invejável, o vídeo tem legenda em português, vale a pena.
Don Norman: 3 maneiras pelas quais o design te faz feliz
.
Você vai perceber nos links abaixo que haverá temas relacionados a IxD, IA, etc, entender todos esses assuntos fazem parte do papel de UX Specialist.
Isso não significa que eu concordo com todos os pontos de vistas de todo esse conteúdo, isso é material de investigação, de estudo. Eu tenho minhas próprias convicções sobre essa matéria User Experience, devido a meus anos de trabalho na área, pelas milhares de tentativas de erros e acertos.
Espero que com esse material você encontre o que precisa para largar de vez esse tema ou amar.
.
UX BOOKS
.
UX Primer
.
- The Design of Everyday Things
by Don Norman
- Don’t Make Me Think
by Steve Krug
- Não me faça pensar, Steve Krug o mesmo de cima só que em português
.
Design Thinking
.
- Sketching User Experiences
by Bill Buxton
- Emotional Design: Why We Love (or Hate) Everyday Things
by Don Norman
- The Inmates Are Running the Asylum
by Alan Cooper
.
Strategy
.
- Subject To Change
by Peter Merholz, Todd Wilkens, Brandon Schauer, and David Verba
.
Process
.
- The Elements of User Experience
by Jesse James Garrett
- About Face 3
by Alan Cooper, Robert Reimann, and David Cronin
- A Project Guide to UX Design by Russ Unger and Carolyn Chandler
.
Principles
.
- Designing for the Social Web
by Joshua Porter
- Designing Interfaces
by Jenifer Tidwell
- Designing Visual Interfaces
by Kevin Mullet
- Information Architecture for the World Wide Web (the Polar Bear book)
by Louis Rosenfeld and Peter Morville
- Information Architecture: Blueprints for the Web by Christina Wodtke and Austin Govella
- Designing Web Navigation by James Kalbach
- Web Form Design by Luke Wroblewski
.
Activities
.
- Usability Engineering
by Jakob Nielsen
- Handbook of Usability Testing by Jeffrey Rubin and Dana Chisnell
- Observing the User Experience by Mike Kuniavsky
.
Documentation
.
- Communicating Design
by Dan Brown
.
Extra Credit
.
.
UX BLOGS
.
- Konigi by Michael AngelesTips, tools and techniques for being a better user experience designer
- Disambiguity by Leisa ReicheltThe ins and outs of designing a product with an existing, and passionate, community
- EverydayUX by Alex RainertA fresh look at the world around us through UX-tinted glasses
- Graphpaper by Christopher FaheyCritical analysis of some of the toughest issues facing UX designers today
- inspireUX by Catriona CornettCubical-wall worthy quotations from a variety of practitioners on how and why to create positive user experiences
- Bokardo – Social Design by Joshua PorterFor everything you need to consider when designing socially-focused stuff
- Logic + Emotion by David ArmanoReusable visualizations and valuable synthesis at the intersection of user experience design, marketing and business
- Putting People First by ExperientiaA great resource for all things UX from around the globe
- Brain Sparks by User Interface Engineering (UIE)Inside the brilliant minds of user research pioneer Jared Spool and his team
- Design for Service by Jeff HowardInsights into all the ways companies need to be communicating with their customers, outside of their websites
- UX Booth by Redd Horrocks, Matthew Kammerer, David Leggett, and Andrew Maier
.
UX PUBLICATIONS
.
- Boxes and ArrowsJournal dedicated to discussing, improving and promoting the work of the information architecture community
- interactionsMagazine including timely articles, stories, and content related to the interactions between experiences, people, and technology, published by the Association for Computing Machinery
- UXmattersInsights and inspiration for the user experience community written by many distinguished practitioners
- Core77Industrial Design content and community site – articles, discussions, interviews and resources
.
LOCAL EVENTS
.
- UX Book Club
- IxDA chapters
- UPA chapters
- IAI Local Groups
- SIGCHI chapters
- User Experience Meetups
- Information Architecture Meetups
- Lots more events listed at UXnet.org
.
ORGANIZATIONS
.
- Information Architecture Institute (IAI)
- Interaction Design Association (IxDA)
- Usability Professionals Association (UPA)
- User Experience Network (UXnet)
- Special Interest Group – Computer Human Interaction (ACM/SIGCHI)
.
MAILING LISTS
.
.
WEBINARS
.
- UIE’s Virtual SeminarsA monthly series of online seminars giving you the chance to hear the latest perspectives in the world of design from the field’s premier experts.
$129 each. 90 minutes. - Rosenfeld Media’s Future Practice WebinarsThe cutting edge of contemporary user experience research and design methods and practices.
$99 each. 60 minutes. - Adaptive Path’s Virtual Seminars$129 each. 75 minutes.
- Smart Experience online material
.
WORKSHOPS
.
- UIE RoadshowIn this full-day, in-depth seminar you’ll discover the key experience-design factors, analyze your team’s strengths and weaknesses, create an experience vision, and learn the role of delight.
- AdaptivePath’s UX IntensiveThis four-day workshop series is for experienced professionals wanting to take their practice to the next level.
- Cooper U A practical collection of courses that help product team members improve their effectiveness from early planning all the way through implementation.
.
CONFERENCES
.
Inspirational
.
- Good Experience Live (GEL)A conference and community exploring good experience in all its forms — in business, art, society, technology, and life.
- IDEA ConferenceThe world’s foremost thinkers and practitioners sharing the big ideas that inspire, along with practical solutions for the ways people’s lives and systems are converging to affect society.
- Adaptive Path’s Managing Experience (Mx)Thought leaders from major corporations show you how smart and visionary management will help you successfully compete in a difficult economy.
.
Practical
.
- UIE’s User Interface Conference Examining the biggest issues in the world of web design, information architecture, and usability.
- NN/g’s Usability Week A three-day usability camp, a three-day intensive session on interaction design, and several specialized, day-long tutorials on core usability topics. Come for as few or as many days as you want.
- UPA Tutorials, workshops, Experienced Practitioners program, then two and a half days packed with presentations, Idea Markets, and opportunities to network with other user experience professionals.
.
Mixed
.
- IxDA Interaction Conference Three days of inspirational and tactical sessions geared at anyone who practices Interaction Design, as well as a day of pre-conference workshops.
- IA Summit The premier gathering place for information architects and other user experience professionals. Two days of pre-conference sessions, two keynotes and over 50 presentations.
- Adaptive Path’s UX Week A mix of inspiring talks from recognized thought leaders and hands-on workshops delivering takeaway skills, this event delivers for user experience professionals at all levels — directors, managers, and practitioners.
- UIE’s Web App Summit The four-day Summit includes two days of intensive full-day workshops and two more days of featured presentations from world-renown experts, to give you fresh perspectives and new insights on today’s web app design challenges.
- UX Australia 3-day user experience design conference, with inspiring and practical presentations, covering a range of topics about how to design great experiences for people.
- UX London A unique three-day event combining inspirational talks with in-depth workshops presented by some of the industry’s biggest names.
.
Academic
.
- ACM’s CHI The premier international conference for the field of human-computer interaction.
.
SCHOOLING
.
Human Computer Interaction
.
- Human Computer Interaction Institute at Carnegie Mellon University
(where I received a bachelor’s and master’s degree) - Master of Science in Information – HCI Specialization at University of Michigan
- Full list of HCI degree programs
.
Interaction Design
.
- Master of Design in Interaction Design at Carnegie Mellon University
- Master of Fine Arts in Interaction Design at School of Visual Arts
(starting fall 2009) - Undergraduate minor in Interaction Design at Savannah College of Art and Design
- http://www.designdeinteracao.com.br/ Puc de Minas
- Pós na FIT de Design de Interação Curso recente criado na Faculdade Impacta de Tecnologia – SP capital
.
Misc
.
- Interactive Telecommunications Program at NYU’s Tisch School of the Arts
- Institute of Design at Illinois Institute of Technology
_________________________________________
Eduardo Horvath é UX Specialist e Designer na DClick.
Formado pela Faculdade Impacta de Tecnologia no curso Design de Mídia Digital ele atua na área de Design a mais de 15 anos.
@eduardohorvath
BPOS
* Alta disponibilidade
* Segurança abrangente
* Gerenciamento simplificado de TI
O BPOS é composto dos seguintes serviços online:
Silverlight Business e WCF-RIA SERVICE
Nesta vídeo aula vamos começar a aprender a trabalhar com Business application Silverlight e WCF RIA SERVICE.
Conteúdo:
Introdução ao WCF RIA SERVICE
Primeira Aplicação em Silverlight Business application
Ado. Entity Data Model
Abraços
Flávia Moreira
Como foi o 1º #DevDay Curitiba
Sensacional!
É o melhor adjetivo para descrever como foi o 1º DevDay Curitiba, neste último sábado (25/09), tivemos um dia intenso de imersão em tecnologia Microsoft com palestrantes de altíssimo nível. Quase todos os palestrantes são MVP’s e palestraram esse ano no TechEd, maior evento organizado pela Microsoft na América Latina.
O auditório estava cheio de desenvolvedores ávidos pelo conteúdo das palestras.

O Thiago Zavaschi começou a maratona de palestras falando sobre Business Inteligence com dados Geoespaciais. Uma excelente palestra, com várias demos claras e simples!

Depois foi a minha vez de dar continuidade à imersão, contei como comecei a minha caminhada na plataforma Flex, e como aconteceu o meu primeiro contato com o WPF e Silverlight e principalmente como foi que eu abri os olhos para o Silverlight como uma plataforma realmente interessante para aplicações ricas de internet. Ao final da palestra fiz a demo de um aplicativo CRUD em Silverlight com WCF RIA Services do zero, incluindo a criação do banco de dados que você.
Tivemos uma pausa para o Coffee-break e o bate-papo.

Depois foi a vez do Djonatas Tenfen explicar para todos o que é o MVVM e quais os benefícios de se utilizar esse padrão de arquitetura em aplicações Silverlight.

Pausa para o almoço! no Mexicano!

Na volta do almoço o Rodolpho Carmo mostrou para todos como será a plataforma do Windows Phone 7 e como desenvolver um aplicativo em pouquíssimo tempo para o WP7. No final da palestra o Windows Phone 7 dançou o Ah! Muleque…

Victor Cavalcante subiu no palco logo após a palestra do Rodo e quebrou cada um dos conceitos por trás do ASP.NET WebForms comparando-o com a Matrix, pois os conceitos do WebForms simplesmente não são conceitos de Web, como por exemplo, Web não tem Estado, Web não tem Server Side Controls, etc. E nos apresentou a pílula Vermelha para conhecermos a verdade através do ASP.NET MVC + CSS + JQuery em uma palestra muito dinâmica e divertida.

E para fechar com chave de ouro o DevDay, não tinha ninguém melhor que o Giovanni Bassi. Com uma palestra extremamente provocadora, apresentando a verdade nua e crua que mexeu com vários desenvolvedores presentes fazendo-os cair na real sobre o que realmente é ser um Desenvolvedor de Software Profissional, quais as responsabilidades e obrigações de se desenvolver software! Sem dúvida foi uma palestra para a reflexão de todos.

Ao final do DevDay fizemos vários sorteios de mouse sem-fio, pen drives e uma mochila para Notebook.
Sem dúvida foi um dia sensacional!
Aguarde, pois mais DevDays virão por aí! Até o próximo…
Princípios do Pensamento Lean

O nome “Pensamento Lean” nasceu nos anos 90 com o lançamento do best seller The Machine That Changed the World : The Story of Lean Production. Os princípios de demanda puxada, just-in-time, qualidade total, melhoria contínua e flexibilidade aplicados na indústria japonesa, mais precisamente na Toyota e conhecidos como Toyota Way inspiraram também a indústria de software e fez surgir a abordagem do Lean Software Development
O Lean Software Development provê uma série de princípios sobre a aplicação de um conjunto de técnicas oriundas da indústria e aplicadas em desenvolvimento de software. Esses princípios foram amplamente adotados na manufatura japonesa onde vieram a ser conhecidos como “Lean Production“.
Nesse contexto, Mary e Tom Poppendieck identificaram sete princípios fundamentais denominados “Lean Principles” e mostraram como eles podem ser aplicados em abordagens de desenvolvimento de software ágil. Ao longo dos princípios, eles introduziram também e vinte e dois “thinking tools” para traduzir cada princípio em práticas ágeis, em particular eles apresentaram um toolkit para gerentes, lideres técnicos e gerentes de tecnologia que esperam adicionar valor ao invés de criarem barreiras para suas equipes de projetos, como os a seguir:
- Melhoria contínua em direção à excelência: desenvolvimento de software é como um exercício de descoberta.
- Gerenciando incertezas: “decidir o mais tardio possível” para adicionar mudanças dentro do sistema.
- Reduzindo o fluxo de valor: desenvolvimento rápido, feedback, e melhorias contínua.
- Dê autonomia ao time e ao indivíduo sem coordenação e comando-controle.
- Software com qualidade: promovendo coerência, usabilidade, alta coesão, manutenabilidade e adaptabilidade.
Princípio 1: Elimine o Desperdício
Elimine qualquer coisa que não agrega valor ao produto e que não são percebidos pelo cliente. No pensamento Lean, o conceito de desperdício é um grande obstáculo. Se um programador implementa mais funcionalidades do que o necessário de imediato, isso é um desperdício. Se a equipe produz documentação de análise apenas para estar em concordância com o processo, isso é um desperdício. Se o time entrega funcionalidades incompletas, isso é um desperdício. O ideal é perceber o que os clientes precisam para então fazer ou desenvolver e entregar exatamente o que eles querem, o mais rápido possível. Qualquer outra coisa que fica que não satisfaça as necessidades do cliente é um desperdício.
Princípio 2: Amplifique o Aprendizado
Desenvolvimento é um exercício de descoberta, enquanto produção é um exercício de redução de variações, e por essa razão, aprender a abordagem de desenvolvimento resultam em práticas que são bastante diferentes do que aprender abordagens de práticas de produção.
Desenvolvimento é como fazer uma nova receita, enquanto produção é como fazer um prato. Receitas são formuladas a partir da experiência de chefes de cozinha. Desenvolver uma receita é um processo de descoberta, onde o chefe utilizando de toda sua experiência e dos ingredientes a sua disposição faz iterações, experimentações, até encontrar a melhor combinação de ingrediente para o melhor sabor. Não se espera que os chefes obtenham uma receita perfeita na primeira tentativa; espera-se produzir diversas variações como parte do processo de aprendizagem. Desenvolvimento de software é concebido de forma melhor com um processo de aprendizado similar ao de criar uma nova receita. A melhor abordagem para melhorar o ambiente de desenvolvimento de software é pelo conhecimento amplificado, em um espiral de criação do conhecimento.
Princípio 3: Decida o Mais Tarde Possível
Práticas de desenvolvimento que assegurem a tomada de decisão tardia são mais eficazes em domínios que envolvem incertezas. Decidir o mais tarde possível significa manter suas opções aberta o maior tempo possível. O principal conceito deste princípio é diminuir as incertezas retardando as decisões até que possam serem feitas com base em acontecimentos mais firmes, previsíveis e conhecidos. Decisões tardias tendem a ser mais acertadas porque as melhores decisões são feitas baseadas em fatos, e não em suposições ou especulações. A principal estratégia de atrasar as decisões em um desenvolvimento de um sistema complexo é construí-lo com a capacidade de suportar mudanças.
Princípio 4: Entregue o Mais Rápido Possível
Sem entregas rápidas é impossível haver decisões tardias durante o desenvolvimento. Sem entregas rápidas não haverá feedbacks confiáveis no curto prazo. No desenvolvimento o ciclo de descoberta é fundamental para a aprendizagem: estórias, implementação, feedback e melhorias. Quanto menor esse ciclo, mais pode ser aprendido.
Uma vez que os clientes decidam o que querem, seu objetivo deve ser para criar esse valor tão rapidamente quanto possível. Entregas rápidas garante que o cliente vai ter o que ele precisa hoje, e não o que ele precisa amanhã.
Em uma organização madura em desenvolvimento de software, tudo isso acontece em um fluxo rápido em resposta a uma necessidade dos clientes.
Princípio 5: Dê autonomia à Equipe
“Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.” Esse já é um dos doze princípios por atrás do manifesto ágil. A equipe de trabalho deve ter autonomia para adequar seus próprios processos de engenharia, fazer os seus próprios compromissos e reunir as informações necessárias para alcançar seus objetivos e cumprir as suas metas. Equipes autônomas são multidisciplinares, possuem indivíduos multidisciplinares, trabalham bem com a interdisciplinaridade e promovem a autor organização. Nesse tipo de equipe mais um princípio ágil é adicionado: “em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.”
Nesse ambiente, a equipe de desenvolvimento está em melhor posição para saber responder a problemas difíceis e a pedidos urgentes. A melhor maneira de ter certeza de estar fazendo as coisas corretas é trabalhar diretamente com o cliente para entender suas necessidades, colaborar com os colegas para descobrir como satisfazer essas necessidades, e, frequentemente apresentar os resultados aos interessados para ter certeza de que estamos no caminho certo.
Princípio 6: Construa com Integridade
Qualidade é inegociável. Entregue qualidade intrínseca e explícita aos seus cliente, se eles perceberem isso, significa que foi uma entrega de qualidade. Mary e tom Poppendieck em seu livro identificaram duas dimensões de integridade: integridade percebida e integridade conceitual. A integridade percebida significa que a totalidade do produto alcança um equilíbrio entre as funções, usabilidade, confiabilidade, economia e isso encanta o cliente. A integridade conceitual significa que os conceitos centrais do sistema de trabalho em conjunto são facilitados e coeso. Ela é fator crítico de sucesso para a integridade percebida.
Um produto é considerado ter integridade percebida quando o cliente experimenta o produto e diz: Isso! Era exatamente isso que eu queria! Esse exemplo acontece com frequencia em aplicações do google. Eu particularmente senti isso quando experimentei o novo recurso de caixa prioritária do gmail.
Um produto de software deve estar sempre adicionando integridade. Isso prolonga o seu ciclo de vida operacional. Software com integridade possuem boas arquiteturas, possuem um alto nível de usabilidade e facilidade de uso, são fáceis de dar manutenção, de adaptar e de estender.
Princípio 7: Visualize o Todo
Integridade em sistemas complexo exigem um conhecimento holístico e profundo em diversas áreas. Um dos problemas mais intratáveis com o desenvolvimento do produto é que especialistas em qualquer área (por exemplo, banco de dados ou design) têm uma tendência natural em maximizar o desempenho da parte do produto que representa a sua própria especialidade, ao invés de focar no desempenho do sistema como um todo. Muitas vezes, a integridade do produto como um todo pode ser prejudicado se as pessoas atenderem aos seus próprios interesses especializados em primeiro lugar.
Tradução do inglês para português
práticas de desenvolvimento que assegurem a tomada de decisão tardia são eficazes em domínios que envolvem incerteza
Como foi o 1º #HoraExtra Ágil Curitiba
Ontem, 1º de Setembro de 2010, foi realizado o 1º #HoraExtra Ágil de Curitiba.
Primeiramente quero agradecer a todos que foram ao #HoraExtra, e dizer para você que não foi, “PERDEU”!
No #HoraExtra foram discutidos vários temas onde o foco central ficou sempre em “PESSOAS” e como melhor gerenciar o maior ativo das empresas.
![]()
Como essa foi a primeira edição, lógico que algumas coisas foram esquecidas, como por exemplo câmera fotográfica, e bloco de anotações para os papos relevantes, epic fail, mas vou tentar lembrar de alguns.
![]()
Começamos conversando sobre o conceito ágil em Desenvolvimento de Software, Scrums e afins, o papo evoluiu para o Kanban, e comparamos com o Kanban de fábrica, a origem do Kanban em software.
| X |
Passado um tempo o papo foi para o lado das métricas de velocidade de times ágeis, com a seguinte pergunta: Você, gerente ágil recém chegado para facilitar um time que você desconhece, quais métricas você pediria para conhecer de modo geral a capacidade do time?
![]()
Depois aproveitamos a experiência internacional de vários participantes para discutir a diferença cultural entre os profissionais brasileiros e europeus.
E o encontro encerrou com o debate sobre a Geração Y e a liberdade de internet para os funcionários, os gerentes comando-controle, como treinar os colaborados para utilizar com consciência os recursos fornecidos pela empresa ao invés da punição pura e simples.












