text:
.centerColumn {
  position: relative;
  margin: 0 auto;
  width: 480px;
  max-width: 100%;
  padding: 1em 1em 3em 1em;
}
@media all and (max-width: 480px) {
  .centerColumn {
    padding: 1em 1em 3em;
  }
}
@font-face {
  font-family: 'cabin';
  src: url('fonts/cabin-regular-webfont.eot');
  src: url('fonts/cabin-regular-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/cabin-regular-webfont.woff') format('woff'), url('fonts/cabin-regular-webfont.ttf') format('truetype'), url('fonts/cabin-regular-webfont.svg#cabinregular') format('svg');
  font-weight: 400;
  font-style: normal;
}
@font-face {
  font-family: 'digital';
  src: url('fonts/lets_go_digital_regular-webfont.eot');
  src: url('fonts/lets_go_digital_regular-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/lets_go_digital_regular-webfont.woff') format('woff'), url('fonts/lets_go_digital_regular-webfont.ttf') format('truetype'), url('fonts/lets_go_digital_regular-webfont.svg#lets_go_digitalregular') format('svg');
  font-weight: 400;
  font-style: normal;
}
/* apply a natural box layout model to all elements */
*,
*:before,
*:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  position: relative;
  margin: 0;
  padding: 0;
  height: 100%;
}
body {
  position: relative;
  margin: 0;
  padding: 0;
  min-height: 100%;
  font-family: cabin, Tahoma, Verdana, Arial;
  font-size: 18px;
  line-height: 1.35em;
  color: #ffffff;
  background-color: #0044ba;
  overflow-x: hidden;
  background-image: url("../img/bg/bg.clouds.2332.1448.jpg");
  background-repeat: repeat;
  background-position: center center;
  background-attachment: fixed;
  background-size: auto auto;
  background-size: cover;
}
body.verticallarger {
  background-size: auto auto;
}
@media all and (max-width: 576px) {
  body {
    background-image: url("../img/bg/bg.mobile.2.jpg");
    background-position: top left;
    background-attachment: local;
    background-size: auto auto;
  }
}
#skyoverlay {
  position: fixed;
  top: 0px;
  bottom: 0px;
  left: 0px;
  right: 0px;
  background-image: url("../img/bg/bg.clouds.2332.1448.jpg");
  background-repeat: repeat;
  background-position: center top;
  background-size: 2332px 1448px;
  opacity: 0.3;
}
body .darkeroverlay #skyoverlay {
  opacity: .45;
}
#clouds {
  position: fixed;
  top: 0px;
  bottom: 0px;
  left: 0px;
  right: 0px;
}
#clouds .cloud {
  -webkit-transform: translatez(0);
  -moz-transform: translatez(0);
  -ms-transform: translatez(0);
  -o-transform: translatez(0);
  transform: translatez(0);
  translateZ: 0;
  position: absolute;
}
#clouds .cloud img {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
}
#clouds .cloud1 {
  width: 51.71526587%;
  left: -100%;
}
#clouds .cloud2 {
  width: 51.71526587%;
  left: -100%;
}
#clouds .cloud3 {
  width: 57.11835334%;
  left: -100%;
}
#clouds .cloud4 {
  width: 41.85248714%;
  left: -100%;
}
#clouds .cloud5 {
  width: 44.33962264%;
  left: -100%;
}
a {
  color: white;
  text-decoration: none;
}
a:hover,
a:focus {
  text-decoration: underline;
}
.button {
  -webkit-appearance: none;
  position: relative;
  display: inline-block;
  border-radius: 0px;
  background: none;
  border: 1px solid #ffffff;
  color: white;
  cursor: pointer;
  font-size: 18px;
  padding: .2em 1em .1em;
}
.button:hover,
.button:focus {
  background-color: rgba(0, 0, 0, 0.2);
}
.button.submit {
  font-weight: bold;
}
#contentbg {
  display: none;
  position: fixed;
  margin: 0 auto;
  height: 100%;
  width: 480px;
  margin-left: -240px;
  left: 50%;
  background-color: rgba(0, 0, 0, 0.05);
  box-shadow: 0 0 10px 10px rgba(0, 0, 0, 0.1);
}
@media all and (max-width: 480px) {
  #contentbg {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    margin-left: 0px;
  }
}
#header {
  position: relative;
  margin: 0 auto;
  width: 480px;
  max-width: 100%;
  padding: 1em 1em 3em 1em;
  padding-top: 2em;
  padding-bottom: 0;
  z-index: 10;
}
@media all and (max-width: 480px) {
  #header {
    padding: 1em 1em 3em;
  }
}
@media all and (max-width: 480px) {
  #header {
    padding-top: 2em;
    padding-bottom: 0;
  }
}
#header #askgodlogo {
  position: relative;
  display: block;
  margin: .2em auto .2em;
  width: 100%;
  text-align: center;
}
#header #askgodlogo img {
  position: relative;
  display: inline;
  width: 100%;
}
#header #nav {
  position: relative;
  display: block;
  text-align: right;
}
#header #nav #navlinks {
  float: right;
  width: auto;
  text-align: right;
  margin-left: 0.4em;
}
#header #nav #navlinks a {
  display: inline;
  margin: 0 0 0 .5em;
}
#header #nav #navline {
  overflow: hidden;
  /* Creates a new block format context, which will make this tag fill the remaining width */
  background-color: #ffffff;
  content: '';
  height: 1px;
  position: relative;
  top: 0.6em;
}
#header #nav:after {
  content: '';
  clear: both;
  display: block;
}
.content {
  position: relative;
  margin: 0 auto;
  width: 480px;
  max-width: 100%;
  padding: 1em 1em 3em 1em;
  padding-top: 1em;
  min-height: 100%;
  background-color: transparent;
  /* IE10+ */
}
@media all and (max-width: 480px) {
  .content {
    padding: 1em 1em 3em;
  }
}
.content input[type=text],
.content input[type=email],
.content input[type=password],
.content textarea {
  -webkit-appearance: none;
  display: block;
  border-radius: .8em;
  padding: .4em .8em .3em;
  border: 2px solid transparent;
  font-family: cabin, Tahoma, Verdana, Arial;
  font-size: 18px;
  margin: 0;
  background-color: #8080ff;
  background-color: rgba(192, 192, 222, 0.7);
  color: #ffffff;
  width: 100%;
  resize: none;
}
@media all and (max-width: 480px) {
  .content input[type=text],
  .content input[type=email],
  .content input[type=password],
  .content textarea {
    font-size: 18px;
  }
}
.content input[type=text]:focus,
.content input[type=email]:focus,
.content input[type=password]:focus,
.content textarea:focus {
  outline: none;
  background-color: #ffffff;
  color: #555555;
  /* IE10+ */
}
.content input[type=text]:focus::-webkit-input-placeholder,
.content input[type=email]:focus::-webkit-input-placeholder,
.content input[type=password]:focus::-webkit-input-placeholder,
.content textarea:focus::-webkit-input-placeholder {
  opacity: 1;
  color: #666666;
}
.content input[type=text]:focus::-moz-placeholder,
.content input[type=email]:focus::-moz-placeholder,
.content input[type=password]:focus::-moz-placeholder,
.content textarea:focus::-moz-placeholder {
  opacity: 1;
  color: #666666;
}
.content input[type=text]:focus:-moz-placeholder,
.content input[type=email]:focus:-moz-placeholder,
.content input[type=password]:focus:-moz-placeholder,
.content textarea:focus:-moz-placeholder {
  opacity: 1;
  color: #666666;
}
.content input[type=text]:focus::-ms-input-placeholder,
.content input[type=email]:focus::-ms-input-placeholder,
.content input[type=password]:focus::-ms-input-placeholder,
.content textarea:focus::-ms-input-placeholder {
  opacity: 1;
  color: #666666;
}
.content input[type=text]::autocomplete,
.content input[type=email]::autocomplete,
.content input[type=password]::autocomplete,
.content textarea::autocomplete {
  background-color: #ffffff;
}
.content input[type=text]::autofill,
.content input[type=email]::autofill,
.content input[type=password]::autofill,
.content textarea::autofill {
  background-color: #ffffff;
}
.content textarea {
  height: 10em;
  border-top-right-radius: .5em;
  border-bottom-right-radius: .5em;
  overflow: auto;
  background-color: rgba(216, 216, 244, 0.85);
  color: #333333;
  /* IE10+ */
}
.content textarea::-webkit-input-placeholder {
  opacity: 1;
  color: #333333;
}
.content textarea::-moz-placeholder {
  opacity: 1;
  color: #333333;
}
.content textarea:-moz-placeholder {
  opacity: 1;
  color: #333333;
}
.content textarea::-ms-input-placeholder {
  opacity: 1;
  color: #333333;
}
.content textarea:focus {
  background-color: #ffffff;
}
.content ::-webkit-input-placeholder {
  opacity: 1;
  color: #ffffff;
}
.content ::-moz-placeholder {
  opacity: 1;
  color: #ffffff;
}
.content :-moz-placeholder {
  opacity: 1;
  color: #ffffff;
}
.content ::-ms-input-placeholder {
  opacity: 1;
  color: #ffffff;
}
.content hr {
  border-style: solid;
}
.content p {
  position: relative;
  text-overflow: ellipsis;
}
.content .container {
  display: block;
  position: relative;
  margin-bottom: 0.5em;
}
.content .container label.formlabel {
  display: block;
  position: relative;
  padding: .2em 1em;
  font-size: 15.3px;
  font-weight: bold;
  opacity: 0;
}
.content .container.rightalign {
  text-align: right;
  padding-right: 1em;
}
.content .container.centeralign {
  text-align: center;
  padding: 0 1em;
}
.content form {
  position: relative;
  display: block;
}
.content input.error,
.content textarea.error {
  border: 2px solid #f46f20;
}
.content label.error {
  color: #f46f20;
  position: absolute;
  top: 0em;
  right: .8em;
  padding: .2em .5em;
  border-top-left-radius: .3em;
  border-top-right-radius: .3em;
  font-size: 15.3px;
  font-weight: bold;
  text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.6);
}
@media all and (max-width: 480px) {
  .content label.error {
    position: relative;
    border-top-left-radius: 0em;
    border-top-right-radius: 0em;
    border-bottom-left-radius: .3em;
    border-bottom-right-radius: .3em;
    top: auto;
    right: auto;
    display: block;
    width: 85%;
    margin: 0em auto 0;
  }
}
.markdown h1 {
  font-size: 1.3em;
  line-height: 1.1em;
}
.markdown {
  background-image: url('../img/bg/paper.jpg');
  padding: 2em 1.5em 3em;
  color: #444;
}
.markdown hr {
  border-style: solid;
  margin: .3em 0;
}
.markdown h1,
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
  margin-top: .3em;
  margin-bottom: .6em;
  text-shadow: 0px 1px 0px #fff;
}
.markdown a {
  color: #f46f20;
  text-shadow: 0px 1px 0px #ffffff;
}
#indexpage {
  padding-top: 0px;
}
#indexpage #indexcopyimage img {
  width: 100%;
}
#indexpage #submitcontainer {
  margin-top: 1.5em;
}
#indexpage .copy {
  margin-top: 4em;
  font-size: 20px;
  text-align: justify;
}
#indexpage #index_nav {
  position: relative;
  display: block;
  text-align: center;
  margin: 2em 0 1em;
}
#indexpage #index_nav a {
  margin: 0 .5em;
}
#indexpage #blimp {
  font-family: digital;
  position: relative;
  background-image: url("../img/bg/blimp.v3.sized.8a.png");
  background-repeat: no-repeat;
  background-size: 100% auto;
  overflow: hidden;
  width: 165%;
  margin-left: -43.3%;
  font-size: 403px;
}
#indexpage #blimp img {
  position: relative;
  visibility: hidden;
  width: 100%;
}
#indexpage #blimp #blimp_text {
  color: #3a81c3;
  background-color: #0a0242;
  top: 71.8%;
  bottom: 4.85%;
  left: 29%;
  right: 16.1%;
  position: absolute;
  font-size: 6%;
  line-height: 1em;
  text-align: center;
  letter-spacing: 2px;
  overflow: hidden;
}
#indexpage #blimp #blimp_text #blimp_text_inner {
  position: absolute;
  display: block;
  padding: 4em .5em;
  top: 0%;
}
#indexpage #blimp #blimp_text #blimp_text_inner p {
  margin: .4em;
}
@media all and (max-width: 568px) {
  #indexpage #blimp {
    margin-top: 40px;
    background-image: url("../img/bg/blimp_mini.v2.sized.8a.png");
    width: 108%;
    margin-left: -4%;
  }
  #indexpage #blimp #blimp_text {
    top: 50%;
    bottom: 19%;
    left: 13.5%;
    right: 14.1%;
  }
}
#indexcontainer {
  position: relative;
  display: block;
  overflow-x: hidden;
}
#aboutpage {
  margin-top: 2em;
}
#aboutpage #arm_god {
  position: absolute;
  top: -425px;
  right: -678px;
  background-image: url("../img/bg/arm_god.8a.png");
  width: 712px;
  height: 625px;
}
#aboutpage #arm_man {
  position: absolute;
  bottom: -370px;
  background-image: url("../img/bg/arm_man.8a.png");
  width: 722px;
  height: 578px;
  left: -36.8em;
}
@media all and (max-width: 480px) {
  #aboutpage #arm_man {
    left: -36.85em;
  }
}
#aboutcontainer {
  position: relative;
  overflow: hidden;
  display: block;
}
#eventspage .markdown p {
  margin: .6em 0;
}
.adminpage a {
  color: #f46f20;
  text-shadow: 0px 1px 0px #444;
}
.adminpage.adminwide {
  width: 960px;
  min-width: 960px;
}
#adminlogin #submitcontainer {
  margin-top: 1.5em;
}
#admindefault #admindefaultlinks a {
  display: inline-block;
}
#adminquestions #adminquestionsctrl .questionscontainer {
  display: block;
  position: relative;
}
#adminquestions #adminquestionsctrl .questionscontainer hr {
  border-color: black;
}
#adminquestions #adminquestionsctrl .questionscontainer .question {
  position: relative;
  margin: 20px 0;
  padding: 10px;
  border: 1px solid white;
  border-bottom: 3px solid white;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield {
  display: block;
  position: relative;
  overflow: hidden;
  margin: 3px 0;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield:after {
  content: '';
  display: block;
  clear: both;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield label {
  float: left;
  width: 200px;
  text-align: right;
  padding: .5em 10px;
  height: 2em;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield > div {
  display: block;
  width: auto;
  overflow: hidden;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield input {
  width: 100%;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield textarea {
  width: 100%;
  height: 6em;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .adminfield_buttons {
  position: relative;
  margin-top: .2em;
}
#adminquestions #adminquestionsctrl .questionscontainer .question .question {
  margin: 10px;
  border: 1px solid white;
  border-top: 3px solid black;
}


text:
package org.apache.commons.vfs2.provider;

import org.apache.commons.logging.Log;
import org.apache.commons.vfs2.FileSystemException;

/**
 * A partial {@link VfsComponent} implementation.
 *
 * @author Commons VFS team
 * @version $Revision$ $Date$
 */
public abstract class AbstractVfsComponent
    implements VfsComponent
{
    private VfsComponentContext context;
    private Log log;

    /**
     * Sets the Logger to use for the component.
     * @param log The Log to use.
     */
    public final void setLogger(final Log log)
    {
        this.log = log;
    }

    /**
     * Sets the context for this file system provider.
     * @param context The VfsComponentContext.
     */
    public final void setContext(final VfsComponentContext context)
    {
        this.context = context;
    }

    /**
     * Initialises the component.  This implementation does nothing.
     * @throws FileSystemException if an error occurs.
     */
    public void init() throws FileSystemException
    {
    }

    /**
     * Closes the provider.  This implementation does nothing.
     */
    public void close()
    {
    }

    /**
     * Returns the logger for this file system to use.
     */
    protected final Log getLogger()
    {
        return log;
    }

    /**
     * Returns the context for this provider.
     */
    protected final VfsComponentContext getContext()
    {
        return context;
    }
}

redpajama_set_name: RedPajamaGithub


text:
package nas

//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
//
// Code generated by Alibaba Cloud SDK Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

// InstanceType is a nested struct in nas response
type InstanceType struct {
	StorageType  string `json:"StorageType" xml:"StorageType"`
	ProtocolType string `json:"ProtocolType" xml:"ProtocolType"`
}


text:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrtgAPI
{
    /// <summary>
    /// Provides static methods for creating <see cref="FlagEnum{T}"/> objects.<para/>
    /// Note that generic type parameters cannot be inferred when performing an implicit conversion to an interface type.<para/>
    /// As such, for collection types not explicitly covered a known <see cref="FlagEnum"/>.Create method, you must either cast or
    /// convert your argument to a supported parameter type in order for type inference to function properly.
    /// </summary>
    public static class FlagEnum
    {
        /// <summary>
        /// Creates a <see cref="FlagEnum{T}"/> with a specified flag value.
        /// </summary>
        /// <typeparam name="T">The type of enum to encapsulate.</typeparam>
        /// <param name="value">The enum value to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified value.</returns>
        public static FlagEnum<T> Create<T>(T value) where T : struct
        {
            return new FlagEnum<T>(value);
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from an enumeration of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(IEnumerable<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from an array of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(params T[] value) where T : struct
        {
            return new FlagEnum<T>(value);
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from a list of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(List<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from a list of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(ReadOnlyCollection<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from a list of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(IList<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from a list of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(IReadOnlyCollection<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }

        /// <summary>
        /// Creats a new <see cref="FlagEnum{T}"/> from a list of specified flag values.
        /// </summary>
        /// <typeparam name="T">The type of enum values to encapsulate.</typeparam>
        /// <param name="value">The values to encapsulate.</param>
        /// <returns>A <see cref="FlagEnum{T}"/> that encapsulates the specified values.</returns>
        public static FlagEnum<T> Create<T>(IReadOnlyList<T> value) where T : struct
        {
            return new FlagEnum<T>(value?.ToArray());
        }
    }
}


text:
% !TeX encoding   = UTF-8
% $Header$
\documentclass[t,14pt,mathserif]{beamer}

% This file is a solution template for:

% - Talk at a conference/colloquium.
% - Talk length is about 20min.
% - Style is ornate.

% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
%
% In principle, this file can be redistributed and/or modified under
% the terms of the GNU Public License, version 2.
%
% However, this file is supposed to be a template to be modified
% for your own needs. For this reason, if you use this file as a
% template and not specifically distribute it as part of a another
% package/program, I grant the extra permission to freely copy and
% modify this file as you see fit and even to delete this copyright
% notice.

\input{style.tex}
\usepackage[brazil]{babel}
\usepackage{graphicx}%Package para figuras
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{adjustbox}
\usepackage{array}
\usepackage{booktabs}
%\usepackage[cmex10]{amsmath}
% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.

\newcommand{\sugestao}[2]{\fbox{
		\begin{minipage}{.9\textwidth}
			\textbf{Sugestão \##1:} #2
		\end{minipage}
	}
}

\newcommand{\semitransp}[2][35]{\color{fg!#1}#2}

\title[] % (optional, use only with long paper titles)
{Um Estudo de Ferramentas de \\
Gerenciamento de Requisição de Mudança}
\subtitle{Julho de 2017}

\author[] % (optional, use only with lots of authors)
{Vagner Clementino\\%~\inst{1}%
	\and Rodolfo Resende~-~Orientador%\inst{1}%
	}
% - Give the names in the same order as the appear in the paper.
% - Use the \inst{?} command only if the authors have different
%   affiliation.

\institute[] % (optional, but mostly needed)
{Departamento de Ciência da Computação\\
 Universidade Federal de Minas Gerais
}
\date[2017/07/13] %o(optional, should be abbreviation of conference name)

\subject{Engenharia de Software,
         Manutenção de Software,
         Ferramentas de Gerenciamento de Requisições de Mudança,
         Melhorias
         }
% This is only inserted into the PDF information catalog. Can be left
% out.
% If you have a file called "university-logo-filename.xxx", where xxx
% is a graphic format that can be processed by latex or pdflatex,
% resp., then you can add a logo as follows:

% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
% \logo{\pgfuseimage{university-logo}}

% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
\AtBeginSubsection[]
{\begin{frame}<beamer>{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:
%\beamerdefaultoverlayspecification{<+->}

% \expandafter\def\expandafter\insertshorttitle\expandafter{%
%   \insertshorttitle\hfill%
%   \insertframenumber\,/\,\inserttotalframenumber}

\setbeamertemplate{caption}[numbered]
\setbeamertemplate{bibliography item}{\insertbiblabel}
\begin{document}

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

\begin{frame}{Agenda}
  \tableofcontents[pausesections]
\end{frame}

% Structuring a talk is a difficult task and the following structure
% may not be suitable. Here are some rules that apply for this
% solution:

% - Exactly two or three sections (other than the summary).
% - At *most* three subsections per section.
% - Talk about 30s to 2min per frame. So there should be between about
%   15 and 30 frames, all told.

% - A conference audience is likely to know very little of what you
%   are going to talk about. So *simplify*!
% - In a 20min talk, getting the main ideas across is hard
%   enough. Leave out details, even if it means being less precise than
%   you think necessary.
% - If you omit details that are vital to the proof/implementation,
%   just say so once. Everybody will be happy with that.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONTEXTO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Contexto}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}{Uma Reflexão \ldots}
% \begin{itemize}
%     \item \textit{``Another flaw in the human character is that everybody wants
%             to build and nobody wants to do maintenance''.} Kurt Vonnegut, Jr.
% \end{itemize}
% \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Importância da Manutenção de Software}
	\begin{itemize}
        \item Dentro do ciclo de vida do software o processo de Manutenção de
            Software tem papel fundamental.
            \begin{itemize}
                \item Evolução do software (Leis de
                      Lehman~\cite{lehman1980understanding}).
                \item Correção de falhas
                \item Alto custo, que pode variar entre 60\% e 90\% do preço
                      final~\cite{kaur2015review}.
            \end{itemize}
	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Conceito de Manutenção de Software}
	\begin{itemize}

        \item A \alert{Manutenção de Software} é o processo de modificar um
              componente ou sistema de software após a sua entrega com o
              objetivo de \textit{corrigir falhas, melhorar o desempenho ou
              adaptá-lo devido à mudanças ambientais}~\cite{{159342}}.

        \item Com a adoção das práticas propostas pelos agilistas essa definição
              pode não ser adequada em determinados contextos.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Tipos de Manutenção de Software}
	\begin{itemize}

        \item A Manutenção de Software pode ser dividida em \textit{Corretiva,
              Adaptativa, Perfectiva e
              Preventiva}~\cite{Lientz:1980:SMM:601062,159342}.

        \item A \textit{ISO 14764}~\cite{1703974} propõe que exista um elemento
              denominado \alert{Requisição de Mudança (RM)} que corresponde a
              uma agregação de características das quatro categorias.

	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Tipos de Manutenção em Software}

    \begin{figure}[hbtp]
        \centering
        \includegraphics[width=.75\textwidth]{../img/modification_request.eps}
        \caption{Tipos de manutenção segundo a norma
                 ISO/IEC~14764~\cite{1703974}}
\label{fig:modification-request}
    \end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Modelo Conceitual de uma RM}
        \begin{figure}[htpb]
            \centering
            \includegraphics[width=0.75\linewidth]{../img/diagrama-classe-conceitual-requisicao-mudancas.pdf}
                \caption{Modelo conceitual de uma Requisição de Mudança.
                         Baseado em Tripathy \&
                         Naik~\cite{tripathy2014software}.}
\label{fig:diagrama-classe-requisicao-mudancas}
        \end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Atributos de uma RM}

    \begin{figure}[htpb]
        \centering
        \includegraphics[width=0.55\linewidth]{../img/diagrama-classe-atributos-requisicao-mudancas.pdf}
        \caption{Modelo de uma RM como diagrama UML\@. Adaptado
            de Singh \& Chaturvedi~\cite{singh2011bug}}
\label{fig:diagrama-classe-atributos-requisicao-mudancas}
    \end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Exemplo de uma RM}

    \begin{figure}[htpb]
        \centering
        \includegraphics[width=0.5\linewidth]{../img/rm-exemplo.pdf}
        \caption{Modelo de uma RM baseado em GUI.}
\label{fig:rm-exemplo}
    \end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}{Ciclo de Vida da RM}

%     \begin{figure}[htpb]
%         \centering
%         \includegraphics[width=0.55\linewidth]{../img/diagrama-estado-rm.pdf}
%         \caption{Diagrama de estados de uma RM\@. Extraído de Tripathy \&
%                  Naik~\cite{tripathy2014software}.}
% \label{fig:diagrama-estado-rm}
%     \end{figure}

% \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Problemas e Desafios Relacionados com as RMs}
	\begin{itemize}

        \item Localização do Problema
        % \item Dificuldade na Visualização das Informações das RMs
        \item Baixa Qualidade do Relato
        \item Identificação de RMs Duplicadas
        \item Atribuição (Triagem) de RM
        \item Classificação da RM
        \item Estimativa de Esforço da RM
        % \item Recomendação de RMs

	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Papéis na Manutenção de Software}

    Nesta dissertação, utilizamos a classificação proposta por Polo e
    outros~\cite{Polo1999}:

	\begin{itemize}
        \item Usuário Afetado
        \item Reportador
        \item Gerente de Requisição de Mudança
        \item Agente de Triagem
        \item Desenvolvedor
        \item Analista de Qualidade
        \item Chefe da Manutenção
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Volume de RMs do Editor Emacs}
    \begin{figure}[htpb]
        \centering
        \includegraphics[width=.42\linewidth]{../img/sample.png}
\caption{Número de RMs por ano\footnote{\url{https://debbugs.gnu.org/stats/emacs.html}}.}
\label{fig:emacs_num_rm_por_ano}
    \end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Ferramentas de Gerenciamento de Requisição de Mudança
        (FGRM)}
	\begin{itemize}
        \item Dependendo do tamanho do projeto de software é necessário a
              utilização de uma \alert{FGRM} para gerenciar as suas requisições de
              mudança.
        \item As \alert{FGRMs} proporcionam um espaço único onde as partes
              interessadas podem registrar as falhas e as
              melhorias.
	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Exemplos de FGRMs}
		\begin{figure}[hbtp]
			\centering
			\includegraphics[scale=.3]{../img/issue-tracking-sytem.png}
            \caption{Exemplos de FGRMs disponíveis comercialmente ou por código
                    aberto.}\label{fig:emacs_num_rm_por_ano}
		\end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Contexto] Além do Gerenciamento de RMs}
    \begin{itemize}
        \item As FGRMs gerenciam RMs e também:

            \begin{itemize}
                \item Proporciona um ponto central para a comunicação e
                      coordenação~\cite{Bertram:2010:CCB:1718918.1718972}.
                \item Possibilita a participação do processo de solução das
                      RMs~\cite{Breu:2010:INB:1718918.1718973}.
                \item Auxilia em atividades tais como~\cite{cavalcanti2013bug}:
                    \begin{itemize}
                        \item estimativa de custo
                        % \item análise de impacto
                        \item planejamento do projeto
                        % \item rastreabilidade de uma falha
                        \item extração de conhecimento
                    \end{itemize}
              \end{itemize}
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PROBLEMA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Problema}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Problema}
	\begin{itemize}

        \item Desacoplamento das funcionalidades das FGRMs com as necessidades
              de seus usuários~\cite{baysal2012qualitative, just2008towards}.

          \item Os desenvolvedores têm dificuldade em manter uma compreensão
              global das RMs com as quais estão
              envolvidos~\cite{Baysal:2013:SAP:2486788.2486957}.

        \item Extensões (plugins) propostas na
              literatura~\cite{101186,Thung:2014:BIT:2635868.2661678,Kononenko:2014:DED:2591062.2591075}.
	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OBJETIVOS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Objetivos}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Objetivos}
	\begin{itemize}
        \item Elaboramos um estudo sobre as FGRMs com os seguintes objetivos:
            \begin{enumerate}[(i)]
                \item analisar as funcionalidades oferecidas por este tipo de
                      ferramenta;
                \item mapear as melhorias que estão sendo propostas na
                    literatura;
                \item verificar como os profissionais avaliam as
                      funcionalidades das ferramentas que têm contato;
                \item propor melhorias para as funcionalidades das FGRMs\@.
            \end{enumerate}
	\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ATIVIDADES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Atividades}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Atividades}

    \begin{itemize}
        \item Estudo sobre as funcionalidades das FGRMs
        \item Mapeamento Sistemático da Literatura~\cite{Petersen2008}
        \item Levantamento (Survey) com
              desenvolvedores~\cite{wohlin2012experimentation}
        \item Sugestões de melhorias para as FGRMs
        \item Implementação de extensão para FGRM
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Estudo sobre as funcionalidades das FGRMs}
    \begin{itemize}
        \item Etapas do estudo
            \begin{enumerate}[(i)]
                \item Seleção das Ferramentas
                \item Inspeção da Documentação
                \item Agrupamento das Funcionalidades
            \end{enumerate}
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Estudo sobre as funcionalidades das FGRMs}
    \begin{itemize}
        \item Seleção das Ferramentas
            \begin{itemize}
                \item Levantamento por Questionário
                \item Dois grupos de participantes
                \item 52 participações
                \item 06 ferramentas escolhidas
            \end{itemize}
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Estudo sobre as funcionalidades das FGRMs}
    \begin{itemize}
        \item Inspeção da Documentação
            \begin{itemize}
                \item Leitura do material disponível na Internet
                \item As funcionalidades foram classificadas através da técnica
                    de \textit{Cartões de Classificação~-~Sorting
                        Cards}~\cite{just2008towards}.
            \end{itemize}
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Estudo sobre as funcionalidades das FGRMs}
    \begin{itemize}
        \item Agrupamento das Funcionalidades
            \begin{itemize}
                \item Análise Individual: O autor e um outro especialista
                    realizam de forma separada os agrupamentos.
                \item Anaĺise Compartilhada: Em um segundo momento tanto o autor
                    quanto o es\-pe\-ci\-a\-lis\-ta discutem as possíveis
                    divergências até que um consenso seja obtido.
            \end{itemize}
    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Mapeamento Sistemático da Literatura}

    \begin{itemize}
        \item Mapeamento com base nas diretrizes propostas por Petersen e
            outros~\cite{Petersen2008}.
        \item Questões de Pesquisa
            \begin{itemize}
                \item \textit{Questão 01}: Quais as melhorias e novas
                funcionalidades estão sendo propostas para as FGRM\@?
                \item \textit{Questão 02}: Quais papéis envolvidos no processo de
                    manutenção de software as melhorias das funcionalidades visam
                    dar suporte?
            \end{itemize}
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Mapeamento Sistemático da Literatura}

    \begin{itemize}
       \item Os estudos primários coletados das bases de pesquisa \textit{IEEE
             Explore, ACM Digital Library, Scopus, e Inspec/Compendex}.
     \item As sentenças de buscas foram produzidas com base na metodologia PICO
          (Population, Intervention, Comparison and
          Outcomes)~\cite{keele2007guidelines}.
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Mapeamento Sistemático da Literatura}

    \begin{itemize}
       \item Os estudos foram divididos pela pertinência do com as seguintes
             categorias:
            \begin{enumerate}[(i)]
                \item \textit{dimensões de melhoria}, conforme proposto por
                    Zimmermann e outros~\cite{zimmermann2009improving};
                \item \textit{função desempenhada} no processo de manutenção de
                    software, a partir de um conjunto de papéis desempenhados
                    por pessoas envolvidas com Manutenção e discutidos por Polo
                    e outros~\cite{Polo1999}.
            \end{enumerate}
   \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Mapeamento Sistemático da Literatura}

            \begin{figure} \centering \includegraphics[width=0.45\linewidth]
        {../img/diagrama-processo-selecao.eps}
        \caption{Número de artigos incluídos durante o processo de seleção dos
            estudos. Figura baseada em~\cite{Petersen2015}}
\label{fig:diagrama-processo-selecao}

    \end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Levantamento com Desenvolvedores}

    \begin{itemize}
        \item Questão 01: Qual a opinião dos profissionais envolvidos em
            manutenção de software com relação as funcionalidades
            oferecidas pelas FGRM\@?
        \item Questão 02: Na visão dos profissionais envolvidos em
            manutenção de software quais das melhorias nas
            funcionalidades das FGRMs propostas na literatura teriam
            maior relevância em suas atividades?
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}{[Atividades] Levantamento com Desenvolvedores}

    \begin{itemize}
        \item Questão 03: As práticas propostas pelos agilistas estão
            sendo utilizadas no processo de manutenção de software?
        \item Questão 04: Como as FGRMs podem ajudar as equipes de
            manutenção na adoção das práticas propostas pelos agilistas?
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Levantamento com Desenvolvedores}

    \begin{itemize}
        \item Fonte de Amostragem corresponde a um banco de dados em que um
              subconjunto válido da população pode ser
              recuperado.~\cite{de2014towards}.
    \end{itemize}

    \begin{table}[htpb]
        \centering
        \resizebox{.8\textwidth}{!}{%
            \begin{tabular}{@{}lllc@{}}
                \toprule
                \textbf{Identificador} & \multicolumn{1}{c}{\textbf{Fonte de
                        Amostragem}} &
                \multicolumn{1}{c}{\textbf{URL}} \\ \midrule
                FA01 & Python & https://bugs.python.org/ \\
                FA02 & Stack Overflow & https://stackoverflow.com \\ \bottomrule
            \end{tabular}%
        }
        \caption{Fontes de Amostragem utilizadas no estudo}
\label{tab:fontes-amostragens}
    \end{table}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Levantamento com Desenvolvedores}

    \begin{itemize}
        \item Formulário preenchido por 85 participantes
    \end{itemize}

    \begin{table}[htpb]
    \centering
    \resizebox{.4\textwidth}{!}{%
    \begin{tabular}{@{}lc@{}}
    \toprule
    \textbf{Função Desempenhada} & \textbf{Total} \\ \midrule
    Desenvolvedor & 23 \\
    Engenheiro de Software & 17 \\
    Gerente & 12 \\
    Arquiteto de Software & 5 \\
    Pesquisador & 5 \\
    Consultor & 4 \\
    Estudante & 3 \\
    Analista de Qualidade & 1 \\
    Designer & 1 \\ \bottomrule
    \end{tabular}%
    }
    \caption{Função desempenhada pelos participantes}
\label{tab:grafico_melhorias_fgrm_funcao_particantes}
    \end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Sugestões de Melhorias}

    \begin{itemize}
        \item Sugestões foram compiladas utilizando a literatura da área e os
            levantamentos realizados nesta dissertação, especialmente com
            Mapeamento Sistemático e Levantamento com Profissionais;
        \item E nos estudos que propõem melhorias para as
            FGRM~\cite{zimmermann2009improving, bettenburg2008makes,
                singh2011bug}.
    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Sugestões de Melhorias}

    \begin{itemize}

        \item Propostas melhorias nomeadas como Sugestão \#1
              até Sugestão \#8.

        \item Avaliadas com um levantamento com profissionais que contribuem em
              projetos hospedados no Github.

    \end{itemize}

    \begin{table}[htpb]
        \centering
        \resizebox{.25\textwidth}{!}{%
        \begin{tabular}{@{}cc@{}}
            \toprule
            \textbf{Projeto} & \textbf{Participantes} \\ \midrule
            DEBBUGS & 4 \\
            MANTISBT & 4 \\
            TRAC & 4 \\
            FOSSIL & 3 \\
            BUGZILLA & 2 \\
            REDMINE & 2 \\
            OUTROS & 6 \\
            \bottomrule
            \end{tabular}%
        }
        \caption{Projetos que os participantes contribuem.}
\label{tab:projetos_participantesmy-label}
    \end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Implementação de Extensão}

    \begin{itemize}
        \item Implementação da Sugestão \#1 na plataforma Github.
        \item Cliente para API do Github\footnote{\url{https://api.github.com/}}
              que possibilita analisar a qualidade da informação fornecida no
              relato.
        \item Batizada de \textit{IssueQuality}
    \end{itemize}

    \sugestao{01}{As FGRMs devem fornecer realimentação (feedback)
        relacionado com a qualidade do texto relatado.}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Atividades] Implementação de Extensão}

    \begin{figure}[htpb]
        \centering
        \includegraphics[width=0.657\linewidth]{../img/diagrama_funcionamento_issuequality.png}
        \caption{Visão geral do funcionamento da extensão \textit{IssueQuality}}
\label{fig:diagrama_funcionamento_issuequality}
    \end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RESULTADOS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Resultados}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Estudo sobre as funcionalidades das FGRMs}

    \begin{table}[htpb]
    \centering
    \resizebox{\textwidth}{!}{%
    \begin{tabular}{lccl}
    \toprule
    \multicolumn{1}{c}{\textbf{Ferramenta}} & \textbf{\textbf{Classificação}} &
    \textbf{Versão} & \multicolumn{1}{c}{URL} \\
    \bottomrule
    Bugzilla & Ferramenta & 5.0.3 & https://www.bugzilla.org \\
    Mantis Bug Tracker & Ferramenta & 1.3.2 & https://www.mantisbt.org \\
    Redmine & Ferramenta & 3.3.1 & http://www.redmine.org/ \\
    JIRA Software & Serviço & 7.2.4 & https://br.atlassian.com/software/jira \\
    Github Issue System & Serviço & \@-\@ & https://github.com/ \\
    Gitlab Issue Tracking System & Serviço & \@-\@ & https://gitlab.com/ \\
    \bottomrule
    \end{tabular}%
    }
    \caption{Ferramentas utilizados no estudo sobre funcionalidades das FGRMs}
\label{tab:ferramenta_utilizadas_estudo}
    \end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Estudo sobre as funcionalidades das FGRMs}

    \begin{figure}[htpb]
        \centering
        \includegraphics[width=.8\linewidth]{../img/diagrama-espectro-funcionalidades-fgrm.eps}
        \caption{Modelo de funcionalidades básicas das FGRMs}
\label{fig:diagrama-espectro-funcionalidades-fgrm}
    \end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Mapeamento Sistemático da Literatura}

    \begin{figure}[tb] \centering
        \makebox[\textwidth]{\includegraphics[width=.85\paperwidth]{../img/diagrama-esquema-dimensoes-melhorias.eps}}
        \caption{Esquema de classificação das melhorias propostas na
            literatura}\label{fig:diagrama-esquema-dimensao-melhorias}
    \end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Mapeamento Sistemático da Literatura}

    \begin{table}[htpb]
    \centering
    \resizebox{.6\textwidth}{!}{%
    \begin{tabular}{lc}
    \toprule
    \multicolumn{1}{c}{\textbf{Papel}} & \textbf{Total de Artigos} \\
    \midrule
    Agente de Triagem & 37 \\
    Desenvolvedor & 26 \\
    Analista de Qualidade & 13 \\
    Gerente de Requisição de Mudança & 11 \\
    Reportador & 6 \\
    Líder da Manutenção & 4 \\
    Todos & 3 \\
    \bottomrule
    \end{tabular}%
    }
    \caption{Total de artigos por papel na manutenção de software}
\label{tab:graf_papel_por_artigo}
    \end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Levantamento com Desenvolvedores}

\begin{table}[]
\centering
\resizebox{.55\textwidth}{!}{%
\begin{tabular}{@{}ll@{}}
\toprule
\textbf{Nível de Satisfação} & \textbf{Total} \\ \midrule
Nem satisfeito ou insatisfeito & 32 \\
Satisfeito & 21 \\
Muito Satisfeito & 11 \\
Desapontado & 6 \\
Muito Desapontado & 2 \\ \bottomrule
\end{tabular}%
}
\caption{Nível de satisfação com as Ferramentas}
\label{tab:grafico_melhorias_fgrm_nivel_satisfacao}
\end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Levantamento com Desenvolvedores}

\begin{table}[]
\centering
\resizebox{.75\textwidth}{!}{%
\begin{tabular}{@{}lc@{}}
\toprule
\textbf{Recomendação da Ferramenta Utilizada} & \textbf{Total} \\ \midrule
Provável & 32 \\
Com certeza & 22 \\
Pouco Provável & 9 \\
Não & 5 \\
Muito Improvável & 3 \\ \bottomrule
\end{tabular}%
}
\caption{Probabilidade de Recomendação da Ferramenta Utilizada}
\label{tab:grafico_melhorias_fgrm_probabilidade_recomentacao}
\end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Levantamento com Desenvolvedores}

\begin{table}[]
\centering
\resizebox{.55\textwidth}{!}{%
\begin{tabular}{@{}lc@{}}
\toprule
\textbf{Funcionalidade} & \textbf{Total} \\ \midrule
Identificação de RMs Duplicadas & 42 \\
Atribuição Automática de RM & 20 \\
Análise de Impacto de RM & 18 \\
Análise Automática de Esforço & 15 \\
Não sente falta de nenhuma & 13 \\
Análise da Qualidade do Relato & 13 \\
Suporte à Integração Contínua & 4 \\
RM's trabalhadas anteriormente & 1 \\ \bottomrule
\end{tabular}%
}
\caption{Funcionalidades que o participantes sentem falta.}
\label{fig:grafico_melhorias_fgrm_funcionalidades_falantes}
\end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Levantamento com Desenvolvedores}

\begin{table}[htpb]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{@{}lc@{}}
\toprule
\textbf{Melhorias Propostas} & \multicolumn{1}{l}{\textbf{Classificação}} \\
\midrule Priorização automatizada de RMs  urgentes e inesperadas & 1 \\ Sugestão
automatizada das  RMs que farão parte da iteração. & 2 \\ Suporte aos
desenvolvedores na  preparação para reunião diária & 3 \\ Suporte à
divisão de tarefas de forma compartilhada & 4 \\ Facilitar a propriedade
compartilhada de código & 5 \\ \bottomrule \end{tabular}%
}
\caption{Classificação das funcionalidades que possam dar suporte ao uso das
metodologias dos agilistas.}
\label{tab:melhorias_fgrm_suporte_particas_ageis}

\end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Sugestões de Melhorias}

    \begin{figure}[htpb]
        \centering
        \includegraphics[width=.9\linewidth]{../img/plot_likert_avaliacao_sug_melhorias.pdf}
        \caption{Avaliação das Sugestões de Melhorias}
\label{fig:plot_likert_avaliacao_sug_melhorias}
    \end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Sugestões de Melhorias}

    \begin{table}[htpb]
    \centering
    \resizebox{\textwidth}{!}{%
    \begin{tabular}{@{}lcccccc@{}}
    \toprule
    \multicolumn{1}{c}{\textbf{Recomendações}} & \textbf{Discordo Fortemente} &
    \textbf{Discordo} & \textbf{Não concordo e nem discordo} & \textbf{Concordo} &
    \textbf{Concordo Fortemente} & \textbf{Ranking} \\ \midrule
    \textit{Sugestão \#6} & 0 & 1 & 2 & 6 & 20 & 45 \\
    \textit{Sugestão \#8} & 0 & 1 & 1 & 15 & 12 & 38 \\
    \textit{Sugestão \#5} & 1 & 0 & 5 & 10 & 13 & 34 \\
    \textit{Sugestão \#4} & 0 & 1 & 6 & 12 & 10 & 31 \\
    \textit{Sugestão \#2} & 0 & 2 & 7 & 13 & 7 & 25 \\
    \textit{Sugestão \#7} & 1 & 5 & 8 & 6 & 9 & 17 \\
    \textit{Sugestão \#1} & 1 & 3 & 10 & 13 & 2 & 12 \\
    \textit{Sugestão \#3} & 3 & 9 & 13 & 2 & 2 & -9 \\
    \bottomrule
    \end{tabular}%
    }
    \caption{Ranking das sugestões propostas}
\label{tab:ranking-sugestoes-melhorias}
    \end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Sugestões de Melhorias}

\begin{figure}[htpb]
    \centering
    \includegraphics[width=.9\linewidth]{../img/plot_likert_avaliacao_implementacao_melhorias.pdf}
    \caption{Avaliação sobre a implementação das sugestões propostas.}
\label{fig:plot_likert_avaliacao_implementacao_melhorias}
\end{figure}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Resultados] Sugestões de Melhorias}

\begin{table}[htpb]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{@{}ccccccc@{}}
\toprule
\multicolumn{1}{l}{\textbf{Recomendações}} & \multicolumn{1}{l}{\textbf{Muito
        Difícil}} & \multicolumn{1}{l}{\textbf{Difícil}} &
\multicolumn{1}{l}{\textbf{Neutro}} & \multicolumn{1}{l}{\textbf{Fácil}} &
\multicolumn{1}{l}{\textbf{Muito Fácil}} & \multicolumn{1}{l}{\textbf{Ranking}}
\\ \midrule
Sugestão \#6 & 0 & 0 & 8 & 16 & 5 & 26 \\
Sugestão \#4 & 0 & 1 & 8 & 17 & 3 & 22 \\
Sugestão \#3 & 4 & 3 & 9 & 10 & 3 & 5 \\
Sugestão \#2 & 2 & 7 & 11 & 8 & 1 & -1 \\
Sugestão \#7 & 3 & 12 & 4 & 7 & 3 & -5 \\
Sugestão \#5 & 2 & 11 & 12 & 3 & 1 & -10 \\
Sugestão \#8 & 0 & 16 & 7 & 6 & 0 & -10 \\
Sugestão \#1 & 8 & 16 & 3 & 2 & 0 & -30 \\
\bottomrule
\end{tabular}%
}
\caption{Ordenamento das sugestões pelo grau de dificuldade.}
\label{tab:ranking_implementacao_sug_melhorias}
\end{table}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DISCUSSÃO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Discussão}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Estudo sobre as Funcionalidades}
    \begin{itemize}

        \item As FGRMs evoluíram da gerência simples de RMs para colaborar no
            processo de desenvolvimento e manutenção do software.

        \item Seria importante que as FGRMs incorporassem outros comportamentos:
              busca de duplicados, melhoria da qualidade do relato e atribuição
              e classificação automatizadas das RMs.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Mapeamento Sistemático da Literatura}

    \begin{itemize}

        \item Prevalência de estudos na dimensão \textit{Processo} especialmente
              para os tópicos de \textit{Localização de RMs Duplicadas,
              Atribuição (Triagem) de RMs e Classificação de RMs},
              respectivamente.

        \item Total de 10 estudos foram implementados como extensões ou
              protótipos, este número poderia ser maior.

    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Mapeamento Sistemático da Literatura}

    \begin{itemize}
        \item Prevalência de estudos com foco no papel de
            \textit{Agente de Triagem}. Existe possivelmente uma crença de que é
            possível melhorar a produtividade do processo de manutenção de
            software reduzindo o esforço de encontrar o desenvolvedor mais apto.

        \item As FGRMs deveriam dar suporte ao Reportador que, na maioria da
            vezes, é o primeiro a registrar as informações que serão necessárias
            à solução da RM\@.

    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Levantamento com Desenvolvedores}
    \begin{itemize}
        \item Em geral, o nível de satisfação com as funcionalidades oferecidas
            pelas FGRMs é alto.

        \item As funcionalidades que os
            participantes mais sentiram falta, também representam a maior
            quantidade de estudos na literatura.

        \item As FGRMs poderiam oferecer suporte às praticas propostas pelos
            agilistas.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Sugestões de Melhorias}
    \begin{itemize}

        \item Em geral podemos considerar que as sugestões propostas tiveram uma
            boa aceitação dos participantes.

        \item Com relação às recomendações propostas, verificamos que a
            utilização de uma linguagem além do texto simples, como por exemplo
            o Markdown, foi muito bem aceita.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Discussão] Sugestões de Melhorias}
    \begin{itemize}

        \item O suporte à tarefas compartilhadas (sugestão \#8) também foi muito
            bem aceita.

        \item Por outro lado, as sugestões que têm algum tipo de relação com a
              interface das FGRMs (sugestões \#6, \#4, \#3 e \#2) foram
              consideradas como mais ``fácil'' de implementar.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% AMEÇAS À VALIDADE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Ameaças à Validade}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Ameaças à Validade] Estudo sobre as Funcionalidades}
    \begin{itemize}

        \item Uma ameaça à validade do trabalho está no processo de seleção das
            ferramentas.

        \item Como a extração dos dados dos Cartões foi realizada de forma
            manual pode ter ocorrido algum tipo de equívoco no processo, como
            por exemplo a não coleta de algum dado de determinada ferramenta por
            algum descuido.

        \item A classificação dos cartões pode ter falhas o que pode acarretar
              em limitação dos resultados apresentados.

    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Ameaças à Validade] Mapeamento Sistemático da Literatura}
    \begin{itemize}

        \item É possível que as perguntas de pesquisa definidas possam não
              abranger completamente o campo de investigação sobre as
              funcionalidades das FGRMs.

        \item As sentenças de busca podem não ser as mais adequadas para a
              pesquisa do maior número de documentos relevantes.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Ameaças à Validade] Levantamento com Desenvolvedores}

    \begin{itemize}

        \item Uma ameaça à validade deste trabalho está no número de
              respondentes da pesquisa.

        \item A amostragem de conveniência implica que as generalizações são
              limitadas já que a amostra pode não representar a população.

        \item Não temos garantias que as regras para seleção de participantes
              resultaram em um conjunto bem representativo da população.

     \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Ameaças à Validade] Sugestões de Melhorias}

    \begin{itemize}

        \item O total de participantes não nos permite extrapolar os resultados
            para todos os contextos em que as FGRMs estão inseridas.

        \item A utilização de apenas projetos públicos hospedados no Github
            pode ter causado algum tipo de direcionamento, como por exemplo
            foco em projetos de código aberto.

    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{[Ameaças à Validade] Sugestões de Melhorias}

    \begin{itemize}

        \item A estrutura das perguntas do formulário pode ter causado impacto
            na quantidade de respostas ou na opção escolhida pelos
            participantes.

        \item Acreditávamos que a escolha destas 08 sugestões envolveria as
            principais características, mas existe possibilidade de ficar alguma
            característica relevante de fora.

    \end{itemize}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONCLUSÕES E TRABALHOS FUTUROS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conclusões e Trabalhos Futuros}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Conclusão e Trabalhos Futuros}
    \begin{itemize}
        \item A contribuição deste trabalho de dissertação está na proposição de
            melhorias para as FGRMs tomando como base a literatura da área e a
            opinião de profissionais.

        \item Em algumas plataformas, tais como o Github e o Gitlab, foi
              possível perceber a tendência em que não existe uma clara separação
              entre o gerenciamento das RMs e o controle de versão do código.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Conclusão e Trabalhos Futuros}
    \begin{itemize}

        \item Foi possível verificar um desacoplamento entre as necessidades
            dos desenvolvedores e o que está sendo proposto na literatura.

        \item  As metodologias propostas pelos agilistas vêm sendo adotadas por
            algumas equipes de manutenção de software. As FGRMs poderiam
            implantar funcionalidades com o objetivo de suportar algumas destas
            práticas.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Conclusão e Trabalhos Futuros}
    \begin{itemize}
        \item Entendemos que seria importante a condução de um novo trabalho com
            o objetivo de descrever e avaliar os papéis realizados no processo
            de manter um software.

        \item Entendemos que seria importante a realização de um estudo com o
            objetivo de melhorar a organização dos conceitos da área de
            Manutenção de Software, em especial sobre as RMs e FGRMs.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Conclusão e Trabalhos Futuros}
    \begin{itemize}

        \item O processo de criação de RMs poderia ser melhorado com a
            utilização de uma interface que utilize um
            \textit{chatbot}~\cite{mauldin1994chatterbots,huang2007extracting},
            permitindo a criação iterativa de uma RM\@.

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Disponibilidade dos Dados e Artefatos}
    \begin{itemize}

        \item Os dados e artefatos utilizados neste trabalho de dissertação
            estão disponíveis em \url{https://goo.gl/bj3pBY}

    \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Dúvidas?}
	\begin{figure}[hbtp]
		\centering
	    \includegraphics[scale=1]{../img/questions.jpg}
	\end{figure}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[allowframebreaks]
   \frametitle{References}
   % \bibliographystyle{IEEEtranS}
   \bibliographystyle{apalike}
   \bibliography{../bib/defesa-vagner-clementino.bib}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}


text:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="jingle" default="all">

  <property file="jingle.properties"/>
  <!-- Uncomment the following property if no tests compilation is needed -->
  <!--
  <property name="skip.tests" value="true"/>
   -->

  <!-- Compiler options -->

  <property name="compiler.debug" value="on"/>
  <property name="compiler.generate.no.warnings" value="off"/>
  <property name="compiler.args" value=""/>
  <property name="compiler.max.memory" value="128m"/>
  <patternset id="ignored.files">
    <exclude name="**/CVS/**"/>
    <exclude name="**/SCCS/**"/>
    <exclude name="**/RCS/**"/>
    <exclude name="**/rcs/**"/>
    <exclude name="**/.DS_Store/**"/>
    <exclude name="**/.svn/**"/>
    <exclude name="**/vssver.scc/**"/>
    <exclude name="**/vssver2.scc/**"/>
  </patternset>
  <patternset id="compiler.resources">
    <include name="**/?*.properties"/>
    <include name="**/?*.xml"/>
    <include name="**/?*.html"/>
    <include name="**/?*.dtd"/>
    <include name="**/?*.tld"/>
    <include name="**/?*.gif"/>
    <include name="**/?*.png"/>
    <include name="**/?*.jpeg"/>
    <include name="**/?*.jpg"/>
  </patternset>

  <!-- JDK definitions -->

  <property name="jdk.bin.1.5" value="${jdk.home.1.5}/bin"/>
  <path id="jdk.classpath.1.5">
    <fileset dir="${jdk.home.1.5}">
      <include name="jre/lib/charsets.jar"/>
      <include name="jre/lib/deploy.jar"/>
      <include name="jre/lib/javaws.jar"/>
      <include name="jre/lib/jce.jar"/>
      <include name="jre/lib/jsse.jar"/>
      <include name="jre/lib/plugin.jar"/>
      <include name="jre/lib/rt.jar"/>
      <include name="jre/lib/ext/dnsns.jar"/>
      <include name="jre/lib/ext/localedata.jar"/>
      <include name="jre/lib/ext/sunjce_provider.jar"/>
      <include name="jre/lib/ext/sunpkcs11.jar"/>
    </fileset>
  </path>

  <property name="project.jdk.home" value="${jdk.home.1.5}"/>
  <property name="project.jdk.bin" value="${jdk.bin.1.5}"/>
  <property name="project.jdk.classpath" value="jdk.classpath.1.5"/>

  <!-- Project Libraries -->

  <!-- Modules -->

  <!-- Module JingleExtension -->

  <dirname property="module.jingleextension.basedir" file="${ant.file}"/>

  <property name="module.jdk.home.jingleextension" value="${project.jdk.home}"/>
  <property name="module.jdk.bin.jingleextension" value="${project.jdk.bin}"/>
  <property name="module.jdk.classpath.jingleextension" value="${project.jdk.classpath}"/>

  <property name="compiler.args.jingleextension" value="${compiler.args}"/>

  <property name="jingleextension.output.dir" value="${module.jingleextension.basedir}/../../classes"/>
  <property name="jingleextension.testoutput.dir" value="${module.jingleextension.basedir}/../../classes"/>

  <path id="jingleextension.module.bootclasspath">
    <!-- Paths to be included in compilation bootclasspath -->
  </path>

  <path id="jingleextension.module.classpath">
    <path refid="${module.jdk.classpath.jingleextension}"/>
    <pathelement location="${module.jingleextension.basedir}/../merge/jstun.jar"/>
    <pathelement location="${module.jingleextension.basedir}/../lib/smackx.jar"/>
    <pathelement location="${module.jingleextension.basedir}/../lib/smack.jar"/>
    <pathelement location="${module.jingleextension.basedir}/../lib/smackx-debug.jar"/>
    <pathelement location="${module.jingleextension.basedir}/../lib/junit.jar"/>
  </path>

  <patternset id="excluded.from.module.jingleextension">
    <patternset refid="ignored.files"/>
  </patternset>

  <patternset id="excluded.from.compilation.jingleextension">
    <patternset refid="excluded.from.module.jingleextension"/>
  </patternset>

  <path id="jingleextension.module.sourcepath">
    <dirset dir="${module.jingleextension.basedir}/../../../jingle-extension">
      <include name="source"/>
    </dirset>
  </path>

  <path id="jingleextension.module.test.sourcepath">
    <dirset dir="${module.jingleextension.basedir}/../../../jingle-extension">
      <include name="test"/>
    </dirset>
  </path>

  <target name="compile.module.jingleextension" depends="compile.module.jingleextension.production,compile.module.jingleextension.tests" description="Compile module JingleExtension"/>

  <target name="compile.module.jingleextension.production" description="Compile module JingleExtension; production classes">
    <mkdir dir="${jingleextension.output.dir}"/>
    <javac destdir="${jingleextension.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.jingleextension}/javac">
      <compilerarg line="${compiler.args.jingleextension}"/>
      <bootclasspath refid="jingleextension.module.bootclasspath"/>
      <classpath refid="jingleextension.module.classpath"/>
      <src refid="jingleextension.module.sourcepath"/>
      <patternset refid="excluded.from.compilation.jingleextension"/>
    </javac>

    <copy todir="${jingleextension.output.dir}">
      <fileset dir="${module.jingleextension.basedir}/../../source">
        <patternset refid="compiler.resources"/>
        <type type="file"/>
      </fileset>
    </copy>
  </target>

  <target name="compile.module.jingleextension.tests" depends="compile.module.jingleextension.production" description="compile module JingleExtension; test classes" unless="skip.tests">
    <mkdir dir="${jingleextension.testoutput.dir}"/>
    <javac destdir="${jingleextension.testoutput.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.jingleextension}/javac">
      <compilerarg line="${compiler.args.jingleextension}"/>
      <classpath refid="jingleextension.module.classpath"/>
      <classpath location="${jingleextension.output.dir}"/>
      <src refid="jingleextension.module.test.sourcepath"/>
      <patternset refid="excluded.from.compilation.jingleextension"/>
    </javac>

    <copy todir="${jingleextension.testoutput.dir}">
      <fileset dir="${module.jingleextension.basedir}/../../test">
        <patternset refid="compiler.resources"/>
        <type type="file"/>
      </fileset>
    </copy>
  </target>

  <target name="clean.module.jingleextension" description="cleanup module">
    <delete dir="${jingleextension.output.dir}"/>
    <delete dir="${jingleextension.testoutput.dir}"/>
  </target>

  <target name="init" description="Build initialization">
    <!-- Perform any build initialization in this target -->
  </target>

  <target name="clean" depends="clean.module.jingleextension" description="cleanup all"/>

  <target name="all" depends="init, clean, compile.module.jingleextension" description="build all"/>
</project>


text:
cask 'streamtools' do
  version '0.2.8'

  if Hardware::CPU.is_32_bit?
    sha256 'de5763ffcd6689d2157ab115e1a3d8a34e85e1e4de7b186f7f5079fe01a5f004'
    # github.com/nytlabs/streamtools was verified as official when first introduced to the cask
    url "https://github.com/nytlabs/streamtools/releases/download/#{version}/st_darwin_386-#{version}.tar.gz"
    binary "st_darwin_386-#{version}/st"
  else
    sha256 '5ca21f4c4c2091c96c508bb277cb5c022f18a8cd3c53abb1ceb11ca0f6454309'
    # github.com/nytlabs/streamtools was verified as official when first introduced to the cask
    url "https://github.com/nytlabs/streamtools/releases/download/#{version}/st_darwin_amd64-#{version}.tar.gz"
    appcast 'https://github.com/nytlabs/streamtools/releases.atom',
            checkpoint: '804719fa1c17b6827cbe3f0cb28b26c7c0161f9e18c4df3a705005ef332ae53e'
    binary "st_darwin_amd64-#{version}/st"
  end

  name 'streamtools'
  homepage 'https://nytlabs.github.io/streamtools/'
  license :apache
end


text:
package org.springframework.security.oauth2.core.user;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.SpringSecurityCoreVersion;
import org.springframework.util.Assert;

import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.stream.Collectors;

/**
 * The default implementation of an {@link OAuth2User}.
 *
 *

 * User attribute names are not standardized between providers
 * and therefore it is required that the user supply the key
 * for the user's "name" attribute to one of the constructors.
 * The key will be used for accessing the "name" of the
 * Principal (user) via {@link #getAttributes()}
 * and returning it from {@link #getName()}.
 *
 * @author Joe Grandja
 * @since 5.0
 * @see OAuth2User
 */
public class DefaultOAuth2User implements OAuth2User, Serializable {
	private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
	private final Set<GrantedAuthority> authorities;
	private final Map<String, Object> attributes;
	private final String nameAttributeKey;

	public DefaultOAuth2User(Set<GrantedAuthority> authorities, Map<String, Object> attributes, String nameAttributeKey) {
		Assert.notEmpty(authorities, "authorities cannot be empty");
		Assert.notEmpty(attributes, "attributes cannot be empty");
		Assert.hasText(nameAttributeKey, "nameAttributeKey cannot be empty");
		if (!attributes.containsKey(nameAttributeKey)) {
			throw new IllegalArgumentException("Missing attribute '" + nameAttributeKey + "' in attributes");
		}
		this.authorities = Collections.unmodifiableSet(this.sortAuthorities(authorities));
		this.attributes = Collections.unmodifiableMap(new LinkedHashMap<>(attributes));
		this.nameAttributeKey = nameAttributeKey;
	}

	@Override
	public String getName() {
		return this.getAttributes().get(this.nameAttributeKey).toString();
	}

	@Override
	public Collection<? extends GrantedAuthority> getAuthorities() {
		return this.authorities;
	}

	@Override
	public Map<String, Object> getAttributes() {
		return this.attributes;
	}

	private Set<GrantedAuthority> sortAuthorities(Set<GrantedAuthority> authorities) {
		SortedSet<GrantedAuthority> sortedAuthorities =
			new TreeSet<>(Comparator.comparing(GrantedAuthority::getAuthority));
		sortedAuthorities.addAll(authorities);
		return sortedAuthorities;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null || this.getClass() != obj.getClass()) {
			return false;
		}

		DefaultOAuth2User that = (DefaultOAuth2User) obj;

		if (!this.getName().equals(that.getName())) {
			return false;
		}
		if (!this.getAuthorities().equals(that.getAuthorities())) {
			return false;
		}
		return this.getAttributes().equals(that.getAttributes());
	}

	@Override
	public int hashCode() {
		int result = this.getName().hashCode();
		result = 31 * result + this.getAuthorities().hashCode();
		result = 31 * result + this.getAttributes().hashCode();
		return result;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("Name: [");
		sb.append(this.getName());
		sb.append("], Granted Authorities: [");
		sb.append(this.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.joining(", ")));
		sb.append("], User Attributes: [");
		sb.append(this.getAttributes().entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).collect(Collectors.joining(", ")));
		sb.append("]");
		return sb.toString();
	}
}


text:
layout: redirect
permalink: /blog/2011/05/09/the-agile-principles
redirect_to: /blog/2011/05/09/the-agile-principles/
sitemap:
  exclude: true
---


text:
<?php

/* AcmeLoginBundle:Secured:login.html.twig */
class __TwigTemplate_55204d9ad73f9f69888094dace0f7f7f extends Twig_Template
{
    protected $parent;

    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->blocks = array(
            'content' => array($this, 'block_content'),
        );
    }

    public function getParent(array $context)
    {
        if (null === $this->parent) {
            $this->parent = $this->env->loadTemplate("AcmeLoginBundle::layout.html.twig");
        }

        return $this->parent;
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        $context = array_merge($this->env->getGlobals(), $context);

        // line 25
        $context['code'] = $this->env->getExtension('demo')->getCode($this);
        $this->getParent($context)->display($context, array_merge($this->blocks, $blocks));
    }

    // line 3
    public function block_content($context, array $blocks = array())
    {
        // line 4
        echo "
Login

    ";
        // line 6
        if ($this->getContext($context, 'error')) {
            // line 7
            echo "
";
            echo twig_escape_filter($this->env, $this->getAttribute($this->getContext($context, 'error'), "message", array(), "any", false), "html");
            echo "

    ";
        }
        // line 9
        echo "
    <form action=\"";
        // line 10
        echo twig_escape_filter($this->env, $this->env->getExtension('routing')->getPath("login_check"), "html");
        echo "\" method=\"post\" id=\"login\">

            Username
            <input type=\"text\" id=\"username\" name=\"_username\" value=\"";
        // line 13
        echo twig_escape_filter($this->env, $this->getContext($context, 'last_username'), "html");
        echo "\" />

            Password
            <input type=\"password\" id=\"password\" name=\"_password\" />

        <input type=\"submit\" class=\"symfony-button-grey\" value=\"LOGIN\" />
    </form>
";
    }

    public function getTemplateName()
    {
        return "AcmeLoginBundle:Secured:login.html.twig";
    }

    public function isTraitable()
    {
        return false;
    }
}


text:
class SessionsController < Devise::SessionsController
  after_filter :set_csrf_headers, only: [:create, :destroy]
  after_filter :set_csrf_headers, only: :new, if: :json_request?

  def new
    respond_to do |format|
      format.html { super }
      format.json { login_options }
    end
  end

  def create
    respond_to do |format|
      format.html { super }
      format.json { create_from_json }
    end
  end

  def destroy
    respond_to do |format|
      format.html { super }
      format.json { destroy_from_json }
    end
  end

  private

  def create_from_json
    self.resource = warden.authenticate!(auth_options)
    sign_in(resource_name, resource)
    yield resource if block_given?
    resource_scope = resource.class.where(id: resource.id)
    render status: 200, json: UserSerializer.resource({}, resource_scope, { include_private: true })
  end

  def destroy_from_json
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
    yield if block_given?
    head :no_content
  end

  def login_options
    opts = { login: '/users/sign_in' }
    Devise.omniauth_providers.each do |provider|
      opts[provider] = "/users/auth/#{provider}"
    end
    render status: 200, json: opts
  end

  def set_csrf_headers
    response.headers['X-CSRF-Param'] = request_forgery_protection_token.to_s
    response.headers['X-CSRF-Token'] = form_authenticity_token.to_s
  end
end


text:
'use strict';

import React from 'react';

import {
  AppRegistry,
  ListView,
  StyleSheet,
  Text,
  Image,
  RefreshControl,
  TouchableHighlight,
  View
} from 'react-native';

var Style = require('./Style.js');
var Bridge = require('react-native').NativeModules.LDTReactBridge;
var NetworkErrorView = require('./NetworkErrorView.js');
var NetworkLoadingView = require('./NetworkLoadingView.js')

var CauseListView = React.createClass({
  getInitialState: function() {
    return {
      dataSource: new ListView.DataSource({
        rowHasChanged: (row1, row2) => row1 !== row2,
      }),
      isRefreshing: false,
      loaded: false,
      error: false,
    };
  },
  componentDidMount: function() {
    this.fetchData();
  },
  fetchData: function() {
    this.setState({
      error: false,
      loaded: false,
    });
    fetch(this.props.url)
      .then((response) => response.json())
      .catch((error) => this.catchError(error))
      .then((responseData) => {
        if (!responseData) {
          return;
        }
        this.setState({
          dataSource: this.state.dataSource.cloneWithRows(responseData.categories),
          loaded: true,
        });
      })

      .done();
  },
  catchError: function(error) {
    console.log("CauseListView.catchError");
    this.setState({
      error: error,
    });
  },
  render: function() {
    if (this.state.error) {
      return (
        <NetworkErrorView
          title="Actions aren't loading right now"
          retryHandler={this.fetchData}
          errorMessage={this.state.error.message}
        />);
    }
    if (!this.state.loaded) {
      return <NetworkLoadingView text="Loading actions..." />;
    }

    return (
      <ListView
        dataSource={this.state.dataSource}
        renderRow={this.renderRow}
        style={styles.listView}
        refreshControl={<RefreshControl
          onRefresh={this._onRefresh}
          refreshing={this.state.isRefreshing}
          tintColor="#CCC" />}
      />
    );
  },
  _onRefresh: function () {
    this.setState({isRefreshing: true});
    setTimeout(() => {
      this.fetchData();
      this.setState({
        isRefreshing: false,
      });
    }, 1000);
  },
  _onPressRow(cause) {
    Bridge.pushCause(cause);
  },
  renderRow: function(cause) {
    var causeColorStyle = {backgroundColor: '#' + cause.hex};
    return (
      <TouchableHighlight onPress={() => this._onPressRow(cause)}>
        <View style={styles.row}>
          <View style={[styles.causeColor, causeColorStyle]} />
          <View style={[styles.contentContainer, styles.bordered]}>
            <View>
              <Text style={Style.textHeading}>{cause.title}</Text>
            </View>
          </View>
          <View style={[styles.arrowContainer, styles.bordered]}>
              <Image
                style={styles.arrowImage}
                source={require('image!Arrow')}
              />
          </View>
        </View>
      </TouchableHighlight>
    );
  },
});

var styles = StyleSheet.create({
  listView: {
    backgroundColor: '#FFFFFF',
    paddingBottom: 10,
  },
  row: {
    backgroundColor: '#FFFFFF',
    flex: 1,
    flexDirection: 'row',
  },
  causeColor: {
    width: 8,
    backgroundColor: '#00FF00',
    height: 84,
  },
  bordered: {
    borderColor: '#EDEDED',
    borderTopWidth: 2,
    borderBottomWidth: 2,
  },
  contentContainer: {
    flex: 1,
    flexDirection: 'row',
    alignItems: 'center',
    paddingLeft: 8,
    height: 84,
  },
  arrowContainer: {
    width: 38,
    height: 84,
    alignItems: 'center',
    justifyContent: 'center',
    flexDirection: 'row',
  },
  arrowImage: {
    width: 12,
    height: 21,
  },
});

module.exports = CauseListView;


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Uses of Package com.github.rvesse.airline.annotations (Airline - Library 2.5.0 API)</title>
<meta name="date" content="2018-05-21">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev

Next

Frames

No Frames

All Classes

Uses of Package
com.github.rvesse.airline.annotations

Packages that use com.github.rvesse.airline.annotations

Package
Description

com.github.rvesse.airline

com.github.rvesse.airline.annotations

com.github.rvesse.airline.help

com.github.rvesse.airline.help.suggester

com.github.rvesse.airline.model

Classes in com.github.rvesse.airline.annotations used by com.github.rvesse.airline

Class and Description

Option

Annotation to mark a field as an option

Classes in com.github.rvesse.airline.annotations used by com.github.rvesse.airline.annotations

Class and Description

OptionType

Classes in com.github.rvesse.airline.annotations used by com.github.rvesse.airline.help

Class and Description

Arguments

Command

Marks a class as a command

Option

Annotation to mark a field as an option

Classes in com.github.rvesse.airline.annotations used by com.github.rvesse.airline.help.suggester

Class and Description

Arguments

Command

Marks a class as a command

Classes in com.github.rvesse.airline.annotations used by com.github.rvesse.airline.model

Class and Description

Group

Marks a class as providing command group metadata

OptionType

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev

Next

Frames

No Frames

All Classes

Copyright © 2012–2018. All rights reserved.