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:
- Hay empresas que venden disponibles para usar productos comerciales listos para usar (COTS), como Outlook, Word y Excel de Microsoft , Acrobat de Adobe Systems , Illustrator y otras herramientas de diseño, o aplicaciones de Google como Chrome.
- Muchas empresas brindan servicios de desarrollo de software y tienen una estructura para desarrollar software personalizado para otras empresas y negocios.
- Empresas que producen software comercial especializado, como Panorama , Hyperion y Siebel Systems.
- Las empresas proveedoras de software como servicio ( SaaS ), tales como Google servicio de correo electrónico 's Gmail, de voz y mapas, y empresas como Salesforce y Zendesk.
- Tecnología que moviliza redes sociales como Facebook , LinkedIn , Instagram , Twitter y Parler .
- También hay otros tipos de productos SaaS, de empresas que brindan servicios de infraestructura de TI y servicios de computación en la nube, como Amazon Web Services (AWS) , Microsoft Azure Cloud Services y servicios de hospedaje GoDaddy.
- API como servicio, que permite a los desarrolladores de terceros interactuar con el software de una empresa, como la API de ubicación geográfica de Google, la API de Google Calendar, etc.
- Empresas que producen componentes de software , como Syncfusion , DevExpress, Telerik UI, Kendo UI y Dundas
- Proveedor de servicios de aplicaciones como Salesforce
- Empresas que producen software a medida para industrias verticales o regiones geográficas particulares.
- Proveedores de software independientes (ISV) que crean, desarrollan y venden software para consumidores o empresas que consumen los usuarios finales.
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:
- Analistas de negocios que definen las necesidades comerciales del mercado.
- Desarrolladores de software que crean la especificación técnica y escriben el software.
- Probadores de software que son responsables de todo el proceso de gestión de la calidad.
En las empresas de software más grandes, se emplea una mayor especialización y, con bastante frecuencia, también hay:
- Escritores técnicos que redactan toda la documentación , como guías de usuario.
- Especialistas en versiones que son responsables de crear todo el producto y el control de versiones del software.
- Diseñadores de experiencia de usuario , que crean la arquitectura de diseño en función de los requisitos comerciales, la investigación del usuario y la experiencia en usabilidad.
- Diseñadores gráficos que normalmente son responsables del diseño de la interfaz gráfica de usuario .
- Ingenieros de mantenimiento que están detrás de dos, tres o más líneas de soporte.
- Los consultores son responsables de hacer operativa la solución, especialmente si se necesitan conocimientos especializados. Entre los ejemplos de esto se incluyen: la construcción de cubos multidimensionales en software de inteligencia empresarial , la integración con soluciones existentes y la implementación de escenarios empresariales en el software de gestión de procesos empresariales .
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:
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.
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:
- el modelo en cascada , incluidas las metodologías de gestión de proyectos como PRINCE2 o PMBoK
- desarrollo de software ágil , como Extreme Programming y SCRUM
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í:
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
- Herramientas de modelado como Sparx Systems Enterprise Architect o IBM Rational Rose
Programadores
- Sistemas de control de versiones y software de versiones procedimientos
- Herramientas de análisis de código y estándares de codificación , validados manual o automáticamente
- Mecanismos de implementación
Probadores
- Sistemas de seguimiento de errores
- Herramientas de automatización de pruebas
- Herramientas de prueba de rendimiento y estrés
Jefes de proyecto / producto
- Sistemas y procedimientos de gestión de proyectos empresariales (EPM)
- Gestión de cartera de productos (PPM)
- Sistemas y procedimientos de gestión de cambios
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:
Ver también
Referencias
- ^ "¿Qué es una empresa de software hoy?" . RedMonk. 2014 . Consultado el 2 de junio de 2017 .
- ^ Proceso de software: principios, metodología y tecnología Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
- ^ Luz verde: Desarrollo de ideas de TV de realidad / hechos desde el concepto hasta el lanzamiento p.12
- ^ Gestión de proyectos exitosos con PRINCE2
- ^ Un manual de usuario de la guía PMBOK
- ^ Planificación de programación extrema
- ^ Gestión ágil de proyectos con Scrum
- ^ El proceso unificado racional simplificado: una guía para el médico del RUP
- ^ Microsoft Solutions Framework (MSF): una guía de bolsillo