Simple Science

Ciência de ponta explicada de forma simples

# Informática# Engenharia de software

Navegando na Engenharia de Software em Startups: Foco em Aprendizado de Máquina

Este artigo explora as práticas de engenharia de software em startups de tecnologia, destacando os desafios únicos para empresas de aprendizado de máquina.

― 8 min ler


Engenharia de Software emEngenharia de Software emStartup: Foco em MLlearning.startups de tech com foco em machineAnalisando práticas de software em
Índice

Startups, especialmente na indústria de tecnologia, enfrentam várias dificuldades enquanto desenvolvem e mantêm software. Esses desafios aumentam para startups de aprendizado de máquina (ML) por causa da natureza das tecnologias de ML. Este artigo examina como as práticas de engenharia de software diferem entre startups de software gerais e aquelas que se concentram em aprendizado de máquina.

Contexto

As empresas de startups de software encontram diversos desafios, incluindo recursos limitados, falta de experiência e a pressão para lançar produtos rapidamente. Quando se trata de aprendizado de máquina, as questões se tornam mais complicadas. Como o ML muitas vezes envolve resultados imprevisíveis, aplicar métodos tradicionais de engenharia de software pode ser difícil para essas startups.

Objetivos

Os principais objetivos desta análise são:

  1. Identificar as práticas de engenharia de software usadas por startups de software gerais.
  2. Descobrir as práticas adicionais adotadas por startups de aprendizado de máquina.

Metodologia

Para reunir informações, foi feita uma revisão da literatura. Um total de 37 trabalhos relevantes foram analisados, focando em diferentes práticas de engenharia de software tanto em startups de software gerais quanto em startups de aprendizado de máquina. A pesquisa cobriu principalmente cinco etapas do ciclo de vida de Desenvolvimento de software (SDLC): engenharia de requisitos, design, desenvolvimento, Garantia de Qualidade e implantação.

Conclusões Principais

A análise revelou diferenças significativas entre as práticas de engenharia de software em startups de aprendizado de máquina e aquelas em startups de software gerais. As diferenças mais notáveis foram na gestão de dados e no treinamento de modelos.

Visão Geral das Startups de Software

Startups de software geralmente são organizações menores que se concentram em desenvolver produtos inovadores. Elas costumam trabalhar com tempo e recursos limitados. Devido ao seu tamanho e limitações, enfrentam vários desafios, como gerenciamento financeiro, atração de talentos e lidar com a pressão de investidores e clientes.

Startups de Software Gerais

Essas startups têm como objetivo lançar produtos rapidamente para começar a gerar receita. Muitas vezes, faltam processos e diretrizes formais em seus esforços de desenvolvimento. Como resultado, suas práticas de engenharia de software podem ser bem informais e adaptativas.

Startups de Aprendizado de Máquina

Startups de aprendizado de máquina fornecem serviços de ML ou integram ML em seus produtos. Elas também enfrentam incertezas únicas, especialmente em relação a dados e algoritmos. Por causa da natureza especializada do ML, essas startups precisam de técnicas mais sofisticadas em engenharia de software.

Questões de Pesquisa

Para entender melhor as práticas de engenharia de software em startups, foram formuladas duas principais questões de pesquisa:

  1. Quais práticas de engenharia de software são comumente usadas por startups de software gerais?
  2. Quais práticas adicionais as startups de aprendizado de máquina adotam?

Trabalhos Relacionados

Vários estudos têm examinado práticas de engenharia de software em startups. A pesquisa mostra que muitas startups têm dificuldades em definir requisitos claros e muitas vezes priorizam a velocidade em vez de práticas padrão. A maioria das startups encontra dificuldade em manter a garantia de qualidade e se envolver efetivamente com suas equipes de desenvolvimento.

Engenharia de Requisitos

Essa fase é crucial em qualquer processo de desenvolvimento de software. Envolve entender as necessidades dos usuários e definir o que o software deve fazer. Para startups de software gerais, os requisitos costumam ser de alto nível e podem levar a mal-entendidos.

Práticas em Startups de Software Gerais

Startups gerais costumam depender de métodos informais para reunir requisitos, como entrevistas e discussões com usuários. Às vezes, elas podem não ter um processo claro em prática, o que pode levar a lacunas no produto final.

Por exemplo, fundadores de startups geralmente desempenham um papel fundamental na determinação dos requisitos, mas sua falta de experiência pode levar a especificações incompletas. Como resultado, o produto final pode não atender totalmente às expectativas do usuário.

Práticas em Startups de Aprendizado de Máquina

Em contrapartida, startups de aprendizado de máquina precisam considerar fatores adicionais relacionados a dados. Elas devem entender os dados que serão usados para treinar seus modelos. Isso significa que os requisitos também devem envolver considerações detalhadas sobre a qualidade, relevância e origem dos dados.

Por exemplo, ao definir requisitos, startups de ML precisam considerar se os dados de treinamento são balanceados e robustos, já que isso pode afetar o desempenho do modelo. No entanto, assim como as startups gerais, as startups de ML podem enfrentar desafios devido a expectativas pouco claras dos clientes.

Fase de Design

Nessa fase, a arquitetura do sistema é definida com base nos requisitos coletados. Um design bem definido é essencial para um desenvolvimento de software eficiente.

Startups de Software Gerais

Muitas startups de software gerais tendem a pular essa fase ou não investem tempo e recursos suficientes nela. Elas frequentemente priorizam o lançamento do produto e podem negligenciar considerações de design necessárias.

Startups de Aprendizado de Máquina

Para startups de ML, a fase de design também envolve considerações específicas para integrar modelos de aprendizado de máquina. A arquitetura deve permitir o processamento de dados e o treinamento de modelos. A maioria das startups de ML novamente enfrenta desafios aqui devido a recursos limitados, levando-as a comprometer a qualidade do design.

Fase de Desenvolvimento

A fase de desenvolvimento é onde a codificação acontece. Os desenvolvedores constroem o software de acordo com os Designs e requisitos definidos anteriormente.

Práticas em Startups de Software Gerais

Startups de software gerais geralmente carecem de métodos de desenvolvimento padronizados. Elas podem adotar uma abordagem mais reativa, focando em colocar um produto no mercado rapidamente em vez de seguir as melhores práticas de codificação. Isso pode resultar em código de baixa qualidade e dívida técnica.

Práticas em Startups de Aprendizado de Máquina

Startups de aprendizado de máquina precisam considerar elementos adicionais durante a fase de desenvolvimento. Por exemplo, muitas vezes precisam treinar modelos, o que requer um gerenciamento rigoroso de dados e algoritmos. A necessidade de experimentação e iteração também é maior nesse domínio.

Garantia de Qualidade

A garantia de qualidade é crítica para garantir que o software atenda aos padrões de qualidade e funcione como previsto.

Startups de Software Gerais

As práticas de garantia de qualidade em startups de software gerais costumam ser insuficientes. Muitas startups não realizam testes minuciosos antes de lançar produtos. Essa dependência dos usuários finais para feedback pode levar a problemas significativos depois.

Startups de Aprendizado de Máquina

A garantia de qualidade em startups de ML é mais complicada devido à natureza dos modelos de aprendizado de máquina. Esses modelos podem se comportar de maneira imprevisível, tornando essencial ter processos rigorosos de teste e verificação em prática. No entanto, muitas startups ainda lutam para implementar práticas adequadas de QA.

Fase de Implantação

A implantação é o passo final onde o produto é entregue aos usuários.

Startups de Software Gerais

Algumas startups de software gerais implantam o código manualmente, enquanto outras podem usar algumas ferramentas automatizadas. No entanto, essa fase frequentemente carece de padronização e pode levar a inconsistências de desempenho.

Startups de Aprendizado de Máquina

Startups de aprendizado de máquina enfrentam desafios de implantação adicionais. Elas precisam integrar seus modelos em sistemas existentes e monitorar continuamente o desempenho. A implantação de modelos de ML geralmente requer hardware especializado, adicionando uma camada extra de complexidade.

Resumo das Conclusões

Tanto startups gerais quanto de aprendizado de máquina compartilham algumas práticas de engenharia de software, embora haja diferenças distintas também.

  • Engenharia de Requisitos: Startups de ML devem considerar requisitos adicionais relacionados a dados.
  • Design: Startups de ML precisam de designs específicos para processamento de dados e integração de modelos.
  • Desenvolvimento: As práticas de desenvolvimento costumam ser reativas em startups gerais, enquanto startups de ML requerem uma abordagem mais experimental.
  • Garantia de Qualidade: A QA é muitas vezes ausente em startups gerais, enquanto startups de ML enfrentam desafios únicos de verificação.
  • Implantação: Startups de ML precisam gerenciar a integração e o monitoramento de desempenho de seus modelos.

Conclusão

Esta análise destaca os desafios únicos enfrentados por startups de aprendizado de máquina em relação às práticas de engenharia de software. Enquanto ambas as startups de software gerais e de ML enfrentam pressão para lançar produtos rapidamente, as startups de ML também precisam lidar com as complexidades da gestão de dados e do treinamento de modelos.

Seguindo em frente, é essencial que ambos os tipos de startups adotem práticas mais formalizadas para enfrentar esses desafios. Isso inclui priorizar a garantia de qualidade e garantir que requisitos claros sejam definidos desde o início.

Ao entender essas práticas e desafios, novas startups podem aumentar suas chances de sucesso. À medida que o cenário tecnológico continua a evoluir, as abordagens adotadas pelas startups na gestão de seus processos de engenharia de software também devem evoluir.

Fonte original

Título: Analysis of Software Engineering Practices in General Software and Machine Learning Startups

Resumo: Context: On top of the inherent challenges startup software companies face applying proper software engineering practices, the non-deterministic nature of machine learning techniques makes it even more difficult for machine learning (ML) startups. Objective: Therefore, the objective of our study is to understand the whole picture of software engineering practices followed by ML startups and identify additional needs. Method: To achieve our goal, we conducted a systematic literature review study on 37 papers published in the last 21 years. We selected papers on both general software startups and ML startups. We collected data to understand software engineering (SE) practices in five phases of the software development life-cycle: requirement engineering, design, development, quality assurance, and deployment. Results: We find some interesting differences in software engineering practices in ML startups and general software startups. The data management and model learning phases are the most prominent among them. Conclusion: While ML startups face many similar challenges to general software startups, the additional difficulties of using stochastic ML models require different strategies in using software engineering practices to produce high-quality products.

Autores: Bishal Lakha, Kalyan Bhetwal, Nasir U. Eisty

Última atualização: 2023-04-04 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2304.01523

Fonte PDF: https://arxiv.org/pdf/2304.01523

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes