Empresa de software - Software company

Uma empresa de software é uma empresa cujos produtos principais são várias formas de software , tecnologia de software, distribuição e desenvolvimento de produtos de software. Eles constituem a indústria de software .

Tipos

Existem vários tipos diferentes de empresas de software:

Todos eles podem ser categorizados em um ou mais dos seguintes:

  • contratual - quando a empresa de software é contratada para entregar algum software específico de fora ( terceirização de software )
  • desenvolvimento de produto - quando produz software empacotado pronto para uso; Comercial de prateleira

Funções comuns em uma empresa de software

Organizar uma empresa de software é um tipo muito especializado de habilidade gerencial, onde pessoas experientes podem transformar o problema organizacional em um benefício único. Por exemplo, ter subequipes espalhadas em fusos horários diferentes pode permitir um dia de trabalho da empresa 24 horas, se as equipes, sistemas e procedimentos estiverem bem estabelecidos. Um bom exemplo é a equipe de teste em um fuso horário 8 horas à frente ou atrás da equipe de desenvolvimento, que corrige bugs de software encontrados pelos testadores.

Uma empresa de software profissional normalmente consiste em pelo menos três subequipes dedicadas:

Em empresas de software maiores, uma maior especialização é empregada e, muitas vezes, também há:

Estrutura

O gerente de uma empresa de software geralmente é chamado de Chefe de Desenvolvimento (HOD) e se reporta às partes interessadas . Ele ou ela lidera as subequipes diretamente ou por meio dos gerentes / líderes, dependendo do tamanho da organização . Normalmente, equipes de até 10 pessoas são as mais operacionais. Em organizações maiores, existem em geral dois modelos de hierarquia:

Estrutura típica de uma empresa de software

Todas as equipes são totalmente independentes e trabalham separadamente nos diferentes projetos. A estrutura é bastante simples e todos os colaboradores se reportam a uma pessoa, o que deixa a situação bem clara, porém não é uma boa solução em termos de troca de conhecimentos e aproveitamento ótimo dos recursos humanos.

Estrutura matriz

Nesse modelo, há gerentes / líderes dedicados para cada especialização principal, "alugando" seu pessoal para projetos específicos liderados por gerentes de produto / projeto, que formal ou informalmente compram as pessoas e pagam por seu tempo. Isso faz com que cada funcionário privado tenha dois chefes - o gerente de produto / projeto e o gerente de "recursos" especializado. Por um lado, otimiza a utilização de recursos humanos, por outro, pode gerar conflitos sobre qual gestor tem prioridade na estrutura.

Existem também várias variantes dessas estruturas, e várias organizações têm essa estrutura espalhada e dividida em vários departamentos e unidades.

Metodologias

As empresas de software podem usar diversas metodologias para produzir o código. Isso pode incluir:

Existem também algumas metodologias que combinam ambos, como o modelo espiral , Rational Unified Process (RUP) ou MSF .

Ciclo de vida do produto

Independentemente da metodologia utilizada, o ciclo de vida do produto sempre consiste em pelo menos três etapas:

  • Design - incluindo especificações técnicas e de negócios
  • Codificação - o próprio desenvolvimento
  • Teste - a gestão da qualidade

Cada etapa, idealmente, leva 30% do tempo total, com os 10% restantes na reserva.

O diagrama de sequência UML de interação entre esses grupos pode ser semelhante a:

A interação geral entre os quatro grupos principais

Em cada estágio, um grupo diferente desempenha um papel fundamental, no entanto, cada tipo de papel deve estar envolvido em todo o processo de desenvolvimento:

  • Os analistas, após concluírem a especificação do negócio, gerenciam as mudanças na situação do negócio para minimizar a possibilidade de mudança ao longo do tempo. Eles também oferecem suporte a programadores e testadores durante todo o processo de desenvolvimento para garantir que o produto final atenda às necessidades de negócios especificadas no início. Idealmente, o processo coloca os analistas de negócios como os principais participantes durante a entrega final da solução ao cliente, já que estão em melhor posição para fornecer a melhor camada de negócios.
  • Os programadores fazem a especificação técnica durante a fase de design, por isso são chamados de programadores / designers, e durante o tempo de teste corrigem bugs.
  • Os testadores completam os cenários de teste durante a fase de design e os avaliam durante a fase de codificação

Sistemas e procedimentos

as empresas de software possuem vários sistemas e procedimentos implementados e funcionando internamente em todas as subequipes. Esses incluem:

Analistas de negócios

Programadores

Testadores

Gerentes de projeto / produto

Há também o Application Lifecycle Management (ALM), que incorpora algumas dessas funcionalidades em um pacote e é usado em todos os grupos. Eles são fornecidos por vários fornecedores, como Borland , ECM ou Compuware .

Auditorias de eficiência

Empresas de software bem estabelecidas geralmente têm alguma maneira de medir sua própria eficiência. Isso geralmente é feito definindo o conjunto de indicadores-chave de desempenho (KPI), como

  • O número médio de bugs cometidos pelo desenvolvedor por unidade de tempo ou linhas de código-fonte
  • O número de bugs encontrados pelo testador por ciclo de teste
  • O número médio de ciclos de teste até Zero Bug Bounce (ZBB)
  • O tempo médio do ciclo de teste
  • Tempo estimado da tarefa em comparação com o tempo real da tarefa (exatidão do planejamento)
  • Número de correções para a linha de base

Várias organizações estão focadas em alcançar o nível ótimo do Capability Maturity Model (CMM), onde "ótimo" não significa necessariamente o mais alto. Existem também outros sistemas, como o SEMA da Carnegie-Mellon University , ou padrões ISO específicos . As pequenas empresas de software às vezes usam abordagens menos formalizadas. Cada organização desenvolve seu próprio estilo, que fica em algum lugar entre a tecnocracia total (onde tudo é definido por números) e a anarquia total (onde não há nenhum número). Seja qual for o caminho que a organização vá, eles consideram a pirâmide que descreve o custo e o risco de introduzir mudanças nos processos de desenvolvimento já iniciados:

pirâmide mostrando risco e custo de tempo da mudança

Veja também

Referências

  1. ^ "O que é uma empresa de software hoje?" . RedMonk. 2014 . Recuperado em 2 de junho de 2017 .
  2. ^ Processo de software: Princípios, metodologia e tecnologia Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
  3. ^ Greenlit: Desenvolvendo ideias de TV factuais / da realidade do conceito ao lançamento p.12
  4. ^ Gerenciando projetos de sucesso com PRINCE2
  5. ^ Um Manual do Usuário para o Guia PMBOK
  6. ^ Planejando programação extrema
  7. ^ Gerenciamento Ágil de Projetos com Scrum
  8. ^ O processo racional unificado facilitado: um guia do profissional para o RUP
  9. ^ Microsoft Solutions Framework (MSF): um guia de bolso