Compañía de software - Software company

Una empresa de software es una empresa cuyos productos principales son diversas formas de software , tecnología de software, distribución y desarrollo de productos de software. Constituyen la industria del software .

Tipos

Hay varios tipos diferentes de empresas de software:

Todos estos pueden clasificarse en uno o varios de los siguientes:

  • contractual: cuando se contrata a la empresa de software para que entregue algún software en particular desde el exterior ( subcontratación de software )
  • desarrollo de productos: cuando produce software empaquetado listo para usar; Comercial listo para usar

Roles comunes en una empresa de software

Organizar una empresa de software es un tipo muy especializado de habilidad de gestión, donde personas con experiencia pueden convertir el problema organizacional en un beneficio único. Por ejemplo, tener subequipos distribuidos en diferentes zonas horarias puede permitir una jornada laboral de 24 horas para la empresa, si los equipos, sistemas y procedimientos están bien establecidos. Un buen ejemplo es el equipo de prueba en una zona horaria 8 horas antes o después del equipo de desarrollo, que corrige los errores de software encontrados por los probadores.

Una empresa de software profesional normalmente consta de al menos tres subequipos dedicados:

En las empresas de software más grandes, se emplea una mayor especialización y, con bastante frecuencia, también hay:

Estructura

El gerente de una empresa de software generalmente se llama Jefe de Desarrollo (HOD) e informa a las partes interesadas . Él o ella lidera los sub-equipos directamente o a través de los gerentes / líderes dependiendo del tamaño de la organización . Por lo general, los equipos de hasta 10 personas son los más operativos. En organizaciones más grandes, existen en general dos modelos de jerarquía:

Estructura típica de una empresa de software

Todos los equipos son totalmente independientes y trabajan por separado en los diferentes proyectos. La estructura es bastante simple y todos los empleados dependen de una sola persona, lo que aclara la situación, sin embargo, no es una buena solución en términos de intercambio de conocimientos y uso óptimo de los recursos humanos.

Estructura de la matriz

En este modelo hay gerentes / líderes dedicados para cada especialización principal, "alquilando" a su gente para proyectos particulares liderados por gerentes de producto / proyecto, quienes formal o informalmente compran a las personas y pagan por su tiempo. Esto lleva a que cada empleado privado tenga dos jefes: el gerente de producto / proyecto y el gerente de "recursos" especializado. Por un lado optimiza el uso de los recursos humanos, por otro lado puede dar lugar a conflictos sobre cuál de los directivos tiene prioridad en la estructura.

También hay una serie de variantes de estas estructuras, y varias organizaciones tienen esta estructura distribuida y dividida en varios departamentos y unidades.

Metodologías

Las empresas de software pueden utilizar diversas metodologías para producir el código. Estos pueden incluir:

También existen algunas metodologías que combinan ambos, como el modelo espiral , Rational Unified Process (RUP) o MSF .

Ciclo de vida del producto

Independientemente de la metodología utilizada, el ciclo de vida del producto siempre consta de al menos tres etapas:

  • Diseño, incluida la especificación comercial y técnica
  • Codificación: el desarrollo en sí
  • Pruebas: la gestión de la calidad

Cada etapa ocupa idealmente el 30% del tiempo total, con el 10% restante en reserva.

El diagrama de secuencia UML de interacción entre estos grupos puede verse así:

La interacción general entre los cuatro grupos principales

En cada etapa, un grupo diferente juega un papel clave, sin embargo, cada tipo de rol debe estar involucrado a lo largo de todo el proceso de desarrollo:

  • Los analistas, después de completar la especificación empresarial, gestionan la situación empresarial cambiante para minimizar la posibilidad de cambios a lo largo del tiempo. También apoyan tanto a los programadores como a los probadores durante todo el proceso de desarrollo para garantizar que el producto final cumpla con las necesidades comerciales especificadas al principio. Idealmente, el proceso coloca a los analistas de negocios como los actores clave durante la entrega final de la solución al cliente, ya que están en la mejor posición para proporcionar la mejor capa comercial.
  • Los programadores realizan la especificación técnica durante la fase de diseño, por lo que se les llama programadores / diseñadores, y durante el tiempo de prueba corrigen errores.
  • Los probadores completan los escenarios de prueba durante la fase de diseño y los evalúan durante la fase de codificación

Sistemas y procedimientos

Las empresas de software poseen varios sistemas y procedimientos implementados y que funcionan internamente en todos los sub-equipos. Éstas incluyen:

Analistas de negocios

Programadores

Probadores

Jefes de proyecto / producto

También hay Application Lifecycle Management (ALM), que integra algunas de estas funcionalidades en un paquete y se utilizan en todos los grupos. Se entregan a través de varios proveedores como Borland , ECM o Compuware .

Auditorías de eficiencia

Las empresas de software bien establecidas suelen tener alguna forma de medir su propia eficiencia. Esto generalmente se hace definiendo el conjunto de indicadores clave de desempeño (KPI), como

  • La cantidad promedio de errores cometidos por el desarrollador por unidad de tiempo o líneas de código fuente.
  • La cantidad de errores encontrados por el probador por ciclo de prueba
  • El número medio de ciclos de prueba hasta el Zero Bug Bounce (ZBB)
  • El tiempo medio del ciclo de prueba.
  • Tiempo estimado de la tarea en comparación con el tiempo real de la tarea (exactitud de la planificación)
  • Número de correcciones a la línea de base

Varias organizaciones se centran en alcanzar el nivel óptimo del modelo de madurez de capacidad (CMM), donde "óptimo" no significa necesariamente el más alto. También existen otros sistemas, como la Universidad Carnegie-Mellon 's SEMA , o particulares ISO estándares. Las pequeñas empresas de software a veces utilizarán enfoques menos formalizados. Cada organización trabaja con su propio estilo, que se encuentra en algún lugar entre la tecnocracia total (donde todo se define por números) y la anarquía total (donde no hay números). Independientemente de la dirección que adopte la organización, consideran la pirámide que describe el costo y el riesgo de introducir cambios en los procesos de desarrollo ya iniciados:

pirámide que muestra el riesgo y el costo de tiempo del cambio

Ver también

Referencias

  1. ^ "¿Qué es una empresa de software hoy?" . RedMonk. 2014 . Consultado el 2 de junio de 2017 .
  2. ^ Proceso de software: principios, metodología y tecnología Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
  3. ^ Luz verde: Desarrollo de ideas de TV de realidad / hechos desde el concepto hasta el lanzamiento p.12
  4. ^ Gestión de proyectos exitosos con PRINCE2
  5. ^ Un manual de usuario de la guía PMBOK
  6. ^ Planificación de programación extrema
  7. ^ Gestión ágil de proyectos con Scrum
  8. ^ El proceso unificado racional simplificado: una guía para el médico del RUP
  9. ^ Microsoft Solutions Framework (MSF): una guía de bolsillo