quinta-feira, 30 de abril de 2020

Evento de Testes

Mais um evento para a comunidade.

Venha nesta troca de conhecimento junto conosco. ;)

Para participar, basta se inscrever neste link: https://lnkd.in/d6hEjrn 

Na primeira semana de maio, teremos 3 dias históricos para a Área de Testes, um evento focado em falar da história dos testes no Brasil, contado pelas maiores referências da área.

Você sabe quem fez história na área? Sabe quem foram os responsáveis pelos livros, empresas de treinamento, maiores eventos, maiores blogs, canais de youtube, comunidades, provavelmente você já ouviu falar dessas lendas e já se inspirou por alguma delas?

Venha ver o quem inspirou elas e por quê fizeram parte da história. Dias 4, 5 e 6 18h30 às 21h. Link da transmissão será enviado para os inscritos e divulgado em todos os canais da 4ALL Tests

Desenvolvimento Orientado a Objetos (OO)

Os primeiros conceitos da OO (orientação a objetos) surgiram no início da década de 1960. A linguagem Simula, desenvolvida na Noruega por Ole-Johan Dahl e Kristen Nygaard, possibilitava a modelagem de simulações. Os primeiros conceitos sobre objetos e classes surgiram dos projetos desenvolvidos em Simula. Na década de 1970, influenciada por essa linguagem, surgiu a SmallTalk, totalmente orientada a objetos. Entretanto, ela foi disponibilizada para o público somente a partir do início dos anos 1980. Nesse período, surgiram outras linguagens orientadas a objetos, tais como C++, derivada da linguagem C, ADA, Object Pascal e outras.

A linguagem Java é uma linguagem OO, tendo sido lançada em 1995 pela Sun MicroSystems. É uma das linguagens de programação OO mais amplamente utilizadas no mundo. Segundo Deitel e Deitel (2005).
Java é uma linguagem que possibilita a criação de páginas web com conteúdo dinâmico e interativo, o desenvolvimento de aplicativos corporativos de grande porte, o aprimoramento da funcionalidade de servidores web e o fornecimento de aplicativos para dispositivos voltados para consumo popular (por exemplo, celulares, smartphones e PDAs).
Para que se possa criar projetos e sistemas orientados a objetos, é necessário conhecer o processo de desenvolvimento da modelagem OO antes de iniciar a criação de códigos na linguagem Java. Assim, vamos conhecer um pouco sobre a evolução do desenvolvimento de sistemas.
Na década de 1960 não se utilizavam metodologias ou formalidades para a criação de documentos dos projetos de sistemas desenvolvidos. Entretanto, no final da década de 1970, surgiu a análise estruturada. Nessa metodologia, o objetivo do processo a ser informatizado está nas funções que agem sobre os dados. O principal diagrama utilizado nela é o diagrama de fluxo de dados (DFD). Na década de 1980, os autores Tom DeMarco e Chris Gane se destacaram ao escreverem algumas obras sobre a análise estruturada. Além deles, Edward Yourdon é uma referência muito importante sobre o assunto.

Na década de 1990, as metodologias OO começaram a surgir por causa da necessidade da criação de uma que pudesse atender às demandas dessas linguagens de programação.

De acordo com Blaha e Rumbaugh (2006), o termo orientado a objetos (OO) significa que organizamos o software como uma coleção de objetos distintos, que incorporam uma estrutura de dados e comportamentos.
A OO é uma metodologia utilizada para entender melhor os requisitos do cliente e solucionar os problemas com maior qualidade. A construção da modelagem OO se dá por meio de objetos, combinando estrutura de dados e comportamento. É um modo de pensar e não uma técnica de programação.
Brooks (1995) observa que a parte difícil do desenvolvimento de software é a manipulação de sua essência, por causa da complexidade inerente do problema, em vez das especificidades de seu mapeamento para uma linguagem em particular.

O desenvolvimento de software ocorre por meio de fases do ciclo de vida dele, como análise, projeto e implementação. Além disso, os conceitos e a notação OO são importantes para a elaboração da documentação de todo o processo de modelagem.

A abordagem de organização OO é essencialmente diferente do desenvolvimento tradicional de software, pois estruturas de dados e rotinas são desenvolvidas de forma apenas fracamente acopladas.
O paradigma OO tem como sua entidade essencial o objeto que recebe e envia mensagens, executa processamentos e pode mudar de estado. Problemas são resolvidos por meio de objetos enviando mensagens a objetos.

Na OO as funções e os dados são fundidos para formar a entidade objeto (object). Os objetos, diferentemente dos dados passivos das linguagens tradicionais, podem atuar. Suas ações são ativadas pelas mensagens enviadas e depois processadas por funções chamadas métodos (methods).
Uma coleção de objetos similares é chamada classe (class). Uma instância de uma classe é um objeto. A maior abstração é conseguida pelo uso da hierarquia de classes. Para reutilizar métodos, as hierarquias de classe recorrem ao mecanismo exclusivo da OO que é a herança (inheritance) ou hereditariedade.

Quando um programa OO é executado ocorrem 3 eventos:
  • Os objetos são criados de acordo com a necessidade;
  • As mensagens movimentam-se de um objeto para outro;
  • Quando os objetos não são mais necessários, eles são apagados, e a área na memória, recuperada.
O paradigma de orientação a objetos favorece a aplicação de diversos conceitos considerados fundamentais para o desenvolvimento de bons programas, tais como abstração (abstraction), encapsulamento (encapsulation), herança (inheritance) e polimorfismo (polymorphism). Alguns conceitos não são exclusivos desta abordagem, mas são suportados de forma melhor no desenvolvimento orientado a objetos do que em outras metodologias.
Técnicas de orientação a objetos promovem o compartilhamento de recursos em diversos níveis distintos. Herança de estruturas de dados e comportamento permite que estruturas comuns sejam compartilhadas entre diversas classes derivadas similares sem redundância. O compartilhamento de código usando herança é uma das grandes vantagens da orientação a objetos. Ainda mais importante que a economia de código é a clareza conceitual de reconhecer que operações sobre objetos diferentes podem ser a  mesma coisa, o que reduz o número de casos distintos que devem ser entendidos e analisados.
O desenvolvimento orientado a objetos não apenas permite que a informação dentro de um projeto seja compartilhada como também oferece a possibilidade de reaproveitar projetos e códigos em projetos futuros. As ferramentas para alcançar este compartilhamento, tais como abstração, encapsulamento, polimorfismo e herança, estão presentes na metodologia; uma estratégia de reuso entre projetos é a definição de bibliotecas de elementos reusáveis. Entretanto, orientação a objetos não é uma fórmula mágica para se alcançar reusabilidade; para tanto, é preciso planejamento e disciplina para se pensar em termos genéricos, não voltados simplesmente para a aplicação corrente.
Segundo Blaha e Rumbaugh (2006), a metodologia OO possui os seguintes estágios:
  • Concepção do sistema: os analistas de negócios ou usuários concebem uma aplicação e formulam os requisitos hipotéticos.
  • Análise: o analista examina e reespecifica rigorosamente os requisitos da concepção do sistema por meio da construção de modelos.
  • Projeto do sistema: a equipe de desenvolvimento planeja a arquitetura do sistema para solucionar o problema da aplicação. O projetista do sistema deve decidir que características de desempenho otimizar, escolher uma estratégia para atacar o problema e fazer alocações de recursos experimentais.
  • Projeto de classes: o projetista de classes elabora objetos tanto do domínio como de aplicação com os mesmos conceitos e notação de orientação a objetos. O foco do projeto de classes são as estruturas de dados e os algoritmos necessários para implementar cada classe.
  • Implementação: os implementadores traduzem as classes e os relacionamentos desenvolvidos durante o projeto de classes para linguagem de programação, banco de dados ou hardware específico.
Os conceitos OO aplicam-se por todo o ciclo de vida de desenvolvimento do sistema. Não se trata de um ciclo de vida do tipo cascata, mas de um processo interativo e incremental.

Blaha e Rumbaugh (2006) identificam algumas características importantes da OO, entre as quais podemos citar:
  • Ênfase na essência de um objeto: a OO enfatiza o que um objeto é, e não como ele é usado. O desenvolvimento OO dá uma ênfase maior à estrutura de dados e menor à de procedimentos.
  • Sinergia: identidade, classificação, polimorfismo e herança caracterizam as linguagens OO. Cada um desses conceitos pode ser usado isoladamente, mas juntos eles se complementam com sinergia. Esses conceitos são definidos pelos autores da seguinte forma:
    • Identidade: significa que os dados são quantizados em entidades distintas e distinguíveis, chamados objetos. Cada objeto tem sua própria identidade inerente.
    • Classificação: significa que os objetos com a mesma estrutura de dados (atributos) e comportamento (operações) são agrupados em uma classe. Esta é uma abstração que descreve propriedades importantes para uma aplicação e ignora as demais.
    • Herança: é o compartilhamento de atributos e operações (recursos) entre classes com base em um relacionamento hierárquico.
    • Polimorfismo: significa que a mesma operação pode se comportar de forma diferente para diferentes classes.
  • Abstração: permite que o programador se concentre nos aspectos essenciais de uma aplicação, ignorando os detalhes. Isso significa focalizar o que um objeto é e faz antes de decidir como implementá-lo. A capacidade de abstrair provavelmente é a habilidade mais importante exigida para o desenvolvimento OO.
  • Encapsulamento (ocultamento de informações): separa os aspectos externos de um objeto, que são acessíveis a outros objetos, dos detalhes internos da implementação, que estão escondidos deles. Pode-se mudar a implementação de um objeto sem afetar as aplicações que o utilizam.
  • Compartilhamento: as técnicas OO promovem compartilhamento em diferentes níveis. A herança tanto da estrutura de dados quanto do comportamento permite que as subclasses compartilhem um código comum. Esse compartilhamento via herança é uma das principais vantagens das linguagens OO.
  • Modelos: é uma abstração de algo com a finalidade de entendê-lo antes de construí-lo. As finalidades dos modelos são teste de uma entidade física antes de sua construção, comunicação com os clientes, visualização e redução da complexidade. A modelagem de um sistema se dá por meio de três modelos:
    • Modelo de classes: descreve a estrutura estática dos objetos em um sistema e seus relacionamentos. O modelo de classes define o contexto para o desenvolvimento de software.
    • Modelo de estados: descreve os aspectos de um objeto que mudam com o tempo.
    • Modelo de interações: descreve como os objetos em um sistema cooperam para conseguir resultados mais amplos.
    • Os três modelos são partes separadas da descrição de um sistema completo, mas estão interligados.

quarta-feira, 29 de abril de 2020

Tecnologia da Informação e Comunicação (TIC)

Tecnologia da Informação e Comunicação (TIC) pode ser definida como um conjunto de recursos tecnológicos, utilizados de forma integrada, com um objetivo comum. As TICs são utilizadas das mais diversas formas, na indústria, no comércio, no setor de investimentos, na educação, etc...
Enfim, a TIC está em todos os lugares e as vezes, utilizamos ela sem mesmo percebermos.

terça-feira, 28 de abril de 2020

Amantes da Tecnologia

Olá!
Neste primeiro post. Iremos apenas fazer uma breve apresentação do objetivo do nosso blog.
Para não perder nenhum conteúdo, se inscreva e nos siga, para ficar sempre atualizado das novidades.
Nosso objetivo é falarmos das tecnologias, tudo o que utilizamos no dia a dia, para você que trabalha com projetos, está estudando na área da tecnologia, quer ingressar neste mundo ou aprender um pouco mais.
Então juntos iremos aprendermos um pouco mais.