Desarrollo de Sistemas

Desarrollo de Sistemas

Iniciar

Introducción

Debido a las tecnologías que utilizamos como parte de nuestra vida diaria, en el campo de la programación surgen algunas necesidades que se requieren cubrir respecto al desarrollo de un sistema de información (SI); éste deberá estar actualizado y brindar la posibilidad al programador del mejoramiento para su aplicación, así como posibilitar la solución eficaz y a corto plazo de problemas que pudieran presentarse en un futuro en el sistema.



Computadora

(s. a.) (2017). Programación [fotografía]. Tomada de https://pixabay.com/es/binaria-las-manos-teclado-grifo-2450152/

El estudio de este tema te permitirá:

Identificar en qué consiste el proceso de desarrollo de un sistema, a partir de su metodología, herramientas de programación y ciclo de vida, con la finalidad de que en caso de que el sistema presente complicaciones, como programador puedas determinar la solución más viable, ya sea mediante su corrección o mediante la implementación de un software.

Conceptos básicos


El desarrollo de un sistema de información puede iniciarse al existir problemas con el sistema actual, incorporar nuevas oportunidades de negocio, aumentar la competencia, hacer uso más eficiente de la información o por crecimiento en la organización.


Metodología

Una metodología de desarrollo de software incluye un conjunto de actividades utilizadas como marco de referencia para la estructuración, planeación y control de todo el proceso de desarrollo de los sistemas de información.

Las metodologías de desarrollo de sistemas deben definir objetivos, fases, tareas, productos y responsables, necesarios para la correcta realización del proceso y su seguimiento.

Principales objetivos de una metodología de desarrollo:


Esquema

Tomando como base la clase de notación empleada para especificar los productos obtenidos en las etapas de análisis y diseño, las metodologías pueden clasificarse en dos tipos: estructuradas y orientadas a objetos.

Por otra parte, considerando su filosofía de desarrollo, las metodologías con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, se conocen como tradicionales (o peyorativamente pesadas o peso pesado).

Otras metodologías denominadas ágiles están más encauzadas a la generación de código con ciclos muy cortos de desarrollo; se dirigen a equipos de desarrollo pequeños; hacen especial hincapié en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso.

Revisa la información sobre las siguientes metodologías:


Metodologías estructuradas

Los métodos estructurados comenzaron a desarrollarse a fines de la década de 1970 con la programación estructurada. Luego, a mediados de esa misma década, aparecieron primero algunas técnicas para el diseño (por ejemplo, el diagrama de estructura), y posteriormente para el análisis (como el diagrama de flujo de datos). Estas metodologías son particularmente apropiadas en proyectos que utilizan para la implementación lenguajes de tercera y cuarta generación.


Metodologías orientadas a objetos

Su historia va unida a la evolución de los lenguajes de programación orientada a objeto. Entre los más representativos están Simula (fines de la década de 1960), Smalltalk-80 (fines de la década de 1970), la primera versión de C++ por Bjarne Stroustrup (1981), y actualmente Java o C# de Microsoft. Al término de la década de 1980 comenzaron a consolidarse algunos métodos orientados a objeto.

En 1995, Booch y Rumbaugh propusieron el método unificado, con la ambiciosa idea de conseguir una unificación de sus métodos y notaciones, que posteriormente se reorientó a un objetivo más modesto, para dar lugar al Unified Modeling Language (UML), la notación OO más popular en la actualidad.

Algunos métodos OO con notaciones predecesoras de UML son OOAD (Booch), OOSE (Jacobson), Coad & Yourdon, Shaler & Mellor y OMT (Rumbaugh).

Y algunas metodologías orientadas a objetos que utilizan la notación UML son Rational Unified Process (RUP), Open y Métrica (que también soporta la notación estructurada).

Metodologías tradicionales (no ágiles)

Las metodologías no ágiles son aquéllas que están guiadas por una fuerte planificación durante todo el proceso de desarrollo. Son llamadas también metodologías tradicionales o clásicas, donde se realiza una intensa etapa de análisis y diseño antes de la construcción del sistema.

Todas las propuestas metodológicas indicadas antes pueden considerarse como metodologías tradicionales. Aunque en el caso de RUP, por el énfasis especial que presenta en cuanto a su adaptación a las condiciones del proyecto (mediante su configuración previa a aplicarse), realizando una configuración adecuada, podría considerarse ágil.

Metodologías ágiles

Un proceso es ágil cuando el desarrollo de software es incremental (entregas pequeñas de software con ciclos rápidos), cooperativo (cliente y desarrolladores trabajan juntos constantemente con una comunicación cercana), sencillo (el método en sí mismo es fácil de aprender y modificar, y bien documentado), y adaptable (permite realizar cambios de último momento)1.


Método


Esquema

Ahora revisemos en qué consiste cada uno de estos tipos de desarrollo.


Desarrollo basado en modelos

En el desarrollo de sistemas, el método más empleado es el de la creación de modelos. Si se tiene como objetivo el desarrollo de un SI de tamaño mediano o grande, la creación de un modelo permite dividir el trabajo en fases de supervisión más fácil.


Desarrollo rápido de aplicaciones (RAD)

Este enfoque se basa en el uso de herramientas, técnicas y metodologías que permiten acelerar su desarrollo, ya que mejora su ciclo de vida, reduce costos y proporciona consistencia, en tanto se pueden utilizar las herramientas existentes en el mercado que generan código a partir de especificaciones y modelos empresariales.

Dentro de este enfoque está el desarrollo ágil o programación extrema, llamados así porque permiten incorporar cambios al tiempo de desarrollo, mediante reuniones cara a cara que deben tener los usuarios y el equipo de desarrollo. De este modo se corrigen y afinan los detalles hasta satisfacer los requerimientos de los usuarios.

Las metodologías ágiles permiten disminuir de manera sustancial el tiempo de desarrollo y elevan la satisfacción de los usuarios.

La programación extrema (XP) consiste en integrar un equipo de parejas de programadores que trabajan juntos en el diseño, codificación y prueba de las partes de un SI. Debido a la naturaleza de esta metodología se reducen los errores por el trabajo iterativo.

Como producto de esta metodología se diseñan prototipos de manera iterativa. Cada iteración permite ir depurando una parte del sistema, ya que se van identificando y analizando las necesidades de los usuarios, y perfeccionando esa parte del sistema al integrar a los usuarios en el proceso de retroalimentación. Luego, los prototipos ya depurados y perfeccionados se van transformando en modelos que se aplicarán para la construcción final del SI.


Paquete de software de aplicaciones

Una tercera opción ante la necesidad de un nuevo SI es la compra de un paquete de software de aplicaciones informáticas. Las necesidades de los usuarios en cada organización son distintas; sin embargo, un conjunto de ellas hace referencia a procesos estandarizados y que no varían (o muy poco) a lo largo del tiempo. Incluso hay paquetes con programas informáticos que proporcionan todas las funciones necesarias para cubrir dichas necesidades a bajo costo.

Algunos ejemplos de aplicaciones estandarizadas son aquéllas que hacen referencia a la gestión de nóminas, control de inventarios, etcétera.

Por otro lado, la decisión entre la compra de un paquete de software y el desarrollo de un nuevo sistema se realiza a través de un análisis costo-beneficio.

La personalización de los paquetes de software de aplicaciones ha llevado a muchas organizaciones a decidirse por esta opción, en lugar de crear su propio sistema de información. Con todo, suelen aparecer problemas con estos paquetes informáticos entre las partes personalizadas y las nuevas versiones.


Software

(s. a.) (2014). Software [ilustración].
Tomada de https://pixabay.com/es/software-cd-dvd-digital-disco-417880/


Desarrollo por parte del usuario final

Una organización se conforma de una gran cantidad de áreas funcionales, integradas por un número considerable de personas con múltiples necesidades en relación con la información y su trabajo. En diversas ocasiones es imposible desarrollar y/o comprar todos los SI necesarios para cubrir el total de requerimientos de los usuarios de una organización, por lo que se puede acudir al desarrollo por parte del usuario final.

La aparición de los lenguajes de cuarta generación o de gráficos ha colaborado a la manifestación de sistemas de información desarrollados por usuarios finales. Estos nuevos lenguajes no exigen conocimientos técnicos; simplemente basta introducir las necesidades de los usuarios y el lenguaje genera y compila el código necesario para su utilización. Microsoft Access es un claro ejemplo de lenguaje de cuarta generación.

Aunque el desarrollo de un sistema mediante lenguajes de cuarta generación puede aportar muchos beneficios, también tiene asociados grandes peligros; incluso algunos mayores que en las opciones anteriores.


Subcontratación

La quinta y última opción en el desarrollo de un SI es la subcontratación. El análisis, diseño e implementación de un SI necesita de una gran cantidad de recursos tanto a nivel económico como humano. Por ello, muchas organizaciones no pueden costearlo. Tal como ocurre con las anteriores opciones en el desarrollo de un SI, también existen varios inconvenientes en la subcontratación.

Técnica


Gran parte del éxito de un proyecto de desarrollo de software radica en la identificación de las necesidades del negocio (definidas por la alta dirección), así como en la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del sistema.

Entre las técnicas utilizadas para la especificación de requisitos se encuentran las siguientes:

Casos de uso

Los casos de uso se construyen a partir del conocimiento de los usuarios, en tanto son similares a los problemas o situaciones cotidianas, lo que permite ir ajustando el sistema de manera adecuada a la operación. Para garantizar la participación de los usuarios en este proceso se emplea un lenguaje común y cotidiano, evitando el uso de tecnicismos.


Esquema


En otras palabras, un caso de uso es una secuencia de interacciones que se desarrollarán entre un sistema y sus actores en respuesta a un evento que inicia un actor principal sobre el propio sistema.

Herramientas

Las herramientas de ayuda para el desarrollo de un sistema de información (SI) surgieron para intentar solucionar los problemas inherentes a los proyectos de generación de aplicaciones informáticas: plazos y presupuestos incumplidos, insatisfacción del usuario, escasa productividad y baja calidad de los desarrollos.

Algunas de estas herramientas se dirigen principalmente a mejorar la calidad, como las CASE (Computer Aided Software Engineering, o ingeniería de software asistida por ordenador). Otras se encauzan a mejorar la productividad durante la fase de construcción, como los lenguajes de cuarta generación (4GL - fourth generation language).


Esquema de clasificación


Revisa la siguiente información sobre la clasificación de tales herramientas.


Sirven para modelizar los requisitos de información estratégica de una organización. Proporcionan un "metamodelo", del cual se pueden obtener SI específicos. Su objetivo principal es ayudar a comprender cómo se mueve la información entre las distintas unidades organizativas. Son de gran beneficio cuando se diseñan nuevas estrategias para los SI, o los métodos y sistemas actuales no satisfacen las necesidades de la organización.

Permiten al desarrollador crear un modelo del sistema que se va a construir, y también su evaluación de validez y consistencia. Proporcionan un grado de confianza en la representación del análisis y ayudan a eliminar errores con anticipación.

Herramientas de análisis y diseño

Comprenden los compiladores, editores y depuradores de los lenguajes de programación convencionales.

Sirven de ayuda a la adquisición, medición, simulación y prueba de los equipos lógicos desarrollados.

Tipos de herramientas

Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones para la evaluación de especificaciones de un SI, o para un mejor entendimiento sobre cómo los requisitos de un SI se ajustan a los objetivos perseguidos.

Las herramientas de mantenimiento se clasifican del siguiente modo:


La mayoría de las herramientas CASE de gestión de proyectos se centran en un elemento específico de la gestión del proyecto, en lugar de proporcionar un soporte global para la actividad de gestión. Utilizando un conjunto seleccionado de ellas se pueden realizar estimaciones de esfuerzo, costo y duración, hacer un seguimiento continuo del proyecto, estimar la productividad y la calidad, etcétera.

También existen herramientas que permiten al comprador el desarrollo de un sistema, hacer un seguimiento que va desde los requisitos del pliego de prescripciones técnicas inicial, hasta el trabajo de desarrollo que los convierte en un producto final.

A su vez, estas herramientas se clasifican del siguiente modo:

Esquema de clasificación

Se engloban en esta categoría las herramientas que recogen las actividades aplicables en todo el proceso de desarrollo:


Proceso de desarrollo de software


El objetivo de un proceso de desarrollo de software es la producción de software de manera eficaz y eficiente, como se muestra en la siguiente figura:


Proceso de desarrollo de software


Este proceso se ve influenciado por la creatividad y decisiones de las personas involucradas: es totalmente intelectual. Se puede comparar con cualquier proyecto de ingeniería, aunque en el desarrollo de software intervienen retos adicionales relacionados con las características y naturaleza del producto que se obtendrá. Los rasgos particulares que están vinculados y tienen influencia en el proceso se detallan a continuación.

Por pequeña que sea, la complejidad de un producto de software es tal que imposibilita conseguir su confiabilidad al 100 %. Una gran combinación de factores hace muy difícil verificar de manera exhaustiva todas las situaciones posibles de ejecución que puedan presentarse (ingreso de datos, valores de las variables, almacenamiento de datos, relación con otras aplicaciones y el equipo en el que se trabaja, entre otros aspectos).

Por la intangibilidad y lo abstracto de un producto de software es muy complicado definir sus características y requisitos, sobre todo si no se dispone de antecedentes de desarrollos equivalentes. Esta situación dificulta el establecimiento y consolidación de los requisitos, y estos pueden sufrir cambios durante el desarrollo y aún después de terminado el producto.

El desarrollo de software no es un proceso único. No existe un proceso general que se apegue a todas las características y contextos de los proyectos de desarrollo. Tal diversidad dificulta la automatización de todo un proceso de desarrollo de software.


Ciclo de vida del desarrollo de sistema

Al proceso de desarrollo de un sistema también se le conoce como ciclo de vida de desarrollo de sistema, debido a que las actividades relacionadas en él son continuas. Conforme se va creando un sistema, el proyecto utiliza calendarios que consideran fechas límite, hasta la conclusión y aceptación.

Todo proceso de desarrollo se inicia cuando la gerencia o el personal correspondiente se percatan de la necesidad de un sistema por perfeccionarse o mejorarse. Las principales etapas del desarrollo de un sistema son las siguientes:


Etapas de desarrollo del SI



Definición

El ciclo de vida del desarrollo de los sistemas (SDLC, Systems Development Life Cycle) es un enfoque por fases para el análisis y el diseño, cuya premisa principal consiste en que los sistemas se desarrollan mejor utilizando un ciclo específico de actividades del analista y el usuario.


Etapas/fases

Los analistas no se ponen de acuerdo en la cantidad de fases que incluye el SDLC, pero en general alaban su enfoque organizado. Aquí se ha dividido el ciclo en siete fases, como se observa en la siguiente figura. A pesar de que cada fase se explica por separado, nunca se realiza como un paso aislado. Es posible que varias actividades ocurran de manera simultánea y algunas de ellas podrían repetirse. Es más práctico considerar que el SDLC se realiza por fases (con actividades en pleno apogeo que se traslapan con otras hasta terminarse por completo) y no en pasos aislados.




Fases del ciclo de vida del desarrollo de los sistemas



Modelos de ciclo de vida

Para cada una de las fases listadas en el punto anterior hay subetapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo de sistemas define el orden para las actividades involucradas y la coordinación entre ellas, su enlace y realimentación. Entre los modelos más conocidos están el de cascada o secuencial, en espiral e iterativo incremental.

Revisa la información sobre los siguientes modelos:


El primer modelo de desarrollo de software publicado se derivó de otros procesos de ingeniería2, y tomó las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución, que representa como fases separadas del proceso.


Modelo de desarrollo en cascada


Una fase no comienza hasta que termine la fase anterior, y generalmente se incluye la corrección de los problemas encontrados en fases previas.

En la práctica, este modelo no es lineal e involucra varias iteraciones e interacción entre las distintas fases de desarrollo.

El modelo de desarrollo en espiral (véase la siguiente figura), propuesto por Boehm3, es actualmente uno de los más conocidos. En este caso, el ciclo de desarrollo se representa como una espiral, en vez de una serie de actividades sucesivas con retrospectiva de una actividad a otra.


Modelo de desarrollo en espiral

Mills4 sugirió el enfoque incremental de desarrollo como una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos, hasta adquirir experiencia con el sistema (véase la siguiente figura).


Sistema incompleto


Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo, dependiendo del conocimiento que se tenga sobre los requisitos a implementar. Si se posee un buen dominio de estos es recomendable el de cascada, y si se tienen dudas es mejor el evolutivo.

Relación de los sistemas de información con el desarrollo de sistemas


Los sistemas de información en las organizaciones representan actualmente uno de los recursos más valiosos (incluso al mismo nivel que los recursos humanos, técnicos y financieros).

Para llevar a cabo el diseño de un sistema de información es necesario contar con diversas habilidades para recopilar, analizar e interpretar los datos y documentos necesarios para diagnosticar los problemas de la organización y la forma como pueden solucionarse mediante un sistema de información (SI).

El análisis y diseño del sistema comprende todo un proceso para examinar las situaciones de la organización, con el fin de mejorarlas con nuevos métodos y procedimientos.

En los últimos años las tecnologías han estado evolucionando día a día; por tal motivo es de suma importancia estar actualizado en el ámbito del desarrollo de sistemas; debes conocer los conceptos básicos, la metodología y herramientas de programación para poder desarrollar un software y cubrir las necesidades necesarias para el usuario o empresa. Por otro lado, es importante saber el ciclo de vida de un sistema y sus requerimientos necesarios o software para que no caduque, se haga obsoleto o en otro caso actualizarlo para tomar una buena decisión.




(s. a.) (2017). Tecnologías [fotografía].
Tomada de https://pixabay.com/es/ordenador-port%C3%A1til-apple-teclado-2589420/

Actividad. Desarrollando sistemas o software

En esta actividad reforzarás los conocimientos adquiridos con el estudio del tema, ya que te permitirá identificar el proceso del desarrollo de sistemas.

Selecciona la opción que corresponde a la descripción del desarrollo de sistemas que se te presenta.


Autoevaluación. ¿Qué tanto aprendí sobre desarrollo de sistemas?

Ahora deberás verificar tu aprendizaje sobre el tema. Identifica el proceso, definición y herramientas del ciclo de vida de un sistema.

Selecciona falso o verdadero según corresponda. Al finalizar podrás conocer tu desempeño.

Fuentes de información

Básicas


Fernández, V. (2006). Desarrollo de sistemas de información: una metodología basada en el modelado. México: UPC.

Kendall, K. E. (2005). Análisis y diseño de sistemas (6.ª ed.). México: Pearson.

Pressman, R. (1997). Ingeniería del software: un enfoque práctico. México: McGraw-Hill.



Cómo citar