Engenharia de Software - Aula 16 - Gerenciamento de configurações (Parte 1)
Summary
TLDRProfessor Marcelo Fantinato's lecture on software engineering discusses configuration management, a critical aspect of software development. He explains that it involves combining different parts of software to create final products, managing versions, and releases. The lecture highlights the importance of tracking changes, integrating components, and ensuring that the final software configuration functions correctly. It also touches on change management processes, emphasizing the need for systematic handling of modifications to maintain control and deliver a quality product to the client.
Takeaways
- 📚 The lecture is part of a software engineering course at UNIVESP, focusing on 'Configuration Management'.
- 🔧 Configuration Management is not as intuitive as it seems and is related to the software development process rather than the end-user configuration of software.
- 🔩 It involves combining different parts of the software to create a final product, which can be done in various configurations based on different versions of components.
- 🛠️ The purpose of Configuration Management is to ensure that the integrated system works as intended and to maintain control over which version changes are incorporated into each system version.
- 🔄 Integration and configuration testing are crucial to guarantee that the system functions properly after combining different parts.
- 📈 Configuration Management includes activities such as version control, change management, and release management.
- 🔄 Version control is a key aspect of Configuration Management, where each part of the system (code, components, databases, etc.) can have different versions that are combined to form a release.
- 📝 A 'Release' is a version of the software that is delivered to the client, similar to the concept of 'version' but at the system level.
- 🔧 Change Management involves a systematic process to handle changes in the software, triggered either by the discovery of defects or by client requests for modifications.
- 🏢 The Change Control Board (CCB) plays a crucial role in evaluating, prioritizing, and approving or rejecting change requests based on cost-benefit analysis and impact on the system.
- 📋 Tools are used to support the opening of change requests and the entire lifecycle of the change, from initiation to closure.
Q & A
What is the main topic of the 16th class of the software engineering discipline taught by Professor Marcelo Fantinato?
-The main topic of the 16th class is 'Configuration Management' within the software engineering discipline of the computer engineering course at UNIVESP.
How does the speaker describe the initial perception of 'configuration management'?
-The speaker describes the initial perception of 'configuration management' as something that is not very intuitive. It is often misunderstood as simply configuring software, but in the context of software engineering, it refers to the management of different parts of the software to form the final product.
What are 'configurations' in the context of software engineering?
-In the context of software engineering, 'configurations' refer to different combinations of the various parts of the software. These configurations are used to assemble the final software product that is delivered to the client.
Why is configuration management important in software development?
-Configuration management is important in software development to ensure that the final integrated system works as intended. It helps to control which versions of components are incorporated into each version of the system and prevents the loss of control over changes.
What are the three main activities involved in configuration management?
-The three main activities involved in configuration management are version control, change management, and release management.
What is an 'item of configuration' according to the speaker?
-An 'item of configuration' is any part of the system that can have different versions and that is worked on during development. These items are combined to form a release for the client.
What is the process when a change is needed in the software?
-When a change is needed in the software, a Change Request (CR) is submitted. This request is then analyzed by the development team to determine its validity and impact. A Change Control Board (CCB) evaluates the change, considering factors like cost-benefit analysis, and makes a decision to approve or reject the change.
What role does the Change Control Board (CCB) play in configuration management?
-The Change Control Board (CCB) is responsible for reviewing and evaluating the proposed changes to decide what will be included in the system. They consider the consequences, impact, benefits, and costs of making or not making the change.
How are changes in software development managed systematically?
-Changes in software development are managed systematically through a process that includes registering change requests, analyzing their impact, evaluating them, and making decisions based on cost-benefit analysis. Tools are used to support the opening of change requests and the entire lifecycle of the change.
What is a 'release' in the context of software delivery to clients?
-A 'release' is a version of the software that is made available to clients. It is similar to the concept of a version but refers to the entire system rather than individual components.
What are the two main reasons for changes in software development?
-The two main reasons for changes in software development are the correction of defects, identified either by developers or testers, and requests from the client for the system to be different, not due to a defect but due to a change in requirements or ideas.
Outlines
📚 Introduction to Configuration Management
This paragraph introduces the topic of configuration management within software engineering. The speaker, Professor Marcelo Fantinato, begins by contextualizing the subject within the curriculum of the computer engineering course at UNIVESP. He explains that configuration management is a concept that might be familiar from previous lessons on the software engineering lifecycle. The professor emphasizes that configuration management is not as straightforward as it seems, as it involves more than just configuring software settings. Instead, it's about managing different versions and components of software during the development process to create final products for clients. The importance of this management is highlighted in scenarios where multiple developers work on different parts of a large software project, necessitating careful integration of various components to ensure the final product functions correctly.
🔄 Overview of Configuration Management Activities
In this paragraph, the speaker delves deeper into the activities involved in configuration management. He outlines three main aspects: version management, change management, and release management. The professor explains that version management is about keeping track of different versions of software components, while change management involves documenting and controlling changes to the system, whether due to defects or client requests for modifications. The speaker also introduces the concept of a 'release', which is a version of the software delivered to clients. He contrasts this with the concept of 'version', which refers to individual components within the system. The importance of a systematic approach to handling changes is emphasized, to prevent losing control over which changes are incorporated into each system version. The paragraph also touches on the terminology used in configuration management, such as 'configuration item' and 'release', and mentions the use of tools to support the change management process.
🔧 Change Management Process and Decision-Making
This paragraph focuses on the process of change management within configuration management. The speaker describes the steps involved when a change is requested, such as when a tester identifies a defect or a client requests a modification. The process begins with the submission of a change request (CR), which is then reviewed by the development team. The development team assesses the feasibility and impact of the proposed change, considering factors like the time required for implementation and potential effects on other system components. If the change is deemed valid and beneficial, it is passed on to a change control board (CCB), which makes a collective decision on whether to approve or reject the change. The paragraph highlights the importance of a structured approach to managing changes, as it helps maintain control over the software development process and ensures that changes are made in a controlled and justified manner. The CCB's role is crucial in evaluating the cost-benefit analysis of each change, considering the consequences of not implementing the change, the benefits of making the change, and the costs associated with it. The speaker also mentions the use of tools to support the entire lifecycle of a change request, from submission to decision-making and implementation.
🚀 Conclusion and Preview of Upcoming Topics
In the final paragraph, the speaker concludes the discussion on change management and provides a brief preview of upcoming topics. He summarizes the key points made about the structured process of handling changes in software development, emphasizing the importance of the change control board's decisions in maintaining the integrity and functionality of the software system. The speaker also mentions that the next lecture will cover the release of versions and the management of distribution networks. This paragraph serves to wrap up the current lesson and set the stage for further learning, encouraging students to continue exploring the complexities of software engineering and configuration management.
Mindmap
Keywords
💡Software Engineering
💡Configuration Management
💡Lifecycle
💡Components
💡Release
💡Version Control
💡Change Management
💡Integration Testing
💡Change Control Board (CCB)
💡Cost-Benefit Analysis
💡Release Management
Highlights
Introduction to the topic of configuration management in software engineering.
Configuration management is not as intuitive as it seems and is often misunderstood.
The concept of software configurations involves combining different parts of the software to create a final product.
Different configurations can be created by combining different versions of software components.
The importance of configuration management in large and complex software development projects.
Configuration management ensures that the integrated system functions as intended.
The role of integration and configuration testing in verifying the functionality of the system.
Overview of the activities involved in configuration management, including version control and change management.
Explanation of the term 'item of configuration' and its significance in software development.
The concept of 'version' in the context of software components and its role in tracking changes.
Introduction to 'release' as a term in software delivery to clients.
The process of managing changes in software, including the reasons for changes and the steps involved.
The role of the Change Control Board (CCB) in deciding which changes to implement.
The importance of cost-benefit analysis when considering whether to implement changes.
The use of tools to support the lifecycle of change requests in software development.
The impact of not addressing changes on the software development process.
The conclusion of the lecture and a preview of the next topic: version release and network management.
Transcripts
[Música]
o
[Música]
olá eu sou professor marcelo fantinato
esta disciplina de engenharia de
software do curso de engenharia da
computação da univesp
vamos agora com aula número 16 vamos
tratar de gerenciamento de configurações
serão duas aulas essa é a primeira parte
do assunto gerenciamento de
configurações a não sei se vocês já é
foram introduzidos a esse tema
gerenciamento de configurações
eu acredito que talvez vocês se lembrem
um pouco na primeira primeiro segunda
aula em que eu apresentei para vocês uma
visão geral do ciclo de vida de
engenharia de software pelo menos um dos
modelos que era o modelo do processo
unificado mencionava essa atividade de
gerenciamento de configurações
então agora nessa aula nós vamos é ter
uma visão um pouco mais informações a
respeito do gerenciamento de
configurações o nome gerenciamento de
configurações um primeiro momento que a
gente se depara com ele ele me parece
que ele não é uma coisa tão a tão
intuitiva da gente pensar o que
significa porque normalmente a gente
pensa que configuração quem quem
trabalha com software que trabalha com
tiê pensa logo em configuração com o
software pronto e esse software é
configurável nós podemos ir lá
configurar para deixar o software mais
um jeito ou mais de outro jeito para o
software fazer assim o software fazer de
um outro jeito e isso a gente pensa em
configuração do software na verdade é
que o gerenciamento de configurações é
um gerenciamento que acontece durante o
desenvolvimento do software claro nós
estamos falando do ciclo de
desenvolvimento da engenharia de
software
então o que é esse gerenciamento de
configurações o que seriam configurações
de software configurações aqui nesse
contexto são diferentes configurações do
software são diferentes formas de você
juntar partes do software para montar um
software final
então você tem diferentes partes do
software perdidas por aí como é que
vocês 1
dessas partes para montar o software
final para entregar o cliente por
exemplo é isso a gente chama de
diferentes configurações então por
exemplo você pode ter diferentes versões
de um componente é diferentes versões de
um outro componente e você pode querer
falar formar diferentes configurações
você pode querer pegar a versão mais
nova desse componente a versão mais
antiga desse componente junta e isso é
uma configuração você pega todas as
versões mais novas junta isso é uma
configuração ou vocês um pega todas as
versões mais antigas junta isso é uma
outra configuração então diferentes
configurações de um software são
diferentes combinações das diferentes
partes que você tem do software
então essa é a ideia de quando a gente
fala configurações do software
por isso a gente precisa se preocupar
com o gerenciamento dessas configurações
imaginem vocês uma equipe muito grande
uma empresa muito grande muitas pessoas
desenvolvendo um software muito grande
muito complexo e aí essas pessoas
começam a desenvolver o software você
separa cada pessoa fica responsável por
uma parte por um componente essas
pessoas começam a desenvolver diferentes
versões
e aí se você não tem um bom
gerenciamento disso você tem que gerar
uma versão para entregar para o cliente
e que partes você vai juntar uma pessoa
um grupo trabalhou e se adiantou e já tá
numa versão lá na frente um outro grupo
está mais atrás será que você consegue
pegar a má a versão mais atualizada de
cada grupo elas vão necessariamente se
conversar ou você tem que pegar outras
determinadas versões para poder
conversar é de repente você pega junta
determinadas versões de diferentes
componentes e o sistema não funciona
então você tem que ter um bom
gerenciamento da de configurações
justamente para que você garanta que o
seu sistema quando totalmente integrado
aquela configuração que você escolheu
das diferentes partes realmente funcione
por isso inclusive que existe testes de
integração e testes de configuração para
você garantir que o seu sistema ele
realmente funciona ou seja você não quer
perder o controle de quais mudanças de
versões de componentes foram
incorporadas em cada versão do sistema
aqui tem uma uma figura que tenta então
é generalizar quais são as atividades do
gerenciamento de configurações a gente
chama gerenciamento de configuração de
uma forma geral mas eu já falei muito
diversões porquê porque existe um
gerenciamento de versões dentro do
gerenciamento de configurações
eu já falei que a gente não quer perder
o controle de mudanças porque existe o
gerenciamento de mudanças dentro do
gerenciamento de configurações e hoje eu
falei muito também em juntar tudo porque
a gente tem que ir junto fazer um
software montar um software integrar um
software para entregar o cliente essa e
software que a gente quer entregar para
o cliente é o que ele chama de uma
release uma liberação em português mas a
gente costuma usar muito o nome em
inglês que lhes é cada um é livre para a
liberação que a gente faz a entrega para
o cliente tem que ser gerenciada por
isso que a terceira atividade aqui do
gerenciamento de configuração é o
gerenciamento de felizes então o
gerenciamento de configurações
ele é dividido no gerenciamento de
mudança gerenciamento diversões e
gerenciamento de brindisi a aqui nós
temos uma série de nomenclaturas
terminologia do gerenciamento de
mudanças de gerenciamento de
configurações de uma forma geral a o
item de configuração
o que é o item de configuração é o que
eu tenho chamado de cada parte né eu não
tinha para usado ainda hoje o termo
itens de configuração porque ainda não
tinha apresentado ele formalmente aqui
mas cada parte do sistema que pode ter
diferentes versões e que depois
eu vou juntar tudo isso para formar uma
release para mandar para o cliente
cada uma dessas partes seja um código um
componente uma classe ou mesmo um banco
de dados uma tabela do banco de dados ou
até mesmo um componente de hardware ou
seja qualquer parte do do meu sistema
como um todo que eu vou poder ver se o
nar e trabalhar no desenvolvimento eu
chamo isso de um item de configuração e
aqui eu vou ter alguns outros itens que
eles ainda vão aparecer
é nos próximos slides então não vou
apresentar a tecnologia agora porque com
o exemplo vai ficar mais claro mas assim
versão é uma coisa aqui pra vocês já é
claro na versão 1 234 1.1.2 1.3 tudo a
gente pode ver se tornar cada vez que a
gente faz uma alteração beise lime é um
conceito que a gente vai ver daqui a
pouco talvez vocês já conheçam esse
conceito ou vocês se vocês não conhecem
muito provável que vocês já ouviram
falar em beijos laine em algum momento
com laine man laine vocês talvez não
tenha ouvido falar mas é um conceito uma
tecnologia bastante usado em
gerenciamento de configuração release
então eu já adiantei pra vocês né o que
é uma release é uma versão do software
que você faz você libera para os
clientes
então é similar ao conceito de versão né
mas a versão a gente costuma dizer em
cima de um item de configuração cada
pedacinho do sistema tem a sua versão
agora quando a gente pensa no sistema
como um todo
a versão do sistema a gente costuma
chamar de um livre e não diversão mas a
ideia é basicamente a mesma espaço de
trabalho um grante omerj mim é isso a
gente ainda vai ver daqui a pouco mas
são termos que sempre aparecem quando
nós estamos falando do gerenciamento de
configuração
começando com gerenciamento de mudanças
o que é o gerenciamento de mudanças
gerenciamento de mudança é aquela ideia
né
o software está em desenvolvimento e por
algum motivo algo precisa ser mudado em
geral por dois principais motivos um
deles é alguém pegou um erro né
alguém um testador por exemplo o
testador e ele está testando e ele fez o
trabalho dele direito ele conseguiu
identificar que existe um erro no
sistema não foi feito da forma correta
então esse erro precisa ser corrigido
na verdade sendo mais por isso eu vou
ainda falar sobre isso mais pra frente
mas na verdade ele detectou uma falha no
sistema causado por um defeito então
esse defeito precisa ser corrigido
pra isso ele relata é o a ocorrência da
falha é e pra isso então a gente disse
que ele ele solicita uma correção
uma é do defeito há um outro motivo que
precisa de uma mudança é o cliente
decidiu que ele quer que o sistema seja
diferente não é um defeito não está
falhando ele só quer que seja diferente
ele pode ter mudado de idéia não era eu
sei que eu tinha pedido desse jeito mas
mudei de ideia ou assim que vocês
entenderam na verdade o que eu quis
dizer foi outra coisa desculpa me
expressei bem eu acho que me expressei
mal enfim não está errado
só que não era exatamente isso que eu
queria ou não tá errado mas eu mudei de
ideia enfim outro tipo de mudança mas
não importa sempre que alguma coisa
precisa mudar
se você está pensando num processo
muita gente envolvida e você não pode
simplesmente chegar lá e falar mano isso
aí pra mim porque você vai perder o
controle é nós estamos pensando num
processo sistemático de mudanças
esse processo sistemático requer que
você registre isso de uma forma de
alguma forma ou seja alguém no caso aqui
o pente mas o cliente do processo esse
cliente pode ser o testador por exemplo
ele submete o que nós estamos falando
aqui de uma cr uma fé é uma ting request
é uma solicitação de mudança
néné nós costumamos usar o termo a sigla
em inglês fr por conta é só porque é o a
sigla usada é em geral
mundialmente então alguém submete essas
e r que vai para o banco de dados de
solicitações de mudança alguém do lado
da equipe de desenvolvimento verifica
aquela cr e pode chegar à conclusão de
que aquela serra não faz sentido nenhuma
o cliente se confundiu na verdade já é
do jeito que ele quer
ou na verdade o que ele pediu ele não
faz sentido porque ele está pedindo uma
coisa conversamos só de conversar com
ele ele já percebeu que ele sonhou com
uma coisa que não faz o menor sentido
não sei enfim é não faz sentido ou o
testador disse que tem um defeito mas
com uma falha mas na verdade o testador
se equivocou
enfim a cr pode ser declarada inválida e
jóia fechada desde o início ou não
realmente o problema existe realmente o
cliente está pedindo uma coisa que é
válido
ok é válido passou pela primeira pelo
primeiro filtro aí vai para a equipe de
desenvolvimento propriamente dito a
equipe desenvolvimento fala
bom se for pra gente fazer essa
alteração vamos analisar né
quanto tempo vai demorar o que mais eu
vou ter que alterar por conta disso será
que vai impactar outras coisas então é
feita uma análise fazendo uma análise
eles passam por um grupo que vai pegar
todas as solicitações que foram
solicitadas para poder avaliar avaliou
que a equipe de desenvolvimento disse
olha eu pra fazer essa alteração eu
preciso de shiva horas estes dias para
alterar isso eu vou ter que alterar
outras partes do sistema enfim avalia
todas as alterações situações que foram
solicitadas e seleciona aquelas que
realmente eles vão
provar para que seja mudada algumas não
vão ser ao som é aprovado e vão ser
encerradas
mesmo que o cliente pediu ou que o
testador encontrou um problema mesmo
centeno sentido fazendo sentido alguém
vai chegar vai dizer não não vai ser
feito ao aquelas que passarem pelo pelo
comitê aqui e dizer foi dito ok vocês
podem alterar
aí sim vem aqui pra equipe de
desenvolvimento de volta que modifica
fazendo a modificação testa
se falhou volta fica fazendo o teste até
que passa uma vez que passou encerra a
cr agora porque algumas não são
aprovadas como assim
o cliente pediu e você a empresa não vai
fazer
como assim o testador pegou uma falha e
não vai ser corrigido
bom você pode ter é diferentes motivos
pra que você não vai autorizar né quem
eu quem não vai autorizar o que nós
chamamos de perceber que é o que é o ccb
é o comitê de controle de alterações em
inglês cheidde contra o borges é o grupo
de desenvolvimento de produto é aquele
grupo que é responsável por definir o
que entra o que não entra no sistema é
esse grupo ele tem que levar em
consideração por exemplo quais as
consequências de não fazer aquela
mudança
qual vai ser o impacto se aquela mudança
não foi feita
quais os benefícios da mudança é quais
os custos da mudança ou seja uma questão
custo-benefício porque o desenvolvimento
de software desenvolvimento de sistema
não é uma coisa calma tranquila que a
fim não fazer o que o cliente que é
assim vamos corrigir aquele defeito
a coisa é muito rápida muito dinâmica
muito estressante muito gostosa então
você pegou um defeito o testador pegou
uma falha ok mas às vezes o impacto dela
é muito pequeno ea o curso disse
resolver é muito grande então não vale a
pena por outro lado às vezes o custo de
resolver é muito pequeno impacto é muito
grande e é claro que vai ser resolvido
então o comitê vai fazer análise de
custo benefício ea mesma coisa do lado
do cliente
às vezes o cliente pediu a seria legal
ou não eu preciso disso com certeza
então diferentes análises vão ser feitas
para que se tome uma decisão é e aqui só
pra fechar um exemplo de um formulário
em geral e ser feito através de
ferramentas ferramentas que dão suporte
à abertura de solicitações de mudança ea
todo o ciclo de vida dessa mudança então
você uma determinada pessoa abre uma
solicitação num determinado dia ele
disse qual é o problema é uma pessoa
fica responsável por fazer a análise do
problema ele diz que aquele problema
está associado a uma a aquela mudança
vai impactar um outro componente ele faz
uma avaliação e disse é simples você é
complexo é ele diz qual é a prioridade
no caso aqui nesse exemplo ilustrativo a
prioridade é média quanto esforço ele
acha que vai precisar em duas horas ele
acha que aquela alteração é feita e aí o
tal do ccb toma uma decisão com base em
tudo isso ele tomou uma decisão numa
data tal e qual foi a decisão aceitou a
alteração ok bom dado que em duas horas
você faz
dado que a prioridade é média dado que é
simples
ok a gente autoriza pode fazer e é pra
entrar na rua e nise 1.2 e aí aqui daqui
para baixo ainda não está preenchido por
que só está autorizado agora alguém
ainda vai fazer a alteração vai testar
vai à provável é fechar por enquanto
está parado aqui enfim geralmente uma
ferramenta é dar suporte a isso
isso então foi o gerenciamento de
mudanças dentro do gerenciamento de
configuração
na próxima aula a gente ainda vai tratar
o ser
lançamento de versões e o gerenciamento
de redes
obrigado
[Música]
o
[Música]
[Música]
[Música]
ano
[Música]
Browse More Related Video
5.0 / 5 (0 votes)