\documentclass{beamer}

\usepackage{graphicx}

\mode<presentation>

\usepackage[portuguese]{babel}
\usepackage{pifont}
\usepackage{xspace}
\usepackage{graphicx}
\usepackage{algorithm}
\usepackage{algorithmic}

\title{Desenvolvimento \'{A}gil}
\author{Fernando Magno Quint\~{a}o Pereira}
\date{\today}

\begin{document}

\begin{frame}
\titlepage
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 1}
Considere as seguintes contraposi\c{c}\~{o}es:
\begin{itemize}
\item Itera\c{c}\~{o}es entre indiv\'{i}duos $\times$ ferramentas e processos.
\item O software que funciona $\times$ boa documenta\c{c}\~{a}o.
\item Colabora\c{c}\~{a}o com os clientes $\times$ contratos bem estabelecidos.
\item Resposta r\'{a}pida \`{a}s conting\^{e}ncias $\times$ plano bem
estruturado de trabalho.
\end{itemize}

\begin{enumerate}
\item Quais os pr\'{o}s e contras do lado esquerdo e direito de cada um destes
pontos?
\item Qual a metodologia de desenvolvimento de software adotada no lado direito?
\item E qual a metodologia de desenvolvimento adotada no lado esquerdo?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 2}
Em suas pr\'{o}prias palavras, o que \'{e} agilidade no desenvolvimento de
{\em software}?
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 3}
\begin{enumerate}
\item Porque processos iterativos facilitam a ger\^{e}ncia de mudan\c{c}as na
especifica\c{c}\~{a}o do {\em software}?
\item \'{E} poss\'{i}vel que um processo possa ser terminado em apenas uma
itera\c{c}\~{a}o, e ainda ser chamado \'{a}gil?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Princ\'{i}pios do Desenvolvimento \'{A}gil: 1--6}
\begin{enumerate}
\item {\em Software} deve ser liberado frequentemente, seja semanalmente, seja
mensalmente. O tempo de libera\c{c}\~{a}o deve ser o mais curto poss\'{i}vel.
\item Mudan\c{c}as nos requisitos s\~{a}o esperadas e bem-vindas.
\item Desenvolvedores e clientes devem trabalhar juntos, se poss\'{i}vel
diariamente, durante o projeto.
\item Dado o suporte tecnol\'{o}gico necess\'{a}rio, os desenvolvedores
devem ter flexibilidade para levar o projeto adiante.
\item Encontros face-a-face s\~{a}o a melhor forma de disseminar e sincronizar
informa\c{c}\~{o}es entre o time de desenvolvimento.
\item Boas pr\'{a}ticas de projeto e programa\c{c}\~{a}o devem ser conhecidas
e aplic\'{a}veis sempre que poss\'{i}vel.
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Princ\'{i}pios do Desenvolvimento \'{A}gil: 7--12}
\begin{enumerate}
\item A m\'{e}trica b\'{a}sica de sucesso \'{e} o {\em software} que
funciona.
\item Desenvolvedores precisam prover testes que indiquem que o {\em software}
est\'{a} funcionando.
\item O desenvolvimento do {\em software} deve ser sustent\'{a}vel, isto \'{e},
patrocinadores, desenvolvedores e usu\'{a}rios devem ser capazes de manter um
ritmo constante durante um tempo indefinido.
\item Simplicidade -- a arte de maximizar a quantidade de trabalho evitada --
\'{e} essensial.
\item Os times de desenvolvimento de {\em software} devem ser capazes de
se auto-organizerem.
\item Os times devem ser capazes de se auto-ajustarem durante o processo de
desenvolvimento, isto \'{e}, em intervalos regulares o time precisa refletir
sobre como se tornar mais efetivo.
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 4}
Seria poss\'{i}vel citarmos mais algum princ\'{i}pio que ajudasse os
desenvolvedores de {\em software} a serem ainda mais \'{a}geis e
flex\'{i}veis?
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 5}
\begin{enumerate}
\item Porque requisitos mudam tanto? Ser\'{a} que as pessoas n\~{a}o sabem de
fato o que elas querem?
\item Algu\'{e}m poderia citar algum exemplo da ``vida real"?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Encontros face a face}
M\'{e}todos de desenvolvimento que se encaixam neste paradigma ``\'{a}gil"
em geral advogam encontros face-a-face entre os desenvolvedores.
Por exemplo, o m\'{e}todo {\em scrum} advogoa encontros di\'{a}rios de
15 minutos, em que s\~{a}o respondidas as tr\^{e}s perguntas
\begin{enumerate}
\item O que voc\^{e} fez desde o \'{u}ltimo encontro?
\item Que obst\'{a}culos voc\^{e} tem encontrado.
\item O que voc\^{e} planeja fazer at\'{e} o pr\'{o}ximo encontro?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 6}
\begin{enumerate}
\item Qual a import\^{a}ncia de encontros face-a-face?
\item \'{E} poss\'{i}vel o desenvolvimento cooperativo de {\em software} se as
partes cooperantes est\~{a}o separadas geograficamente?
\item Algu\'{e}m poderia compartilhar as pr\'{a}ticas de reuni\~{o}es que
acontecem em seu pr\'{o}prio local de trabalho?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 7}
{\em Refactoring} \'{e} especialmente importante em desenvolvimento \'{a}gil.
\begin{enumerate}
\item O que \'{e} {\em refactoring}?
\item Voc\^{e}s podem listar algumas t\'{e}cnicas de refatora\c{c}\~{a}o?
\item Porque esta import\^{a}ncia especial?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{X-treme Programming}
\begin{center}
\includegraphics[width=\textwidth]{images/XP_schemme}
\end{center}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 8}
\begin{enumerate}
\item O que s\~{a}o cart\~{o}es CRC?
\begin{enumerate}
\item Que tipo de diretrizes seguir para definir quais as classes comp\~{o}em
a aplica\c{c}\~{a}o e quais as responsabilidades de cada classe?
\end{enumerate}
\item Qual \'{e} a vantagem da prototipagem?
\item E qual \'{e} o perigo da prototipagem?
\item O que \'{e} programa\c{c}\~{a}o em pares?
\item A programa\c{c}\~{a}o em pares n\~{a}o desperdi\c{c}a um programador?
\end{enumerate}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 9}
{\em X-programming} \'{e} um conceito relativamente novo, tendo surgido
como tal em 1999. Esta metodologia de desenvolvimento de {\em software}
recebeu muitas -- muitas mesmo -- cr\'{i}ticas.
\begin{itemize}
\item Quais as poss\'{i}veis desvantagens de {\em X-programming}?
\end{itemize}
Ainda assim, {\em X-programming} possui muitos f\~{a}s e proponentes, tanto na
ind\'{u}stria quanto na academia.
\begin{itemize}
\item Algu\'{e}m j\'{a} participou de rodadas de {\em X-programming} em alguma
empresa?
\end{itemize}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Task Oriented Programming}
\begin{enumerate}
\item Desenhe um diagrama de classes b\'{a}sico, que descreva os componentes
principais do sistema.
\item Crie tarefas a partir dos m\'{e}todos projetados.
\begin{enumerate}
\item Retire um cart\~{a}o de tarefa da pilha.
\item Resolva aquele cart\~{a}o de tarefa.
\item Adicione novas tarefas \`{a} pilha.
\item Atualize o diagrama de classes com os componentes criados.
\end{enumerate}
\end{enumerate}
\begin{center}
\includegraphics[width=0.5\textwidth]{images/task}
\end{center}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Exemplo}
\begin{center}
\includegraphics[width=\textwidth]{images/ex_task}
\end{center}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Quest\~{a}o 8}
A diretoria de {\em Toy Inc.} est\'{a} preocupada com o grande volume de
spams que seus funcion\'{a}rios est\~{a}o recebendo.
Produza um filtro anti-spam para a companhia. Este filtro \'{e} um programa
que recebe uma mensagem de e-mail, e separa esta mensagem em suas v\'{a}rias
partes: remetente, mensagem, data, etc.
Ap\'{o}s analisar a mensagem, o filtro retorna um n\'{u}mero real, entre 0 e
1, que indica a probabilidade de que aquela mensagem seja um spam.
H\'{a} v\'{a}rias formas de se detectar um spam:
\begin{itemize}
\item A mensagem cont\'{e}m palavras chaves que ocorrem com freq\"{u}\^{e}ncia
em spams.
\item A mensagem j\'{a} foi vista antes, e j\'{a} foi marcada como spam por um
usu\'{a}rio do sistema.
\item A mensagem prov\'{e}m de um remetente que \'{e} not\'{o}rio por enviar
spams.
\end{itemize}
\end{frame}

\end{document}