Ebook U1
Ebook U1
Ebook U1
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.
SAÚDE
INDÚSTRIA
SETOR FINANCEIRO
TRANSPORTE
EDUCAÇÃO
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.
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.
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.
7
Figura 2 – Passos do modelo de desenvolvimento incremental
PRIMEIRA VANTAGEM
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
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.
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.
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.
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.
EQUIPES AUTO-ORGANIZADAS
Os requisitos do software são priorizados com base no valor que eles agre-
gam ao negócio.
13
FLEXIBILIDADE
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.
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.
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.
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.
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.
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.
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?
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.
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.
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!