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:
- Há empresas que vendem disponível para uso off-the-shelf comercial (COTS), tais como Microsoft 's Outlook, Word e Excel, Sistemas de Adobe ' Acrobat s, Illustrator e outras ferramentas de design, ou o Google Apps como o Chrome.
- Muitas empresas fornecem serviços de Desenvolvimento de Software e possuem uma estrutura para desenvolver software personalizado para outras empresas e negócios.
- Empresas que produzem software comercial especializado pronto para uso, como Panorama , Hyperion e Siebel Systems
- Empresas que fornecem Software as a Service ( SaaS ), como o serviço de e-mail do Google , Gmail, Voice e Maps, e empresas como Salesforce e Zendesk.
- Tecnologia que mobiliza mídias sociais como Facebook , LinkedIn , Instagram , Twitter e Parler .
- Existem também outros tipos de produtos SaaS, de empresas que fornecem serviços de infraestrutura de TI e serviços de computação em nuvem, como Amazon Web Services (AWS) , Microsoft Azure Cloud Services e serviços de hospedagem GoDaddy.
- API como serviço, que permite que desenvolvedores terceirizados interajam com o software de uma empresa, como Google Geo Location API, Google Calendar API, etc.
- Empresas que produzem componentes de software , como Syncfusion , DevExpress, Telerik UI, Kendo UI e Dundas
- Provedor de serviços de aplicativos , como Salesforce
- Empresas que produzem software sob medida para indústrias verticais ou regiões geográficas específicas
- Fornecedores de software independentes (ISVs) que criam, desenvolvem e vendem software de consumidor ou corporativo que é consumido por usuários finais
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:
- Analistas de negócios que definem as necessidades de negócios do mercado
- Desenvolvedores de software que criam as especificações técnicas e escrevem o software
- Testadores de software que são responsáveis por todo o processo de gestão da qualidade
Em empresas de software maiores, uma maior especialização é empregada e, muitas vezes, também há:
- Escritores técnicos que escrevem toda a documentação , como guias do usuário
- Especialistas de lançamento que são responsáveis por construir todo o produto e versão de software
- Designers de experiência do usuário , que estão criando a arquitetura de design com base nos requisitos de negócios, pesquisa do usuário e experiência em usabilidade
- Designers gráficos que normalmente são responsáveis pelo design da interface gráfica do usuário .
- Engenheiros de manutenção que estão atrás de duas, três ou mais linhas de suporte
- Os consultores são responsáveis por operacionalizar a solução, principalmente se for necessário algum conhecimento especializado. Exemplos disso incluem: construção de cubos multidimensionais em software de business intelligence , integração com soluções existentes e implementação de cenários de negócios em software de Business Process Management .
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:
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.
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:
- o modelo em cascata , incluindo metodologias de gerenciamento de projeto como PRINCE2 ou PMBoK
- desenvolvimento ágil de software , como Extreme Programming e SCRUM
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:
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
- Ferramentas de modelagem como Sparx Systems Enterprise Architect ou IBM Rational Rose
Programadores
- Sistemas de controle de versão e procedimentos de versão de software
- Ferramentas de análise de código e padrões de codificação , validados manualmente ou automaticamente
- Mecanismos de implantação
Testadores
- Sistemas de rastreamento de bugs
- Ferramentas de automação de teste
- Ferramentas de teste de desempenho e estresse
Gerentes de projeto / produto
- Sistemas e procedimentos de Enterprise Project Management (EPM)
- Gestão de portfólio de produtos (PPM)
- Sistemas e procedimentos de gestão de mudanças
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:
Veja também
Referências
- ^ "O que é uma empresa de software hoje?" . RedMonk. 2014 . Recuperado em 2 de junho de 2017 .
- ^ Processo de software: Princípios, metodologia e tecnologia Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
- ^ Greenlit: Desenvolvendo ideias de TV factuais / da realidade do conceito ao lançamento p.12
- ^ Gerenciando projetos de sucesso com PRINCE2
- ^ Um Manual do Usuário para o Guia PMBOK
- ^ Planejando programação extrema
- ^ Gerenciamento Ágil de Projetos com Scrum
- ^ O processo racional unificado facilitado: um guia do profissional para o RUP
- ^ Microsoft Solutions Framework (MSF): um guia de bolso