sexta-feira, 14 de julho de 2017

Informatica e o Crime

1. Crimes digitais, crimes de internet, cibercrimes: defina os termos e responda, são termos
sinônimos ?? 

Sim, são sinonimos. São termos utilizados para se referir a toda a atividade onde um computador ou uma rede de computadores é utilizada como uma ferramenta, uma base de ataque ou como meio de crime.

2. Cite três exemplos (com definições curtas) de crimes cibernéticos.

Disseminação de vírus que coletam e-mails para venda de mailing, distribuição material pornográfico (em especial infantil), invasão de sites para deixar mensagens difamatórias como forma de insulto a outras pessoas.

3. Como um computador pode ser usado (o status do computador) em um cibercrime ?

O computador pode ser o agente, o facilitador ou a vítima do crime.

4. A Internet ameaça monopólio de comunicação (notícias) ? Como ?

Na minha opinião sim, antigamente o único meio de se ficar "atualizado" era apenas com a TV, jornal e rádio e esses meio tinham poucas opções de "variedades" de opinião, hoje com advento da internet o fluxo de informação está bem maior, e o acesso a ela também, fazendo com o que as detentoras da informação de antigamente, perdessem a força.

5. Cite 3 organizações nacionais e 3 organizações internacionais que tem por objetivo
combater o cibercrime.

Não achei.

6. Qual a definição de hacker e qual a sua associação com o tema cibercrime ?

O hacker nada mais é do que uma pessoa que tem dedicação muito maior do que o normal para conhecer e alterar dispositivos, programas e redes de computadores, fazendo com que seus sistemas de segurança sejam violados.

7. Como o cibercrime afeta o comportamento do usuário de internet ?

O cibercrime afeta no modo como nós usuários utilizamos os serviços onde envolvem informações pessoais, dados bancários, compras na internet pois os dados inserido nesses serviços podem ser capturados e usados de forma a prejudicar financeiramente a pessoa que usou esses serviços.

8. Cite 3 leis brasileiras que existem por causa do tema cibercrime.

“Lei Azeredo” (Lei nº 12.735) e a “Lei Carolina Dieckmann”( Lei nº 12.737).

9. O que é computação forense ?

A Computação Forense consiste, basicamente, no uso de métodos científicos para preservação, coleta, validação, identificação, análise, interpretação, documentação e apresentação de evidência digital com validade probatória em juízo.

10. Cite 3 itens do marco civil da internet (Lei N° 12.965/14) que estariam associados ao
combate do cibercrime.

proteção da privacidade, proteção dos dados pessoais, responsabilização dos agentes de acordo com suas atividades.

11. Na sua opinião, como o cibercrime afeta a utilização da Internet ?

O cibercrime afeta no modo como nós usuários utilizamos os serviços onde envolvem informações pessoais, dados bancários, compras na internet pois os dados inserido nesses serviços podem ser capturados e usados de forma a prejudicar financeiramente a pessoa que usou esses serviços.

12. O que é Deep Web e qual a sua relação com o tema cibercrime ?

É o nome dado para uma zona da internet que não pode ser detectada facilmente pelos tradicionais motores de busca, garantindo privacidade e anonimato para os seus navegantes. É formada por um conjunto de sites, fóruns e comunidades que costumam debater temas de caráter ilegal e imoral.

13. Como a internet modifica, afeta a dinâmica de um crime que já existia antes da internet ? Cite um exemplo.

Um exemplo de um crime é a pedofilia que com a internet facilitou mais o contato de pedófilos com crianças através de perfis falsos.

14. Qual a relação do cibercrime com a economia ?

O cibercrime tem relação a economia em diversos aspectos, um aspecto são as fraudes bancárias

15. Como o cibercrime afeta a área de sistemas de informação ?

A área que eu vejo que o cibercrime afeta é a segurança dos sistemas de informação, com esses cibercriminosos tentando de varias formas roubar dinheiro ou informação devemos criar sistemas cada vez mais seguros e estar sempre a um passo a frente deles.

sábado, 8 de julho de 2017

Arquiteto de Software

O que faz? Liderar e coordenar as atividades e os artefatos técnicos no decorrer do projeto. O arquiteto de software estabelece a estrutura geral de cada visão de arquitetura: a decomposição da visão, o agrupamento dos elementos e as interfaces entre esses principais agrupamentos. Portanto, comparado aos outros papéis, a visão do arquiteto de software é ampla, e não detalhada.

Em resumo, o arquiteto de software deve ter grande conhecimento geral, possuir maturidade, visão e profunda experiência que permita identificar problemas rapidamente e dar opiniões sensatas e criteriosas na falta de informações completas (RUP, 2007).

É uma profissão em alta, ou está sendo extinta? É uma profissão em alta no mercado de TI, visto que é de suma importância alguém que tenha conhecimento do projeto como um todo e saiba a melhor decisão a ser tomada a fim de melhorar a eficiência e eficácia de um projeto de sistemas.

Qualidade de Software

O que é qualidade de software? Como especificar? Bem qualidade é algo bem subjetivo, algo que varia para cada indivíduo. Uma definição dita sobre qualidade que eu acho que seja a melhor é "qualidade é atender os requisitos que foram descritos no projeto seja de software ou de outra coisa". Podemos pegar o mesmo exemplo dado no podcast é a da Ferrari e do Fusca, o requisito era que fosse construido um carro que alcançasse 60 km/h, nós sabemos que tanto o Fusca quanto a Ferrari conseguem, então qual tem mais qualidade? A resposta é.. Os dois. Sim, isso mesmo, os dois, porque o objetivo era atender o requisito, e os dois carros atendem, agora se nós adicionarmos mais um requisito de que o carro tenha um designer futurista apenas a Ferrari tem qualidade, já que o Fusca não conseguiu atingir esse objetivo, da mesma forma que se a gente colocar que o carro deve ter um custo baixo de produção, o Fusca tem qualidade e a Ferrari não. Pegando na parte de qualidade de software seria o software que atende todos os requisitos especificados no documento de analise. Então a qualidade depende muito do que é ser qualidade para cada pessoa.

Qual a importância da qualidade de software? A qualidade de software está ligada a satisfação do cliente, logo é de suma importância que o que foi pedido pelo cliente seja atendido para que o mesmo não queira mais seus serviços e te queime na praça.

Como descobrir atributos de qualidade? A descoberta de atributos de qualidade se da por parte de entrevistas com o usuário. Os atributos são praticamente funcionalidades que o cliente quer no software.


Como negociar com o cliente de modo que não fique algo subjetivo? Fazer toda uma análise prévia para que a negociação com ele não se torne algo muito subjetivo e ele não consiga nos ajudar nessa fase, na qual  é essencial para construir um software de qualidade.

General Responsibility Assignment Software Patterns - GRASP

Nesse post será abordado um pouco sobre o padrão GRASP. Esse padrão GRASP procuram oferecer caminhos para a construção de aplicações bem estruturadas e que possam ser facilmente adaptáveis quando aparecem mudanças a serem feitas.

Essas diretrizes buscam fazer com que o código fique melhor organizado, facilitando a manutenção e como se trata de um padrão se aplicado corretamente o seu código pode ser compreendido por outros programadores sem nenhuma dificuldade.

Os padrões GRASP não devem ser encarados como soluções pré-definidas para problemas específicos. Na verdade, estes padrões devem ser compreendidos como princípios que auxiliam os desenvolvedores. Ao todo são nove os padrões GRASP:

Padrões Básicos:
  • Information Expert
  • Creator
  • High Cohesion
  • Low Coupling
  • Controller
Padrões Avançados:
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations
O SOLID, assim como o GRASP, é um acrônimo para Single Responsability, Open/closed,  Liskov Substitution, Interface Segregation e Dependency Inversion

  • Single Responsability: princípio da responsabilidade única. 

  • Open/closed: todas as entidades devem ser abertas para extensão e fechadas para alterações.

  • Liskov Substitution: qualquer objeto do tipo X ( que é subtipo de Y) deveria poder substituir um objeto do tipo Y sem alterar as propriedades básicas do sistema. 

  • Interface Segregation: As interfaces tenham somente os métodos que serão usados por quem vai implementar essa interface. 

  • Dependency Inversion: os módulos tem que depender de abstrações e não de classes concretas. 
A diferença entre o GRASP e o SOLID é que o SOLID é bem menor em questão de diretrizes, que em compensação o SOLID abrange um pouco mais do que princípios para atribuição de responsabilidades e ele te oferece um política de boas práticas de como devem ser as características do sistema.

A diferença entre o GRASP e o GoF é que o GoF é bem maior. São ao todo 23 padrões que sãodivididos em três categorias

São divididos  em três categorias :
  • Padrões comportamentais 
  • Padrões criativos 
  • Padrões estruturais

MVC - Model-view-controller

Como tema livre eu escolhi o padrão de projeto MCV Model-view-controller em português modelo-visão-controlador. Uma observação que vale ser feita é que durante a disciplina de projeto vi que estava fazendo tudo errado na aplicação desse padrão.

MVC é um padrão de arquitetura de software que separa a informação (e as suas regras de negócio) da interface com a qual o usuário interage.

Bem o padrão MVC se divide basicamente em três partes no modelo, onde ficam as classes domínio e a sua lógica de negócio, na visão ficam todas as telas e o controle delas e por fim tem a camada de controle onde ela é responsável por ser o intermediário entre a camada de visão e a camada de modelo.

O dialogo dessas três camadas funcionam basicamente dessa forma:

  • Visão – Fala Controle! O usuário acabou de pedir para acessar o Facebook ! Pega os dados de login dele ai
  • Controle– Beleza. Já te mando a resposta. Ai modelo, meu parceiro, toma esses dados de login e verifica se ele loga.
  • Modelo – Os dados são válidos. Mandando a resposta de login.
  • Controle– Beleza. View, o usuário informou os dados corretos. Vou mandar pra você os dados dele e você carrega a página de perfil.
  • Visão– Valeu. Mostrando ao usuário…
Esse padrão de projeto quando aplicado corretamente nos da uma grande vantagem, que é poder substituir a visão por exemplo feita para desktop para uma outra visão feita para web, sem alterar o controle e o modelo, o que é muito vantajoso.

Aqui temos uma imagem representando as camadas e a sua comunicação:



Modelo de Domínio Rico e Anêmico

Modelo de domínio rico e anêmico para ser sincero nunca tinha ouvido falar desses termos antes de fazer a disciplina de projeto. Bem qual seria a diferença entre modelo rico e anêmico? 

Podemos dizer que por alto no modelo rico o comportamento das classes de domínio ficam dentro das próprias classes, já no anêmico esse comportamento fica fora das classes de domínio, ficando apenas os get's e set's da classe. Creio que você deve ter identificado o que eu falei com o seu código não é mesmo?! A maioria de nós aprendemos desde sempre mesmo que sem perceber fazer domínios anêmicos, criando classes de domínio apenas com métodos de acesso aos atributos, o que é meio errado, já que estamos trabalhando com programação orientada a objetos onde a classe deve representar características (atributos) e ações (métodos de comportamento) e não somente atributos.

Bem você deve estar se perguntando, qual eu devo usar? O indicado seria utilizar o modelo rico que é o que mais condiz com a programação O.O., mas como nem tudo são rosas, as vezes não é possível utilizar somente o modelo rico, a solução seria usar um misto dos dois.






sexta-feira, 7 de julho de 2017

Última Postagem!! Tema: Projetar pra que?


O que dizer dessa matéria que eu mal conheço e já considero "pakas"?! Bem no começo do semestre eu não tinha noção nenhuma do que se tratava a matéria de projeto de sistemas, e depois da apresentação da matéria tive a impressão que a matéria seria chata onde eu iria aprender coisas que eu não iria usar tão cedo e que só iria me atrasar a começar a programar, mas eu estava errado.

A matéria de projeto, assim como de análise ao primeiro momento parece que é só blá blá blá, muito mundo da imaginação, como dizem, "Na teoria tudo é lindo", e realmente é. No decorrer das aulas fui aprendendo pouco a pouco como fazer um projeto de um sistema, eu já estava agoniado querendo logo colocar a parte de implementação em prática, que é a que eu mais me identifico, achando tudo aquilo que eu estava vendo um porre, mas quando o professor falou que a implementação tinha que seguir o que foi definido no documento percebi que de fato, analisar e projetar um sistema antes de implementar faz toda a diferença.

Analisando e projetando você tem o caminho das pedras, do que deve fazer na programação, parando de utilizar o "extreme go horse", e de tomar decisões na hora da programação, sem avaliar no que aquilo vai afetar o sistema futuramente, e se aquela decisão é a melhor para aquela ocasião. Projetar ajuda a programar pois, você pensa e escreve ao máximo as decisões que vai tomar, as tecnologias que vai utilizar, até a linguagem que você vai programar, com base na análise feita anteriormente e foi feita com base no problema que o cliente quer resolver.

Minha visão da disciplina de projeto mudou completamente, principalmente por me fazer enxergar a importância de se fazer uma analise e projeto antes, para me orientar na hora da implementação e reduzir a chance de tomar atitudes erradas afetando o sistema, tendo que refazer tudo.