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.
- Software, programas e sistemas
- Sistemas operacionais
- Algoritmos e linguagens
- Glossário na área de TI
- Ciclo de vida do desenvolvimento de software
- Como nasce um software? Trabalho em equipe e boas práticas em reuniões
- Ferramentas colaborativas de trabalho em equipe
- Versionamento e reúso
- Repositórios de códigos
- Testes de software, controle de qualidade e deploy
-
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.
- 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.
- Compiladores: Traduzem código de alto nível para máquina de forma integral.
- Interpretadores: Executam linha por linha.
- 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).
- 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.
- Cascata: Processo sequencial com fases bem definidas (requisitos, projeto, implementação, verificação e manutenção).
- 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).
O desenvolvimento de software inicia-se com um levantamento de requisitos e segue por etapas colaborativas até o deploy.
- Baixar código do repositório.
- Codificar e validar: Desenvolver com boas práticas e validar as funcionalidades.
- Integrar códigos ao projeto: Utilizar sistemas de controle de versão.
- Testar software: Automatizar testes e realizá-los ao longo do desenvolvimento.
- Definir pauta prévia e limites de tempo.
- Limitar participantes às pessoas relevantes.
- Conduzir reuniões objetivas, especialmente em videoconferências.
- Excesso de videoconferências causa estresse e cansaço.
- Soluções: reduzir tempo de tela, desligar a câmera temporariamente e limitar reuniões.
- Trello: Gerenciamento visual de tarefas com quadros e cartões.
- Jira: Focado em metodologias ágeis e empresas maiores.
- 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.
- 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.
- 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.
Os repositórios armazenam artefatos de software para controle de versões e reúso.
- 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.
- 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.
- Teste de Unidade: Verifica pequenas partes do código.
- Teste de Integração: Avalia a comunicação entre unidades.
- Teste de Validação: Confirma se o software atende aos requisitos.
- Teste de Sistema: Verifica a experiência do usuário.
- 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.