Ir para conteúdo
George Feitosa Jr

Como fazer uma análise para criar um sistema para alguem?

Recommended Posts

Fala galera tudo bem? Estou com uma dúvida sobre como eu devo fazer as perguntas para descobrir o que o cliente quer. Dei uma estudada em UML e entendi na teoria como funciona, mas na prática está meio dificil. Vocês podem me dar exemplos ou algum exercício para entender mais sobre o assunto?

 

Eu acredito que deve-se basear em perguntas do tipo o que o cliente deseja desenvolver, o que cada setor desse sistema vai fazer e o quais serão as informações necessárias desse setores serão necessárias para que o sistema cumpra o que lhe foi requerido. Podem me passar um exemplo ou algum exercício para aprender mais sobre a análise do sistema? VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há uma resposta ou abordagem correta pra isso, nem manual passa à passo. E a solução só vem com a prática. Cada analista pode avaliar de uma forma diferente, uma mais voltada para o negócio e outra para a parte técnica. Por exemplo, aonde eu trabalho, são vários analistas de negócio e de sistemas, e cada um poderá uma abordagem e conclusão diferente para uma mesma situação.

 

A UML, é apenas para documentação antes de iniciar o desenvolvimento de um sistema.

 

Como analista de sistemas, você deve enteder que o oque o cliente possui é um problema e você precisa resolvê-lo através de uma tecnologia. E essa é a parte difícil, as vezes, nem o cliente sabe qual o problema que ele quer resolver, apenas que quer um sistema.

 

Neste ponto, tudo é baseado através de "histórias".

Citar

Digamos que, o Seu Gerosvaldo (nome fictício) gostaria de implementar um sistema para o seu mercadinho (de pequeno porte) no bairro em que mora. Seu mercadinho é de família e está a três gerações em funcionamento (considerando cada geração em 25 anos, somam-se 75 anos de funcionamento).

É uma definição bem abrangente, mas é o que normalmente ocorre. E, ainda por cima, vai além:

Citar

Seu Gerosvaldo nunca utilizou sistema no mercadinho e possui baixo contato com a tecnologia.

Agora que, como analista, deve enteder o problema que ele quer resolver com o sistema.

Citar

Então Seu Gerosvaldo, qual o motivo para querer um sistema?

 

E, resumidamente, ele poderá (ou não) responder:

Citar

Veja bem, com o aumento das vendas, fica difícil de ter um controle sobre o que estou vendendo e nem sobre o quanto possuo em estoque. Semana passada, meu fornecedor disse que só aceitaria encomendas via sistema e disse que eu deveria entrar em contato com a equipe de TI deles para me informar sobre uma tal de "a-pê-i" (API) e que eu precisaria de um sistema para isso. Além disso, está cada vez mais difícil me manter em dia com os impostos e a receita federal, fica difícil de declarar e cobrar tudo que é necessário.

 

Disso, você pode resumir para o que Seu Gerosvaldo realmente precisa:

Citar

- Controle de estoque;

- PDV (pé de venda ou terminal de venda);

- Integração com fornecedor;

- Questõs tributárias e fiscais, além de integração.

 

E, além disso, uma interface amigável, pois, ele possui pouco contato com tecnologias.

 

Quando você tiver a par dessa informação, pode-se utilizar do diagrama de casos de uso para mapear o que o sistema deve fazer e quais são os seus limites. Há, também, a questão de requisitos funcionais e não-funcionais e fluxo de processo (workflow). Mais afundo que isso, fica para uma parte da análise mais técnica.

 

Com essas informações, é preciso propor algo que esteja de acordo com o que o cliente necessita e pode pagar. Pode ser mais vantagem adquirir sistemas distintos (estoque, PDV, financeiro, contábil, etc..) e integrá-los ou desenvolver tudo do zero personalizado para o cliente.

  • +1 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming detalhou perfeitamente.

Esse conhecimento só vem com a prática.

 

20 minutos atrás, Gabriel Heming disse:

E essa é a parte difícil, as vezes, nem o cliente sabe qual o problema que ele quer resolver, apenas que quer um sistema.

Triste, muito triste.

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho apenas uma informação bem básica pra acrescentar nisso tudo, nunca ache que vai ser fácil, ou, não que vai dar trabalho, já vi muita gente por aí (inclusive eu já fiz isso), achando que era serviço de 2 meses por ser pra uma empresa pequena, e quando vai ver, pa, já esta no quarto mês, e você ainda não terminou o trabalho, ou se ja entregou, pode ser alguma coisa de qualidade relativamente duvidosa kk.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera, entao baiscamente nao existem perguntas prontas para descobrir o que fazer, cada caso é um caso e deve-se entender o problema do cliente e buscar informações para poder resolve-lo. Muito obrigado a todos!

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente o @Gabriel Heming esmagou!

Dando os meus cinco centavos...
Existe outros casos em que o cliente sabe o que quer, e por diversos motivos, ocorre desentendimentos sobre o que é para ser feito. Na minha experiência, conclui que para esses casos, a forma mais eficaz (para mim) de saber o que o cliente quer, é por meio da interface.
Ai entra as ferramentas de prototipagem, ou até mesmo, criar uma versão estática das views. E, principalmente, entregar a versão 1.0 o mais rápido possível! E assim, ir evoluindo com os feedbacks  do cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EdCesar nisso que você pensei em uma coisa pra fomentar um debate kk

 

    Eu vejo um problema em muitas vezes tentar entregar um versão não estável para o cliente, mesmo que ele seja informado que é uma versão pra testes, pois se houver muitos bugzinhos simples, é realmente difícil um cliente entender isso, vai haver muita reclamação, por mais que os bugs não interfiram não funcionamento final.

    Por exemplo, se acontecer de algumas máscaras de inputs não funcionarem, ou de a interface gráfica ser relativamente feia, ou as vezes até passar alguns botões que não façam nada ainda mas que foram parar na interface pois fazem parte de uma próxima atualização, isso vai gerar uma certa desconfiança em quem está fazendo o trabalho.

    E como no exemplo do Gabriel, o cliente pode muitas vezes não entender nada da área, e pra ele não aparecer um 'R$' antes de onde ele coloca o valor, pode ser uma coisa muito grande.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnthraxisBR Acho que entendi a sua questão. Mas quando eu disse "entregar a versão 1.0 o mais rápido possível", não quis dizer para já colocar em ambiente de produção ou sair usando, e sim para avaliar e testar "X" funcionalidades em especifico. Lendo o meu próprio comentário, acho que não detalhei bem essa parte.
Porem,  sei que o que você relatou realmente acontece :) 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá caros, no meu ponto de vista, apenas mais 1 centavo. O apanhado do Gabriel Heming com certeza é a saída para entregar um sistema quase pronto, e os bugs, versão 1.0, com certeza vai sendo acertado, corrigidos na medida dos Feedback. Principalmente no caso do sr. Gerosvaldo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por LukasTrin
      Estou montando um website e gostaria de saber como faço para o usuário que acabou de deslogar ficar na mesma pagina ?
       
      por exemplo, na programação atual, ele clica em " Sair " e vai automaticamente para a index, independente de onde esteja.
      eu gostaria q ele permanecesse na mesma pagina em que estava
       
      programação q faz o mesmo deslogar...
       
      //essa é a navbar.php <li><a href="?sair=sim">Sair</a></li> // Esse é o logado.php if(isset($_GET['sair']) == "sim"){     $objUser->sairUsuario(); } //e esse é o usuarios.class.php public function sairUsuario(){ session_destroy(); header ('location: index.php '); }  
    • Por rafaelwww
      Sou novo no fórum e essa é a minha primeira postagem.
      não sei se essa é área apropriada para esse tipo de postagem, mas vamos lá eu tenho um site e queria criar uma opção no qual o usuário poderia gravar um áudio que seria salvo em um banco de
      dados, mas não tenho ideia de como fazer isso se existe uma API que faça isso . 
      Peço por gentileza se alguém pudesse me dar uma dica.
       
    • Por Jeft
      Depois de "um ano sabático", estou voltando ao desenvolvimento em PHP.
      Neste retorno, me deparei com a seguinte necessidade: 
      Através de um cadastro, gostaria de criar um link passando alguns parâmetros, tipo:
      globo.com.br
      Crio o cadastro FLAMENGO.
      Aí queria criar "automaticamente" um link flamengo.globo.com.br para acessar através do browser. Seria o equivalente a globo.com.br/noticia/busca.php?time=flamengo
      Se cadastro Vasco: vasco.globo.com.br
      Não sei nem por onde começar... Já tentei algumas coisas mas ainda não tive sucesso.
      Obrigado
    • Por Thais Hoe
      Bom dia!
      Trabalho muito pouco com o JavaScript e preciso fazer um script que:
      Pega a localização do cliente >> Faz o calculo da distância entre a localização e cada loja >> Faz o calculo de qual loja está mais próxima (em KM) >> Se a distancia da loja mais próxima for inferior a 30km = Mostra aviso com o endereço da loja mais próxima (se possível um botão pra ir pra pagina de informações, ou um popup que consiga colocar endereço,telefone,etc)  >> Se a distancia da loja mais próxima for superior a 30km = exibe aviso de que não tem lojas próximas a localização atual dele.
       
      Fiz com "alert" os avisos, mas se eu conseguisse fazer tudo isso com um popup seria legal. Por hora coloquei duas lojas apenas, mas posteriormente vou ter que colocar mais de 10, então se houver um jeito de fazer esse código ser mais "limpo" quando isso acontecer (criando uma lista ou algo do gênero) também agradeço.
       
      Tenho um código mais ou menos pronto, mas como não domino a linguagem acredito que contém alguns erros:
      // Lojas var Americana = { posicao : { latitude1 : -22.742685, longitude1 : -47.341661 } } var BeloHorizonte = { posicao : { latitude2 : -19.935678, longitude2 : -43.970808 } } var Parametro = { distanciaMaxima : 30, // Funcao que ira verificar se o cliente esta por perto mostraLoja : function( posicao ){ var distancia = MenorDistancia; // Verifica se o cliente nao esta muito longe if( distancia <= this.distanciaMaxima ){ if ( confirm( 'A loja mais próxima está à ' + distancia + ' KM ' ) ){ alert( 'Ver mais dados da loja' ); } } else { alert( 'Ops, você está muito longe, não temos uma loja próxima' ); } } }; // Objeto localizacao var Localizacao = { // Inicia inicia : function(){ // Quando o browser retorna a posicao do usuario var sucesso = function( posicao ){ Parametro.mostraLoja( posicao.coords ); }; // Erro no processo de obter a posicao var erro = function( erro ){ var erroDescricao = 'Ops, '; switch( erro.code ) { case erro.PERMISSION_DENIED: erroDescricao += 'usuário não autorizou a Geolocation.'; break; case erro.POSITION_UNAVAILABLE: erroDescricao += 'localização indisponível.'; break; case erro.TIMEOUT: erroDescricao += 'tempo expirado.'; break; case erro.UNKNOWN_ERROR: erroDescricao += 'não sei o que foi, mas deu erro!'; break; } alert( erroDescricao ) }; // Verifica se o browser do usuario tem suporte a geolocation if ( navigator.geolocation ){ navigator.geolocation.getCurrentPosition( sucesso, erro ); } else { erro(); } } }; // Objeto para calcular a distancia entre dois pontos // Adaptado dessa formula http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points var Distancia1 = { distanciaEntreDoisPontos1 : function( pontoInicial, pontoFinal ){ var R = 6371; // Radio da Terra var dLat = this.graus2Radianos( pontoFinal.latitude - pontoInicial.latitude1 ); var dLon = this.graus2Radianos( pontoFinal.longitude - pontoInicial.longitude1 ); var a = Math.sin( dLat/2 ) * Math.sin( dLat/2 ) + Math.cos( this.graus2Radianos( pontoInicial.latitude1 ) ) * Math.cos( this.graus2Radianos( pontoFinal.latitude ) ) * Math.sin( dLon/2 ) * Math.sin( dLon/2 ); var c = 2 * Math.atan2( Math.sqrt( a ), Math.sqrt( 1-a ) ); var d = R * c; return d; }, graus2Radianos : function( graus ){ return graus * ( Math.PI/180 ) } }; // Objeto para calcular a distancia entre dois pontos // Adaptado dessa formula http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points var Distancia2 = { distanciaEntreDoisPontos2 : function( pontoInicial, pontoFinal ){ var R = 6371; // Radio da Terra var dLat = this.graus2Radianos( pontoFinal.latitude - pontoInicial.latitude2 ); var dLon = this.graus2Radianos( pontoFinal.longitude - pontoInicial.longitude2 ); var a = Math.sin( dLat/2 ) * Math.sin( dLat/2 ) + Math.cos( this.graus2Radianos( pontoInicial.latitude2 ) ) * Math.cos( this.graus2Radianos( pontoFinal.latitude ) ) * Math.sin( dLon/2 ) * Math.sin( dLon/2 ); var c = 2 * Math.atan2( Math.sqrt( a ), Math.sqrt( 1-a ) ); var d = R * c; return d; }, graus2Radianos : function( graus ){ return graus * ( Math.PI/180 ) } }; var MenorDistancia = Math.min (Distancia1.distanciaEntreDoisPontos1, Distancia2.distanciaEntreDoisPontos2); $( document ).ready( function(){ Localizacao.inicia(); } );  
    • Por MatheusH
      Olá, toda vez que eu respondo um comentário fica escrito: Seu conteúdo precisará ser aprovado por um moderador. 
       
      E tem uns comentários que nem foram aprovados e que acho que seria de utilidade para quem estava com dúvida.
       
      Como posso resolver isso? eu não sou um bot ahushaus
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.