sexta-feira, 29 de março de 2013

QUALIDADE DE SOFTWARE

Qualidade de software - O que é necessário para um software ser considerado bom?




Um software, programa ou aplicativo é um conjunto de instruções sequenciadas destinadas a algum objetivo em comum.
Há desenvolvedores que criam seus programas sem usar qualquer documentação e outros que seguem o modelo documental e mais outras infinidades de caminhos. Tanto um como o outro podem produzir bons programas ou não. 
A verdade é que para um determinado software ser considerado de qualidade, não basta apenas ter a aprovação do cliente ou satisfazer o cliente. 
Saiba que existem normas de qualidade que aferem justamente esta qualidade, a excelência do software. A busca pela qualidade de software vem da engenharia de software.
Algumas normas existentes como a ISO 9126 e NBR 13596 representam a padronização mundial desejada para os produtos de software. As normas definem a qualidade de software como sendo "a totalidade de características de um produto de software que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas."
Cada tipo de software tem seus próprios requisitos de qualidade. Certamente que um software destinado à área médica, será bem mais exigido em matéria de qualidade do que um software destinado a uma loja de pet shop, por exemplo.

Uma coisinha que li sobre atributos de um software diz respeito às suas funções, quer ver?

Pensemos em um ATRIBUTO OBRIGATÓRIO de um determinado software. A presença daquele atributo não trará a satisfação do usuário, pois já é de se esperar que ele contenha. Entretanto, quer ver um negócio? Ouse deixar o seu software sem um atributo obrigatório... com certeza gerará grande insatisfação do usuário.

Este é o lema: O que fazer para não gerar a insatisfação do usuário? Há muito tempo o homem se dedica a produzir com qualidade. Sei que existe uns xing lings aí no mercado, mas o que satisfaz realmente as pessoas, é a qualidade. Esta qualidade pode ser medida. As características que um software deve atender para ser considerado de fato um software de qualidade são:

FUNCIONALIDADE - ele satisfaz as necessidades? 
A funcionalidade é o que o software faz ou o que ele oferece aos usuários

       Acurácia - O software faz o proposto corretamente?
       Adequação - Propõe-se a fazer o que é apropriado?
       Conformidade - O software está de acordo com as leis?
       Interoperabilidade - O software interage com os sistemas especificados?
       Segurança - Evita acessos indevidos?


CONFIABILIDADE - o sistema é resistente a falhas?
O sistema deve apresentar um resultado preciso e adequado sempre que solicitado, sem perda de dados. 

       Tolerância - O software apresenta qual reação mediante erros?
       Maturidade - Qual frequência ocorre erros?
       Recuperabilidade - O software é capaz de não perder dados em caso de falhas?


USABILIDADE - o sistema é fácil de ser usado?
Este é um conceito muito importante e está diretamente ligado à satisfação do usuário, pois diz respeito à interação que há entre o usuário e o software.

       Intelegibilidade - O software é de fácil entendimento no tocante ao conceito e objetivo?
       Apreensibilidade - O software é simples de se utilizar?
       Operacionalidade - É um sistema fácil de se controlar?


EFICIÊNCIA - é veloz?
A eficiência está ligada aos recursos que o sistema usa e seu aproveitamento.

       Tempo - Qual a velocidade de execução do software?
       Recursos - Quanto recurso o sistema usa?


MANUTENIBILIDADE - é um sistema fácil de modificar ?
Conceito tem a ver com o fato de um sistema permitir ser modificado sem problemas quando encontrado um erro, adequar-se a um novo requisito ou a uma reescrita.

       Analisabilidade - Quando ocorre falha, é facil de encontrar?
       Testabilidade - Permite testes quando alterado?
       Modificabilidade - É fácil se modificar e adaptar?
       Estabilidade - Possui riscos graves ao altera-lo?
       Segurança - Evita acessos indevidos?


PORTABILIDADE - é fácil passa-lo para outro ambiente?
Existe portabilidade quando um determinado programa pode ser transferido  para um outro cenário e continuar funcionando sem erros.

       Adaptabilidade - é facil de adaptar em outros cenários?
       Instabilidade - A reinstalação em outros ambientes é fácil?
       Conformidade - Está conforme padrões de portabilidade?
       Substituibilidade - É fácil usar para substituir outro?


Enfim, as vantagens que um software de qualidade proporciona são facilmente compreendidas: Ele funcionará corretamente, será fácil de usar, possuirá manutenção simples e manterá a integridade dos dados.

Há de se ver o lado do usuário, principal interessado na utilização e no bom funcionamento do produto. O conceito de usabilidade define bem o que o usuário espera, principalmente.

Boas práticas de programação e atenção às características que fazem um produto de software  ser considerado de qualidade devem ser o norte do bom programador.

Bem, vou aqui encerrando mais uma postagem, desta vez mais ligada à área de engenharia de software.

Forte abraço
Fabiano Lopes - sexta feira da Paixão, 29/3/2013, 17:45 

      



       





sábado, 23 de março de 2013

AI, AI...VÍRUS NO MEU PC. O QUE FAZER?

Meu computador está com vírus, o que é que eu faço agora?


MY COMPUTER HAS A VIRUS...RESOLVING HOW?

Imagina a cena: O carinha recebe um e-mail de um mero desconhecido, que conta uma história interessante  dizendo que ele foi premiado com uma passagem de ida e volta para Veneza na Itália. Depois da historinha pede-se para clicar em um link para resgatar a bendita passagem.  Obviamente o carinha, sem nem desconfiar, afinal,  ele se acha um cara que nasceu de bunda pra lua, clica no link todo bobo com a sua recente conquista. Certamente, antes de verificar a "m" que acaba de fazer, já ligou para todos os parentes contando a novidade. O carinha quando clicou no link dançou: foi ludibriado e instalou um programa malicioso em seu pc que pode ter vários objetivos diferentes e abaixo explicarei  cada um deles. Também falarei como resolver alguns dos problemas antes de determinar se deve ou não formatar o computador. Aliás, formatar é uma solução radical, deve ser utilizada só quando não houver jeito mesmo.

Ouve-se falar muito em vírus...mas, o que é um vírus de computador? 

Para começo de conversa, VÍRUS geralmente faz mal, é um PROGRAMA ou parte dele que se propaga  aproveitando falhas do sistema operacional para realizar operações que o usuário desconhece. Pode se acoplar a um outro programa e quando este programa infectado for utilizado, ele se torna ativo continuando a propagação. Há vírus que atrapalha a inicialização do hd, há vírus que infecta arquivos executáveis e assim vai.
Entretanto, há outros tipos suspeitos que são códigos maliciosos que costumeiramente chamamos sempre de vírus, sem diferenciar:

- WORM
- SPYWARE
- BOT
- BACKDOOR
- CAVALO DE TROIA
-ROOTKIT
-BOTNET

Como disse, explicarei cada um deles, a fim de dar uma clareada sobre as reais intenções desses candangos (como diria meu amigo SteveWallace).
Por trás do código malicioso existe várias intenções, que pode ser a disseminação de spam´s, prática de golpes, autopromoção, vandalismo, roubo de informações confidenciais, ataques ou  desejo de obter vantagens financeiras. 

WORM - Esse meliante age na rede de computadores, enviando um "clone" seu  automaticamente de computador para computador. Se aproveita de vulnerabilidades de programas existentes no pc. Ele suga os recursos do sistema como memória ou velocidade de internet, deixando-o lento.

SPYWARE - Esse meliante é um espião, tem a função de espionagem e se usado para o mal, irá fornecer as informações do que você faz no sistema para terceiros. 

BOT - Esse meliante faz contato direto com o invasor, permitindo que o seu pc seja controlado remotamente. Ele envia um clone que está conectado com o invasor via servidores Web, IRC ,redes P2P, etc.

BACKDOOR - Esse meliante age remotamente sem que seja necessário usar do mesmo artifício quando da invasão ao pc infectado. Tem esse nome, pois realmente invade o pc por uma das portas. Como o computador da vítima pode ser controlado a distância, o invasor pode fazer qualquer coisa imaginável no pc, como gravar as teclas digitadas em um arquivo, formatar seu hd, utilizar sua webcam sem seu conhecimento e n coisas mais.

CAVALO DE TRÓIA - Ou trojan para os mais íntimos, rs. Para deleite da curiosidade, acredito que você já tenha ouvido falar da expressão: "Presente de grego", que dizemos de um presente nem tão bom assim. Este programa invade o seu computador através de suas portas disfarçados num programa comum. Você acha que está fazendo uma coisa no seu programinha de edição de fotos, por exemplo, e em paralelo o invasor está agindo maliciosamente. O cavalo de Tróia, tem esse nome porque na guerra de Tróia contra a Grécia, os gregos dizendo-se rendidos, enviaram um cavalo gigante de madeira ao rei de Tróia. Este cavalo gigante foi colocado na praça principal da cidade. Na madrugada, quando todos dormiam, de dentro do cavalo de madeira saíram soldados gregos, que estavam escondidos dentro do cavalo, para abrir os portões da cidade e possibilitar que todo exército grego invadisse a cidade. E chamamos o código malicioso de cavalo de tróia justamente por isso, pois é um programa que faz algo de bom para você, mas, disfarçado, existe um usuário desconhecido logado no seu computador através de uma porta.

ROOTKIT - Esse é talvez um dos mais difíceis de ser pegos por anti virus. Age da mesma forma  que o Backdoor, com a diferença de ficar plenamente escondido. Geralmente, você o recebe, fazendo o que o carinha que ganhou a passagem para Veneza fez: clicando em link suspeito provindo de e-mail mais suspeito ainda.

BOTNET - Malware que transforma seu computador em um zumbi. Age via internet sem o seu conhecimento. Um computador invadido por um botnet pode ficar lento e se torna parte de uma rede de computadores invadidos por botnet para receberem spam´s, proliferarem mais vírus na rede, atacar servidores, negar serviços (DoS) e roubar informações confidenciais.


O que é que eu faço agora?

Depois de ter sido invadido, não fique de braços cruzados, senão vai ficar que nem o carinha da foto aí em cima. 
Um bom anti vírus dá conta do recado, ele pega o intruso e exibe um alerta indicando o problema. Basta você seguir as recomendações para proteger o sistema e deletar arquivos que estão prejudicando o bom funcionamento.
Só que nem tudo são flores e pode ser que o problema seja mais grave. Um novo vírus não conhecido pelo anti virus, pode ser um exemplo.

Se tem vírus no computador e seu anti virus não detectou, tente utilizar uma das técnicas abaixo, possivelmente resolverá:

RESTAURAÇÃO DO SISTEMA
Se o meliante não desabilitou esta função do seu sistema, basta que você a utilize para voltar no tempo em seu computador. Para tanto, entre em Painel de Controle e acesse Recuperação. Defina a data de restauração.

VERIFICAR INICIALIZAÇÃO 
O meliante pode estar iniciando junto com seu pc quando é ligado. Para isto, verifique quais programas estão iniciando junto com o seu Windows. No artigo que escrevi sobre computadores lentos neste mesmo blog, ensino como verificar a inicialização.

FERRAMENTA DE REMOÇÃO DE SOFTWARE MAL INTENCIONADO
A Microsoft disponibiliza em seu site, uma ferramenta que permite remover programas suspeitos. Se você tem o costume de atualizar o seu Windows, certamente possui a ferramenta. Caso não possua, saiba que existe. Esta ferramenta faz uma varredura (demorada) em todo o pc e lista os programas infectados, para que através do antivirus, você possa remover.

ANALISE COMPLETAMENTE O COMPUTADOR
Abra o seu antivirus e faça uma varredura completa no pc.

FAÇA ESCANEAMENTO ON LINE
Utilize o BitDefender ou o F-Secure On Line Vírus Scanner para  via internet descobrir se há vírus em seu computador. Se tiver, tanto o BitDefender ou o F-Secure removerá para você. Fica ligado, se você possui antivirus e um destes sites de escaneamento detectou a presença de vírus em seu computador, repense se seu antivirus está lhe ajudando realmente.


Como previnir?
Adotar uma postura preventiva é a raiz de tudo, como diria meu mestre e amigo Guilherme Arantes em suas aulas de Segurança e Auditoria de Sistemas. E é por aí mesmo.

O primeiro conselho é ter um bom ANTIVÍRUS instalado em seu pc. Isso daí já é um grandioso passo. Não bobeie, expirou a licença, renove. Caso não tenha condições, existe n ofertas de antivírus gratuitos e bons. 

Mantenha o seu computador sempre ATUALIZADO.

Não deixe de utilizar o FIREWALL do Windows. Mantenha-o sempre ativo. Aqui neste blog eu falo sobre Firewall em uma das postagens.

Depois vale o desconfiômetro, NÃO ACESSE sites suspeitos através de links recebidos por mensagens que você não conhece a procedência. 

Mesmo que você conheça o destinatário, desconfie caso a mensagem seja suspeita, pode ser que o seu conhecido seja um botnet (e ele não sabe). NÃO CLIQUE em nenhum link da mensagem caso desconfie.

Utilize SENHAS dificeis de serem quebradas, com caracteres diferentes na mesma senha como letras, numeros, caracteres especiais (#) para a sua própria segurança.

PRUDÊNCIA ao instalar um novo programa no pc. Você conhece o programa realmente? Vale a pena instala-lo? Lembre-se: Você pode estar instalando algo nocivo.

Assim encerro mais uma postagem. Certamente, em outra oportunidade, irei acrescentar algumas outras soluções, pois há vírus que atacam o sistema de inicialização e o computador nem liga, já indicando erro de cara.
Até mais,
Forte abraço

Fabiano Lopes, sábado, 23 de março de 2013
Niterói RJ
























sábado, 16 de março de 2013

CONCEITOS E PRINCIPIOS DA ORIENTACAO A OBJETOS

CONCEITOS / PRINCÍPIOS DA ORIENTAÇÃO DE OBJETOS

Se acaso lhe perguntassem quais são os conceitos, princípios da orientação a objetos, você saberia responder?
Saberia explicar com exatidão por exemplo, o que é Classe ou Encapsulamento?
Esta é uma resposta que todo programador  ou documentador de grandes sistemas deve saber responder.
Várias linguagens utilizam o conceito de objetos, algumas das mais famosas, Java e C#, se valem dos mesmos conceitos e mesmos principios.

CONCEITOS O.O -> Classe, Objeto e Mensagem.
PRINCÍPIOS O.O -> Encapsulamento, Herança, Polimorfismo, Associação.

Vou começar a explicar minuciosamente cada um destes conceitos, principios:

CLASSE -> Entenda como uma fôrma para fazer objetos. Nela se define os comportamentos (métodos). O que seria esta fôrma para fazer objetos, ou melhor dizendo, instanciar objetos? Vou usar um exemplo: Imagine um hospital. Entenda o hospital como um sistema. O que encontramos no hospital? Certamente, você deverá ter pensado primeiramente em médicos, pacientes, enfermeiros. Neste hospital é certo que se tenha vários médicos ( não pense num hospital público, por favor), vários enfermeiros e vários pacientes.
Quando visualizamos o hospital como um sistema, médico pode ser entendido como uma classe e realmente é, paciente também pode ser definido como classe e enfermeiro também. 
A classe agrupa objetos de parecidas caracteristicas . O médico pode ser um homem ou uma mulher, pode ser o João, a Camila, o Sandro e eles podem ser ortopedistas, pediatras, obstetras. Não interessa, são médicos !!! O que muda é o nome, a especialização e alguns outros atributos. Terão o mesmo comportamento: Farão consultas, cirurgias, solicitarão exames, etc.
No nosso hospital, MÉDICO é um exemplo de CLASSE.

OBJETO -> Preferi explicar este conceito após a classe, pois ao meu ver fica mais fácil entender o que é objeto, depois que fica bem claro o que é uma classe. Simples: Podemos dizer que o objeto é uma fabricação da classe. Tudo que existe de real ou abstrato pode ser considerado um objeto. Ao pensar no que existe no mundo real ou abstrato, até mesmo o MÉDICO que usei como exemplo de classe, pode ser considerado um objeto. Depende do nível de abstração utilizado. Mas voltando a minha explicação, o DR. JOÃO, ou a DRA.CAMILA, são objetos, pois no sistema, na documentação, eles serão tratados como objetos. O dr.João e a dra.Camila podem possuir especialidades diferentes, ele pode ser obstetra e ela pediatra. Ele pode ter 37 anos e ela 23. São objetos bem diferentes, mas semelhantes em um sentido, que os fazem serem objetos pertencentes à mesma classe: São médicos.

MENSAGEM -> É a chamada de métodos para realizar alguma tarefa. Os objetos se comunicam trocando mensagens entre si.  A mensagem é interpretada pelo objeto que executa a ação solicitada e a responde, se for o caso. No nosso exemplo de hospital, seria entre outras coisas, uma mensagem que pergunta, através de um método :quantos médicos há no hospital hoje? O objeto detentor desta resposta, enviará mensagem para o destinatário.

ENCAPSULAMENTO -> Significa privar a informação de acesso indevido por outra classe. Desta forma ninguém mexe diretamente nos atributos, tem que passar antes pelo método. O encapsulamento se dá através de Get e Set. Aumenta a legibilidade, clareza e reuso. No sistema hospital, a classe paciente, não pode, por exemplo, executar ou ter acesso direto ao método consultar da classe médico

HERANÇA -> Classes semelhantes são agrupadas em hierarquias. A herança é um relacionamento em que uma sub-classe herda todos os estados e comportamentos de outra semelhante que é a base e acrescenta outros estados  não existentes na base. O sentido disto é que podemos ter classes semelhantes com tarefas diferentes. Pensemos duas classes: MÉDICO PROFISSIONAL E MÉDICO RESIDENTE. Podemos dizer que médico residente é a super classe e faz consulta, mas não é autorizado a fazer cirurgias. O médico profissional herdará da classe MedicoResidente todos os estados e comportamentos, como realizar consultas e ainda acrescentará o comportamento RealizarCirurgias (não permitido a MedicoResidente e não existente em MedicoResidente).

POLIMORFISMO -> É a capacidade de objetos diferentes responderem à mesma mensagem. Acontece quando mais de uma subclasse possui um mesmo método que pode realizar tarefas nos objetos uma das outras em tempo de execução.

ASSOCIAÇÃO -> Se diz quando um objeto aproveita recursos de outro.

Esta foi uma expressa e sucinta explicação sobre os conceitos/princípios da orientação a objetos. Rápido e direto.

Editado nesta sexta feira, 22 de março de 2013.
Forte abraço,
Fabiano Lopes