Mostrando postagens com marcador Software. Mostrar todas as postagens
Mostrando postagens com marcador Software. Mostrar todas as postagens

segunda-feira, 25 de julho de 2011

Qual a melhor tecnologia para desenvolver um sistema?

Essa é uma pergunta meio complicada não acham? 
Por um lado a resposta é muito simples: "A MELHOR TECNOLOGIA É AQUELA QUE EU MAIS CONHEÇO ORA..." por outro lado(o certo) não é nada disso que eu acabei de escrever mas sim antes de tudo fazer apenas umas perguntas como por exemplo 'O que é o sistema? Qual a finalidade do sistema? Quem é o público alvo? Envolve grana direta ou indiretamente? Quantas pessoas preciso? Quanta grana tenho disponível? Quanto tempo tenho?' Antes de começar a escrever eu tinha apenas 2 perguntas mas comecei a imaginar enquanto fui escrevendo e percebi que são muitas as perguntas a se fazer...

Por esse motivo que posso AFIRMAR (com todas as letras MAIUSCULAS) que a melhor tecnologia para desenvolver um sistema não é essa que você mais gosta (pode até ser na sorte rsrs) mas sim aquela que se encaixa com o escopo do projeto como um todo. Quem diz que um sistema é feito apenas com uma linguagem de programação anda falando besteira (ou o sistema é tremendamente específico e engessado) pois atualmente para cada necessidade utilizamos uma linguagem não é? Um exemplo do FACEBOOK... vc acha que ele é todo feito em php apenas? e o HTML? e o Jquery? e as milhões de bibliotecas de js que não conheço? Eu posso afirmar que no facebook existem 'n' linguagens e cada uma faz o que é ideal para fazer (jquery para cuidar do elemento DOM, do frontend, php para cuidar do backend e etc...)

A questão aqui não é afirmar qual linguagem é melhor (eu particularmente não gosto desse assunto de futebol de sair falando que a minha linguagem é melhor que a sua inclusive tem um post do meu professor da faculdade que fala justamente sobre essa 'briga' eu recomendo dar uma olhadinha, Blog do Infog) mas sim tentar entender como escolher as tecnologias para um projeto de software.



Eu andei pesquisando pois o tema do meu TCC aborda um pouco isso e encontrei um livro muito legal de  Leland L. Beck que fala sobre isso vou colocar alguns tópicos que montei em meu TCC (ainda é inicio dele então me desculpem os erros...)




Fatores que devem ser levados em consideração ao escolher tecnologias para o desenvolvimento de um sistema.

Ambiente no qual o software irá executar ou operar
Há muitos ambientes diferentes em que o software pode ser utilizado e acessado. Isso restringe a desenvolvedores na escolha da linguagem pois certas linguagens de programação podem não dar suporte a uma plataforma mais ampla como por exemplo rodar na internet.
Isso nos traz ao ponto da portabilidade, que a linguagem pode ser usada para desenvolver programas portáveis ​​que podem ser executados em qualquer máquina ou sistema operacional.
(Leland L. Beck , System Software - 1996)


Complexidade algorítmica e computacional
Este fator é algo que deve ser seriamente levada em consideração se o programador quer ter uma tarefa mais fácil na codificação e desenvolvimento do programa. Existem linguagens que dão suporte a novos conceitos como Orientação a Objetos, padrão de Projeto MVC e outras ultrapassadas(ou com outras finalidades) que não atendem a necessidade de um sistema complexo que vive em comunicação e precisa ser desacoplado.
Uma tecnologia que é boa em uma determinada função não necessariamente é adequada para fazer outra coisa um exemplo seria utilizar o php, uma linguagem interpretada livre que roda no lado do servidor para validar dados de um formulário. Ele funciona e muitas vezes é utilizado para isso mas já que roda ao lado do servidor é necessário processamento do servidor, enquanto que fazer essa validação com javascript acaba sendo mais rápido e o processamento é feito apenas na parte frontal ou seja, na máquina do cliente.




Conhecimento da equipe de desenvolvimento de software
Existem muitas tecnologias diferentes que aparecem na área de desenvolvimento de software. Encontrar os recursos adequados humanos, familiarizado com a linguagem utilizada é um problema especialmente se a diversidade de tecnologias é grande e as mesmas tem pouca documentação disponível, a futura substituição de um desenvolvedor pode ser um problema se a linguagem é pouco utilizada, sendo assim é recomendado a utilização de uma linguagem com um boa documentação disponível e atualmente em uso por desenvolvedores.



Custos
O valor é algo importante quanto a escolha da tecnologia, pois ele deve ser comparado ao retorno financeiro pretendido com o sistema para que ele não seja um gasto eterno.





A parte custos não entra em questão no livros ma achei importante colocar e por isso ando pesquisando em grandes empresas de desenvolvimento de software...




Conclusão
Não podemos escolher aquela tecnologia que mais gostamos mais sim a que melhor se encaixe no problema atual...





Espero ter ajudado....


Valeuu

terça-feira, 28 de setembro de 2010

Engenharia de Requisitos


Hoje vou falar sobre a Engenharia de Requisitos(Vou continuar em outras postagens falando sobre criptografia)

OBJETIVO

Compreender os principios fundamentais da Engenharia de Requisitos.
Desenvolver os métodos, técnicas e ferramentas de apoio às atividades da Engenharia de Requisitos.
Especificar, através da utilização da UML, os requisitos para especificação de sistemas de informação.

OBS: Você não precisa saber programar para entender sobre engenharia de requisitos, uma vez que ela é feita para levantarmos as necessidades do sistema, os requisitos para que ele funcione corretamente.

Objetivo específico

Utilizar a UML para especificação de Sistemas de Informação no contexto da Engenharia de Software.


Mas pera aiiiii... pq? Pra que realmente serve tudo isso?

Vou usar um exemplo que ACONTECEU comigo.

Cheguei na empresa do cliente (ele me pediu um software de ordem de serviços)

Queria uma solução para informatizar as suas ordens de serviço eu dei a solução de alem do sistema rodar todo informatizado estar disponível na WEB e ele achou uma otimo idéia assim não precisa instalar nada no computador, é só acessar o link do sistema.

Ponto pra mim, o cliente adorou!

Nisso começamos o processo de levantamento de requisitos para o sistema e ele foi me falando como queria seu sistema......
....fala.... desenha..... escreve... até dança......

Eu anotei tudo e tudo certo.
Fiquei de entregar o sistema em 20 dias
Acelereiii legal todo o sistema utilizei a linguagem PHP com o banco Mysql, diversas implementações com AJAX e como havia prometido em 20 dias o sistema estava pronto...

3 dias depois da entrega ele sumiu e não me pagou (10 PONTOS A MENOS PARA MIM, COMO FIZ O SISTEMA SEM PEDIR O SINAL? E O CONTRATO CADE?)

De quebra eu fiz o site para esse cliente, então passei um valor para ele e o mesmo havia sumido.

Depois apareceu e disse que o sistema que eu mostrei para ele não era oq ele queria. ¬¬
Queria que eu alterasse praticamente TUDO..

Você percebe oq aconteceu? Eu tive o maior trabalho para fazer o sistema desse MERDA!
Não recebi e agora ele quer q mude tudo? Ele não sabe oq quer...

Pois é gente infelizmente o cliente é complicado, mas cabe a nós trabalharmos direito, saber oq estamos fazendo e colocar tudo no contrato.
Talvez tenha sido culpa dele mesmo, mas nem o cliente sabe realmente oq quer quando trata-se de um sistema(isso por ser leigo) sendo assim nós temos que fazer SIM a Engenharia de Requisitos, levantar oq é e oq n é necessário para o sistema.

E é ai que entra e ENGENHARIA DE REQUISITOS

continua...