Ebook U1

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 25

Engenharia de Softwate

para Inteligência Artificial


INTRODUÇÃO ÀS METODOLOGIAS DE
DESENVOLVIMENTO DE SOFTWARE PARA IA
Sumário

1
UNIDADE

INTRODUÇÃO
4

1 INTELIGÊNCIA ARTIFICIAL
5
1.1 MODELOS DE PROCESSOS DE SOFTWARE PARA IA
5
1.2 METODOLOGIAS DE DESENVOLVIMENTO DE SOFTWARE
12

2
INTRODUÇÃO ÀS
METODOLOGIAS DE
DESENVOLVIMENTO DE
SOFTWARE PARA IA
INTRODUÇÃO
Bem-vindos à primeira unidade da disciplina de Engenharia de Software para Inteli-
gência Artificial. Nesta unidade, introduziremos os conceitos e desafios da disciplina, a
fim de fornecer uma base sólida para o estudo das metodologias e técnicas utilizadas
no desenvolvimento de sistemas de inteligência artificial (IA). A IA está revolucionando
a forma como interagimos com o mundo, permitindo que máquinas aprendam com
dados e realizem tarefas que anteriormente eram exclusivas dos seres humanos.

Nas próximas unidades, abordaremos tópicos relacionados à aprendizagem de má-


quina, processamento de linguagem natural, visão computacional e robótica, e aos
obstáculos enfrentados no trabalho com a inteligência artificial. Além disso, enfatiza-
remos a importância da engenharia de software na criação de sistemas de IA e dis-
cutiremos algumas das metodologias que podem ser empregadas nesse processo.

As técnicas utilizadas no desenvolvimento de softwares de inteligência artificial podem


ser empregadas na concepção de sistemas inteligentes capazes de tomar decisões e de-
sempenhar tarefas complexas em diversas áreas. Desse modo, essas técnicas podem ser:

SAÚDE

Aplicadas na análise de exames e diagnósticos médicos, no monitoramen-


to de pacientes e na identificação de doenças raras.

INDÚSTRIA

Utilizadas para otimizar processos de produção e identificar possíveis fa-


lhas em equipamentos.

SETOR FINANCEIRO

Aplicadas em análises de risco de crédito, detecção de fraudes e investi-


mentos automatizados.

TRANSPORTE

Utilizadas para criar veículos autônomos, que possam se deslocar sem a


necessidade de motoristas humanos.

EDUCAÇÃO

Utilizadas para personalizar o ensino, adaptando a aprendizagem às ne-


cessidades individuais dos alunos.

4
Em síntese, as técnicas de IA podem ser aplicadas em diversas áreas, contribuin-
do para a criação de sistemas inteligentes que possam melhorar a eficiência, a
segurança e a qualidade de vida das pessoas. Ao final desta unidade, você estará
familiarizado com os conceitos e desafios da Engenharia de Software para Inteli-
gência Artificial e, assim, poderá compreender e aplicar as metodologias e técni-
cas apresentadas ao longo da disciplina de modo eficiente.

1 INTELIGÊNCIA ARTIFICIAL
A inteligência artificial é uma área da Ciência da Computação que busca desen-
volver algoritmos e sistemas capazes de executar tarefas que exigem inteligência
humana, como aprendizado, raciocínio, reconhecimento de padrões, resolução
de problemas, tomada de decisão e compreensão da linguagem natural. Essa
área de estudo busca desenvolver sistemas computacionais que possam realizar
essas tarefas de forma autônoma, sem a necessidade de intervenção humana
direta. Com aplicações para diferentes áreas de atuação, a IA é composta por di-
versas técnicas e subcampos, incluindo aprendizado de máquina, redes neurais,
processamento de linguagem natural, visão computacional, robótica e sistemas
especialistas, entre outros.

1.1 MODELOS DE PROCESSOS DE SOFTWARE PARA IA

Os modelos de processo de software consistem em estruturas abstratas que des-


crevem uma série de atividades e tarefas a serem cumpridas com o objetivo de
criar e manter softwares de qualidade superior. Esses modelos fornecem uma
abordagem organizada e metódica para planejar, executar e controlar as ativida-
des relacionadas ao desenvolvimento de software.

Existem vários modelos de processo de software que podem ser utilizados no


desenvolvimento de sistemas de IA. Esses modelos podem ser adaptados para
levar em conta as especificidades da IA, como o treinamento de modelos, a va-
lidação e a avaliação de desempenho. Nas próximas subseções, veremos alguns
dos modelos de software mais conhecidos e entenderemos como eles podem
ser aplicados em sistemas de inteligência artificial.

1.1.1 Modelo em cascata

O modelo em cascata, também conhecido como ciclo de vida clássico, é o mode-


lo de processo de software mais antigo na Engenharia de Software. Nesse mode-
lo, utiliza-se uma abordagem ordenada para a criação de um sistema, de forma
que o desenvolvimento de software ocorra de maneira sequencial. Nesse sentido,

5
uma nova fase no desenvolvimento do sistema deve ser iniciada somente quan-
do a fase que o antecede imediatamente está finalizada. O modelo em cascata é
apropriado para sistemas grandes, cujos requisitos estejam bem definidos. Con-
forme descrito por Sommerville (2011), ele é composto pelas cinco fases a seguir.

i) Definição de requisitos;
ii) Projeto de sistema e software;
iii) Implementação e teste de unidade;
iv) Integração e teste de sistema;
v) Operação e manutenção.

Na Figura 1, podem ser observadas as etapas necessárias ao desenvolvimento de


um sistema utilizando o modelo em cascata.

Figura 1 – Passos no modelo em cascata

Fonte: Sommerville (2011, p. 20).


#ParaTodosVerem: esquema de passo-a-passo do modelo cascata: i) definição de requisitos;
projeto de sistema de software; implementação e teste de unidade; integração e teste de
sistema; operação e manutenção.

Sommerville (2011) descreve cinco estágios do modelo em cascata, que estão


descritos a seguir.

1. Na fase de Análise e definição de requisitos, os serviços que deverão ser forne-


cidos pelo sistema devem ser estabelecidos. Essa definição de funcionalidades
prestadas ocorre pelo uso de técnicas de levantamento de requisitos. Exemplos
de técnicas incluem entrevista, questionário e brainstorming. Essas técnicas se-
rão apresentadas em detalhes na próxima etapa desta disciplina. Nessa fase,
ocorre uma especificação das funcionalidades esperadas para o sistema;
2. Na fase de Projeto de sistema e software, define-se uma arquitetura geral
para o sistema criado. O projeto de software envolve a identificação e a descri-
ção das abstrações fundamentais para a criação do sistema de software e de
seus relacionamentos;
3. No estágio de Implementação e teste unitário, são executadas as funciona-
lidades do sistema. Nos testes unitários, unidades de código devem ser testa-
das verificando-se se elas atendem às especificações do sistema;
6
4. Na fase de Integração e teste de sistema, unidades de códigos implementa-
das na fase 3 são integradas e realizados testes após a integração. Esses testes
devem ser realizados para verificar se o software gerado atende às especifica-
ções dos usuários. Após essa etapa, o sistema é entregue ao cliente;
5. No estágio de Operação e manutenção, o sistema é instalado e colocado em
uso. Nessa etapa, podem surgir erros que não foram detectados durante os
testes realizados previamente, em estágios iniciais do ciclo de vida. Além das
melhorias do sistema, pode ocorrer uma ampliação dos serviços que ele for-
nece. Em geral, essa é a fase que demanda mais tempo e recursos financeiros
(SOMMERVILLE, 2011).

No desenvolvimento de muitos sistemas, há dificuldade para que o cliente esta-


beleça, a priori, todas as necessidades. Além disso, os requisitos podem estar in-
completos ou inconsistentes. Por esse motivo, o modelo em cascata não é o mais
indicado para o desenvolvimento de todo tipo de sistema.

O modelo em cascata não é um dos mais indicados para o desenvolvimento de sis-


temas de IA, mas pode ser adaptado em etapas iterativas e incrementais, como pro-
totipagem, treinamento, validação e teste. Cada etapa pode ser subdividida e novas
funcionalidades ou melhorias adicionadas a cada ciclo. É importante considerar a adap-
tação do modelo e a flexibilidade do processo para ajustar novos dados ou situações.

SAIBA MAIS
Ian Sommerville é um professor aposentado de engenharia de software na Universidade
de St. Andrews, na Escócia, que fez grandes contribuições para o campo da engenharia
de software, tanto em ambientes acadêmicos quanto empresariais. Ele realizou pesqui-
sas inovadoras, lecionou disciplinas importantes e ofereceu serviços de consultoria de
alto nível na área.

1.1.2 Modelo incremental

O modelo de desenvolvimento incremental envolve a criação inicial do sistema,


seguida da revisão do usuário para identificar melhorias necessárias. Com base
nessas sugestões, são realizadas correções e adicionadas novas funcionalidades
e, nesse contexto, a especificação, o desenvolvimento e a validação são realizados
ao mesmo tempo para que o processo de feedback ocorra rapidamente. O pro-
cesso de desenvolvimento incremental pode ser observado na Figura 2.

7
Figura 2 – Passos do modelo de desenvolvimento incremental

Fonte: Sommerville (2011, p. 22).


#ParaTodosVerem: esquema de passo-a-passo do modelo de desenvolvimento incremental:
i) descrição do esboço; especificação; desenvolvimento; validação; versão inicial; versões
intermediárias; versão final.

Note que, na Figura 2, a especificação do sistema pode ser realizada de maneira


gradativa, isto é, de acordo com a necessidade, novas funcionalidades podem
ser inseridas. Segundo Sommerville (2011), atualmente, o desenvolvimento incre-
mental é a abordagem mais utilizada no desenvolvimento de sistemas aplicati-
vos, pois apresenta três vantagens de maior relevância quando comparado ao
modelo em cascata:

PRIMEIRA VANTAGEM

O modelo incremental permite mudanças no sistema com maior fa-


cilidade, já que permite uma análise mais rápida da documentação e,
portanto, é considerado um modelo mais ágil em comparação com o
modelo em cascata.

SEGUNDA VANTAGEM

Os retornos dos clientes sobre o sistema gerado podem ser dados mais
rapidamente, em comparação com o modelo em cascata, porque eles
podem comentar as demonstrações de software e ter acesso ao que
foi implementado.

TERCEIRA VANTAGEM

O cliente recebe o sistema mais rapidamente, mesmo que nem todas as


funcionalidades estejam incluídas.

8
No entanto, a utilização do modelo incremental pode apresentar alguns pro-
blemas, como a falta de uma visão global do processo de desenvolvimento. Isso
ocorre porque, como há uma frequente variação nos requisitos do sistema, tor-
na-se inviável documentar cada uma de suas versões. Ao contrário do modelo
em cascata, no qual a coleta de requisitos é realizada no início do processo de
desenvolvimento do sistema.

Além disso, devido às alterações frequentes durante a fase de coleta de requisitos,


é comum que os sistemas desenvolvidos pelo modelo incremental tenham uma
estrutura inadequada, o que aumenta o risco de falhas. Desse modo, com o pas-
sar do tempo, a adição de novas funcionalidades ao sistema pode se tornar mais
difícil e cara devido à falta de documentação adequada.

Quadro 1 – Comparação entre modelos

Comparativo entre os modelos de desenvolvimento de software

Modelo Orientado ao
Modelo Cascata Modelo Incremental
Reúso
A documentação é bastan- A documentação tam-
A documentação deta-
te valorizada, pois é utiliza- bém é importante, mas
lhada é importante para
da para avaliar a qualidade é mais flexível e pode
identificar componentes
do software produzido e ser atualizada com mais
que possam ser reutili-
como referência para ma- facilidade ao longo do
zados e como utilizá-los.
nutenção futura desenvolvimento.
O planejamento do está-
O planejamento do estágio O planejamento do está-
gio inicial é importante,
inicial é muito importante, gio inicial também é im-
mas o processo permite
pois a mudança de requisi- portante, mas o foco está
ajustes e mudanças de
tos em etapas posteriores na identificação de com-
requisitos ao longo do
pode ser difícil e custosa. ponentes reutilizáveis.
desenvolvimento.
Há um risco elevado no mo-
delo, que segue uma abor- A existência de risco do
Modelo de baixo risco, já
dagem sequencial e linear, modelo é média, pois as
que a utilização de com-
com cada etapa dependen- funcionalidades são de-
ponentes previamente
do da conclusão da anterior, senvolvidas e testadas
desenvolvidos e testa-
o que pode levar a dificulda- incrementalmente, permi-
dos reduz a probabilida-
des de detecção e correção tindo uma detecção mais
de de erros e problemas.
de problemas em estágios precoce de problemas.
avançados do processo.

9
Comparativo entre os modelos de desenvolvimento de software

Modelo Orientado ao
Modelo Cascata Modelo Incremental
Reúso
O tempo de espera para
O tempo de espera para
execução do software
O tempo de espera para execução do software
pode ser menor em rela-
execução do software é é menor, já que o sof-
ção aos modelos anterio-
longo, já que a implemen- tware é entregue em
res, já que componentes
tação do software só ocor- incrementos e pode ser
reutilizáveis podem ser
re no final do processo. utilizado desde o início
utilizados desde o início
do desenvolvimento.
do desenvolvimento.
Não é muito adequado
É adequado para pro-
para projetos maiores. É
É adequado para projetos jetos maiores, com o
mais utilizado para pro-
maiores, ao permitir uma desenvolvimento de
jetos pequenos e bem
abordagem mais flexível múltiplos sistemas ou
definidos, pois exige um
e adaptável às mudanças produtos, pois permite
planejamento detalhado e
de requisitos e incremen- a reutilização de com-
prévio que pode se tornar
tos sucessivos. ponentes e módulos já
muito complexo em proje-
desenvolvidos.
tos maiores.
É um modelo pouco flexí-
É um modelo mais flexí- É um modelo bastante
vel, uma vez que as fases
vel, ao permitir a inclu- flexível, pois permite a
devem ser cumpridas se-
são de novos requisitos reutilização e adaptação
quencialmente e qualquer
ou alterações em etapas de componentes e mó-
mudança em uma fase
já desenvolvidas. dulos já desenvolvidos
afeta as fases seguintes.
Pode ter um custo mais Pode ter um custo me-
Pode ter um custo mais elevado caso haja mui- nor, pois permite a reuti-
elevado em caso de mu- tos incrementos e mu- lização de componentes
danças nos requisitos, pois danças frequentes, pois e módulos já desen-
pode ser necessário refa- cada incremento pode volvidos, reduzindo a
zer as etapas anteriores. exigir uma nova análise necessidade de desen-
e planejamento. volvimento do zero.
Fase de testes realizada
Fase de testes realizada no Fase de testes realizada
em cada componente
final do desenvolvimento. em cada incremento
reutilizado.
Não há possibilidade de Possibilidade de retornar Possibilidade de retor-
retornar a fases anteriores. a fases anteriores. nar a fases anteriores.

Não há tanta necessida- Não há tanta necessida-


Necessária uma grande
de de uma grande equipe de de uma grande equipe
equipe de desenvolvimento.
para o desenvolvimento. para o desenvolvimento.

Fonte: a autora (2023).


#ParaTodosVerem: comparação entre modelos: cascata, incremental e modelo orientado ao reúso.

O modelo incremental é mais adequado para projetos de inteligência artificial,


cujos sistemas muitas vezes precisam ser aprimorados, à medida que novos dados
10
são coletados ou novos requisitos são identificados. Para aplicar o modelo incre-
mental a um sistema de IA, a equipe de desenvolvimento deve identificar as prin-
cipais funcionalidades do sistema e priorizá-las com base nos requisitos do cliente.
Em seguida, o desenvolvimento é dividido em etapas, de modo que cada etapa
gera um incremento de novas funcionalidades ao sistema. Por exemplo, o primeiro
incremento pode envolver a criação de um modelo simples que execute tarefas
básicas, enquanto o segundo incremento pode envolver a adição de recursos de
aprendizado de máquina mais avançados para melhorar a precisão do modelo.

No entanto, é importante lembrar que a aplicação do modelo incremental a sis-


temas de IA pode exigir mais trabalho de integração do que outros modelos, já
que os diferentes incrementos precisam ser integrados de forma eficiente para
garantir que o sistema funcione de forma coesa e precisa. Além disso, a equipe de
desenvolvimento deve estar ciente dos impactos que as mudanças em um incre-
mento podem ter nos incrementos subsequentes, e planejá-las cuidadosamente
para minimizar esses riscos.

1.1.3 Modelo orientado ao reúso

Durante o desenvolvimento de um software, o sistema e suas partes podem ser


reutilizados para se desenvolver outros sistemas. Em alguns casos, as modifica-
ções são pontuais para atender diferentes necessidades dos clientes.

No desenvolvimento voltado ao reúso, utiliza-se uma ampla base de componen-


tes de software reutilizáveis. Dessa maneira, reutilizar trechos de código, em ge-
ral, possibilita a criação mais eficiente de sistemas. Depois de selecionados, esses
trechos de códigos reutilizáveis podem ser integrados entre si. Note que o reúso
de código de maneira informal ocorre independentemente do modelo de projeto
utilizado. Por exemplo, funções como as de cadastro e atualização de clientes e
de funcionários, e de controle de estoque são funções comuns a diversos siste-
mas. Na Figura 3, podemos observar o esquema geral empregado no desenvolvi-
mento voltado ao reúso, composto por seis etapas.

Figura 3 – Passos no modelo de


desenvolvimento voltado ao reúso
Fonte: Sommerville (2011, p. 23).
#ParaTodosVerem: passo-a-passo
do modelo de desenvolvimento
voltado ao reúso: i) especificação
de requisitos; ii) análise de
componentes; iii) modificação de
requisitos; iv) projeto de sistema
com reúso; v) desenvolvimento e 11
11
integração; vi) validação de sistema.
Os estágios do desenvolvimento vol- Nesse sentido, o modelo orientado ao
tado ao reúso serão explicados a se- reúso também pode ser aplicado a
guir (SOMMERVILLE, 2011). sistemas de inteligência artificial. Nes-
se caso, a equipe de desenvolvimento
deve identificar os componentes que
1. Inicialmente, ocorre a especifica-
podem ser reutilizados em diferentes
ção de requisitos do sistema, fase
partes do sistema. Por exemplo, um
comum aos métodos descritos
modelo de processamento de lingua-
previamente;
gem natural (PNL) pode ser criado e
2. Na fase análise de componentes,
usado em diferentes partes do sistema
é realizada uma busca de compo-
que envolvem a análise de texto, como
nentes que podem ser utilizados
a classificação de sentimentos ou a ex-
no sistema especificado. Mesmo
tração de informações de documentos.
que os componentes não forne-
çam uma correspondência exata,
Para implementar o modelo orientado
algumas de suas funcionalidades
ao reúso em sistemas de IA, é importante
podem ser reutilizadas;
que a equipe de desenvolvimento
3. Na fase de modificação de requisi-
esteja ciente dos requisitos e limitações
tos, os requisitos do novo sistema
dos diferentes componentes. O
são alterados de forma a refletir os
reúso de um componente pode
conteúdos disponíveis nos compo-
economizar tempo e esforço, mas
nentes já implementados;
também pode limitar a flexibilidade
4. Na fase projeto de sistema com
e a capacidade de personalização do
reúso, o sistema é projetado com
sistema. Além disso, a equipe deve
base nos componentes a ser reuti-
criar uma documentação detalhada
lizados. Note que pode ser neces-
dos componentes reutilizáveis, a fim de
sária a implementação de novas
ajudar seus membros a entender como
partes de código;
eles funcionam e como podem ser
5. Na fase desenvolvimento e inte-
adaptados a diferentes casos de uso.
gração, componentes seleciona-
dos na etapa 2 são integrados a
novos softwares que não haviam 1.2 METODOLOGIAS DE
sido implementados previamente, DESENVOLVIMENTO DE
gerando um novo sistema; SOFTWARE
6. Na fase validação de sistema, verifi-
cam-se e corrigem-se eventuais erros.
As práticas de desenvolvimento de sof-
tware para IA visam estabelecer uma
O desenvolvimento voltado ao reúso estrutura otimizada para a criação de
para a criação de sistemas propicia sistemas, utilizando uma série de pro-
uma redução na quantidade de códi- cedimentos para tornar o processo
go a ser desenvolvido. Porém, em ge- mais eficiente, uniforme e colaborati-
ral, adequações são inevitáveis, uma vo. Essas práticas têm o propósito de
vez que o sistema desenvolvido deve permitir que as equipes trabalhem de
refletir as necessidades do cliente forma organizada e produtiva, além
(SOMMERVILLE, 2011). de garantir a qualidade, o controle de

12
custos e o cumprimento dos prazos dos projetos. A seleção da metodologia a
ser utilizada depende do tipo de projeto de IA em questão e das preferências da
equipe. Nas próximas seções, serão descritas algumas dessas metodologias.

1.2.1 Metodologia de desenvolvimento ágil

O desenvolvimento ágil é uma metodologia de desenvolvimento de software


que se baseia nos valores e princípios do “Manifesto Ágil”, criado em 2001 por um
grupo de especialistas em software.

SAIBA MAIS
O Manifesto Ágil é um conjunto de valores e princípios que guiam o desenvolvimento ágil
de software, criado por um grupo de 17 desenvolvedores de software em Utah, nos Estados
Unidos, em 2001. Diferentemente de seguir um plano predefinido, o manifesto ágil prioriza
a interação entre indivíduos e a capacidade de responder rapidamente às mudanças.

A metodologia ágil é uma abordagem iterativa e incremental para o desenvolvi-


mento de software que prioriza a colaboração entre as equipes, a entrega contí-
nua de software funcional, a comunicação efetiva e a capacidade de responder
rapidamente às mudanças. Segundo Pressman (2011), a metodologia ágil é carac-
terizada por um conjunto de práticas que estão descritas a seguir.

DESENVOLVIMENTO ITERATIVO E INCREMENTAL

O desenvolvimento é dividido em iterações curtas e frequentes, em que o


software é desenvolvido, testado e entregue em incrementos.

EQUIPES AUTO-ORGANIZADAS

As equipes se coordenam e são multifuncionais, compostas por desenvol-


vedores, testadores e outros membros necessários ao projeto.

COLABORAÇÃO COM O CLIENTE

O cliente é envolvido no processo e fornece feedback contínuo sobre o


software em desenvolvimento.

FOCO NO VALOR DO NEGÓCIO

Os requisitos do software são priorizados com base no valor que eles agre-
gam ao negócio.

13
FLEXIBILIDADE

A metodologia ágil é flexível e capaz de se adaptar às mudanças nos requi-


sitos do software e às necessidades do cliente.

Embora o desenvolvimento ágil não seja um modelo de processo de software


como o modelo em cascata ou o modelo incremental, ele ainda é uma estrutu-
ra conceitual que descreve um conjunto de práticas e abordagens que as equi-
pes de desenvolvimento de software podem seguir para alcançar os objetivos de
entrega rápida, alta qualidade e satisfação do cliente. Portanto, podemos consi-
derá-lo como uma metodologia de desenvolvimento de software voltada para a
entrega de resultados de alto nível em um ambiente de mudança constante. A
seguir, apresentaremos alguns dos frameworks ágeis mais populares e ampla-
mente utilizados na indústria de desenvolvimento de software.

O Scrum é um framework ágil que visa gerenciar projetos, com foco em fornecer
valor ao cliente de maneira gradual e progressiva. Fundamentado em princípios
como transparência, inspeção e adaptação, o Scrum é aplicável em diversos tipos
de projetos, como desenvolvimento de software, engenharia, marketing e gestão
de projetos em geral. Segundo Pressman (2011), esse framework inclui o trabalho
de três atores principais: o Product Owner, o Scrum Master e a equipe de desen-
volvimento.

O Product Owner é responsável por definir e priorizar o backlog do produto, isto


é, uma lista de funcionalidades que o produto deve ter. O Scrum Master é respon-
sável por garantir que o Scrum seja seguido corretamente e que a equipe traba-
lhe de forma eficiente. A equipe de desenvolvimento, por sua vez, é responsável
por dar andamento à evolução das funcionalidades do produto.

O Scrum é organizado em sprints, que são iterações de curta duração, geralmen-


te de uma a quatro semanas. Cada sprint começa com uma reunião de plane-
jamento, em que o Product Owner apresenta o backlog do produto e a equipe
seleciona as funcionalidades a serem desenvolvidas nesse período. Durante o
sprint, a equipe realiza reuniões diárias de 15 minutos, chamadas de daily scrum,
para compartilhar o progresso e identificar obstáculos.

Ao final de cada sprint, a equipe realiza uma revisão, quando são demonstradas
as funcionalidades desenvolvidas e obtêm-se feedback do Product Owner e de
outros interessados. Em seguida, a equipe realiza uma retrospectiva do sprint,
para identificar o que funcionou bem, o que não funcionou e o que pode ser me-
lhorado no próximo sprint.

14
O Scrum é um framework altamente adaptável a diferentes contextos e projetos,
pois oferece muitos benefícios, incluindo a entrega de valor de forma iterativa
e incremental, a transparência no processo de desenvolvimento, a flexibilidade
para se adaptar a mudanças e a melhoria contínua do processo. No entanto, o
Scrum requer disciplina e compromisso da equipe para ser efetivamente imple-
mentado.

Figura 4 – Fluxo da metodologia Scrum

Fonte: Pressman (2011, p. 96).


#ParaTodosVerem: quatro blocos à esquerda. Ao lado dos blocos, uma seta indica partes
menores ligadas a um fluxo de setas formando dois círculos conectados. À direita, há um grupo
com quatro pessoas sentadas a uma mesa de reunião. Abaixo, há uma segunda seta, ao final do
fluxo, indica um bloco.

No contexto do desenvolvimento de sistemas para IA, o Scrum pode ser utiliza-


do para gerenciar a implementação de algoritmos de aprendizado de máquina,
bem como para assegurar a qualidade dos resultados produzidos pelo sistema.
Em resumo, ele pode ser usado para garantir a entrega contínua de valor ao clien-
te, por meio de uma gestão ágil, da colaboração entre membros da equipe e do
gerenciamento efetivo dos obstáculos e riscos do projeto.

SAIBA MAIS
Roger S. Pressman é um renomado engenheiro de software e autor de vários livros
de referência na área. Sua contribuição para a área inclui a criação do Processo de
Engenharia de Software, um modelo de processo de software que foca na quali-
dade do produto final, além da implementação de técnicas de gerenciamento de
projetos de software.

15
O Kanban é um framework ágil utiliza- Fonte: Freepik (2023).
do na indústria de desenvolvimento de #ParaTodosVerem: quadro de avisos dividido
em três colunas. Há post-its distribuídos nas
software que busca promover o fluxo colunas e mãos manipulando os post-its e
contínuo de trabalho, com destaque fazendo anotações.
para a visibilidade, transparência e limi-
tação do trabalho. Sua origem remonta Limitar o trabalho em andamento sig-
à técnica de gerenciamento de produ- nifica definir limites para o número de
ção da Toyota, desenvolvida na década trabalhos que podem ser feitos em
de 1940, e posteriormente adotada por cada etapa. Isso ajuda a evitar que a
equipes ágeis de desenvolvimento de equipe se sobrecarregue e a manter
software. Seu objetivo é aumentar a efi- um fluxo constante de trabalho. Ge-
ciência do fluxo de trabalho, minimizan- renciar esse fluxo envolve a melhoria
do o tempo de espera e o desperdício, contínua do processo para maximizar
com base em três princípios: visualizar o curso de trabalho. Nesse contexto,
o trabalho, limitar o trabalho em anda- a equipe usa métricas, como ciclo e
mento e gerenciar o fluxo. tempo de espera, para identificar gar-
galos e ineficiências no processo e to-
Visualizar o trabalho envolve a criação mar medidas para solucioná-los.
do quadro Kanban, um painel onde se
visualiza o fluxo de trabalho da equi- O Kanban é um framework altamen-
pe. Geralmente, o quadro é dividido te flexível que pode ser utilizado em
em colunas representando etapas do projetos de qualquer tamanho e em
processo de trabalho como “A fazer”, qualquer área, e é particularmen-
“Em progresso” e “Concluído”. Cada te benéfico para equipes que lidam
trabalho é representado por um car- com requisitos que mudam com fre-
tão, que é movido ao longo do quadro quência, interrupções frequentes ou
à medida que o trabalho é concluído. conflitos de prioridades. Esse modelo
O quadro Kanban ajuda a equipe a ver de desenvolvimento também pode
o que precisa ser feito, o que está sen- ser usado como um framework au-
do feito e o que já foi concluído. tônomo ou em conjunto, com outros
frameworks ágeis, como o Scrum.
Figura 5 – Quadro Kanban
Combinando o Kanban com o Scrum,
por exemplo, uma equipe pode se
beneficiar da estrutura rigorosa do
Scrum, enquanto usa o Kanban para
gerenciar o fluxo de trabalho e melho-
rar a eficiência do processo.

No desenvolvimento de sistemas para


IA, o Kanban pode ser aplicado para
visualizar o fluxo de trabalho envol-
vendo algoritmos de aprendizado de
máquina. Em função de sua filoso-
fia de melhoria contínua, ele ajuda a
equipe a identificar e eliminar os gar-

16
galos e problemas ao longo do processo de desenvolvimento dos algoritmos.
Nesse sentido, o Kanban é uma ferramenta útil para equipes que desejam ge-
renciar de forma eficiente e colaborativa o desenvolvimento de sistemas para IA,
garantindo qualidade e entrega contínua de valor ao cliente.

O Extreme Programming (XP) é um framework ágil de desenvolvimento de sof-


tware voltado à entrega rápida de software de alta qualidade. O XP foi criado no
final dos anos 1990 por Kent Beck, que acreditava que o processo de desenvolvi-
mento de software era muito lento e burocrático. Ele queria criar uma abordagem
que possibilitasse às equipes de desenvolvimento responderem rapidamente às
mudanças nos requisitos do cliente.

Segundo Pressman (2011), as quatro atividades metodológicas da XP são:

1. planejamento: etapa do processo de desenvolvimento de software essencial


para garantir o sucesso do projeto. No XP, o planejamento é feito em peque-
nos ciclos, geralmente de uma a três semanas, chamados “iterações”. Durante
cada iteração, os requisitos do software são identificados e priorizados, e os
objetivos e metas da iteração são definidos. Essa etapa inclui a identificação
de riscos e a definição de estratégias para gerenciá-los;
2. projeto: envolve a criação de uma arquitetura para o software a ser desenvol-
vido. No XP, o projeto é feito em conjunto, com a equipe de desenvolvimento
e com os clientes. A arquitetura é elaborada para ser simples e evolutiva, per-
mitindo mudanças facilmente executáveis no futuro;
3. codificação: nessa etapa, o código-fonte é escrito para implementar os requisitos
identificados durante o planejamento. No XP, a codificação é feita em pares, isto
é, dois programadores trabalham juntos em um único computador, o que permi-
te a eles verificar e validar um ao outro e ajuda a manter a qualidade do código;
4. testes: são realizados para garantir que o software atenda aos requisitos de-
finidos durante o planejamento. No XP, os testes são feitos continuamente,
durante todo o processo de desenvolvimento, e automatizados sempre que
possível. Isso ajuda a assegurar que o software funcione corretamente e que
os erros sejam identificados o mais cedo possível.

O XP é uma metodologia ágil, que enfatiza a colaboração, a comunicação e a en-


trega frequente de software funcional. Suas quatro atividades metodológicas são
projetadas para garantir que o software seja desenvolvido rapidamente, tenha
alta qualidade e atenda às necessidades dos clientes.

17
Figura 6 – Processo da extreme rápida e flexível o suficiente para lidar
programming (XP) com as incertezas e mudanças fre-
quentes durante o desenvolvimento
de sistemas de inteligência artificial.

1.2.2 Modelo Cross-Industry


Standard Process for Data
Mining (CRISP-DM)

Resumidamente, o CRISP-DM é uma


metodologia de desenvolvimento de
projetos de mineração de dados que
oferece uma estrutura de etapas, ta-
refas e entregas para guiar os pro-
Fonte: Pressman (2011, p. 88). fissionais que trabalham nessa área.
#ParaTodosVerem: imagem do processo da Seu objetivo é fornecer um processo
XP, representando o planejamento, projeto, estruturado e sistemático para garan-
codificação e teste.
tir resultados precisos e consistentes,
além de ser flexível o suficiente para
O XP pode ser utilizado em diversos
ser adaptado a diferentes tipos de
projetos de desenvolvimento de sof-
projetos. O CRISP-DM é composto por
tware, incluindo os de inteligência
seis etapas que se relacionam entre si
artificial. O Extreme Programming
e que estão descritas a seguir.
é uma abordagem flexível utilizada
para ajudar as equipes a lidarem com
1. Entendimento do negócio: o ob-
a complexidade dos sistemas de IA e jetivo dessa etapa é compreender
com as mudanças que podem surgir os objetivos e requisitos do projeto
durante o desenvolvimento desses de mineração de dados em termos
sistemas. Na medida em que situa- de negócio. Nessa fase, os objetivos
ções de incerteza são comuns e que são definidos, o escopo do projeto é
as alterações nos requisitos do cliente estabelecido, e são identificados os
são frequentes, essa abordagem ágil requisitos e as restrições do projeto;
pode ser eficiente. As práticas de pro- 2. Entendimento dos dados: o obje-
gramação em par e desenvolvimen- tivo dessa etapa é coletar, integrar
to orientado a testes podem ajudar e entender os dados relevantes
a garantir que o código seja de alta para o projeto. Nessa fase, os dados
qualidade e livre de erros, o que é es- são explorados e analisados para
identificar possíveis problemas e
pecialmente importante em sistemas
oportunidades de melhoria;
de IA que lidam com grandes quanti-
3. Preparação dos dados: o objetivo
dades de dados e precisam produzir
dessa etapa é preparar os dados
resultados precisos. para a análise, transformando-os
em um formato adequado para a
Em resumo, as práticas ágeis do XP modelagem. Nessa fase, são reali-
podem ajudar a garantir um projeto zadas tarefas como limpeza, sele-
de alta qualidade, entregue de forma ção e transformação dos dados;
18
4. Modelagem: o objetivo dessa eta- Cada uma das fases do CRISP-DM
pa é desenvolver modelos de mine- inclui várias tarefas e entregas espe-
ração de dados capazes de atingir cíficas, que devem ser realizadas de
os objetivos do projeto. Nessa fase, forma sistemática e organizada. O
vários modelos são desenvolvidos, processo é iterativo, o que significa
avaliados e ajustados; que é possível voltar para as fases an-
5. Avaliação: o objetivo dessa etapa
teriores e ajustar o processo de acordo
é avaliar os modelos desenvolvidos
com as necessidades do projeto.
para determinar sua eficácia e efi-
ciência. Nessa fase, os modelos são
avaliados em termos de resultados, De forma resumida, o CRISP-DM é
desempenho e limitações; uma metodologia estruturada que
6. Desenvolvimento: o objetivo dessa guia os profissionais na realização
etapa é colocar em prática os resul- de projetos de mineração de dados,
tados da mineração de dados, im- visando obter resultados precisos e
plementando soluções e sistemas consistentes. Através dessa metodolo-
que permitam a utilização desses gia, é possível realizar todas as etapas
resultados. Nessa fase, o processo é do projeto de forma organizada e sis-
monitorado para garantir que as so- temática, levando em conta todos os
luções sejam eficazes e eficientes. aspectos relevantes.
Figura 7 – Etapas do modelo CRISP-DM
SAIBA MAIS
Sobre a metodologia CRISP-DM, você
pode realizar a leitura do artigo “CRIS-
P-EDM: uma proposta de adaptação do
Modelo CRISP-DM para mineração de
dados educacionais”.

1.2.3 Modelo Team Data


Science Process (TDSP)

De acordo com Microsoft (2020), o


Team Data Science Process (TDSP) é
uma metodologia de desenvolvimen-
to de projetos de ciência de dados
criada pela Microsoft que visa fornecer
uma estrutura flexível e iterativa para
gerenciar projetos de análise de dados
em equipe. É um processo compos-
Fonte: adaptado de Witten et al. (2016, p. 54).
to por cinco etapas inter-relacionadas
#ParaTodosVerem: esquema das etapas abrangendo todo o ciclo de vida de um
do modelo CRISP-DM: i) compreensão do projeto de ciência de dados. Cada uma
negócio; ii) entendimento dos dados; iii) das etapas é descrita a seguir.
preparação dos dados; iv) modelagem; v)
avaliação; vi) desenvolvimento.

19
1. Compreensão do negócio: a equipe de ciência de dados busca entender o pro-
blema de negócio a ser solucionado. Isso envolve a definição dos objetivos do
projeto, a identificação dos stakeholders envolvidos e a coleta de requisitos. A
equipe deve ter uma compreensão clara dos resultados que o projeto deve en-
tregar e como esses resultados serão usados ​​para tomar decisões de negócios.
2. Aquisição e compreensão dos dados: coleta e análise dos dados que serão
usados para criar o modelo de ciência de dados. Isso envolve a identificação
das fontes de dados relevantes, a coleta e limpeza dos dados, a realização de
análises exploratórias de dados e a avaliação da qualidade desses dados.
3. Modelagem: envolve a criação do modelo de ciência de dados propriamente
dito. Isso inclui a seleção de algoritmos apropriados, a divisão dos dados em
conjuntos de treinamento e teste, a validação e ajuste do modelo, e a avaliação
do desempenho do modelo.
4. Implantação: a equipe implanta o modelo de ciência de dados em um am-
biente de produção. Isso envolve a integração do modelo em sistemas exis-
tentes, a configuração de infraestrutura, a realização de testes de qualidade e
desempenho e a garantia de que o modelo esteja funcionando corretamente.
5. Aceitação do cliente: envolve a entrega da solução de ciência de dados aos
stakeholders e a avaliação da satisfação do cliente. Isso inclui a criação de do-
cumentação e treinamento para os usuários da solução, a realização de testes
com usuários reais e a coleta de feedback do cliente.

A metodologia TDSP é iterativa, o que significa que as etapas podem ser repe-
tidas e ajustadas conforme necessário para alcançar os resultados desejados.
É importante destacar que a metodologia TDSP é voltada para a colaboração
em equipe, de modo que as etapas são executadas com diferentes especialistas,
como cientistas de dados, engenheiros de software e especialistas em negócios.

ATENÇÃO
Em síntese, o TDSP se diferencia do CRISP-DM por dar mais importância à colabo-
ração e comunicação entre as equipes de ciência de dados e os stakeholders de
negócios, além de incluir aspectos adicionais de gerenciamento de projetos, como
gerenciamento de riscos, mudanças e recursos. Diferentemente do CRISP-DM, que
é um processo genérico e mais amplo que pode ser aplicado a diversos projetos de
mineração de dados, o TDSP foi criado de forma específica para equipes de ciência
de dados da Microsoft.

Em suma, a introdução às metodologias de desenvolvimento de software para IA


é uma etapa fundamental para a implementação de projetos de inteligência arti-
ficial de forma eficiente e eficaz. Durante esta unidade, foi possível compreender
a importância da escolha adequada de uma metodologia de desenvolvimento,
bem como as vantagens e desvantagens de cada uma delas.

20
É importante que os desenvolvedores de software estejam sempre atualizados
em relação às metodologias de desenvolvimento de software e dispostos a adap-
tar suas práticas e processos para atender às demandas e desafios desta área
em constante evolução. Os projetos de IA exigem uma abordagem holística que
envolve desde o planejamento e análise de requisitos até a implementação e
manutenção do sistema. Ao adotar uma metodologia de desenvolvimento ade-
quada e seguir as boas práticas estabelecidas, é possível garantir o sucesso do
projeto e alcançar os objetivos definidos para a solução de problemas complexos
utilizando a inteligência artificial.

VÍDEO
Para completar, vamos assistir a um vídeo
sobre o assunto desta unidade?

Clique aqui para assistir.

Agora vamos fazer algumas questões para fixar o conteúdo estudado.

21
AUTOATIVIDADES
1 - O Kanban é uma metodologia ágil de que cada fase deve ser concluída antes
gestão de projetos que tem como obje- que a próxima possa ser iniciada.
tivo otimizar o fluxo de trabalho e redu- d) Possui uma alta flexibilidade para
zir o desperdício. Com o uso do Kanban, se adaptar às mudanças de requisitos
é possível melhorar a eficiência e a pro- ou problemas encontrados durante o
dutividade no processo de produção. desenvolvimento.

Sobre o Kanban, assinale a alternativa 3 - O Cross-Industry Standard Process


CORRETA. for Data Mining (CRISP-DM) e o Team
Data Science Process (TDSP) são duas
a) O Kanban é uma metodologia de ges- metodologias amplamente utilizadas
tão de projetos que se baseia em ciclos em projetos de ciência de dados e mi-
de desenvolvimento curtos e interativos. neração de dados.
b) O Kanban utiliza um quadro visu- Qual é a principal diferença entre o
al que apresenta as tarefas do projeto CRISP-DM e o TDSP em relação ao ge-
em andamento, mas não permite que renciamento de projetos?
a equipe visualize o fluxo de trabalho.
c) O Kanban é uma metodologia de ges- a) O CRISP-DM inclui considerações adi-
tão de projetos que não permite a mudan- cionais para gerenciamento de projetos,
ça de prioridades ao longo do processo. como gerenciamento de riscos, geren-
d) Kanban permite que a equipe visua- ciamento de mudanças e gerenciamen-
lize facilmente o fluxo de trabalho e faça to de recursos, enquanto o TDSP é um
ajustes na priorização das tarefas de processo padrão mais genérico.
acordo com as necessidades do projeto. b) O TDSP inclui considerações adi-
cionais para gerenciamento de pro-
2 - O modelo de desenvolvimento em jetos, como gerenciamento de riscos,
cascata é um dos modelos mais antigos gerenciamento de mudanças e ge-
de engenharia de software. Esse mode- renciamento de recursos, enquanto
lo é bastante utilizado em projetos de c) o CRISP-DM é um processo padrão
grande porte que possuem requisitos mais genérico.
bem definidos desde o início do projeto. Ambas as metodologias incluem consi-
Sobre o modelo de desenvolvimen- derações adicionais para gerenciamen-
to em cascata, assinale a alternativa to de projetos, como gerenciamento de
CORRETA. riscos, gerenciamento de mudanças e
gerenciamento de recursos.
a) É estruturado com base em um d) Nenhuma das metodologias inclui
processo iterativo de desenvolvimen- considerações adicionais para geren-
to, em que as fases podem ser execu- ciamento de projetos, sendo esse um
tadas de forma paralela. papel exclusivo do gerente de projetos.
b) Permite a mudança de requisitos
do projeto ao longo do processo de
desenvolvimento.
c) O processo de desenvolvimento é di-
vidido em fases sequenciais, de modo Respostas: 1- d) 2- c) 3- b)
REFERÊNCIAS
MICROSOFT. What is the team data science process? 2020. Disponível em: ht-
tps://docs.microsoft.com/enus/azure/machine-learning/team-data-science-pro-
cess/. Acesso em: 13 mar. 2023.

PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed.


São Paulo: McGraw-Hill, 2011.

SHEARER, C. The CRISP-DM model: the new blueprint for data mining. Journal of
data warehousing, [s.l.], v. 5, n. 4, p. 13-22, 2000.

SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Prentice


Hall, 2011.

WITTEN, I. H.; FRANK, E.; HALL, M. A.; PAL, C. J. Data mining: practical machine
learning tools and techniques. 4th ed. [s.l.]: Morgan Kaufmann, 2016.
Bons estudos!

Você também pode gostar