Olá, o instrutor da Alura, Lucas Mata, te dá as boas-vindas ao curso sobre o ciclo de vida de aplicações.
Audiodescrição: Lucas Mata se descreve como uma pessoa branca. Tem olhos castanhos, barba e cabelos pretos. Usa óculos de armação arrendondada e camiseta azul-escura. Ao fundo, estúdios da Alura com iluminação azulada. À direita, uma estante com decorações.
Este curso é indicado para quem deseja ter uma visão sistêmica do processo de desenvolvimento de software - desde a etapa de concepção, quando temos uma ideia de solução para resolver um problema, até a implantação no ambiente de produção, onde o software será efetivamente utilizado.
Sendo assim, é indicado para pessoas desenvolvedoras, lideranças, gestões, profissionais que atuam na área de operações de infraestrutura e também para entusiastas de tecnologia em geral.
Nós vamos aprender a modelar uma aplicação utilizando diagramas do UML (Unified Modeling Language ou Linguagem de Modelagem Unificada, em português) e como podemos usar esses diagramas para nos comunicarmos bem com as diferentes partes interessadas no processo de desenvolvimento de software.
Vamos explorar também diferentes abordagens arquiteturais, como microsserviços, monolítica, pipes and filters (tubos e filtros), que podemos utilizar para construir nossa aplicação. Além disso, vamos explorar diferentes padrões de design para construir bem cada componente que fará parte do nosso software.
Assim, analisaremos os principais componentes de uma aplicação, como back-end, front-end e banco de dados, bem como os princípios que fornecem diretrizes de boas práticas para a construção do código, como o SOLID.
Além de aprender a selecionar linguagens e frameworks para o desenvolvimento, também entenderemos a importância dos testes no processo de liberação de novas versões, módulos e sessões de uma aplicação e da adoção de metodologias ágeis para o processo de desenvolvimento.
Uma vez definidos os requisitos, a linguagem e o framework, precisamos nos organizar como equipe para atender às expectativas das partes interessadas nesse processo de desenvolvimento e construir uma solução com qualidade, sempre com testes e validações.
Por fim, aprenderemos como implantar essa aplicação no ambiente de produção. Para isso, exploraremos estratégias de deploy, diferentes tipos de infraestrutura - como on-premises (local) e cloud (nuvem) - e também diferentes formas de implantação, seja utilizando instâncias, containers ou ferramentas de orquestração, como Kubernetes.
Iremos aprender tudo isso através da análise de cada estágio do ciclo de vida da aplicação, passando pelas seguintes etapas:
Nesse curso, não abordaremos as últimas três etapas de monitoramento, manutenção e atualização e evolução.
Abordaremos cada etapa de maneira significativa e contextualizada, trazendo casos reais para entender como aplicar cada ferramenta, abordagem e técnica.
Aproveite todos os recursos disponíveis na plataforma. Além do fórum, temos também a comunidade no Discord.
Nos encontramos nos próximos vídeos para iniciar essa jornada de aprendizado pelo mundo do software.
Quando pensamos em software, geralmente a primeira ideia que nos vem à mente é uma série de linhas de código e módulos nos quais implementamos funcionalidades de uma aplicação.
De fato, desenvolver um software envolve muita programação, mas devemos lembrar que esse software não existirá apenas para nós, pessoas desenvolvedoras. Ele estará inserido em um contexto, podendo ser em uma farmácia, padaria, indústria ou até mesmo no smartphone das pessoas usuárias. Atualmente, interagimos constantemente com aplicativos móveis, que também são exemplos de software.
Software é uma solução para as pessoas em geral!
É comum pensar que o desenvolvimento de software está altamente relacionado ao campo das ciências exatas. De fato, utilizamos uma série de conhecimentos e teorias da ciência da computação, engenharia da computação, engenharia de software e áreas afins. No entanto, o processo de construir um software não é essencialmente determinístico.
Não conseguimos, a priori, inserir uma série de funcionalidades esperadas e aplicar uma teoria matemática, fórmula ou modelo que nos permita obter o software perfeito para aquelas funcionalidades que pretendemos implementar. Portanto, é um processo que envolve criatividade e habilidade da pessoa programadora, utilizando uma linguagem, um framework ou um conjunto de ferramentas nesse processo de desenvolvimento.
Como lidamos com esse processo de desenvolvimento de um software?
Imagine que recebemos uma demanda para desenvolver um software ERP (Enterprise Resource Planning ou Planejamento de Recursos Empresariais, em português) para um mercado ou pequeno negócio no nosso bairro. Como lidamos com esse processo? Começamos implementando diretamente? Não. Vamos considerar um caso concreto próximo a nós, que é a plataforma da Alura, onde estamos fazendo este curso.
Na plataforma, temos uma série de funcionalidades, incluindo a inteligência artificial da Luri, que nos permite interagir e obter conteúdos extras, além dos artigos, vídeos, cursos e formações disponíveis.
Ao longo dos mais de 10 anos de existência da plataforma no Brasil, começamos com funcionalidades mais básicas, assim como as demandas de conteúdo, que eram mais voltadas para o desenvolvimento web e programação em Java e C, linguagens mais comuns na época do lançamento da plataforma. Atualmente, temos uma variedade de conteúdos diversificados para todos os públicos, o que possibilita uma formação continuada.
Quando pensamos na trajetória de uma plataforma como a Alura ou de um aplicativo móvel que precisa ser atualizado, seja por mudanças no Android ou por vulnerabilidades detectadas, consideramos um ciclo de vida da aplicação. Esse ciclo de vida começa na concepção da plataforma, ou seja, nessa solução que vamos construir em forma de software.
O ciclo de vida é composto por uma série de estágios pelos quais uma aplicação passará ao longo de sua vida útil.
O primeiro estágio é a concepção, onde não estamos programando de fato, mas, sim, desenhando a solução.
Devemos pensar no software sempre como uma solução para outras pessoas. Por isso, no processo de concepção, devemos interagir bastante com as pessoas envolvidas, ou seja, as partes interessadas, conhecidas na linguagem de negócios e gestão como stakeholders. Muitas vezes, não conversamos diretamente com as pessoas usuárias, mas sim com stakeholders e parceiros, para entender o que buscam em termos de solução de software. A partir dessa conversa, definimos os requisitos.
O que é um requisito? Vamos pensar no caso da Alura. Ao interagir com a plataforma, podemos nos inscrever em cursos para criar uma primeira aplicação tanto com C# quanto com Python. É possível fazer os cursos dessas duas linguagens de maneira simultânea. Ao final de cada curso, podemos obter o certificado, compartilhar e incluir em nossa pasta de conquistas profissionais.
Tudo isso são requisitos da plataforma. Um dos requisitos é permitir que uma pessoa se inscreva simultaneamente em diferentes cursos, sem limitar a jornada de aprendizagem. Quando a pessoa conclui um curso, há uma funcionalidade para gerar um certificado que ficará permanentemente disponível em seu perfil.
Além disso, temos requisitos relacionados à interação da pessoa usuária com a plataforma, como usabilidade e navegabilidade. Por exemplo, ao clicar para postar uma dúvida no fórum, esperamos uma resposta rápida da plataforma. Ninguém quer esperar mais de 10 segundos para carregar uma página. Esse tipo de parâmetro, relacionado ao tempo de resposta e latência da plataforma, é um requisito operacional importante para garantir uma boa experiência de uso na Alura ou em qualquer outra aplicação web.
Os requisitos são levantados no início do processo de concepção da plataforma. A partir desses requisitos, que foram definidos em conjunto com as partes interessadas, construímos uma série de diagramas descritivos.
Devemos construir diagramas para descrever a solução de forma gráfica. No entanto, em vez de modelar essa solução por meio de desenhos livres que apenas nós compreenderíamos, usamos uma linguagem unificada que permite que diferentes pessoas desenvolvedoras e parceiras compreendam o que estamos desenhando.
Essa linguagem gráfica padrão é chamada de UML (Unified Modeling Language ou Linguagem Unificada de Modelagem).
A UML é bem conhecida, começou a ser adotada no final dos anos 90 e é utilizada até hoje. Existem diversas documentações em vários sites, como o da IBM, que orientam sobre como criar diagramas de classe e diagramas de casos de uso, descrevendo as principais formas de uso da plataforma ou solução que vamos construir.
Além disso, existem uma série de editores de diagramas online, que permitem construir diagramas de forma simples e rápida - sem precisar instalar nada no computador. Basta procurar por "UML ferramentas" em um motor de pesquisa, como o Google.
A UML é uma linguagem interessante no processo de modelagem para conceber e discutir como a solução em forma de software será implementada. Vamos explorar mais sobre o mundo da modelagem de aplicações na sequência.
Estávamos analisando a plataforma da Alura, pensando em seu ciclo de vida, ainda no estágio de concepção, e mencionamos o uso de uma linguagem gráfica chamada UML. Quando iniciamos o processo de concepção de uma plataforma ou software em geral, definimos os requisitos. Esses requisitos nos ajudam a estabelecer as regras de negócio, que são todas as funcionalidades esperadas do software.
Para modelar bem todo o sistema usando uma linguagem gráfica, o primeiro passo é definir os requisitos e as regras de negócio. Em geral, não possuímos dentro da UML um diagrama específico para elaborar os requisitos.
Por isso, utilizamos um diagrama de blocos para criar uma série de cartões para os requisitos, considerando o caso de uma plataforma educacional. Dividimos os requisitos em duas categorias: funcionais e não-funcionais.
Os requisitos funcionais estão relacionados às funcionalidades que serão implementadas na plataforma. Já os não-funcionais estão mais ligados à experiência da pessoa usuária. Por exemplo, a plataforma deve ser responsiva e garantir uma experiência fluida em dispositivos móveis, tablets e desktops. Além disso, deve garantir um carregamento de menos de 3 segundos para uma determinada velocidade de conexão com a internet.
Em todos as descrições desses requisitos, buscamos ser concisos e claros. Além disso, um requisito deve ser testável ou verificável.
Em outras palavras, devemos conseguir entrar na plataforma e testar se a funcionalidade foi implementada e se o requisito não-funcional está sendo atendido. Um conjunto de requisitos ou regras de negócio opera como um contrato entre nós, pessoas desenvolvedoras, e stakeholders, que são as partes interessadas no software. Cada requisito é como uma cláusula que devemos cumprir.
No processo de desenvolvimento, os requisitos ou regras que definimos são nossa bússola para guiar todo o processo de desenvolvimento. A partir deles, podemos construir diagramas da UML para discutir funcionalidades e também as camadas e componentes da plataforma.
Vamos começar pelo diagrama de casos de uso. Este diagrama é comum na descrição de um software e descreve alguns casos de uso, ou seja, como a plataforma será utilizada pelos seus atores.
Vamos conferir um exemplo simples de diagrama de caso de uso da mesma plataforma de cursos online:
Os atores são as pessoas usuárias, com diferentes perfis. Nessa plataforma, temos a figura de admin, da pessoa instrutora e da pessoa estudante. Essas diferentes pessoas realizam tarefas distintas.
Dentro do retângulo à direita onde descrevemos as funcionalidades a que cada ator terá acesso na plataforma, utilizamos uma linguagem concisa e clara. Por exemplo, a pessoa estudante poderá obter o certificado, realizar o curso e fazer o login. Todos poderão fazer o login. Além disso, o admin poderá gerenciar o uso da plataforma, enquanto a pessoa instrutora poderá publicar conteúdo.
Para criar um bom diagrama de casos de uso, com detalhes e aspectos do funcionamento de cada caso, incluindo funcionalidades internas, precisamos consultar a documentação oficial da UML para entender como usar os recursos gráficos disponíveis. No caso da ferramenta Visual Paradigm, esses recursos ficam listados no painel lateral esquerdo.
Cada recurso gráfico tem um significado específico. Por isso, precisamos conhecê-los para poder montar cada diagrama da maneira adequada.
É importante destacar que os requisitos são nossa bússola no processo de desenvolvimento e podem ser entendidos como cláusulas de um contrato. No entanto, ao longo da vida de uma plataforma, esses requisitos invariavelmente passarão por modificações. Por exemplo, na Alura, agora temos um chatbot inteligente para ajudar na trajetória de aprendizagem. Antes, há dois ou quatro anos, isso não era um requisito da plataforma. Hoje, já é.
À medida que a tecnologia evolui, precisamos atender a novos requisitos, pois estão intimamente relacionados às expectativas das pessoas usuárias e ao dinamismo do mercado em que a solução está inserida
Por isso, é fundamental ter um processo contínuo de controle e discussão dos requisitos, entendendo que eles mudam. A documentação do software é essencial para entender em que ponto precisamos implementar uma nova funcionalidade ou modificação.
No diagrama de caso de uso, obtemos uma visão geral dos principais componentes inseridos na solução. Tanto as pessoas desenvolvedoras, quanto as partes interessadas terão uma ideia geral da estrutura da plataforma. A partir daí, podemos decidir sobre a arquitetura, estrutura e componentes a serem utilizados.
Além disso, temos outros diagramas, como o diagrama de classes. Vamos explorar mais essa diferença entre os diagramas para entender como podemos usar cada um para representar nossa solução.
O curso Ciclo de vida de aplicações: modelando, desenvolvendo e implantando um software possui 125 minutos de vídeos, em um total de 54 atividades. Gostou? Conheça nossos outros cursos de Arquitetura em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.