Posted on: January 29, 2020 12:18 PM
Posted by: Renato
Categories: Variados
Views: 474
1. Introdução
Devido ao crescimento das empresas e corporações, tem se tornado habitual o uso das ferramentas computacionais para potencialização das atividades profissionais.
Não alheio a isso, as empresas que militam nas áreas computacionais também têm usados as soluções tecnológicas para potencializar suas rotinas de suporte, manutenção de tecnologias, controle de demandas entre outras.
Neste documento, será proposto um projeto de software que visa atender às necessidades de uma empresa de Helpdesk “suporte ao usuário”.
Serão tratadas necessidades como: Documentação e controle de demandas, comunicação direta com o usuário entre outras atividades correlatas à área de Tecnologia da Informação.
2. Análise do Sistema
Baseado na confecção do sistema no projeto do semestre anterior, o Sistema de Help Desk foi construído com todas as diretrizes e conceitos absorvidos em conhecimentos durante as aulas.
2.1 Tela de Login
Na primeira tela, temos a tela de acesso onde o usuário deverá acessar sua área de interação através da validação dos dados feita ao banco de dados, onde se os dados estiverem corretos, o usuário terá acesso à sua área docliente.
Imagem 01 – Tela de Login
Fonte: Wander de Matos, 2018.
2.2 Painel Central
Na tela a seguir, está localizada a parte principal de acesso do usuário, onde o mesmo tem acesso aos seus chamados realizados e criação de novos chamados. A tela exibe o total de chamados e ao menu no lado esquerdo, há a opção de criação de chamados.
2.3 Tela de Criação de Chamados
Na tela acima, visualizamos a parte de criação de chamados, onde para criar tal demanda, o usuário necessita informar seu nome, o título do futuro chamado e sua respectiva descrição. Ao se criar um chamado, é gerado pelo módulo do CRUD a requisição ao banco de dados para ser criado. Essa requisição, após ser captada pela view, é repassada ao controller onde o mesmo determina o caminho correto a ser preenchido à determinada requisição. Chegando ao banco de dados, a requisição é inserida, completando assim a petição do usuário.
3. Diagramas
3.1 Diagrama de Classes
O Diagrama de Classe é o diagrama mais habitual para nós de T.I, pois é um diagrama que passa uma orientação mais ao nível de programação, segundo Booch a definição real do diagrama de classe é que ele é um diagrama que mostra um conjunto de classes, interfaces e colaborações e seus relacionamentos. Graficamente, um diagrama de classes é uma coleção de vértices e arcos”. Estes diagramas são frequentemente encontrados nos diagramas de documentação de sistemas.
Imagem 04 – Diagrama de classe
Fonte: Joaquim Brito, 2018.
3.2 Diagrama de Sequência
O Diagrama de Sequência é um diagrama originado através do resultado emitidos no diagrama de casos de uso, tendo ele um papel fundamental na determinação de arquitetura de uma aplicação orientada a objetos, É ele que permite verificar se as classes originadas no diagrama de classes são capazes de atender aos scripts definidos junto aos diagramas de casos de uso.
Definindo em termos mais leigos tem uma função de conectar ideias ou validação de conceitos.
Imagem 05 – Diagrama de sequência
Fonte: Joaquim Brito, 2018.
3.3 Diagrama de Máquina de Estado
O Diagrama de Máquina de Estado oferece um método orientado a objeto para mostrar o comportamento de um objeto e como o objeto responde a determinados “eventos”, incluindo estímulos internos e externos.
Imagem 06 – Diagrama de máquina de estado
Fonte: Joaquim Brito, 2018.
3.4 Diagrama de Comunicação
O Diagrama de Comunicação tem a função de definir a estrutura de como os objetos vinculados, semelhante ao Diagrama de Classes e indica quais mensagens são trocadas entre objetos, semelhante ao Diagrama de Sequência, como curiosidade o diagrama de comunicação até a versão 1.5 da UML era chamado de Diagrama da Colaboração.
Imagem 07 – Diagrama de comunicação
Fonte: Joaquim Brito, 2018.
3.5 Diagrama de Pacotes
O Diagrama de Pacotes constitui em modularizar o sistema de acordo com pacotes pré-definidos, indicando cada um a sua função e assim diminuindo o acoplamento. Mas é claro que, se modularizado o sistema, devemos também definir as dependências de cada módulo, pois, por exemplo, se temos um módulo chamado Carro e outro chamado Roda, obviamente o módulo roda é dependente do módulo Carro, gerando assim uma dependência do módulo roda sobre o módulo Carro. No modelo abaixo temos um exemplo de módulos de um sistema e suas respectivas dependências:
Imagem 08 – Diagrama de pacotes
Fonte: Michael Lucas, 2018.
Na imagem acimas temos modelos exemplos numerados de A à H. Note-se que as setas indicativas mostram qual módulo é dependente do outro, como por exemplo, o módulo B é dependente do módulo A que é dependente do módulo D.
4. Desenvolvimento do Software
4.1 Tela de Login
Imagem 09 – Tela de Login
Fonte: Michael Lucas, 2018.
4.1.1 Codificação da Tela de Login:
Frontend
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SCD - Sistema de Controle de Demandas</title>
<!-- Bootstrap Core CSS -->
<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Por favor, insira os dados de login</h3>
</div>
<div class="panel-body">
<form name="form" action="login.php" method="post">
<fieldset>
<div class="form-group">
<input type="text" class="form-control" placeholder="Login" name="login" type="login" required />
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Senha" name="senha" type="senha" required/>
</div>
<div class="form-group">
<input type="submit" class="btn btn-lg btn-success btn-block" placeholder="Enviar" />
</div>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- jQuery -->
<script src="../vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../vendor/metisMenu/metisMenu.min.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>
</body>
</html>
Backend:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
$login = $_POST["login"];
$senha = $_POST["senha"];
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$busca = $conn->query("SELECT nomeUsuarios, senhaUsuarios FROM usuarios WHERE nomeUsuarios = '$login' AND senhaUsuarios = $senha");
$linhas = count($busca->fetchAll());
echo"$linhas";
if ($linhas != 1) {
echo "<!DOCTYPE html>
<html>
<head>
<script>
function alertadeconfirmacao()
{
alert('Dados de login errados, favor digitar os dados corretamente!');
location.href='login.html';
}
</script>
</head>
<body onload='alertadeconfirmacao()'>
</body>
</html>";}
else {
echo "<!DOCTYPE html>
<html>
<head>
<script>
function alertadeconfirmacao()
{
alert('Login feito com sucesso!');
location.href='index.php';
}
</script>
</head>
<body onload='alertadeconfirmacao()'>
</body>
</html>";
};
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
Imagem 10 – Painel central
Fonte: Wander de Matos, 2018.
Imagem 11 – Painel central
Fonte: Wander de Matos, 2018.
4.3 Codificação da tela de login:
Backend:
4.3.1 Index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SCD - SISTEMA DE CONTROLE DE DEMANDAS</title>
<!-- Bootstrap Core CSS -->
<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap ligthbox -->
<link href="../dist/css/bootstrap-lightbox.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../vendor/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">SCD - Sistema de Controle de Demandas</a>
</div>
<?php require"menu.php"; ?>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Gestão Chamados</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<?php require "contadorChamados.php" ?>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-clock-o fa-fw"></i> Demandas
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<ul class="timeline">
<li>
<?php require 'listaChamados.php';?>
</li>
</ul>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Ligthbox -->
<script src="../dist/js/bootstrap-lightbox.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../vendor/metisMenu/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="../vendor/raphael/raphael.min.js"></script>
<script src="../vendor/morrisjs/morris.min.js"></script>
<script src="../data/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>
</body>
</html>
4.3.2 menu.php
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li class="sidebar-search">
<!-- /input-group -->
</li>
<li>
<a href="index.php"><i class="fa fa-dashboard fa-fw"></i> Painel Geral</a>
</li>
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Atividades<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="inserirUsuarios.php">Criar Usuários</a>
</li>
<li>
<a href="inserirChamados.php">Criar Chamado</a>
</li>
</ul>
<!-- /.nav-second-level -->
</li>
</ul>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
4.3.3 ContadorChamados.php
<div class="row">
<div class="col-lg-3 col-md-6">
<div class="panel panel-red">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-support fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$busca = $conn->query("SELECT * FROM chamados");
$linhas = count($busca->fetchAll());
echo "$linhas";
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</div>
<div>Solicitações Abertas</div>
</div>
</div>
</div>
</div>
</div>
</div>
4.3.4 listaChamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$sql = $conn->query("SELECT * FROM chamados");
$exibe = $sql->fetchAll();
foreach($exibe as $item)
{ echo "<div class='timeline-panel'>
<div class='timeline-heading'>
<h4 class='timeline-title'>" .substr($item['tituloChamados'],0,50)."</h4>
<p>".$item['nomeChamados']."</p>
<p><small class='text-muted'><i class='fa fa-clock-o'></i>".$item['datahoraChamados']."</small>
</p></div>
<div class='timeline-body'> <p>".substr($item['textoChamados'],0,60)."...</p>
</div> <form id='fomulario".$item['idChamados']."' action='alterarChamados.php' method='post'>
<input type='hidden' name=idChamados value='".$item['idChamados']."'>
<button onclick='document.forms['fomulario".$item['idChamados']."'].submit();'><p><a class='fa fa-wrench fa-fw' data-max-width='600' ></a></p></button>
</form>
</div>
";
};
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
4.4 Criação de Usuários
Imagem 12 – Criação de usuários
Fonte: Wander de Matos, 2018.
4.4.1 Codificação da Tela de Gestão de Usuários
4.4.2 InserirUsuarios.php
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SCD - SISTEMA DE CONTROLE DE DEMANDAS</title>
<!-- Bootstrap Core CSS -->
<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../vendor/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">SCD - Sistema de Controle de Demandas</a>
</div>
<?php require"menu.php"; ?>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Gestão Usuários</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-clock-o fa-fw"></i> Inserir Usuário
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<!-- Formulário para inclusão de usuários -->
<form action="inclusorUsuarios.php" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Nome de Usuário</label>
<input type="text" class="form-control" name="nomeUsuarios" placeholder="Seu Login">
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="perfilUsuarios" id="perfilUsuarios" value="administrador" checked>
<label class="form-check-label" for="exampleRadios1">
Usuário Administrador
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="perfilUsuarios" id="perfilUsuarios" value="comum">
<label class="form-check-label" for="exampleRadios2">
Usuário Comum
</label>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Senha</label>
<input type="password" class="form-control" name="senhaUsuarios" placeholder="Sua Senha">
</div>
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../vendor/metisMenu/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="../vendor/raphael/raphael.min.js"></script>
<script src="../vendor/morrisjs/morris.min.js"></script>
<script src="../data/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>
</body>
</html>
4.5 Backend Tela de Gestão de Usuários:
4.5.1 Inclusordechamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
$nomeUsuarios = $_POST['nomeUsuarios'];
$senhaUsuarios = $_POST['senhaUsuarios'];
$perfilUsuarios = $_POST['perfilUsuarios'];
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO usuarios (nomeUsuarios, perfilUsuarios, senhaUsuarios)
VALUES ('$nomeUsuarios', '$perfilUsuarios', '$senhaUsuarios')";
// use exec() because no results are returned
$conn->exec($sql);
echo "<!DOCTYPE html>
<html><head><script>
function alertadeconfirmacao(){
alert('Dados inseridos com sucesso');
location.href='index.php';}
</script></head>
<body onload='alertadeconfirmacao()'>
</body>
</html>"; }
catch(PDOException $e){
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;?>
4.6 CRUD Gestão de Chamados
4.6.1 Tela de inserção de chamado – Create
Imagem 13 – Criação de chamados
Fonte: Wander de Matos, 2018.
4.6.2 Código dela de inserção de chamados:
Fontend:
4.6.3 InserirChamado.php
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SCD - SISTEMA DE CONTROLE DE DEMANDAS</title>
<!-- Bootstrap Core CSS -->
<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../vendor/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">SCD - Sistema de Controle de Demandas</a>
</div>
<?php require"menu.php"; ?>
<div id="page-wrapper">
<div class="row">
<divclass="col-lg-12"><h1 class="page-header">Gestão Chamados</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-clock-o fa-fw"></i> Inserir Chamados
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<!-- Formulário para inclusão de chamados -->
<form action="inclusorChamados.php" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Nome de Usuário</label>
<input type="text" class="form-control" name="nomeChamados" placeholder="Digite seu nome">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Título do chamado</label>
<input type="text" class="form-control" name="tituloChamados" placeholder="Digite o título do chamado">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Descricao do chamado</label>
<textarea rows="10" class="form-control" name="textoChamados" placeholder="Descreva seu chamado"></textarea>
</div>
<button type="submit" class="btn btn-primary">Enviar</button>
<button type="reset" class="btn btn-primary">Limpar</button>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel --></div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../vendor/metisMenu/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="../vendor/raphael/raphael.min.js"></script>
<script src="../vendor/morrisjs/morris.min.js"></script>
<script src="../data/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>
</body>
</html>
Backend:
4.6.4 InclusorChamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
$nomeChamados = $_POST['nomeChamados'];
$tituloChamados = $_POST['tituloChamados'];
$textoChamados = $_POST['textoChamados'];
$statusChamados = 'novo';
$datahora = date('Y-m-d h:i:s');
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO chamados (nomeChamados, textoChamados, tituloChamados, statusChamados, datahoraChamados)
VALUES ('$nomeChamados', '$textoChamados', '$tituloChamados', '$statusChamados', '$datahora')";
// use exec() because no results are returned
$conn->exec($sql);
echo "<!DOCTYPE html>
<html>
<head>
<script>
function alertadeconfirmacao()
{
alert('Chamado inserido com sucesso');
location.href='inserirChamados.php';
}
</script>
</head>
<body onload='alertadeconfirmacao()'>
</body>
</html>";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
4.7 CRUD Gestão de Chamados
4.7.1 Tela de acompanhamento de chamados – Reload
Imagem 14 – Criação do reload
Fonte: Wander de Matos, 2018.
Código dela de amostragem de chamados:
Fontend:
4.7.2 ListaChamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$sql = $conn->query("SELECT * FROM chamados");
$exibe = $sql->fetchAll();
foreach($exibe as $item){
echo "<div class='timeline-panel'>
<div class='timeline-heading'>
<h4 class='timeline-title'>" .substr($item['tituloChamados'],0,50)."</h4>
<p>".$item['nomeChamados']."</p>
<p><small class='text-muted'><i class='fa fa-clock-o'></i>".$item['datahoraChamados']."</small>
</p></div>
<div class='timeline-body'> <p>".substr($item['textoChamados'],0,60)."...</p></div> <form id='fomulario".$item['idChamados']."' action='alterarChamados.php' method='post'> <input type='hidden' name=idChamados value='".$item['idChamados']."'>
<button onclick='document.forms['fomulario".$item['idChamados']."'].submit();'><p><a class='fa fa-wrench fa-fw' data-max-width='600' ></a></p></button> </form></div>
";};
} catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();}
$conn = null;
?>
4.8 CRUD Gestão de Chamados
4.8.1 Tela de alteração de chamados – Update
Imagem 15 – Criação do update
Fonte: Wander de Matos, 2018.
Código dela de alteração de chamados:
Fontend e Backend:
4.8.2 AlterarChamados.php
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>SCD - SISTEMA DE CONTROLE DE DEMANDAS</title>
<!-- Bootstrap Core CSS -->
<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="../vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../dist/css/sb-admin-2.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../vendor/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
<a class="navbar-brand" href="index.php">SCD - Sistema de Controle de Demandas</a></div>
<?php require"menu.php"; ?>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Gestão Chamados</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-clock-o fa-fw"></i> Alterar Chamado </div>
<!-- /.panel-heading -->
<div class="panel-body">
<!-- Formulário para alteração de chamados -->
<?php
$idChamados = $_POST['idChamados'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // set the PDO error mode to exception $sql = $conn->query("SELECT * FROM chamados WHERE idChamados = '".$idChamados."'");
$result = $sql->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo $sql . "<br>" . $e->getMessage(
$conn = null; echo" <form action='alteradorChamados.php' method='post'> <div class='form-group'> <label for='exampleInputEmail1'>Nome de Usuário</label> <input type='text' class='form-control' value='".$result['nomeChamados']."' name='nomeChamados' placeholder='Digite seu nome'> <input type='hidden' name='idChamados' value='".$idChamados." </div> <div class='form-group'> <label for='exampleInputEmail1'>Título do chamado</label> <input type='text' class='form-control' value='".$result['tituloChamados']."' name='tituloChamados' placeholder='Digite o título do chamado'> </div <div class='form-group'> <label for='exampleInputEmail1'>Descricao do chamado</label> <textarea rows='10' class='form-control' name='textoChamados' placeholder='Descreva seu chamado'>".$result['textoChamados']."</textarea> </div> <button type='submit' class='btn btn-primary'>Alterar</button> <button type='button' class='btn btn-primary'><a href='index.php'>Canselar</a></button> </form></br> <form action='deletadorChamados.php' method='post'>
<input type='hidden' name='idChamados' value='".$idChamados."'>
<input type='submit' value='Deletar' class='btn btn-secondary'>
</form> ";?>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../vendor/jquery/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="../vendor/metisMenu/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="../vendor/raphael/raphael.min.js"></script>
<script src="../vendor/morrisjs/morris.min.js"></script>
<script src="../data/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>
</body>
</html>
Backend:
4.8.3 AlteradorChamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
$idChamados = $_POST['idChamados'];
$nomeChamados = $_POST['nomeChamados'];
$tituloChamados = $_POST['tituloChamados'];
$textoChamados = $_POST['textoChamados'];
$statusChamados = 'alterado';
$datahora = date('Y-m-d h:i:s');
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE chamados SET nomeChamados = '".$nomeChamados."', textoChamados = '".$textoChamados."', tituloChamados = '".$tituloChamados."', datahoraChamados = '".$datahora."' WHERE idChamados = ".$idChamados.";";
// use exec() because no results are returned
$conn->exec($sql);
echo "<!DOCTYPE html>
<html><head><script>
function alertadeconfirmacao(){
alert('Chamado alterado com sucesso');
location.href='index.php';}
</script></head>
<body onload='alertadeconfirmacao()'>
</body></html>"; }
catch(PDOException $e)
{ echo $sql . "<br>" . $e->getMessage(); }
$conn = null;
?>
4.9 CRUD Gestão de Chamados
4.9.1 Tela de exclusão de chamados – Delete
Imagem 16 – Tela de exclusão
Fonte: Wander, 2018.
Código dela de exclusão de chamados:
Backend:
4.9.2 DeletadorChamados.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "scd";
$idChamados = $_POST['idChamados'];
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "DELETE FROM chamados WHERE idChamados = ".$idChamados.";";
// use exec() because no results are returned
$conn->exec($sql);
echo "<!DOCTYPE html>
<html><head><script>
function alertadeconfirmacao()
{alert('Chamado apagado com sucesso');
location.href='index.php';}
</script></head>
<body onload='alertadeconfirmacao()'>
</body>
</html>";}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
5. Cronograma do Projeto
O cronograma é uma ferramenta de planejamento e controle semelhante a um diagrama onde são descritas as atividades a serem executadas durante um período estimado para conclusão de um projeto.
Em termos de gestão, o cronograma é um instrumento de detalhamento dos processos e tarefas de um projeto frente aos prazos de execução e ou conclusão. Todas as tarefas elencadas recebem um prazo, este prazo servira para demarcar a data para execução e ou conclusão das tarefas.
Imagem 17 – Processo de monitoramento e controle.
Cronograma do projeto: | ||||||||
Tarefas a serem realizadas: | Horas: | Início: | Fim: | Junho | Julho | Agosto | Setembro | |
1 | Levantamento dos requisitos | 18 | 13/jun | 15/jun | ||||
2 | Análise dos requisitos | 38 | 18/jun | 24/jun | ||||
3 | Projeto | 50 | 01/jul | 09/jul | ||||
4 | Implementação | 214 | 22/jul | 01/set | ||||
5 | Testes | 41 | 03/set | 07/set | ||||
6 | Implantação | 28 | 12/set | 14/set | ||||
Total: | 285 horas |
Fonte: Pedro Isaac, 2018.
Imagem 18 – Processo de monitoramento e controle.
Fonte: Pedro Isaac, 2018.
O gráfico acima mostra o tempo gasto por cada etapa do projeto.
6. Estudo para iniciar um empreendimento na área de desenvolvimento de sistemas.
Quando se há a intenção de iniciar um empreendimento na área de Desenvolvimento de Sistemas devemos levar em consideração vários fatores para que não haja inconsistência, retrabalhos, e pior, os atrasos nos prazos.
Todo projeto precisa ter uma reunião inicial, onde serão feitas discussões gerais sobre o que é necessário. Isso é um passo, de certa forma, lógico. Em outras palavras, como cada parte poderá saber o que precisa ser feito e se tem como ser feito? Essas são dúvidas que são sanadas na primeira reunião que acaba funcionando como uma reunião.
Com esta reunião serão definidos os requisitos do software a ser criado. Com os requisitos em mãos, elabora-se uma lista de prioridades após uma profunda análise de requisitos. Esta lista mostrará o que o software precisa ter, o que pode limitar cada função e quanto tempo aquilo poderá demorar, em teoria.
Na etapa do estudo de viabilidade do projeto é irá impedir muito retrabalho, ou mesmo que se assumam responsabilidades que não podem ser cumpridas de forma alguma. Para evitar isso, é necessário ser realista e perceber o que vai ser preciso para fazer o projeto sair do papel. Sabendo o que deve ser feito, é a hora de definir detalhes mais profundos do desenvolvimento. Nessa etapa, são criadas as documentações que listam o que será desenvolvido e como o processo terá que acontecer. Para isso, entram em cena os wireframes (espécie de exemplos do que deve ser feito), fluxogramas e casos de uso, ferramentas de projetos que fazem toda a diferença na documentação.
Os testes devem ser muito bem documentados e realizados, buscando emular o uso real da aplicação.
É necessário se colocar no lugar do cliente, como se fosse realmente ele utilizando a funcionalidade que foi criada. Este costuma ser um dos principais problemas no desenvolvimento de software, principalmente, quando o teste é realizado somente pelo desenvolvedor, que muitas vezes não possui o conhecimento necessário para realizar o teste com a mesma eficiência que um testador especialista faria.
Segundo o PMBOK® 6º edição:
- Iniciação: Definem e autorizam um novo projeto.
“É durante a fase inicial de um projeto que se busca ter uma visão geral das tarefas e dos trabalhos que nela estão envolvidos. Tendo o conhecimento do propósito do projeto e de seus objetivos, o gerente de projetos deve submeter essas informações à aprovação, seja de um patrocinador, de um acionista, de outras partes interessadas ou, até mesmo, dos órgãos competentes.”
- Planejamento: Refinam os objetivos, o escopo, o cronograma e compõe todos os documentos;
“A fase de planejamento requer modelos que prevejam a profundidade na apresentação de informação, como a quantidade de material, de equipamentos, de mão de obra etc.”
- Execução: Mobilizam as pessoas e os recursos materiais necessários para realizar as atividades do projeto de acordo com o planejado;
“Durante a fase de execução, o foco é o exercício do que foi planejado. Portanto, os documentos devem assegurar o acompanhamento das atividades e o registro das entregas. É essencial que haja registro dos avanços e que sejam documentadas as conclusões parciais do escopo, tendo a prova do aceite de cada uma delas.
Na execução, muitas vezes, ocorrem mudanças no escopo e também nos requisitos de qualidade. Os modelos de projeto devem contemplar meios de realizar essas interações.”
- Monitoramento e Controle: Realizam a verificação do andamento do projeto comparado ao planejamento;
“Durante sua maior parte, esta fase lida com a aferição do desempenho do projeto e o progresso em relação ao plano de gerenciamento de projetos. Ela corresponde à verificação do escopo e ao controle para verificar e monitorar os avanços.”
- Encerramento: Realização de atividades para encerrar formalmente ou concluir fase do projeto.
“Aceite do resultado ou produto. Processos para finalizar todas as atividades, e segundo PMBOK®: encerramento de projetos e encerramento de aquisições.”
Os processos apresentados em cada fase são elementos distintos e muito bem definidos. Porém, na prática, eles se sobrepõem e interagem entre si. O PMBOK descreve-os como como guias para aplicação de conhecimento e habilidades durante todo o projeto.
Imagem 19 – Processo de monitoramento e controle.
Fonte: gp4us, 2015.
Tais grupos de processos encontram-se vinculados através das saídas que cada um produz onde a saída de um processo normalmente torna-se a entrada de outro. Raramente são eventos distintos que ocorrem uma única vez. A figura abaixo apresenta a forma como os processos interagem entre si e apresenta o nível de sobreposição em várias situações.
Imagem 20 – Nível de interação entre processos.
Fonte: google.com, 2017.
7. Qualidade de software
Um software de qualidade é fácil de usar, funciona corretamente, é de fácil manutenção e mantém a integridade dos dados para evitar possíveis falhas, fora ou não, do seu controle. A qualidade de um software deve estar em conformidade com especificações e padrões de desenvolvimento, há necessidades explícitas e objetivos propostos por aquelas pessoas que produzem software, garantindo que, tanto o produto do software quanto um bom processo de desenvolvimento, atinjam níveis de qualidade mantendo sempre as necessidades dos usuários.
Durante o desenvolvimento do Projeto e Implementação de um Sistema de Chamados de Suporte (help desk) foi utilizada a ISO/IEC 9126 visando manter uma qualidade de software no seu nível de desempenho dentro das condições estabelecidas.
7.1 ISO/IEC 9126
A ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, ela define um conjunto de parâmetros com o objetivo de padronizar a avaliação da qualidade de software. A norma 9126 foca na qualidade do produto de software, propondo Atributos de Qualidade, distribuídos em seis características principais, com cada uma delas divididas em sub características: Funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade.
Imagem 21 – Tela de exclusão
Figura 1- Quadro de características.
7.2 Funcionalidade
A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso. Neste parâmetro é necessário atender as necessidades do cliente visando que o software desenvolvido será um suporte ao usuário diante de uma ocorrência do dia a dia. A imagem abaixo ilustra a interface onde será aberto os chamados, a interface e de fácil compreensão e navegação atendendo todos as exigências do usuário.
Imagem 22 – Gestão de chamados.
Fonte: Wander, 2018.
7.3 Confiabilidade
Atributos que têm impacto na capacidade do software de manter o seu nível de desempenho, dentro de condições estabelecidas, por um dado período de tempo, ou seja, corrigir as falhas. Nesse parâmetro a confiabilidade do software e medida de forma probabilística que em forma de probabilidade tentam especificar as falhas no software, com isso foi avaliado:
O comportamento futuro
Forma funcional simples
Tempo de falhas
Essa abordagem utiliza o tempo de ocorrência entre falhas ou o número de falhas ocorridos num intervalo de tempo, para se modelar o processo de falhas no software. Em geral, os modelos podem ser utilizados para predizer o tempo até a ocorrência da próxima falha ou o número esperado de falhas no próximo intervalo de tempo. Exemplo:
Imagem 23 – Teste de confiança
Figura 2- Exemplo de Teste de Confiabilidade.
Dados obtidos no processo de teste:
Número de falhas/ período: {6,4,2,3,1, ...}
7.4 Usabilidade
Atributos que respondem pela facilidade de uso do software por usuários com perfil específico. Neste parâmetro foi utilizado alguns fatores para avaliação da usabilidade junto ao usuário como:
A interface dialoga com o usuário?
Durante o desenvolvimento houve a preocupação de evitar expressões técnicas utilizando uma linguagem de fácil entendimento e simplificada.
O sistema possui um bom feedback?
Além da interface intuitiva e acessível, o sistema “educa” o usuário durante a utilização, com feedbacks de fácil acesso.
Imagem 24 – Gestão de chamados
Fonte: Wander, 2018.
7.5 Eficiência
Relação entre o nível de desempenho do software e a quantidade de recursos utilizada, sob condições de uso pré-definidas. Neste parâmetro realizado o teste de performance para se verificar o tempo de resposta de uma aplicação, determinando assim a sua escalabilidade e confiança.
Teste de Tempo de Resposta(Response Time Testing): Representa a percepção do usuário de quão rápido o sistema reage para uma “Request” ou “Query”. A reação pode ser lenta ou rápida com base no tipo de atividade e o tempo necessário para processar a requisição. A aceitação de um determinado tempo de resposta é um fator relacionado à psicologia humana. As expectativas variam de usuário para usuário! Um usuário que trabalhada com 5 segundos de tempo de resposta, iria ficar frustrado com 10 segundos tempo de resposta, por exemplo.
7.6 Manutenibilidade
Medida do esforço necessário para fazer alterações, extensões e complementações no produto de software. A meta primordial deste processo é facilitar a acomodação de mudanças, que são inevitáveis em produtos de software, reduzindo a quantidade de esforço na fase de manutenção. Este processo deve ser amplo o bastante para suportar manutenção para a correção de um erro, dito corretiva, para a modificação de uma funcionalidade existente, adaptativa ou a inclusão de funcionalidade, perfectiva. Pedidos de mudança podem originar, por necessidade do usuário, alterações legais ou por diversos outros motivos. O que importa é que haja um processo formal e documentado para que a mudança seja efetivada ou rejeitada, registrando as informações independentes do veredicto da mudança.
O procedimento para conduzir a ação da manutenção quando houver necessidade deve incluir os seguintes passos:
- Avaliar a requisição da mudança, avaliando sua real necessidade;
- Avaliar o impacto da mudança dentro do sistema ou em sistemas ao qual está integrado;
- Estimar custo e tempo para implementação;
- Implementar as modificações;
- Testar os módulos modificados;
- Testar a integração do sistema;
- Atualizar a documentação;
- Integrar
7.7 Portabilidade
Facilidade do produto de software ser transferido para outro ambiente computacional e funcionar adequadamente. Neste projeto foi utilizado a linguagem PHP pois e uma linguagem portável entre diferentes servidores HTTP, entre diferentes sistemas operacionais e entre diferentes arquiteturas de hardware e devido algumas características como :
- Suporte tanto à programação estruturada, quanto à orientação a objetos
- Fácil aprendizado
- Boa performance
- Portabilidade
- Código aberto
8. Conclusão
Todos nós sabemos que no mundo não existe "receita de bolo" para que possamos seguir e obter um resultado "certeiro". Mas, existem caminhos pelos quais podemos seguir que podem ser encarados como dicas para a sobrevivência em um mercado cada vez mais competitivo.
Então para obter o sucesso deste projeto, foi necessário possuir: Organização, planejamento, metas e objetivos, disciplina e feedback.
Com todas estas atitudes foi possível entregar um produto de qualidade e em tempo ágil para maior satisfação do cliente, o mesmo que antes de ser entregue ao usuário final foi testado nos mínimos detalhes.
9. Referências
USABILIDEIROS. Norma ISO 9126
BIANCHI, Luiz. Qualidade de produtos de software.
COSTA, Aécio. ISO – 9126.
SANDI, Rogério Carlos. O que é a ISO/IEC 9126?.
EMER, Maria Cláudia F. P. Qualidade de Produto.
PMI (project management institute). Um guia do conhecimento em gerenciamento de projetos (guia pmbok®) – quinta edição. Newtown square: project management institute, 2013;
Usabilideiros. Norma iso 9126
Bianchi, luiz. Qualidade de produtos de software.
Costa, aécio. Iso – 9126.
Sandi, rogério carlos. O que é a iso/iec 9126?.
Emer, maria cláudia f. P. Qualidade de produto.
10. Autores
Cássio Henrique Xavier Mendes
Joaquim Gonçalves de Brito
Michael Lucas Menezes Silva
Nayara Ribeiro Dias
Pedro Isaac Dornelas Corrêa
Wander de Matos Maciel
Donate to Site
Renato
Developer