Você está na página 1de 25

ESPECIALIZAÇÃO EM ENGENHARIA

DE SOFTWARE

relembrando
Especialização em Engenharia de Software
MODULO 1 - Eng. de Software DevOps

Disciplina: Fundamentos da Eng. Software

A Cultura DeVops e as relações Pilares da Engenharia de Software e a relação


com a Arquitetura de Software. com as metodologias ágeis com vistas ao
desenvolvimento integrado.

Planejamento Ágil de Projeto de Software e


ferramentas de apoio.
O processo constitui o pilar para o controle e gerenciamento do trabalho de
desenvolvimento.

Os processos são as atividades e etapas que são seguidas para desenvolver software. Eles
devem ser estruturados e eficazes para garantir que o software seja desenvolvido de forma
consistente e com qualidade.

Os principais processos da engenharia de software incluem:


• Gerenciamento de projetos: O processo de planejamento, monitoramento e controle do desenvolvimento de software.

• Análise de requisitos: O processo de coleta e análise dos requisitos do usuário.


• Projeto de software: O processo de criação do design do software.
• Implementação de software: O processo de codificação do software.
• Teste de software: O processo de verificação e validação do software.
• Implantação de software: O processo de disponibilização do software para os usuários.
ETAPAS DA ANALISE DE REQUISITOS
1 - Elicitação de Requisitos:
 Consiste na coleta de informações sobre as necessidades dos usuários, expectativas e restrições
do sistema.
 Personagens Envolvidos:
 Analistas de Requisitos: Responsáveis por conduzir entrevistas, workshops e outras atividades para extrair
informações.
 Stakeholders: Indivíduos que possuem interesse no sistema, incluindo usuários, clientes, gerentes e outros
envolvidos no processo.

2 - Análise de Requisitos:
 Compreensão e organização das informações coletadas durante a elicitação. Identificação de
requisitos funcionais e não funcionais.
 Personagens Envolvidos:
 Analistas de Requisitos: Responsáveis por analisar e estruturar os requisitos.
 Stakeholders: Podem ser consultados para esclarecimento e validação dos requisitos identificados.
ETAPAS DA ANALISE DE REQUISITOS
3. Documentação de Requisitos:
 Formalização dos requisitos em documentos que servirão como base para o desenvolvimento.
 Personagens Envolvidos:
 Analistas de Requisitos: Responsáveis pela redação e atualização da documentação.
 Stakeholders: Podem revisar e aprovar a documentação para garantir que ela reflete suas expectativas

.
4. Validação de Requisitos:
 Verificação de que os requisitos documentados atendem às necessidades dos usuários e estão
alinhados com os objetivos do projeto.
 Personagens Envolvidos:
 Equipe de Desenvolvimento: Pode contribuir para a validação técnica dos requisitos.
 Stakeholders: Participam da validação para garantir a precisão e a adequação dos requisitos.
ETAPAS DA ANALISE DE REQUISITOS
5. Gestão de Mudanças de Requisitos (com rastreamento):
 Estabelecimento de um processo para lidar com alterações nos requisitos ao longo do ciclo de
vida do projeto.
 Personagens Envolvidos:
 Gerente de Projetos: Responsável por tomar decisões sobre a aceitação ou rejeição de mudanças.
 Analistas de Requisitos: Atuam na avaliação do impacto das mudanças.
 Equipe de Testes: Usa o rastreamento para desenvolver casos de teste que cobrem todos os requisitos.

6.Comunicação Contínua:
 Manutenção de uma comunicação efetiva entre os membros da equipe, stakeholders e
demais envolvidos.
 Personagens Envolvidos:
 Analistas de Requisitos: Facilitam a comunicação e esclarecem dúvidas.

 Todos os membros da equipe e stakeholders: Contribuem com feedback e informações relevantes.


Outras diferenças
 Foco: A engenharia de software se concentra no produto, enquanto o DevOps se
concentra no processo.
 Cultura: A engenharia de software geralmente tem uma cultura mais tradicional,
enquanto o DevOps tem uma cultura mais colaborativa.
 Tecnologias: A engenharia de software usa uma variedade de tecnologias,
enquanto o DevOps se concentra em tecnologias que permitem a automação e
a colaboração.

A engenharia de software e o DevOps são


complementares. A engenharia de software fornece a
base para o DevOps, enquanto o DevOps ajuda a garantir
que o software seja entregue com qualidade e
confiabilidade.
Responsabilidades dos desenvolvedores
As principais responsabilidades dos engenheiros As principais responsabilidades dos praticantes
de software incluem: de DevOps incluem:
 Análise de requisitos  Automatização de processos
 Design de software  Gerenciamento de configuração
 Desenvolvimento de código  Gerenciamento de mudanças
 Testes de software  Monitoramento de desempenho
 Implantação de software
 Resposta a incidentes
CICLO DE VIDA

O Ciclo de Vida de Software é um conceito fundamental no


desenvolvimento de software, que abrange todas as fases e
atividades envolvidas desde a concepção de um sistema até
a sua desativação.

É importante lembrar que o ciclo de vida de software é um


processo contínuo. O ciclo de vida deve ser revisado e atualizado
regularmente para garantir que esteja atendendo às necessidades
do projeto.
EQUIPE
ATIVIDADE 1
ATIVIDADE 2

TRABALHO COLABORATIVO COM Tarefa 1


A DEFINIÇÃO DAS
RESPONSABILIDADES RESULTA EM ATIVIDADE 3
QUALIDADE
Tarefa 1
ATIVIDADE 3
 Divida a equipe em
dupla e discuta os
itens 2 e 3 das
instruções, a partir do
item 1
TRABALHO COLABORATIVO COM A (20 minutos)
DEFINIÇÃO DAS RESPONSABILIDADES
RESULTA EM QUALIDADE
 Junte a equipe para a
consolidação e
planejamento final
(20 minutos)
Quais destas premissas foram aplicadas em nossas atividades

Premissas do manifesto ágil


• Requisitos e modelagem de sistemas
Abordagem ágil

• Soluções Escaláveis
Requisitos e Modelagem de Sistemas abordagem ágil
1. Colaboração Contínua:
- Especificação de Requisitos: A comunicação entre desenvolvedores,
operadores e outros stakeholders é enfatizada. A especificação de requisitos
pode ser mais iterativa, incorporando feedback constante.
- Modelagem de Sistemas: A modelagem pode ser mais ágil, permitindo
adaptações rápidas às mudanças nos requisitos e arquitetura do sistema.

2. Automatização do Processo:
- Especificação de Requisitos: As especificações devem ser detalhadas o
suficiente para permitir a automação de testes e implantação.
- Modelagem de Sistemas: A modelagem pode incluir representações mais
detalhadas dos processos automatizados, como pipelines de integração
contínua e entrega contínua.
Requisitos e Modelagem de Sistemas

3. Feedback Contínuo:
- Especificação de Requisitos: A especificação pode incluir métricas e
critérios de aceitação para fornecer feedback contínuo durante o ciclo de
desenvolvimento.
- Modelagem de Sistemas: Modelos podem incluir representações de
métricas de desempenho e qualidade que são monitoradas continuamente.

4. Infraestrutura como Código:


- Especificação de Requisitos: Pode incluir requisitos relacionados à
infraestrutura, definindo-as como código para garantir consistência.
- Modelagem de Sistemas: A modelagem pode envolver diagramas que
representam a arquitetura de infraestrutura como código.
Requisitos e Modelagem de Sistemas

5. Entrega Contínua:
- Especificação de Requisitos: Requisitos de entrega contínua, como testes
automatizados e critérios de aceitação, podem ser incorporados à
especificação.
- Modelagem de Sistemas: Modelos podem representar visualmente os
pipelines de entrega contínua e os estágios de implantação.

6. Ciclo de Vida Contínuo:


- Especificação de Requisitos: A especificação pode ser mais dinâmica,
evoluindo continuamente para acompanhar as mudanças nos requisitos.
- Modelagem de Sistemas: A modelagem é contínua e pode ser ajustada
conforme as iterações do sistema são desenvolvidas e implantadas.
Solução escalável em estruturas de projetos de
software ágil combina:
- práticas ágeis com princípios de arquitetura,
- automação e gerenciamento eficiente,
garantindo que o sistema possa crescer e se
adaptar de maneira eficaz ao longo do tempo.

É uma definição ???????


Alguns tópicos relevantes para garantir
escalabilidade em projetos ágeis:
 Arquitetura Modular:
 Razão: Uma arquitetura modular permite que diferentes partes do sistema evoluam
independentemente umas das outras.
 Abordagem Ágil: A divisão em módulos facilita a entrega incremental, permitindo o
desenvolvimento e implantação de partes específicas do sistema de forma
independente.
 Microsserviços:
 Razão: A arquitetura de microsserviços facilita a escalabilidade, pois cada
microsserviço pode ser escalado separadamente.
 Abordagem Ágil: Cada microsserviço pode ser desenvolvido por equipes ágeis
diferentes, promovendo a entrega rápida e contínua.
 Automação de Infraestrutura:
 Razão: A automação simplifica o provisionamento e a gestão da infraestrutura,
permitindo uma resposta rápida às demandas de escalabilidade.
 Abordagem Ágil: Facilita a implantação contínua e a criação de ambientes
escaláveis conforme necessário.
Testes Automatizados:
Razão: Testes automatizados garantem que as mudanças não introduzam
regressões ou problemas de desempenho.
Abordagem Ágil: Testes contínuos e automatizados integram-se bem
com a entrega contínua, permitindo iterações rápidas e frequentes.
Escalabilidade Horizontal:
Razão: A capacidade de adicionar mais instâncias do sistema para
distribuir a carga.
Abordagem Ágil: Facilita a resposta a picos de demanda e permite
ajustar a escala de acordo com as necessidades do usuário.
 Gerenciamento Eficiente de Dados:
 Razão: Estratégias como sharding, particionamento e caches ajudam a otimizar o
acesso e o armazenamento de dados.
 Abordagem Ágil: Equipes podem evoluir e ajustar a estrutura de dados conforme
necessário, sem impactar outras partes do sistema.
 Práticas DevOps:
 Razão: A colaboração estreita entre desenvolvimento e operações é essencial
para garantir uma entrega contínua e uma infraestrutura escalável.
 Abordagem Ágil: DevOps promove uma abordagem integrada, facilitando a
gestão de ambientes de produção e a implementação de práticas de
automação.
 Monitoramento e Análise de Desempenho:
 Razão: Monitorar métricas de desempenho é fundamental para identificar
gargalos e otimizar a escalabilidade.
 Abordagem Ágil: Respostas rápidas a problemas de desempenho podem ser
implementadas durante as iterações ágeis.
Estratégias de Cache:
Razão: O uso eficiente de caches pode reduzir a carga nos recursos do sistema,
melhorando o desempenho.
Abordagem Ágil: Implementação de estratégias de cache pode ser adaptada
durante o desenvolvimento ágil para atender às demandas específicas.
Planejamento Antecipado para Escalabilidade:
Razão: Identificar e considerar requisitos de escalabilidade desde o início do
projeto é fundamental.
Abordagem Ágil: A capacidade de ajustar o plano conforme o sistema evolui é
parte integrante da abordagem ágil.

Você também pode gostar