En ingeniería de sistemas , sistemas de información e ingeniería de software , el ciclo de vida de desarrollo de sistemas ( SDLC ), también conocido como ciclo de vida de desarrollo de aplicaciones , es un proceso para planificar, crear, probar e implementar un sistema de información . [1] El concepto SDLC se aplica a una variedad de configuraciones de hardware y software, ya que un sistema puede estar compuesto solo de hardware, solo de software o una combinación de ambos. [2] Generalmente hay seis etapas en este ciclo: análisis de requisitos, diseño, desarrollo y pruebas, implementación, documentación y evaluación.
Un ciclo de vida de desarrollo de sistemas se compone de distintas fases de trabajo que utilizan los ingenieros y desarrolladores de sistemas para entregar sistemas de información . Como todo lo que se fabrica en una línea de ensamblaje, un SDLC tiene como objetivo producir sistemas de alta calidad que cumplan o superen las expectativas, según los requisitos, entregando sistemas dentro de los plazos programados y las estimaciones de costos. [3] Los sistemas informáticos son complejos y a menudo vinculan componentes de distintos orígenes. Se han creado varias metodologías SDLC, como cascada , espiral , ágil , creación rápida de prototipos , incremental y sincronización y estabilización. [4]
Las metodologías SDLC encajan dentro de un espectro de flexibilidad que va desde ágil hasta iterativa y secuencial. Las metodologías ágiles, como XP y Scrum , se centran en procesos ligeros que permiten cambios rápidos. [5] Las metodologías iterativas , como el proceso unificado racional y el método de desarrollo de sistemas dinámicos , se centran en estabilizar el alcance del proyecto y expandir o mejorar los productos de forma iterativa. Los modelos secuenciales o de gran diseño inicial (BDUF), como los de cascada, se centran en una planificación completa y correcta para guiar proyectos más grandes y limitar los riesgos para obtener resultados exitosos y predecibles. [6] El desarrollo anamórfico se guía por el alcance del proyecto y las iteraciones adaptativas.
En la gestión de proyectos, un proyecto puede incluir tanto un ciclo de vida del proyecto (PLC) como un SDLC, durante los cuales ocurren actividades algo diferentes. Según Taylor (2004), "el ciclo de vida del proyecto abarca todas las actividades del proyecto , mientras que el ciclo de vida del desarrollo de sistemas se centra en la realización de los requisitos del producto ". [7]
SDLC no es una metodología per se, sino más bien una descripción de las fases que debe abordar una metodología. La lista de fases no es definitiva, pero normalmente incluye planificación, análisis, diseño, construcción, prueba, implementación y mantenimiento/soporte. En el marco Scrum, [8] por ejemplo, se podría decir que una única historia de usuario pasa por todas las fases del SDLC en un sprint de dos semanas. Por el contrario, la metodología en cascada, donde cada requisito comercial [ cita necesaria ] se traduce en descripciones de características/funciones que luego se implementan generalmente durante un período de meses o más. [ cita necesaria ]
Según Elliott (2004), SDLC "se originó en la década de 1960, para desarrollar sistemas comerciales funcionales a gran escala en una era de conglomerados comerciales a gran escala . Las actividades de sistemas de información giraban en torno al procesamiento pesado de datos y rutinas de cálculo numérico ". [9]
El método de diseño y análisis de sistemas estructurados (SSADM) fue elaborado para la Oficina de Comercio Gubernamental del gobierno del Reino Unido en la década de 1980. Desde entonces, según Elliott (2004), "los enfoques tradicionales del ciclo de vida para el desarrollo de sistemas han sido reemplazados cada vez más por enfoques y marcos alternativos, que intentaron superar algunas de las deficiencias inherentes del SDLC tradicional". [9]
SDLC proporciona un conjunto de fases/pasos/actividades que deben seguir los diseñadores y desarrolladores de sistemas. Cada fase se basa en los resultados de la anterior. [10] [11] [12] [13] No todos los proyectos requieren que las fases sean secuenciales. Para proyectos más pequeños y simples, las fases pueden combinarse o superponerse. [10]
El más antiguo y conocido es el modelo de cascada , que utiliza una secuencia lineal de pasos. [11] La cascada tiene diferentes variedades. Una variedad es la siguiente: [10] [11] [14] [15]
Realizar un análisis preliminar, considerar soluciones alternativas, estimar costos y beneficios y presentar un plan preliminar con recomendaciones.
Descomponer los objetivos del proyecto [ se necesita aclaración ] en funciones y operaciones definidas. Esto implica recopilar e interpretar hechos, diagnosticar problemas y recomendar cambios. Analizar las necesidades de información del usuario final y resolver inconsistencias e información incompleta: [16]
En este paso, se detallan las características y operaciones deseadas, incluidos diseños de pantalla, reglas comerciales , diagramas de procesos , pseudocódigo y otros entregables.
Escribe el código.
Ensamble los módulos en un entorno de prueba. Verifique errores, fallas e interoperabilidad.
Poner el sistema en producción. Esto puede implicar capacitar a los usuarios, implementar hardware y cargar información del sistema anterior.
Supervise el sistema para evaluar su estado actual. Realice cambios modestos y correcciones según sea necesario. Mantener la calidad del sistema. El seguimiento y las actualizaciones continuos garantizan que el sistema siga siendo eficaz y de alta calidad. [17]
Se revisa el sistema y el proceso. Las preguntas relevantes incluyen si el sistema recientemente implementado cumple con los requisitos y logra los objetivos del proyecto, si el sistema es utilizable, confiable/disponible, escalado adecuadamente y tolerante a fallas. Las verificaciones de procesos incluyen la revisión de cronogramas y gastos, así como la aceptación del usuario.
Al final de su vida útil, se desarrollan planes para descontinuar el sistema y realizar la transición hacia su reemplazo. La información y la infraestructura relacionadas deben reutilizarse, archivarse, descartarse o destruirse, protegiendo al mismo tiempo la seguridad de forma adecuada. [18]
En el siguiente diagrama, estas etapas se dividen en diez pasos, desde la definición hasta la creación y modificación de los productos de trabajo de TI:
El análisis y diseño de sistemas (SAD) puede considerarse una actividad de metadesarrollo, que sirve para preparar el escenario y delimitar el problema. SAD puede ayudar a equilibrar los requisitos competitivos de alto nivel. SAD interactúa con la arquitectura empresarial distribuida, la arquitectura de TI empresarial y la arquitectura empresarial, y se basa en gran medida en conceptos como partición, interfaces, personas y roles, y modelado operativo/de implementación para llegar a una descripción del sistema de alto nivel. Esta descripción de alto nivel luego se divide en componentes y módulos que pueden analizarse, diseñarse y construirse por separado e integrarse para lograr el objetivo comercial. SDLC y SAD son piedras angulares de la planificación de sistemas y productos del ciclo de vida completo.
El análisis y diseño orientado a objetos (OOAD) es el proceso de analizar el dominio de un problema para desarrollar un modelo conceptual que luego puede usarse para guiar el desarrollo. Durante la fase de análisis, un programador desarrolla requisitos escritos y un documento de visión formal a través de entrevistas con las partes interesadas.
El modelo conceptual que resulta de OOAD normalmente consta de casos de uso y diagramas de clases e interacción . También puede incluir una maqueta de la interfaz de usuario .
No es necesario definir completamente un artefacto de salida para que sirva como entrada de un diseño orientado a objetos; El análisis y el diseño pueden ocurrir en paralelo. En la práctica, los resultados de una actividad pueden alimentar a la otra en un proceso iterativo.
Algunos artefactos de entrada típicos para OOAD:
El ciclo de vida del sistema es una visión de un sistema o sistema propuesto que aborda todas las fases de su existencia para incluir la concepción, diseño y desarrollo, producción y/o construcción, distribución, operación, mantenimiento y soporte, retiro, eliminación gradual y eliminación del sistema. . [19]
La etapa de diseño conceptual es la etapa en la que se examina una necesidad identificada, se definen los requisitos para las posibles soluciones, se evalúan las posibles soluciones y se desarrolla una especificación del sistema. La especificación del sistema representa los requisitos técnicos que proporcionarán una guía general para el diseño del sistema. Debido a que este documento determina todo el desarrollo futuro, la etapa no se puede completar hasta que una revisión del diseño conceptual haya determinado que la especificación del sistema aborda adecuadamente la necesidad motivadora.
Los pasos clave dentro de la etapa de diseño conceptual incluyen:
Durante esta etapa del ciclo de vida del sistema, los subsistemas que realizan las funciones deseadas del sistema se diseñan y especifican de conformidad con la especificación del sistema. Se definen las interfaces entre los subsistemas, así como los requisitos generales de prueba y evaluación. [20] Al finalizar esta etapa, se produce una especificación de desarrollo que es suficiente para realizar el diseño y desarrollo detallados.
Los pasos clave dentro de la etapa de diseño preliminar incluyen:
Por ejemplo, como analista de sistemas de Viti Bank, se le ha encomendado la tarea de examinar el sistema de información actual. Viti Bank es un banco de rápido crecimiento en Fiji . Los clientes de zonas rurales remotas tienen dificultades para acceder a los servicios bancarios. Les lleva días o incluso semanas viajar a un lugar para acceder a los servicios bancarios. Con la visión de satisfacer las necesidades de los clientes, el banco ha solicitado sus servicios para examinar el sistema actual y proponer soluciones o recomendaciones sobre cómo se puede proporcionar el sistema actual para satisfacer sus necesidades.
Esta etapa incluye el desarrollo de diseños detallados que llevan el trabajo de diseño inicial a una forma completa de especificaciones. Este trabajo incluye la especificación de interfaces entre el sistema y su entorno previsto, y una evaluación integral de los requisitos logísticos, de mantenimiento y de soporte del sistema. El diseño y desarrollo de detalle es responsable de producir el producto, el proceso y las especificaciones de materiales y puede resultar en cambios sustanciales en las especificaciones de desarrollo.
Los pasos clave dentro de la etapa de diseño y desarrollo detallado incluyen:
Durante la etapa de producción y/o construcción, el producto se construye o ensambla de acuerdo con los requisitos especificados en las especificaciones del producto, proceso y material, y se implementa y prueba dentro del entorno operativo objetivo. Se realizan evaluaciones del sistema para corregir deficiencias y adaptar el sistema para una mejora continua.
Los pasos clave dentro de la etapa de construcción del producto incluyen:
Una vez completamente implementado, el sistema se utiliza para su función operativa prevista y se mantiene dentro de su entorno operativo.
Los pasos clave dentro de la etapa de utilización y soporte incluyen:
La eficacia y eficiencia del sistema deben evaluarse continuamente para determinar cuándo el producto ha alcanzado su ciclo de vida efectivo máximo. [21] Las consideraciones incluyen: existencia continua de necesidad operativa, correspondencia entre los requisitos operativos y el rendimiento del sistema, la viabilidad de la eliminación gradual del sistema frente al mantenimiento y la disponibilidad de sistemas alternativos.
Durante este paso, se consideran las prioridades actuales que se verían afectadas y cómo deberían manejarse. Un estudio de viabilidad determina si es apropiado crear un sistema nuevo o mejorado. Esto ayuda a estimar costos, beneficios, requisitos de recursos y necesidades específicas de los usuarios.
El estudio de viabilidad debe abordar cuestiones operativas , financieras , técnicas , humanas y jurídicas/políticas .
El objetivo del análisis es determinar dónde está el problema. Este paso implica descomponer el sistema en partes, analizar los objetivos del proyecto, desglosar lo que se debe crear e involucrar a los usuarios para definir los requisitos.
En el diseño de sistemas , las funciones y operaciones se describen en detalle, incluidos diseños de pantalla, reglas comerciales, diagramas de procesos y otra documentación. El diseño modular reduce la complejidad y permite que las salidas describan el sistema como una colección de subsistemas.
La etapa de diseño toma como entrada los requisitos ya definidos. Para cada requisito, se produce un conjunto de elementos de diseño.
Los documentos de diseño suelen incluir diagramas de jerarquía funcional, diseños de pantalla, reglas comerciales, diagramas de procesos, pseudocódigo y un modelo de datos completo con un diccionario de datos . Estos elementos describen el sistema con suficiente detalle como para que los desarrolladores e ingenieros puedan desarrollar y entregar el sistema con una mínima aportación adicional.
El código se prueba en varios niveles en las pruebas de software . Por lo general, se realizan pruebas de aceptación de unidades, sistemas y usuarios. Se han adoptado muchos enfoques para las pruebas.
Los siguientes tipos de pruebas pueden ser relevantes:
Una vez que un sistema se ha estabilizado mediante pruebas, SDLC garantiza que se prepare y realice la capacitación adecuada antes de realizar la transición del sistema para brindar soporte al personal y a los usuarios finales. La capacitación generalmente cubre la capacitación operativa para el personal de soporte, así como la capacitación del usuario final.
Después de la capacitación, los ingenieros y desarrolladores de sistemas realizan la transición del sistema a su entorno de producción.
El mantenimiento incluye cambios, correcciones y mejoras.
La fase final del SDLC es medir la efectividad del sistema y evaluar posibles mejoras.
Los objetivos de la fase SDLC se describen en esta sección con entregables clave, una descripción de las tareas recomendadas y un resumen de los objetivos de control relacionados para una gestión eficaz. Es fundamental que el director del proyecto establezca y supervise los objetivos de control mientras ejecuta los proyectos. Los objetivos de control son declaraciones claras del resultado o propósito deseado y deben definirse y monitorearse a lo largo de todo el proyecto. Los objetivos de control se pueden agrupar en categorías principales (dominios) y relacionarse con las fases del SDLC como se muestra en la figura. [22]
Para gestionar y controlar una iniciativa sustancial de SDLC, una estructura de desglose del trabajo (WBS) captura y programa el trabajo. La WBS y todo el material programático deben mantenerse en la sección "descripción del proyecto" del cuaderno del proyecto. [ se necesita aclaración ] El director del proyecto elige el formato WBS que mejor describa el proyecto.
El diagrama muestra que la cobertura abarca numerosas fases del SDLC, pero el MCD asociado [ aclaración necesaria ] muestra asignaciones a las fases del SDLC. Por ejemplo, el análisis y el diseño se realizan principalmente como parte del dominio de adquisición e implementación, y la creación y el prototipo del sistema se realizan principalmente como parte de la entrega y el soporte. [22]
La sección superior de la WBS proporciona una descripción general del alcance y el cronograma del proyecto. También debe resumir las principales fases e hitos. La sección intermedia se basa en las fases del SDLC. Los elementos de la WBS consisten en hitos y tareas a completar en lugar de actividades a realizar y tener una fecha límite. Cada tarea tiene un resultado medible (por ejemplo, documento de análisis). Una tarea de la EDT puede depender de una o más actividades (por ejemplo, codificación). Las partes del proyecto que necesitan apoyo de los contratistas deben tener una declaración de trabajo (SOW). El desarrollo de una SOW no ocurre durante una fase específica del SDLC, sino que se desarrolla para incluir el trabajo del proceso SDLC que pueden realizar los contratistas. [22]
Las líneas de base [ se necesita aclaración ] se establecen después de cuatro de las cinco fases del SDLC y son fundamentales para la naturaleza iterativa del modelo. [23] Las líneas de base se convierten en hitos.
Los métodos de desarrollo de software alternativos al ciclo de vida del desarrollo de sistemas son:
Fundamentalmente, SDLC intercambia flexibilidad por control mediante la imposición de una estructura. Se utiliza más comúnmente para proyectos a gran escala con muchos desarrolladores.