Skip to content

Latest commit

 

History

History
151 lines (112 loc) · 6.58 KB

File metadata and controls

151 lines (112 loc) · 6.58 KB

Desenvolvimento de Softwares

Introdução

Os softwares fazem parte do nosso cotidiano, presentes em dispositivos como computadores, Smart TVs e celulares. Abaixo são apresentados conceitos fundamentais para distinguir software, programas e sistemas, além de explorar metodologias de desenvolvimento. Abordaremos também o desenvolvimento colaborativo, abrangendo desde o nascimento de um software até o deploy, incluindo ferramentas colaborativas, versionamento, reúso e testes de software.

Estrutura

  1. Software, programas e sistemas
  2. Sistemas operacionais
  3. Algoritmos e linguagens
  4. Glossário na área de TI
  5. Ciclo de vida do desenvolvimento de software
  6. Como nasce um software? Trabalho em equipe e boas práticas em reuniões
  7. Ferramentas colaborativas de trabalho em equipe
  8. Versionamento e reúso
  9. Repositórios de códigos
  10. Testes de software, controle de qualidade e deploy

01: Software, Programas e Sistemas

  • Software: Conjunto de instruções (programas), estruturas de dados e documentação associada. Classifica-se em:

    • Software de sistema (básico): Sistemas operacionais (Windows, Linux) e utilitários (antivírus, backup).
    • Software aplicativo: Apps que realizam tarefas específicas (navegadores, editores de texto).
  • Programa: Sequência de passos definida por algoritmos.


02: Sistema Operacional

  • Atua como camada intermediária entre hardware e software.
  • Gerencia recursos, controla a execução de programas e facilita o uso do computador.
  • Exemplos: Windows, Linux.

Tradutores de Linguagem

  • Compiladores: Traduzem código de alto nível para máquina de forma integral.
  • Interpretadores: Executam linha por linha.

03: Algoritmos e Linguagens de Programação

  • Algoritmo: Sequência de passos para resolver problemas (ex.: receita de bolo).
  • Linguagens de programação: Traduzem algoritmos em instruções compreensíveis para computadores (ex.: Python, Java, C).

04: Glossário do Desenvolvedor de Software

  • Front-end: Parte visual de uma aplicação.
  • Back-end: Processos no servidor.
  • Full-stack: Desenvolvedor que atua em ambas as áreas.
  • API: Interface para interação entre softwares.
  • Frameworks: Conjuntos de códigos pré-prontos (ex.: Bootstrap, React).
  • Git/GitHub: Ferramentas para controle de versão e colaboração.

05: Ciclo de Vida do Desenvolvimento de Software (SDLC)

Modelos de Desenvolvimento

  1. Cascata: Processo sequencial com fases bem definidas (requisitos, projeto, implementação, verificação e manutenção).
  2. Metodologias Ágeis: Abordagem iterativa e incremental.
    • XP (eXtreme Programming): Refatoração contínua, programação em pares, testes a priori.
    • Scrum: Estrutura organizacional com sprints (ciclos curtos e consistentes).

06: Como Nasce um Software?

O desenvolvimento de software inicia-se com um levantamento de requisitos e segue por etapas colaborativas até o deploy.

Ciclo de Desenvolvimento

  1. Baixar código do repositório.
  2. Codificar e validar: Desenvolver com boas práticas e validar as funcionalidades.
  3. Integrar códigos ao projeto: Utilizar sistemas de controle de versão.
  4. Testar software: Automatizar testes e realizá-los ao longo do desenvolvimento.

Boas Práticas em Reuniões

  1. Definir pauta prévia e limites de tempo.
  2. Limitar participantes às pessoas relevantes.
  3. Conduzir reuniões objetivas, especialmente em videoconferências.

Zoom Fatigue

  • Excesso de videoconferências causa estresse e cansaço.
  • Soluções: reduzir tempo de tela, desligar a câmera temporariamente e limitar reuniões.

07: Ferramentas Colaborativas de Trabalho em Equipe

Ferramentas de Gestão

  • Trello: Gerenciamento visual de tarefas com quadros e cartões.
  • Jira: Focado em metodologias ágeis e empresas maiores.

Ferramentas de Mensagens e Videoconferências

  • Slack: Mensageria com integração a outros apps.
  • Teams: Alternativa gratuita ao Slack, com suporte a reuniões e colaboração em documentos.
  • Discord: Popular entre gamers e empresas, com recursos de áudio e vídeo.
  • Zoom: Plataforma amplamente utilizada para videoconferências.

08: Versionamento e Reúso

Reúso de Código

  • Benefícios:
    • Redução de tempo e custo.
    • Aumento de qualidade e confiabilidade.
  • Desafios:
    • Mudança de mentalidade na equipe.
    • Custo inicial de implementação.

Versionamento

  • Controla diferentes versões de um projeto, facilitando colaborações simultâneas.
  • Ferramentas Populares:
    • Git: Sistema distribuído e amplamente utilizado.
    • BitKeeper: Antecessor do Git.
    • Subversion (SVN): Sistema centralizado para pequenas equipes.
    • Mercurial: Distribuído, utilizado por grandes empresas como Google.

09: Repositórios de Códigos

Os repositórios armazenam artefatos de software para controle de versões e reúso.

Exemplos de Repositórios

  • GitHub: Hospedagem de código com controle de versão.
  • Bootstrap: Biblioteca front-end com abordagem mobile first.
  • Spring: Framework Java para aplicações corporativas.
  • Angular: Framework front-end desenvolvido pela Google.

Repositórios Acadêmicos

  • Oracle Developer: Recursos para desenvolvedores Java.
  • Cisco Networking Academy: Educação em TI e segurança cibernética.
  • AWS Academy: Currículo gratuito de computação na nuvem.

10: Testes de Software, Controle de Qualidade e Deploy

Tipos de Testes

  1. Teste de Unidade: Verifica pequenas partes do código.
  2. Teste de Integração: Avalia a comunicação entre unidades.
  3. Teste de Validação: Confirma se o software atende aos requisitos.
  4. Teste de Sistema: Verifica a experiência do usuário.

Deploy e Contêineres

  • Deploy: Implantação do software com todas as dependências configuradas.
  • Contêineres: Facilitam a portabilidade e execução do software.
    • Docker: Padrão do setor, baseado em LXC.