Saltar al contenido principal
LibreTexts Español

10: Desarrollo de Sistemas de Información

  • Page ID
    153177
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Objetivos de aprendizaje

    Al finalizar con éxito este capítulo, usted será capaz de:

    • explicar el proceso general de desarrollo de una nueva aplicación de software;
    • explicar las diferencias entre las metodologías de desarrollo de software;
    • comprender los diferentes tipos de lenguajes de programación utilizados para desarrollar software;
    • comprender algunos de los problemas relacionados con el desarrollo de sitios web y aplicaciones móviles; y
    • identificar las cuatro políticas primarias de implementación.

    Introducción

    Cuando alguien tiene una idea para que una nueva función sea realizada por una computadora, ¿cómo se hace realidad esa idea? Si una empresa quiere implementar un nuevo proceso de negocio y necesita nuevo hardware o software para apoyarlo, ¿cómo hacen que suceda? En este capítulo, discutiremos los diferentes métodos para tomar esas ideas y llevarlas a la realidad, un proceso conocido como desarrollo de sistemas de información.

    Programación

    Como aprendimos en el capítulo 2, el software se crea a través de la programación. La programación es el proceso de crear un conjunto de instrucciones lógicas para que un dispositivo digital las siga utilizando un lenguaje de programación. El proceso de programación a veces se llama “codificación” porque la sintaxis de un lenguaje de programación no está en una forma que todos puedan entender — es en “código”.

    El proceso de desarrollar un buen software no suele ser tan sencillo como sentarse y escribir algún código. Es cierto que a veces un programador puede escribir rápidamente un programa corto para resolver una necesidad. Pero la mayoría de las veces, la creación de software es un proceso intensivo de recursos que involucra a varios grupos diferentes de personas en una organización. En las siguientes secciones, vamos a revisar varias metodologías diferentes para el desarrollo de software.

    Ciclo de vida de desarrollo de sistemas

    La primera metodología de desarrollo que vamos a revisar es el ciclo de vida de desarrollo de sistemas (SDLC). Esta metodología se desarrolló por primera vez en la década de 1960 para gestionar los grandes proyectos de software asociados a los sistemas corporativos que se ejecutan en mainframes. Se trata de una metodología muy estructurada y reacia al riesgo diseñada para gestionar grandes proyectos que incluyeron múltiples programadores y sistemas que tendrían un gran impacto en la organización.

    Cascada SDLC.

    Cascada SDLC

    Existen diversas definiciones de la metodología SDLC, pero la mayoría contiene las siguientes fases.

    1. Análisis Preliminar. En esta fase, se hace una revisión de la solicitud. ¿Es posible crear una solución? ¿Qué alternativas existen? ¿Qué se está haciendo actualmente al respecto? ¿Este proyecto es una buena opción para nuestra organización? Una parte clave de este paso es un análisis de factibilidad, que incluye un análisis de la factibilidad técnica (¿es posible crear esto?) , la viabilidad económica (¿podemos permitirnos hacerlo?) , y la factibilidad legal (¿se nos permite hacerlo?). Este paso es importante para determinar si el proyecto debería incluso comenzar.
    2. Análisis de Sistemas. En esta fase, uno o más analistas de sistemas trabajan con diferentes grupos de interés para determinar los requisitos específicos para el nuevo sistema. No se realiza ninguna programación en este paso. En cambio, se documentan los procedimientos, se entrevistan a los actores clave y se desarrollan los requisitos de datos para obtener una imagen general de exactamente lo que se supone que debe hacer el sistema. El resultado de esta fase es un documento de requisitos del sistema.
    3. Diseño de Sistemas. En esta fase, un diseñador toma el documento de requisitos del sistema creado en la fase anterior y desarrolla los detalles técnicos específicos requeridos para el sistema. Es en esta fase que los requerimientos del negocio se traducen en requerimientos técnicos específicos. Aquí se desarrolla el diseño de la interfaz de usuario, la base de datos, las entradas y salidas de datos y la generación de informes. El resultado de esta fase es un documento de diseño de sistema. Este documento tendrá todo lo que un programador necesitará para crear realmente el sistema.
    4. Programación. El código finalmente se escribe en la fase de programación. Utilizando el documento de diseño del sistema como guía, un programador (o equipo de programadores) desarrolla el programa. El resultado de esta fase es un programa de trabajo inicial que cumple con los requisitos establecidos en la fase de análisis del sistema y el diseño desarrollado en la fase de diseño del sistema.
    5. Pruebas. En la fase de pruebas, el programa de software desarrollado en la fase anterior se somete a una serie de pruebas estructuradas. La primera es una prueba unitaria, que prueba partes individuales del código en busca de errores o errores. A continuación se realiza una prueba del sistema, donde se prueban los diferentes componentes del sistema para garantizar que funcionen juntos correctamente. Finalmente, la prueba de aceptación del usuario permite a aquellos que estarán usando el software probar el sistema para asegurarse de que cumple con sus estándares. Cualquier error, error o problema encontrado durante las pruebas se aborda y luego se vuelve a probar.
    6. Implementación. Una vez desarrollado y probado el nuevo sistema, tiene que ser implementado en la organización. Esta fase incluye la capacitación de los usuarios, el suministro de documentación y la conversión de cualquier sistema anterior al nuevo sistema. La implementación puede tomar muchas formas, dependiendo del tipo de sistema, el número y tipo de usuarios, y cuán urgente es que el sistema entre en funcionamiento. Estas diferentes formas de implementación se tratan más adelante en el capítulo.
    7. Mantenimiento. Esta fase final se lleva a cabo una vez que se completa la fase de implementación. En esta fase, el sistema cuenta con un proceso de soporte estructurado: se corrigen los errores reportados y se evalúan e implementan las solicitudes de nuevas funciones; las actualizaciones del sistema y las copias de seguridad se realizan de forma regular.

    La metodología SDLC a veces se conoce como la metodología de cascada para representar cómo cada paso es una parte separada del proceso; solo cuando se completa un paso puede comenzar otro paso. Después de cada paso, una organización debe decidir si pasar al siguiente paso o no. Esta metodología ha sido criticada por ser bastante rígida. Por ejemplo, no se permiten cambios en los requisitos una vez iniciado el proceso. No hay software disponible hasta después de la fase de programación.

    Nuevamente, SDLC se desarrolló para proyectos grandes y estructurados. Los proyectos que utilizan SDLC a veces pueden tardar meses o años en completarse. Debido a su inflexibilidad y la disponibilidad de nuevas técnicas y herramientas de programación, se han desarrollado muchas otras metodologías de desarrollo de software. Muchos de estos conservan algunos de los conceptos subyacentes de SDLC pero no son tan rígidos.

    Desarrollo rápido de aplicaciones

    El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software (o desarrollo de sistemas) que se enfoca en construir rápidamente un modelo de trabajo del software, obtener comentarios de los usuarios y luego usar esa retroalimentación para actualizar el modelo de trabajo. Después de varias iteraciones de desarrollo, se desarrolla e implementa una versión final.

    La Metodología RAD.

    La metodología RAD (Dominio Público)

    La metodología RAD consta de cuatro fases:

    1. Planeación de Requisitos. Esta fase es similar a las fases de análisis preliminar, análisis de sistemas y diseño del SDLC. En esta fase, se definen los requisitos generales para el sistema, se identifica un equipo y se determina la factibilidad.
    2. Diseño de Usuario. En esta fase, los representantes de los usuarios trabajan con los analistas del sistema, diseñadores y programadores para crear interactivamente el diseño del sistema. Una técnica para trabajar con todos estos diversos grupos de interés es la llamada sesión JAD. JAD es un acrónimo para el desarrollo de aplicaciones conjuntas. Una sesión JAD reúne a todos los grupos de interés para tener una discusión estructurada sobre el diseño del sistema. Los desarrolladores de aplicaciones también se sientan en esta reunión y observan, tratando de entender la esencia de los requisitos.
    3. Construcción. En la fase de construcción, los desarrolladores de aplicaciones, trabajando con los usuarios, construyen la siguiente versión del sistema.Este es un proceso interactivo, y se pueden hacer cambios a medida que los desarrolladores están trabajando en el programa. Este paso se ejecuta en paralelo con el paso Diseño de Usuario de manera iterativa, hasta que se desarrolla una versión aceptable del producto.
    4. Cutover. En este paso, que es similar al paso de implementación del SDLC, el sistema se pone en marcha. Aquí se completan todos los pasos necesarios para pasar del estado anterior al uso del nuevo sistema.

    Como puede ver, la metodología RAD está mucho más comprimida que SDLC. Muchos de los pasos de SDLC se combinan y el enfoque está en la participación e iteración del usuario. Esta metodología es mucho más adecuada para proyectos más pequeños que SDLC y tiene la ventaja adicional de brindar a los usuarios la capacidad de proporcionar retroalimentación a lo largo del proceso. SDLC requiere más documentación y atención al detalle y se adapta bien a proyectos grandes y intensivos en recursos. RAD tiene más sentido para proyectos más pequeños que requieren menos recursos y necesitan desarrollarse rápidamente.

    Metodologías ágiles

    Las metodologías ágiles son un conjunto de metodologías que utilizan cambios incrementales con un enfoque en la calidad y la atención al detalle. Cada incremento se libera en un periodo de tiempo específico (llamado caja de tiempo), creando un calendario de lanzamiento regular con objetivos muy específicos. Si bien se consideran una metodología separada de la RAD, comparten algunos de los mismos principios: desarrollo iterativo, interacción con el usuario, capacidad de cambio. Las metodologías ágiles se basan en el “Manifiesto Ágil”, lanzado por primera vez en 2001.

    Las características de los métodos ágiles incluyen:

    • pequeños equipos interfuncionales que incluyen miembros y usuarios del equipo de desarrollo;
    • reuniones diarias de estado para discutir el estado actual del proyecto;
    • incrementos cortos de plazos (de días a una o dos semanas) para cada cambio que se complete; y
    • al final de cada iteración, se completa un proyecto de trabajo para demostrar a las partes interesadas.

    El objetivo de las metodologías ágiles es proporcionar la flexibilidad de un enfoque iterativo al tiempo que se garantiza un producto de calidad.

    Metodología Lean

    La Metodología Lean.

    La metodología lean

    Una última metodología que discutiremos es un concepto relativamente nuevo tomado del bestseller de negocios The Lean Startup, de Eric Reis. En esta metodología, el foco está en tomar una idea inicial y desarrollar un producto mínimo viable (MVP). El MVP es una aplicación de software que funciona con la funcionalidad suficiente para demostrar la idea detrás del proyecto. Una vez desarrollado el MVP, se entrega a usuarios potenciales para su revisión. La retroalimentación sobre el MVP se genera de dos formas: (1) observación directa y discusión con los usuarios, y (2) estadísticas de uso recopiladas del propio software. Usando estas dos formas de retroalimentación, el equipo determina si deben continuar en la misma dirección o repensar la idea central detrás del proyecto, cambiar las funciones y crear un nuevo MVP. Este cambio de estrategia se llama pivote. Se desarrollan varias iteraciones del MVP, con nuevas funciones agregadas cada vez en función de la retroalimentación, hasta completar un producto final.

    La mayor diferencia entre la metodología lean y las demás metodologías es que no se conoce el conjunto completo de requisitos para el sistema cuando se inicia el proyecto. A medida que se publica cada iteración del proyecto, las estadísticas y los comentarios recopilados se utilizan para determinar los requisitos. La metodología lean funciona mejor en un entorno emprendedor donde una empresa está interesada en determinar si vale la pena desarrollar su idea para una aplicación de software.

    El Triángulo de Calidad

    Al desarrollar software, o cualquier tipo de producto o servicio, existe una tensión entre los desarrolladores y los diferentes grupos de partes interesadas, como la gerencia, los usuarios y los inversionistas. Esta tensión se relaciona con la rapidez con la que se puede desarrollar el software (tiempo), cuánto dinero se gastará (costo) y qué tan bien se construirá (calidad). El triángulo de calidad es un concepto sencillo. Afirma que para cualquier producto o servicio que se esté desarrollando, sólo se pueden abordar dos de los siguientes: tiempo, costo y calidad.

    El triángulo de calidad.

    El triángulo de la calidad

    Entonces, ¿qué significa que solo puedas abordar dos de los tres? Significa que no se puede completar un proyecto de bajo costo y alta calidad en poco tiempo. Sin embargo, si estás dispuesto o eres capaz de gastar mucho dinero, entonces un proyecto se puede completar rápidamente con resultados de alta calidad (mediante la contratación de más buenos programadores). Si la fecha de finalización de un proyecto no es una prioridad, entonces se puede completar a un costo menor con resultados de mayor calidad. Por supuesto, estas son solo generalizaciones, y es posible que diferentes proyectos no encajen perfectamente con este modelo. Pero en general, este modelo nos ayuda a entender las compensaciones que debemos hacer cuando estamos desarrollando nuevos productos y servicios.

    Lenguajes de Programación

    Como señalé anteriormente, los desarrolladores de software crean software utilizando uno de varios lenguajes de programación. Un lenguaje de programación es un lenguaje artificial que proporciona una forma para que un programador cree código estructurado para comunicar la lógica en un formato que puede ser ejecutado por el hardware de la computadora. En las últimas décadas, muchos tipos diferentes de lenguajes de programación han evolucionado para satisfacer muchas necesidades diferentes. Una forma de caracterizar los lenguajes de programación es por su “generación”.

    Generaciones de lenguajes de programación

    Los primeros lenguajes eran específicos del tipo de hardware que había que programar; cada tipo de hardware de computadora tenía un lenguaje de programación de bajo nivel diferente (de hecho, incluso hoy en día hay diferencias en el nivel inferior, aunque ahora están oscurecidos por lenguajes de programación de nivel superior). En estos primeros idiomas, hubo que ingresar instrucciones muy específicas línea por línea, un proceso tedioso.

    Los lenguajes de primera generación se llaman código de máquina. En el código de máquina, la programación se realiza configurando directamente unos y ceros reales (los bits) en el programa usando código binario. Aquí hay un programa de ejemplo que agrega 1234 y 4321 usando el lenguaje de la máquina:

    10111001 00000000
    11010010 10100001
    00000100 00000000
    10001001 00000000
    00001110 10001011
    00000000 00011110
    00000000 00011110
    00000000 00000010
    10111001 00000000
    11100001 00000011
    00010000 11000011
    10001001 10100011
    00001110 00000100
    00000010 00000000

    El lenguaje ensamblador es el lenguaje de segunda generación. El lenguaje ensamblador da frases similares al inglés a las instrucciones de código automático, lo que facilita la programación. Un programa de lenguaje ensamblador debe ejecutarse a través de un ensamblador, que lo convierte en código de máquina. Aquí hay un programa de ejemplo t hat agrega 1234 y 4321 usando lenguaje ensamblador:

    MOV CX,1234
    MOV DS:[0],CX
    MOV CX,4321
    MOV AX,DS:[0]
    MOV BX,DS:[2]
    ADD AX,BX
    MOV DS:[4],AX

    Los lenguajes de tercera generación no son específicos del tipo de hardware en el que se ejecutan y se parecen mucho más a los idiomas hablados. La mayoría de los lenguajes de tercera generación deben ser compilados, un proceso que los convierte en código de máquina. Los lenguajes conocidos de tercera generación incluyen BASIC, C, Pascal y Java. Aquí hay un ejemplo usando BASIC:

    A=1234
    B=4321
    C=A+B
    END

    Los lenguajes de cuarta generación son una clase de herramientas de programación que permiten el desarrollo rápido de aplicaciones mediante interfaces y entornos intuitivos. Muchas veces, un lenguaje de cuarta generación tiene un propósito muy específico, como la interacción con bases de datos o la redacción de informes. Estas herramientas pueden ser utilizadas por aquellos con muy poca formación formal en programación y permiten el rápido desarrollo de aplicaciones y/o funcionalidad. Ejemplos de lenguajes de cuarta generación incluyen: Clipper, FOCUS, FoxPro, SQL y SPSS.

    ¿Por qué alguien querría programar en un idioma de nivel inferior cuando requieren mucho más trabajo? La respuesta es similar a por qué algunos prefieren conducir automóviles de cambio de palanca en lugar de transmisión automática: control y eficiencia. Los lenguajes de nivel inferior, como el lenguaje ensamblador, son mucho más eficientes y se ejecutan mucho más rápidamente. También tienes un control más fino sobre el hardware. A veces, una combinación de lenguajes de nivel superior e inferior se mezclan para obtener lo mejor de ambos mundos: el programador creará la estructura general y la interfaz usando un lenguaje de nivel superior pero utilizará lenguajes de nivel inferior para las partes del programa que se usan muchas veces o requieren más precisión.

    El espectro del lenguaje de programación.

    El espectro del lenguaje de programación

    Compilado vs. interpretado

    Además de clasificar un lenguaje de programa en función de su generación, también se puede clasificar por si está compilado o interpretado. Como hemos aprendido, un lenguaje informático está escrito en una forma legible por humanos. En un lenguaje compilado, el código del programa se traduce a una forma legible por máquina llamada ejecutable que se puede ejecutar en el hardware. Algunos lenguajes compilados conocidos incluyen C, C++ y COBOL.

    Un lenguaje interpretado es aquel que requiere que se instale un programa en tiempo de ejecución para poder ejecutarse. Este programa en tiempo de ejecución interpreta el código del programa línea por línea y lo ejecuta. Los lenguajes interpretados son generalmente más fáciles de trabajar, pero también son más lentos y requieren más recursos del sistema. Ejemplos de lenguajes interpretados populares incluyen BASIC, PHP, PERL y Python. Los lenguajes web de HTML y Javascript también se considerarían interpretados porque requieren de un navegador para poder ejecutarse.

    El lenguaje de programación Java es una interesante excepción a esta clasificación, ya que en realidad es un híbrido de los dos. Un programa escrito en Java se compila parcialmente para crear un programa que pueda ser entendido por la Máquina Virtual Java (JVM). Cada tipo de sistema operativo tiene su propia JVM que debe ser instalada, que es lo que permite que los programas Java se ejecuten en muchos tipos diferentes de sistemas operativos.

    Procesal vs. orientado a objetos

    Un lenguaje de programación procedimental está diseñado para permitir que un programador defina un punto de partida específico para el programa y luego ejecutarlo secuencialmente. Todos los lenguajes de programación tempranos funcionaban de esta manera. A medida que las interfaces de usuario se volvieron más interactivas y gráficas, tenía sentido que los lenguajes de programación evolucionaran para permitir al usuario definir el flujo del programa. El lenguaje de programación orientado a objetos se configura para que el programador defina “objetos” que pueden tomar ciertas acciones en función de la entrada del usuario. Es decir, un programa procesal se enfoca en la secuencia de actividades a realizar; un programa orientado a objetos se enfoca en los diferentes ítems que se manipulan.

    Por ejemplo, en un sistema de recursos humanos, se necesitaría un objeto “EMPLEADO”. Si el programa necesitaba recuperar o establecer datos con respecto a un empleado, primero crearía un objeto empleado en el programa y luego establecería o recuperaría los valores necesarios. Cada objeto tiene propiedades, que son campos descriptivos asociados al objeto. En el siguiente ejemplo, un objeto empleado tiene las propiedades “Nombre”, “Número de empleado”, “Fecha de nacimiento” y “Fecha de contratación”. Un objeto también tiene “métodos”, que pueden tomar acciones relacionadas con el objeto. En el ejemplo, hay dos métodos. El primero es “ComputePay ()”, que devolverá el monto actual adeudado al empleado. El segundo es “listEmployees ()”, que recuperará una lista de empleados que reportan a este empleado.

    Objeto: EMPLEADO
    Nombre Número de
    empleado
    Fecha de nacimiento
    Fecha de contratación
    ComputePay ()
    ListEmployees ()

    Figura: Un ejemplo de un objeto


    ¿Qué es COBOL?

    Si llevas mucho tiempo alrededor de la programación empresarial, es posible que hayas oído hablar del lenguaje de programación COBOL. COBOL es un lenguaje procesal, compilado que en un momento fue el lenguaje de programación principal para aplicaciones empresariales. Inventado en 1959 para su uso en grandes computadoras mainframe, COBOL es una abreviatura de lenguaje común orientado a los negocios. Con la llegada de lenguajes de programación más eficientes, COBOL ahora rara vez se ve fuera de las aplicaciones antiguas y heredadas.

    Herramientas de Programación

    Para escribir un programa, un programador necesita poco más que un editor de texto y una buena idea. No obstante, para ser productivo, debe poder verificar la sintaxis del código y, en algunos casos, compilar el código. Para ser más eficientes en la programación, se pueden utilizar herramientas adicionales, como un entorno de desarrollo integrado (IDE) o herramientas de ingeniería de software asistida por computadora (CASE).

    Entorno de Desarrollo Integrado

    Para la mayoría de los lenguajes de programación, se puede utilizar un IDE. Un IDE proporciona una variedad de herramientas para el programador, y generalmente incluye:

    • un editor para escribir el programa que codificará por colores o resaltará palabras clave del lenguaje de programación;
    • un sistema de ayuda que brinde documentación detallada sobre el lenguaje de programación;
    • un compilador/intérprete, que permitirá al programador ejecutar el programa;
    • una herramienta de depuración, que proporcionará al programador detalles sobre la ejecución del programa con el fin de resolver problemas en el código; y
    • un mecanismo de check-in/check-out, que permite a un equipo de programadores trabajar juntos en un proyecto y no escribir sobre los cambios de código de los demás.

    Probablemente el paquete de software IDE más popular en este momento es Visual Studio de Microsoft. Visual Studio es el IDE para todos los lenguajes de programación de Microsoft, incluidos Visual Basic, Visual C++ y Visual C#.

    Herramientas CASE

    Si bien un IDE proporciona varias herramientas para ayudar al programador a escribir el programa, el código aún debe escribirse. Las herramientas de ingeniería de software asistida por computadora (CASE) permiten a un diseñador desarrollar software con poca o ninguna programación. En cambio, la herramienta CASE escribe el código para el diseñador. Las herramientas CASE vienen en muchas variedades, pero su objetivo es generar código de calidad basado en la entrada creada por el diseñador.


    Construyendo un sitio web

    En los primeros días de la World Wide Web, la creación de un sitio web requería saber usar el lenguaje de marcado de hipertexto (HTML). Hoy en día, la mayoría de los sitios web se construyen con una variedad de herramientas, pero el producto final que se transmite a un navegador sigue siendo HTML. HTML, en su forma más simple, es un lenguaje de texto que permite definir los diferentes componentes de una página web. Estas definiciones se manejan mediante el uso de etiquetas HTML, las cuales consisten en texto entre corchetes. Por ejemplo, una etiqueta HTML puede indicar al navegador que muestre una palabra en cursiva, que se vincule a otra página web o que inserte una imagen. En el siguiente ejemplo, se está definiendo algún texto como encabezado mientras que se enfatiza otro texto.

    HTML Sencillo

    HTML Sencillo

    Salida HTML simple

    Salida HTML simple

    Mientras que HTML se utiliza para definir los componentes de una página web, las hojas de estilo en cascada (CSS) se utilizan para definir los estilos de los componentes en una página. El uso de CSS permite que se establezca el estilo de un sitio web y se mantenga constante en todo momento. Por ejemplo, si el diseñador quería que todos los encabezados de primer nivel (h1) fueran azules y centrados, él o ella podría establecer el estilo “h1″ para que coincida. El siguiente ejemplo muestra cómo podría verse esto.

    HTML con CSS

    HTML con CSS

    HTML con salida CSS

    HTML con salida CSS

    La combinación de HTML y CSS se puede utilizar para crear una amplia variedad de formatos y diseños y ha sido ampliamente adoptada por la comunidad de diseño web. Los estándares para HTML son establecidos por un órgano de gobierno llamado World Wide Web Consortium. La versión actual de HTML es HTML 5, que incluye nuevos estándares para video, audio y dibujo.

    Cuando los desarrolladores crean un sitio web, no lo escriben manualmente en un editor de texto. En cambio, utilizan herramientas de diseño web que generan el HTML y CSS para ellos. Herramientas como Adobe Dreamweaver permiten al diseñador crear una página web que incluya imágenes y elementos interactivos sin escribir una sola línea de código. Sin embargo, los diseñadores web profesionales aún necesitan aprender HTML y CSS para tener un control total sobre las páginas web que están desarrollando.

    Construir vs. Comprar

    Cuando una organización decide que es necesario desarrollar un nuevo programa de software, debe determinar si tiene más sentido construirlo ellos mismos o comprarlo a una compañía externa. Esta es la decisión de “construir vs. comprar”.

    La compra de software de una compañía externa tiene muchas ventajas. Primero, generalmente es menos costoso comprar un paquete de software que construirlo. En segundo lugar, cuando se compra un paquete de software, está disponible mucho más rápidamente que si el paquete se construye internamente. Las aplicaciones de software pueden tardar meses o años en construirse; un paquete comprado puede estar en funcionamiento dentro de un mes. Un paquete comprado ya ha sido probado y muchos de los errores ya han sido resueltos. Es el papel de un integrador de sistemas hacer que varios sistemas comprados y los sistemas existentes en la organización trabajen juntos.

    También hay desventajas en la compra de software. Primero, el mismo software que estás usando puede ser utilizado por tus competidores. Si una empresa está tratando de diferenciarse en función de un proceso de negocio que se encuentra en ese software comprado, va a tener dificultades para hacerlo si sus competidores utilizan el mismo software. Otra desventaja de la compra de software es el proceso de personalización. Si compra un paquete de software de un proveedor y luego lo personaliza, tendrá que administrar esas personalizaciones cada vez que el proveedor proporcione una actualización. Esto puede convertirse en un dolor de cabeza administrativo, ¡por decir lo menos!

    Incluso si una organización determina comprar software, todavía tiene sentido pasar por muchos de los mismos análisis que harían si lo fueran a construir ellos mismos. Esta es una decisión importante que podría tener un impacto estratégico a largo plazo en la organización.

    Servicios Web

    Como vimos en el capítulo 3, el paso a la computación en la nube ha permitido que el software sea visto como un servicio. Una opción que tienen las empresas en estos días es licenciar funciones proporcionadas por otras empresas en lugar de escribir el código ellas mismas. Estos se llaman servicios web, y pueden simplificar enormemente la adición de funcionalidad a un sitio web.

    Por ejemplo, supongamos que una empresa desea proporcionar un mapa que muestre la ubicación de alguien que ha llamado a su línea de soporte. Al utilizar los servicios web de la API de Google Maps, pueden crear un Google Map directamente en su aplicación. O una empresa de calzado podría facilitar a sus minoristas la venta de zapatos en línea al proporcionar un servicio web de tamaño de calzado que los minoristas podrían incrustar directamente en su sitio web.

    Los servicios web pueden difuminar las líneas entre “construir vs. comprar”. Las empresas pueden optar por crear una aplicación de software por sí mismas, pero luego comprar la funcionalidad de los proveedores para complementar su sistema.

    Computación para el usuario final

    En muchas organizaciones, el desarrollo de aplicaciones no se limita a los programadores y analistas del departamento de tecnología de la información. Especialmente en organizaciones más grandes, otros departamentos desarrollan sus propias aplicaciones específicas de departamento. Las personas que construyen estos no están necesariamente capacitadas en programación o desarrollo de aplicaciones, sino que tienden a ser adeptos con las computadoras. Una persona, por ejemplo, que es experta en un paquete de software particular, tal como una hoja de cálculo o paquete de base de datos, puede ser llamada a construir aplicaciones más pequeñas para su uso por su propio departamento. Este fenómeno se conoce como desarrollo de usuario final, o computación de usuario final.

    La computación del usuario final puede tener muchas ventajas para una organización. Primero, acerca el desarrollo de aplicaciones a quienes las usarán. Debido a que los departamentos de TI a veces están bastante atrasados, también proporciona un medio para que el software se cree más rápidamente. Muchas organizaciones fomentan la computación del usuario final para reducir la tensión en el departamento de TI.

    La computación del usuario final también tiene sus desventajas. Si los departamentos dentro de una organización están desarrollando sus propias aplicaciones, la organización puede terminar con varias aplicaciones que realizan funciones similares, lo cual es ineficiente, ya que se trata de una duplicación de esfuerzos. En ocasiones, estas diferentes versiones de una misma aplicación terminan proporcionando diferentes resultados, trayendo confusión cuando los departamentos interactúan. Estas aplicaciones suelen ser desarrolladas por alguien con poca o ninguna formación formal en programación. En estos casos, el software desarrollado puede tener problemas que luego tienen que ser resueltos por el departamento de TI.

    La computación del usuario final puede ser beneficiosa para una organización, pero debe ser administrada. El departamento de TI debe establecer pautas y proporcionar herramientas para los departamentos que quieran crear sus propias soluciones. La comunicación entre departamentos ayudará en gran medida hacia el uso exitoso de la computación del usuario final.

    Creación de una aplicación móvil

    En muchos sentidos, construir una aplicación para un dispositivo móvil es exactamente lo mismo que construir una aplicación para una computadora tradicional. Comprender los requisitos para la aplicación, diseñar la interfaz, trabajar con los usuarios, todos estos pasos aún deben llevarse a cabo.

    Entonces, ¿qué tiene de diferente construir una aplicación para un dispositivo móvil? De alguna manera, las aplicaciones móviles son más limitadas. Una aplicación que se ejecuta en un dispositivo móvil debe diseñarse para que sea funcional en una pantalla más pequeña. Las aplicaciones móviles deben diseñarse para usar los dedos como dispositivo señalador principal. Los dispositivos móviles generalmente tienen menos memoria disponible, espacio de almacenamiento y potencia de procesamiento.

    Las aplicaciones móviles también tienen muchas ventajas sobre las aplicaciones creadas para computadoras tradicionales. Las aplicaciones móviles tienen acceso a la funcionalidad del dispositivo móvil, que suele incluir características como datos de geolocalización, mensajería, la cámara e incluso un giroscopio.

    Una de las preguntas más importantes en cuanto al desarrollo para dispositivos móviles es esta: ¿Queremos desarrollar alguna aplicación? Una aplicación móvil es una propuesta costosa, y solo se ejecutará en un tipo de dispositivo móvil a la vez. Por ejemplo, si creas una aplicación para iPhone, los usuarios con teléfonos Android no tienen suerte. Cada app tarda varios miles de dólares en crearse, por lo que puede que este no sea el mejor uso de tus fondos.

    Muchas organizaciones se están alejando del desarrollo de una aplicación específica para un dispositivo móvil y, en cambio, están haciendo que sus sitios web sean más funcionales en dispositivos móviles. Usando un marco de diseño web llamado diseño responsivo, un sitio web puede hacerse altamente funcional sin importar qué tipo de dispositivo lo esté navegando. Con un sitio web receptivo, las imágenes se redimensionan según el tamaño de la pantalla del dispositivo, y el texto fluye y se dimensiona correctamente para una visualización óptima. Puedes encontrar más información sobre el diseño responsive aquí.

    Metodologías de implementación

    Una vez que se desarrolla (o adquiere) un nuevo sistema, la organización debe determinar el mejor método para implementarlo. Convencer a un grupo de personas para que aprendan y utilicen un nuevo sistema puede ser un proceso muy difícil. El uso de nuevo software, y los procesos de negocio a los que da lugar, puede tener efectos de largo alcance dentro de la organización.

    Existen varias metodologías diferentes que una organización puede adoptar para implementar un nuevo sistema. Cuatro de los más populares se enumeran a continuación.

    • Corte directo. En la metodología de implementación de corte directo, la organización selecciona una fecha particular en la que el antiguo sistema ya no va a ser utilizado. En esa fecha, los usuarios comienzan a usar el nuevo sistema y el sistema antiguo no está disponible. Las ventajas de utilizar esta metodología son que es muy rápida y la menos costosa. Sin embargo, este método también es el más riesgoso. Si el nuevo sistema tiene un problema operativo o si los usuarios no están debidamente preparados, podría resultar desastroso para la organización.
    • Implementación piloto. En esta metodología, un subconjunto de la organización (llamado grupo piloto) comienza a usar el nuevo sistema antes que el resto de la organización. Esto tiene un menor impacto en la empresa y permite que el equipo de soporte se centre en un grupo más pequeño de individuos.
    • Operación en paralelo. Con la operación en paralelo, los sistemas antiguos y nuevos se utilizan simultáneamente por un período de tiempo limitado. Este método es el menos riesgoso porque el viejo sistema todavía se está utilizando mientras que el nuevo sistema esencialmente se está probando. Sin embargo, esta es, con mucho, la metodología más cara ya que se duplica el trabajo y se necesita soporte para ambos sistemas en su totalidad.
    • Implementación por fases. En la implementación por fases, se utilizan diferentes funciones de la nueva aplicación ya que las funciones del sistema antiguo se desactivan. Este enfoque permite que una organización se mueva lentamente de un sistema a otro.

    Cuál de estas metodologías de implementación a utilizar depende de la complejidad e importancia de los sistemas antiguos y nuevos.

    Gestión del Cambio

    A medida que los nuevos sistemas se ponen en línea y los sistemas antiguos se van eliminando gradualmente, se vuelve importante administrar la forma en que se implementa el cambio en la organización. El cambio nunca debe introducirse en el vacío. La organización debe asegurarse de comunicar los cambios propuestos antes de que ocurran y planear minimizar el impacto del cambio que ocurrirá después de la implementación. La gestión del cambio es un componente crítico de la supervisión de TI.

    Mantenimiento

    Una vez que se ha introducido un nuevo sistema, entra en la fase de mantenimiento. En esta fase, el sistema está en producción y está siendo utilizado por la organización. Si bien el sistema ya no se está desarrollando activamente, es necesario realizar cambios cuando se encuentran errores o se solicitan nuevas funciones. Durante la fase de mantenimiento, la administración de TI debe garantizar que el sistema continúe alineado con las prioridades del negocio y continúe funcionando bien.

    Resumen

    El desarrollo de software es mucho más que programación. El desarrollo de nuevas aplicaciones de software requiere de varios pasos, desde el proceso formal de SDLC hasta procesos más informales como la programación ágil o las metodologías lean. Los lenguajes de programación han evolucionado desde lenguajes específicos de máquina de muy bajo nivel hasta lenguajes de nivel superior que permiten a un programador escribir software para una amplia variedad de máquinas. La mayoría de los programadores trabajan con herramientas de desarrollo de software que les proporcionan componentes integrados para hacer que el proceso de desarrollo de software sea más eficiente. Para algunas organizaciones, construir sus propias aplicaciones de software no tiene más sentido; en cambio, eligen comprar software creado por un tercero para ahorrar costos de desarrollo y acelerar la implementación. En la computación del usuario final, el desarrollo de software ocurre fuera del departamento de tecnología de la información Al implementar nuevas aplicaciones de software, existen varios tipos diferentes de metodologías de implementación que deben ser consideradas.

    Preguntas de Estudio

    1. ¿Cuáles son los pasos en la metodología SDLC?
    2. ¿Qué es el desarrollo de software RAD?
    3. ¿Qué hace que la metodología lean sea única?
    4. ¿Cuáles son las tres diferencias entre los idiomas de segunda generación y tercera generación?
    5. ¿Por qué una organización consideraría construir su propia aplicación de software si es más económico comprarla?
    6. ¿Qué es el diseño responsive?
    7. ¿Cuál es la relación entre HTML y CSS en el diseño de sitios web?
    8. ¿Cuál es la diferencia entre la metodología de implementación piloto y la metodología de implementación paralela?
    9. ¿Qué es la gestión del cambio?
    10. ¿Cuáles son las cuatro metodologías de implementación diferentes?

    Ejercicios

    1. ¿Qué metodología de desarrollo de software sería mejor si una organización necesitara desarrollar una herramienta de software para un pequeño grupo de usuarios en el departamento de marketing? ¿Por qué? ¿Qué metodología de implementación deberían utilizar? ¿Por qué?
    2. Haciendo tu propia investigación, encuentra tres lenguajes de programación y categorizalos en estas áreas: generación, compilado vs. interpretado, procesal vs. orientado a objetos.
    3. Algunos argumentan que HTML no es un lenguaje de programación. Haciendo tu propia investigación, encuentra tres argumentos de por qué no es un lenguaje de programación y tres argumentos para por qué lo es.
    4. Lee más sobre el diseño responsivo usando el enlace dado en el texto. Proporcione los enlaces a tres sitios web que utilicen el diseño responsive y explique cómo demuestran el comportamiento de diseño responsivo.

    This page titled 10: Desarrollo de Sistemas de Información is shared under a CC BY license and was authored, remixed, and/or curated by David T. Bourgeois (Saylor Foundation) .