Capítulo 2 Fundamentos Teóricos



Documentos relacionados
Introducción a Visual Studio.Net

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Capítulo 4. Prueba de Adaptabilidad

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

PEEPER PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS. Mayo Versión 2.1 OSCAR IVAN LÓPEZ PULIDO

GLOSARIO DE TÉRMINOS

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Sistema de Mensajería Empresarial para generación Masiva de DTE

ANEXO XII. Denominación: Administración y programación en sistemas de planificación de recursos empresariales y de gestión de relaciones con clientes.

GUÍA BÁSICA DE USO DEL SISTEMA RED

Instituto Tecnológico de Costa Rica

MANTENIMIENTO Y SOPORTE

Elementos requeridos para crearlos (ejemplo: el compilador)

Entidad Formadora: Plan Local De Formación Convocatoria 2010

GUÍA DE SEGURIDAD DE LA INFORMACIÓN GUÍA GOBIERNO CORPORATIVO PARA EMPRESAS SEP

La gestión de contenidos en el nuevo Portal del Ministerio de Hacienda

Novell Vibe 4.0. Marzo de Inicio rápido. Inicio de Novell Vibe. Introducción a la interfaz de Novell Vibe y sus funciones

Curso: Arquitectura Empresarial basado en TOGAF

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

SISTEMAS OPERATIVOS AVANZADOS

Sistemas de Operación II

Modelo de actualización y soporte

Capítulo 1. Introducción

Act 1: Revisión de Presaberes. Lectura No. 1. Título de la Lectura: El Computador

Prácticas comerciales convencionales

UF0320: Aplicaciones informáticas de tratamiento de textos

Unidad VI: Supervisión y Revisión del proyecto

Actualización de versión a Bizagi 10.x

Figure 16-1: Phase H: Architecture Change Management

Servicios Administrados al Cliente

Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET

Ambiente Virtual de Comercio Electrónico B2B para la Comunidad Virtual de Negocios del departamento del Cauca

Manual etime para supervisores

ADMINISTRACIÓN DE BASES DE DATOS DISTRIBUIDAS

Componentes de Integración entre Plataformas Información Detallada

CONFIGURACIÓN DE LA METODOLOGÍA OPENUP V1.0. Centro Ideoinformática

Gestión Documental con Microsoft Office SharePoint Server 2007 (MOSS) Ignacio López - Ingeniero en Informática Software Architect en Alhambra-Eidos

Unidad 9. Implementación. M.C. Martín Olguín

Módulo 2. Inicio con Java

Manual Usuario Manual Usuario

ORIENTACIONES SIMCE TIC

Guía de inicio rápido del Administrador de Colecciones de WorldShare de OCLC

Propiedad Colectiva del Código y Estándares de Codificación.

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, Madrid

CAPÍTULO III MARCO TEÓRICO. Cada día cambian las condiciones de los mercados debido a diferentes factores como: el

Tema 8: Gestión de la Configuración

Workflows? Sí, cuántos quiere?

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES

Consolidación inteligente de servidores con System Center

Implantación de un Sistema de Control de Versiones de Software para los desarrollos de soluciones (Add-On) en SAP Bussiness One.

REQUERIMIENTOS NO FUNCIONALES

Capítulo 11. Conclusiones y trabajo futuro

IAP ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS

PROCESO GESTIÓN ADMINISTRATIVA INSTRUCTIVO TÉCNICO ALISTAMIENTO SERVIDORES GESTIÓN DOCUMENTAL

MODULO ADMINISTRATIVO

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Impresión de datos variables

IBM Rational Configuration Management V8.0.1 proporciona soluciones empresariales para la gestión de cambios y de configuración

En este capítulo se describe las herramientas, así como los procesos involucrados en el análisis y desarrollo de sistemas de información, por otro

Para tener una visión general de las revistas de estadística, ir a:

CUESTIONARIO DE AUTOEVALUACIÓN

Ofimática Aplicada. Elaborado por: Lic. Ronald Méndez

SISTEMA DE GESTIÓN DE BASE DE DATOS (Database Management System (DBMS))

4. Base de datos XML nativa: Marklogic

Google Calendar. Google Calendar

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

SAP BusinessObjects Edge BI Standard Package La solución de BI preferida para. Empresas en Crecimiento

Tema 1 Introducción a la Ingeniería de Software

Internet Explorer proporciona diversas características que le ayudan a proteger su privacidad y

NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN

APLICACIONES WEB GOOGLE ANAYLITICS

Conceptos de redes. LAN (Local Area Network) WAN (Wide Area Network)

Direccionamiento IPv4

DataMAX pa r a PS3. Manual del Usuario V1.0

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Inter American Accreditation Cooperation. Grupo de prácticas de auditoría de acreditación Directriz sobre:

1 Vista de Casos de Uso

Política de Privacidad del Grupo Grünenthal

EDICIÓN Y FORMATO (II)

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

LEY QUE NORMA EL USO, ADQUISICIÓN Y ADECUACIÓN DEL SOFTWARE EN LA ADMINISTRACIÓN PUBLICA

Para obtener una cuenta de padre

Visual Studio 2008 es el conjunto de herramientas de

BASE DE DATOS RELACIONALES

Autenticación Centralizada

Manual de Usuario SIGECOF MANUAL DE USUARIO SIGECOF DISTRIBUCIÓN INTERNA DE CUOTA DE COMPROMISO

MATERIAL 2 EXCEL 2007

Manual de Procedimientos

4. METODOLOGÍA. 4.1 Materiales Equipo

SISTEMAS DE INFORMACIÓN II TEORÍA

El proceso unificado en pocas palabras

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015.

Transcripción:

Capítulo 2 Fundamentos Teóricos Antecedentes Las herramientas informáticas, aunque evolucionan rápidamente, son sumamente útiles para los desarrolladores que quieren mantenerse a la vanguardia y que además, pretenden hacer un desempeño productivo; en tal sentido, con anterioridad ya se han realizado investigaciones similares, entre las seleccionadas por guardar cierta relación con este trabajo tenemos: Antecedentes a nivel local. Alvarez E. (2008), realizó un Sistema de Control de Versiones y Sistema para el Control de Perfiles de Usuario de Banfoandes Banco Universal C.A. El primer proyecto estableció un sistema accesible vía Web para el control de versiones de software de Banfoandes utilizando repositorios Subversión sobre una plataforma GNU/Linux Debian; mediante el establecimiento de este sistema se obtuvo una herramienta que permite llevar un mayor control y coordinación de los procesos y actividades realizadas en el procesos de desarrollo de software interno del banco. La metodología utilizada fue una implementación del modelo de desarrollo lineal secuencial. El segundo proyecto se desarrollo un sistema accesible vía Web para el control de perfiles de usuario de Banfoandes. El sistema representa una herramienta que facilita la gestión de seguridad de la información ya que proporciona información que agiliza las auditorías de usuario, de niveles de acceso, análisis de cumplimiento de normativas entre otros controles. La metodología utilizada fue el desarrollo de prototipos mediante el cual se pudo establecer en poco tiempo lo que se deseaba del sistema correctamente. Ambos proyectos representan un tipo de investigación proyectiva ya que el primero propone una alternativa de cambio que optimice el proceso de desarrollo de software realizado en Banfoandes y el segundo propone una alternativa de solución que reduzca la problemática relacionada con la gestión de perfiles de usuario del banco. 16

Bases Teóricas Software. Estándar 729 del IEEE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. [4] Pressman, R. (2005) [5], El software de computadora es el producto que los ingenieros de software construyen y después mantienen en el largo plazo. Incluye los programas que se ejecutan dentro de una computadora de cualquier tamaño y arquitectura, el contenido que se presenta conforme los programas se ejecutan y los documentos, tanto físicos como virtuales, que engloban todas las formas de medios electrónicos. (p. 22) Proceso. Es el conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema. Proceso de Software. Pressman, R. (1998) [6], Es el enfoque que se toma cuando el software es tratado por la ingeniería, pero la tecnología del software también acompaña a las tecnologías que pueblan el proceso (métodos técnicos y herramientas automatizadas) (p. 17), al respecto Baetjer H., Jr. (Citado en Pressman, R., 2005) comenta que: El proceso proporciona una interacción entre los usuarios y las herramientas en evolución, y entre los diseñadores y sus herramientas (tecnología). Es un proceso interactivo donde la herramienta en evolución sirve como un medio para la comunicación, en el cual cada nueva etapa del diálogo logra obtener más conocimiento útil de las personas involucradas. (p. 22) En este sentido, Pressman, R. (1998) [6], indica que el proceso de software se puede representar como un ciclo de resolución de problemas, como se puede observar 17

en la figura 2, que consta de cuatro etapas distintas: estado actual de sucesos, definición de problemas, desarrollo técnico y por último integración de soluciones, donde todas ellas coexistirían simultáneamente en algún nivel de detalle. (p. 21) Definición de Problemas Estado Actual Desarrollo Técnico Integración de Soluciones a) Estado Actual Definición de Problemas Integración de Soluciones Desarrollo Técnico Definición de Estado Actual Estado Actual Problemas Integración de Desarrollo Técnico Soluciones Estado Actual Definición de Problemas Integración de Soluciones Desarrollo Técnico b) Figura 2: a) Las fases de un ciclo de resolución de problemas b) Fases dentro de las fases del ciclo de resolución de problemas Fuente: Ingeniería del Software. Un enfoque práctico. Pressman R. 18

Sumado a lo expuesto, el autor da una breve explicación de las fases del desarrollo de software de la siguiente forma: La definición del problema identifica el problema específico a resolverse, el desarrollo técnico resuelve el problema a través de la aplicación de alguna tecnología, y la integración de soluciones ofrece los resultados (por ejemplo: documentos, programas, datos, nueva función comercial, nuevo producto) a los que solicitan la solución en primer lugar. Ahora bien debido a la complejidad que de manera implícita tiene el proceso de desarrollo de software, se han presentado distintos modelos para manejar dicha complejidad, entre los cuales se pueden nombrar el modelo lineal secuencial, el modelo de construcción de prototipos, el modelo, el modelo DRA, el modelo incremental, el modelo espiral, entre muchos otros; en este sentido Pressman, R., indica que cada uno de estos modelos representa un intento de ordenar una actividad inherentemente caótica y estos modelos se caracterizan por la forma en que ayudan al control y coordinación de software real. (p. 22) Además de los modelos de desarrollo de software que se utilizan en la evolución del software durante el desarrollo también existe una fase de mantenimiento del mismo, donde se le realizan modificaciones sucesivas al producto, es decir, el software cambia con el tiempo por diversas razones y por esto es necesario controlar ésta evolución. Por lo tanto, se puede hacer uso de herramientas, técnicas, tecnologías, entre otros que permitan facilitar el proceso de desarrollo de software, entre estos se encuentra los sistemas de control de versiones de lo cual se tratará con más detalle más adelante. Código Fuente. El código fuente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento. El código fuente de un 19

programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto) que sí pueda ser ejecutado por el hardware de la computadora. Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción. Sistema de Control de Versiones. Versión es la forma particular que adopta un objeto en un contexto dado. Desde el punto de vista de evolución, es la forma particular de un objeto en un instante dado. Se suele denominar revisión. Una de las vías para mejorar toda la complejidad que trae consigo el proceso de desarrollo de software de sistemas para el control de versiones, los cuales, según Berlín, D. y Rooney, G. (2006) [7], proveen una forma para manejar la complejidad de trabajar con un grupo de personas en un proyecto en específico. (p. 18) Así mismo los autores señalen que los sistemas para el control de versiones permiten almacenar los nuevos resultados del proyecto (que comúnmente serían el código fuente y la documentación para el software se está desarrollando) en un ente centralizado, de este modo los miembros de los equipos de desarrollo pueden tener acceso a las últimas versiones de los archivos críticos cuando lo deseen. Collins-Sussman, B. y Otros (2004) [8], mencionan que una de las funciones más importantes que cumple un sistema de control de versiones, es la de proveer un reflejo del progreso del proyecto, mediante la revisión histórica de los cambios y modificaciones hechos durante el proceso de su creación. Adicional a esto, los autores mencionados explican que la capacidad de llevar un registro histórico de los cambios hechos, permite durante el ciclo de vida del proyecto, hacer una 20

retrospectiva y ver porque el proyecto tiene la forma actual, entender la fuente de una falla, o extraer un cambio en particular que pueda ser aplicado a otra versión del proyecto. (p. 1) En este sentido es pertinente hacer referencia a los elementos de control versiones, de los cuales los principales son los que se describe a continuación: 1. El repositorio y Directorio de trabajo o copia local de repositorio: la mayoría de los sistemas de control de versiones almacenan proyectos versionados en un repositorio central el cual, según Nagel, W. (2005) [9], puede ser simplemente un directorio estructurado en un servidor con cada archivo versionado almacenado separadamente, o puede ser una base de datos con las entradas para los diferentes archivos en un proyecto. Es posible incluso ser un complejo sistema distribuido redundante que almacena el proyecto versionado en todo el mundo. Por el cual el autor indica que sin importar la forma en la que el repositorio maneje los archivos, la coincidencia entre un sistema de control de versiones es que los desarrolladores no trabajan directamente en los archivos en el repositorio, porque tienen algún tipo de directorio de trabajo accesible desde su máquina local para agregar, hacer cambios como sea necesario durante el pro proceso de desarrollo y una vez que los cambios estén completos el desarrollador podrá enviar los cambios de vuelta al repositorio, donde se convertirán en parte del proyecto y estarán disponibles para que los demás miembros del equipo de desarrollo puedan actualizar sus copias de trabajo y adquirir los nuevo cambios hechos en el proyecto. (p. 7) 2. Revisiones: Mason, M. (2006) [10], indica que cada vez que un desarrollador envíe cambios de un proyecto al repositorio, dichos cambios serán almacenados en una revisión como lo muestra la figura 3. En este sentido, el autor expresa que por medio de las revisiones los sistemas de control de versiones, no sólo se almacenan el estado más reciente de un proyecto, sino que además permiten 21

almacenar un historial de cambios hechos al proyecto durante su desarrollo (p. 21). En referencia a lo anterior, Nagel, W. [9], señala que dependiendo del sistema para el control de versiones, se pueden tener revisiones globales que hagan referencia al estado de todo el repositorio en un punto dado, o tener revisiones a nivel de archivos que se refieran al estado de un archivo individual. (p. 8) Repositorio Revisión 1 Revisión 2 Revisión 3 Commit foo.c Commit bar.c Commit changes to foo.c Figura 3: Repositorio global con varias versiones Fuente: Subversion Version Control. Nagel W. 3. Registros: Nagel, W. (2005) [9], indica que hacer un seguimiento de los cambios en el código es importante. Sin embargo, realmente hacer un proceso de desarrollo organizado, no es suficiente. Es útil saber que líneas de código se añadieron, los cambios al proyecto. Por esto el autor plantea los registro permitirían a los desarrolladores para acceder en la lógica y el por qué del cambio que están guardando, de manera clara. (p. 9) 4. Etiquetas: Nagel, W. (2005) [9], la mayoría de sistemas de control de versiones proporcionar un medio por el cual se puede etiquetar revisiones, de modo que puedan ser devueltos a una fecha posterior. Esto libera a los desarrolladores de dependencia de las referencias a la mala relación contextuales, tales como la revisión de números o fechas. Las etiquetas se pueden colocar los hitos en el desarrollo, para permitir el desarrollo de un proyecto para continuar, sin perjudicar la capacidad de alguien para luego ir atrás y ver una instantánea de la fuente del proyecto en ese hito. (p. 10) 22

5. Ramas: Collins-Sussman, B. (2004) [8], es una línea de desarrollo que existe de forma independiente a otra pero comparte una historia común si mira suficientemente atrás en el tiempo, véase figura 4. Una rama siempre nace como una copia de algo, y a partir de ahí, pasa a generar su propia historia. (p. 44) 6. Bloqueo versus Fusión: Nagel, W. (2005) [9], estás son dos formas principales en sistemas de control de versiones que tienden a manejar estas colisiones. La mayoría de sistemas de control de versiones, utiliza alguno de estos dos métodos la mayor parte del tiempo, pero muchas utilizan un sistema híbrido que permite una combinación de ambos métodos. En un sistema de bloqueo de archivos, el programador bloquea un archivo versionado cuando empieza a hacer cambios. Si bien el archivo está bloqueado, ningún otro desarrollador se le permitirá realizar ningún cambio. Entonces, cuando el programador ha terminado, el cambio de archivo puede ser cometido de nuevo en el depósito y el archivo puede ser desbloqueado. La ventaja para el bloqueo de archivos es que se aplica muy organizada la división del trabajo, con el fin de minimizar el número de veces en que dos desarrolladores necesidad de modificar el mismo archivo de origen o la sección de manera simultánea. Por otro lado, pueden perjudicar el desarrollo si el progreso es bloqueado por un desarrollador y hay otros desarrolladores que necesitan trabajar en el mismo archivo. El problema puede ser magnificado aún más si uno de los desarrolladores que se olvida desbloquear el archivo cuando haya terminado. En general, el bloqueo de las escalas muy mal usado no es viable para una amplia utilización por los proyectos en los que participan más de una persona. Para el tratamiento de la evitación de colisiones y resolución es el uso de automáticos o semi-automática de archivos fusiones. En este modelo, los desarrolladores pueden modificar los archivos en su copia del repositorio, sin tener en cuenta lo que otros están modificándolo también. Luego, una vez que el desarrollador ha terminado de hacer sus cambios, puede cometer esos cambios, y el sistema de control de versiones comprueba si hay alguna colisión causada por dos personas al mismo tiempo en la edición de un archivo. En muchos casos, el sistema automáticamente combina los dos archivos juntos, pero si no puede, la mayoría de los 23

sistemas facilitará la toma de decisiones a los desarrolladores sobre la información en la zona en conflicto, para permitir que el desarrollador fusione los cambios a mano. La principal ventaja de la fusión de un sistema es que libera a los desarrolladores trabajar de forma independiente de otros desarrolladores. Esto es especialmente ventajoso en múltiples proyectos en los que los desarrolladores probablemente trabajen en diferentes zonas del mismo archivo al mismo tiempo. Release 1.1 Release 1.x Branch Main Branch Release 1.0 Release 2.0 Figura 4: Ramas Fuente: Subversion Version Control. Nagel W. Los elementos anteriormente dados se presentan de manera común en la mayoría de sistemas para el control de versiones, entre los cuales se pueden nombrar RCS, CVS, Arch, Rational ClearCase, Microsoft Visual SourceSafe, Subversion, Microsoft Team Foundation Server, entre otros. Sobre los dos últimos sistemas se hará énfasis en su explicación, ya que fueron usados para el establecimiento de la tecnología para el control de versiones en SofOS C.A., además de ser cada uno de los sistemas de control más robustos y confiables que se encuentran en la actualidad. Subversion. De acuerdo con Collins-Sussman B. (2004) [8], Subversión es un sistema de control de versiones libre/código fuente abierto (patrocinado como proyecto de código fuente abierto por tigris.org), el cual está diseñado específicamente como un sistema de control de versiones CVS de sustitución (desarrollado a partir de 2000), es decir, posee las características y el modelo de desarrollo pero sin duplicar los defectos obvios de CVS, como mantiene las 24

características básicas de CVS permite que cualquier usuario pueda emigrar fácilmente a Subversion.(p. 19) Por su parte, Nagel, W. (2005) [9], el proyecto Subversion se inició en 2000, es organizada (como un proyecto de código abierto) por tigris.org. Subversion promueve su viabilidad no sólo como un repositorio para el código fuente, sino una verdadera herramienta de ingeniería de software, es un instrumento flexible, capaz de soportar muchos aspectos de las organizaciones ingeniería de software y puede encajar en una variedad de diferentes procesos de desarrollo. Asimismo, el autor indica que subversión es un sistema general que puede ser usado para administrar cualquier conjunto de archivos, ya sea archivos de código fuente, la lista de la compra de comestibles hasta combinaciones de video digital y más allá. Características de Subversion. Subversion proporciona: Versionado de directorios. Según Collins-Sussman, B. y Otros (2005) [8], Subversion implementa un sistema de archivos versionado virtual que sigue los cambios por todo el árbol de directorios sobre el tiempo. Archivos y directorios son versionados. (p. 3) Historial real de versiones. Collins-Sussman, B. y Otros (2005) [8], se refiere que Subversion puede añadir, borrar, copiar, y renombrar archivos y directorios. Y cada archivo nuevo añadido comienza con un historial nuevo, limpio y enteramente suyo. Según los autores cada vez que el repositorio acepta un envío, este da lugar a un nuevo de estado del árbol de archivos llamado revisión. A cada revisión se le asigna un número natural único, una unidad mayor que le numero de revisión anterior. La revisión inicial de un repositorio recién creado se numera con el cero (0), y consiste únicamente en un directorio raíz vacío; la figura 5, ilustra una buena forma de visualizar el repositorio, con ciertas revisiones. Cada número de revisión tiene un 25

árbol colgando de archivos debajo de él, y cada árbol es una "instantánea" de la forma en que el repositorio tras cada cometer. (p. 2) Figura 5: El Repositorio con tres revisiones Fuente: Control de Versiones con Subversion. Collins-Sussman B. y Otros. Envíos atómicos. Collins-Sussman, B. y Otros (2005) [8], una colección de modificaciones cualquiera entra en el repositorio completamente, o no lo hace en absoluto. Esto permite a los desarrolladores construir y enviar los cambios como trozos lógicos, y previene problemas que pueden ocurrir cuando solo una porción de un conjunto de cambios son enviados al repositorio exitosamente. (p. 2) Metadatos versionados. Collins-Sussman, B. y Otros (2005) [8], cada archivo y directorio tiene un conjunto de propiedades asociado con él. Usted puede crear y almacenar cualquier par arbitrario de clave/valor que desee. Las propiedades son versionadas a través del tiempo, justo como el contenido de los archivos. (p. 3) Opciones de las capas de red. Collins-Sussman, B. y Otros (2005) [8], Subversion tiene una noción abstracta del acceso al repositorio, haciendo fácil para las personas el implementar nuevos mecanismos de red. Subversion puede conectarse 26

al Servidor de HTTP Apache como un módulo de extensión. Esto da a Subversion una gran ventaja en estabilidad e interoperabilidad, y acceso instantáneo a las características existentes que ofrece este servidor autenticación, autorización, comprensión de la transmisión. También está disponible un servidor de Subversion independiente, más liviano. Este servidor habla un protocolo propio, el cual puede ser fácilmente tunelizado a través de SSH. (p. 3) Manipulación consistente de datos. Collins-Sussman, B. y Otros (2005) [8], Subversion expresa las diferencias del archivo usando un algoritmo de diferenciación binario, que funcionan idénticamente con archivos de texto (legibles para humanos) y archivos binarios (ilegibles para humanos). Ambos tipos de archivos son guardados igualmente comprimidos en el repositorio, y las diferencias son transmitidas en ambas direcciones a través de la red. (p. 3) Ramificación y etiquetado eficientes. Collins-Sussman, B. y Otros (2005) [8], el coste de ramificación y etiquetado no necesita ser proporcional al tamaño del proyecto. Subversion crea ramas y etiquetas simplemente copiando el proyecto, usando un mecanismo similar al enlace duro. De este modo estas operaciones toman solamente una cantidad de tiempo pequeña y constante. (p. 3) API bien desarrollada. Collins-Sussman, B. y Otros (2005) [8], Subversion no tiene un equipaje histórico; está implementado como una colección de librerías compartidas de C con una API bien definida. Esto hace a Subversion extremadamente fácil de mantener y reutilizable por otras aplicaciones y lenguajes. (p. 3) Arquitectura de Subversion. Collins-Sussman, B. y Otros (2005) [8], Subversion tiene una arquitectura cliente servidor, en el cuál el repositorio se puede encontrar distribuido en un servidor, pudiendo ser accedido de diferentes formas por los clientes. 27

La arquitectura se divide en capas para permitir utilizar una variedad de clientes, con diferentes formas de acceso y estructuras del repositorio, dependiendo del uso que le quiera dar a la herramienta, véase figura 6. Figura 6: Arquitectura de Subversion Fuente: Control de Versiones con Subversion. Collins-Sussman B. y Otros. Interfaz del Cliente: Dentro de este módulo se encuentran las interfaces utilizadas por el cliente para visualizar y hacer operaciones con el repositorio Subversion, dentro de estas interfaces se encuentran las basadas en líneas de comandos (como el cliente que por defecto trae Subversion llamado svn), las interfaces gráficas desarrolladas por terceros basadas en Web como Mindquarry, 28

USVN, Insurrection, Polarion SVNWebClient, entre otros, o software residente en el computador local de cada desarrollador, como TortoiseSVN, FishEye, SvnX, RapidSVN, SmartSVN, VisualSVN, AnkhSVN, entre otros. Interfaz del Repositorio: Este módulo consiste principalmente en los métodos de acceso al repositorio, los cuales dependen del tipo de interfaz de cliente utilice, y de su ubicación dentro de la red. El servidor provee tres formas a los clientes de acceder al repositorio: 1. Acceso Local: Para aquellos clientes que residen en la misma máquina que el repositorio es posible acceder en forma directa, siendo ésta la forma más rápida de acceso pero no utilizado usualmente ya que los clientes residen distribuidos en la red. 2. Acceso HTTP: Para utilizar este acceso es necesario tener configurado el servidor web de Apache. Este acceso utiliza el protocolo WebDAV que proporciona funcionalidad para crear, cambiar y mover archivos en un servidor remoto. 3. Acceso por svn: El servidor también provee de un protocolo propio de subversión que permite acceder al repositorio en forma remota. un repositorio. Estructura del Repositorio. Hay dos estructuras que se pueden elegir al crear 1. Berkeley DB: Es una base de datos que almacena toda la información del repositorio y fue la primera forma de almacenamiento utilizado por subversión. 2. FSFS: La estructura es un archivo plano de texto que almacena toda la información. Tiene ventajas de performance por ser una estructura más simple y portable que la anterior y la recomendada para ser utilizada. La desventaja es que no es tan madura ya que creo cuatro años después a la Berkeley. 29

Team Foundation Server. (TFS) Según la documentación realizada por la comunidad de msdn [11], es un conjunto de herramientas y tecnologías que permiten a un equipo colaborar y coordinar sus esfuerzos a la hora de crear un producto o llevar a cabo un proyecto. TFS mejora la comunicación del equipo, hace un seguimiento del estado del trabajo, admite funciones en los equipos, representa al proceso de equipo e integra las herramientas del equipo. Trabaja con la plataforma Microsoft, especialmente aplicaciones.net. Figura 7: Visual Studio Team System Fuente: http://msdn.microsoft.com Visual Studio Team System (VSTS) se compone de cinco productos, que pueden clasificarse en del lado del servidor y aplicaciones cliente y entre ellos se encuentra Team Foundation Server, véase figura 7. Microsoft anima a las empresas que utilizan Team System para hacer uso de la Microsoft Solutions Framework, es un meta modelo que describe los negocios y software de procesos de ingeniería para ayudar a implementar un eficaz proceso de desarrollo de software. Team System admite dos marcos conceptuales para el desarrollo de software, ágil y Modelo de Madurez de Capacidad de Integración (Agile and Capability Maturity Model Integration (CMMI)). 30

Características del TFS. Según la documentación realizada por la comunidad de msdn, las características son: Colaboración: La finalidad principal de Team Foundation es permitir la colaboración en un equipo para facilitar la creación de un producto o la realización de un proyecto. Comunicación mejorada: El propósito de la mejora de la comunicación en un equipo es evitar que se pierda información o trabajo cuando se transfieren tareas de un miembro del equipo a otro. El concepto central cuando se trabaja con Team Foundation es el proyecto de equipo. El proyecto de equipo se almacena en Team Foundation Server, y tiene un nombre que todo el equipo puede identificar fácilmente. El proyecto de equipo proporciona una ubicación central para que los usuarios coordinen su trabajo. Portal de proyecto: Cada proyecto de equipo tiene un portal asociado que es un sitio Web de Windows SharePoint. Los miembros del equipo pueden utilizar el portal del proyecto para almacenar documentos, buscar informes y utilizar otras características de colaboración de Windows SharePoint. Team Explorer: Todos los miembros del equipo trabajan con proyectos de equipo utilizando Team Explorer en el entorno de desarrollo integrado (IDE) de Visual Studio. Team Explorer se conecta al servidor Team Foundation y muestra los proyectos de equipo existentes en el servidor. A través de Team Explorer, los miembros del equipo pueden buscar y actualizar elementos de trabajo, ver informes, administrar documentos y trabajar con generaciones del producto. Alertas: Team Foundation proporciona alertas que se envían a los miembros del equipo a través del correo electrónico cuando se realiza algún cambio en el proyecto de equipo Las alertas se pueden enviar cuando cambia el estado de un 31

elemento de trabajo, cuando se producen protecciones, cuando finaliza una generación o cuando cambia el estado de una generación. Control de código fuente: Control de código fuente Team Foundation permite al equipo administrar todos los archivos de código fuente del proyecto. Aunque normalmente se utiliza Control de código fuente Team Foundation para los archivos de código fuente, también se pueden agregar archivos con otro tipo de contenido como documentación del proyecto importante. Generaciones: Team Foundation Build permite al equipo crear y administrar regularmente generaciones del producto. Team Foundation Build también proporciona informes sobre el estado y la calidad de cada generación. Seguimiento del estado del trabajo: El propósito del seguimiento del estado del trabajo es vigilar la salud del proyecto, conocer a quién se le ha asignado trabajo y cuál es el estado de dicho trabajo. Team Foundation utiliza el concepto de elemento de trabajo para hacer un seguimiento de las partes fundamentales del trabajo en un proyecto de equipo. Existen varios tipos de elementos de trabajo, y están basados en el tipo de trabajo que representan. Historial del elemento de trabajo: Todos los elementos de trabajo tienen un historial en el que se registra toda la actividad. Cada vez que cambia un elemento de trabajo, ya sea porque el estado de éste cambia a cerrado o porque se actualiza alguna nota con nueva información, se registran todos los cambios para que las personas autorizadas puedan consultar en cualquier momento el historial completo de la actividad del elemento de trabajo. Consultas: Las consultas de elementos de trabajo permiten buscar los elementos de trabajo que cumplen un grupo concreto de criterios. Las consultas son útiles para ver el estado actual de los elementos de trabajo. 32

Integración de Microsoft Project y Excel: Los elementos de trabajo se almacenan en una base de datos del servidor Team Foundation. Sin embargo, es posible importar y hacer un seguimiento de copias de dichos elementos en Microsoft Project u Microsoft Excel. Por ejemplo, los elementos de trabajo de tarea se pueden importar y organizar en Microsoft Project para equilibrar la carga de trabajo de los miembros del equipo. Asimismo, los elementos de trabajo de error se pueden importar en Microsoft Excel para crear la lista de errores de máxima prioridad que deben corregirse. Por último, las copias sin conexión de los elementos de trabajo se pueden actualizar en Microsoft Project y Microsoft Excel, y volver a publicarse en la base de datos de elementos de trabajo para mantener los elementos sin conexión sincronizados con el servidor. Informes: Los informes se almacenan en una base de datos del servidor Team Foundation, y permiten hacer un seguimiento de la información de estado y de tendencias a lo largo del tiempo en el proyecto de equipo. Los datos de los informes se guardan en un almacén de datos y se recopilan de las bases de datos operativas del servidor Team Foundation. Los tipos de información de los que se puede hacer un seguimiento a través de los informes son los cambios, las protecciones y el estado de los elementos de trabajo en las generaciones del producto, y los resultados de las pruebas. Asimismo, los informes entre proyectos permiten comparar los datos históricos de varios proyectos. Funciones: Los miembros del equipo del proyecto asumen una serie de funciones; cada una de ellas representa las disciplinas necesarias para completar correctamente el proyecto de equipo. Funciones en la documentación de ayuda: En la documentación de ayuda, el contenido se organiza de acuerdo con tres funciones generales: administradores, responsables de proyecto y miembros de proyecto. Estas funciones generales empleadas por la documentación de ayuda permiten localizar rápidamente las tareas y 33

la información relevantes para cada usuario cuando se trabaja en un proyecto de equipo. Funciones de los procesos: Los nuevos proyectos de equipo se crean a partir de una plantilla de procesos que define el conjunto de funciones en las que participarán todos los miembros del equipo. Cuando se crea un proyecto de equipo mediante dicho proceso, cada miembro del equipo debe asumir una de estas funciones, que le guiará en la manera en que interactúa y trabaja en el equipo. Grupos de seguridad: Los grupos de seguridad de Team Foundation imponen el uso de los permisos disponibles para cada miembro del equipo. Cuando se inicia un nuevo proyecto de equipo, el administrador asigna las funciones del proceso para dicho proyecto a grupos y permisos de seguridad concretos. Además, la plantilla de procesos define un conjunto predeterminado de grupos de seguridad. Por lo tanto, en un nuevo proyecto de equipo, es probable que se asigne un desarrollador al grupo Contributors. Representación del proceso: Uno de los problemas más comunes que tienen muchos equipos de producto es intentar que sus herramientas sigan su proceso. Team Foundation representa el proceso en las herramientas permitiendo que los equipos personalicen el proceso mediante un conjunto de archivos XML. Cada proyecto de equipo puede seguir un proceso diferente. Integración de las herramientas: Para mejorar la colaboración, las herramientas empleadas por el equipo deben funcionar de manera integrada y así evitar la duplicación innecesaria de trabajos, como repetir las configuraciones de seguridad en varias herramientas, y los pasos manuales aunque obvios, como tener que actualizar manualmente el estado en un informe cuando el elemento de trabajo está cerrado. 34

Integración en el entorno de desarrollo integrado: Muchas herramientas de Team Foundation se integran con el entorno de desarrollo integrado (IDE) de Visual Studio. Team Explorer es la ventana principal para trabajar con los proyectos de equipo. Desde Team Explorer se puede tener acceso a otras ventanas, como el Explorador de control de código fuente y Team Build Browser. Extensibilidad de Team Foundation: Team Foundation también se puede extender para integrar herramientas adicionales creadas por otros fabricantes. Integración con otras herramientas: Team Foundation se puede utilizar con proyectos de Visual Studio anteriores y otras herramientas y proyectos de código. Aunque estos tipos de proyectos no se pueden ver ni compilar mediante Team Foundation, se pueden ejecutar simultáneamente. Se puede usar Team Foundation para colaborar en los proyectos, cuando se esté utilizando una versión anterior de Visual Studio u otras herramientas, para generar el código. Arquitectura de TFS. Meier, J. y Otros (2007) [12], un servidor Team Foundation Server emplea una lógica formada por tres niveles, incluye los clientes un servidor de nivel de aplicación y un servidor de nivel de datos. TFS clientes interactúa con el nivel de aplicación principalmente por servicios Web, el nivel de aplicación es a su vez el apoyo de diversas bases de datos en el nivel de datos. Figura 8 muestra los componentes de cada nivel TFS, así como sus interacciones. 35

Figura 8: Arquitectura de TFS Fuente: Team Development with Visual Studio Team Foundation Server. Meier, J. y Otros Nivel Cliente: contiene los siguientes componentes: 1. Modelo de Objetos de Team Foundation Server: Utiliza la API pública para interactuar con TFS. Puede utilizar el modelo de objetos para crear sus propias aplicaciones cliente que interactúan con TFS. 2. Componentes de Visual Studio Industry Partners (VSIP): Estas son de las herramientas de terceros, los complementos y las lenguas de uso en Visual Studio. 3. Integración de Microsoft Office: Este consta de un conjunto de complementos para Microsoft Office Excel y Microsoft Office Project que permite la consulta y actualización de los elementos de trabajo en la base de datos del TFS 36

Elemento de Trabajo. Esto es particularmente útil para los administradores de proyectos que ya utilizan estas herramientas ampliamente. 4. Herramientas de línea de comandos: Estas son las herramientas que le permiten interactuar con TFS desde la línea de comandos. La mayoría de estas herramientas proporcionan la funcionalidad de control de código fuente y son útiles para automatizar tareas repetitivas y para la programación de tareas. 5. Políticas Check-in: Esto apoya la creación de políticas, que es un mecanismo extensible que le permite validar el código durante el proceso de checkin. Nivel Aplicación: Expone los siguientes servicios Web ASP.NET accesada por el nivel del cliente. Servicios Web se agrupan en las siguientes colecciones: Servicios de datos de Team Foundation: Este conjunto de servicios web se refiere principalmente a la manipulación de datos en el nivel de datos. Estos servicios incluyen: 1. Control de versiones de servicios Web: El nivel de cliente utiliza este servicio TFS Web para ejecutar diversas funciones de control de código fuente y para interactuar con la base de datos del control de código fuente. 2. Seguimiento del elemento de trabajo de servicio Web: El nivel de cliente utiliza este servicio Web para crear, actualizar y consultar temas de trabajo en el seguimiento del elemento de trabajo en la base de datos. 3. Team Foundation Build servicios Web: El nivel de cliente y la MSBuild utilizar este marco de servicios Web para la ejecución de los procesos de construcción. 37

Team Foundation de Integración de Servicios: Este conjunto de servicios Web proporciona la integración y automatización de la funcionalidad. Estos servicios no interactúan con el nivel de datos. Team Foundation de Integración servicios incluyen: 1. Registro de servicios Web: Este servicio se utiliza para registrar otros servicios TFS. Mantiene la información en una base de datos de registro. La información es usada por los servicios para descubrir y determinar la manera de interactuar unos con otros. 2. Seguridad de servicios Web: Este servicio consiste en el Grupo del Servicio de Seguridad y el Servicio de Autorización. El Grupo del Servicio de Seguridad se utiliza para gestionar todos los usuarios y grupos TFS. La autorización de servicios proporciona acceso a un sistema de control de TFS. 3. Vinculación de servicio Web: Este servicio permite a las herramientas para establecer relaciones débilmente acoplados (o "links") entre los elementos de datos que contienen. 4. Eventos de servicio Web: Este servicio permite que una herramienta o servicio de registro de tipos de eventos. Los usuarios pueden suscribirse a los eventos y recibir notificaciones a través de e-mail o por la invocación de un servicio Web. 5. Clasificación de servicios Web: Este servicio trabaja conjuntamente con el servicio Web con vínculos que permitan a TFS artefactos clasificar de acuerdo con las taxonomías predefinidas. Esto ayuda a apoyar las herramientas de información, incluso para los artefactos que no comparten una taxonomía común para organizar sus datos. 38

Nivel de datos: TFS no admite el acceso directo a datos almacenados en el nivel de datos de las aplicaciones clientes. En lugar de ello, todas las peticiones de datos deben ser realizados a través de la Web de servicios en el nivel de aplicación. TFS nivel de datos se compone de los siguientes almacenes de datos correspondientes a los servicios de datos sobre la aplicación de nivel: 1. Seguimiento Elemento de trabajo: Este almacena todos los datos relativos a temas de trabajo. 2. Control de versiones: Este almacena todos los datos relacionados con el control de código fuente. 3. Team Foundation Build: Este almacena toda la información relacionada con el TFS Team Build característico. 4. Presentación de informes de almacén: Esto almacena la información relacionada con todas las herramientas y funciones TFS. El almacén de información se simplifica la creación de informes que combinen datos procedentes de múltiples herramientas. Despliegue Topología: Puede implementar TFS utilizando una gran variedad de topologías que van desde un solo servidor o para instalaciones más complejas de múltiples servidores. Independientemente de la topología que se utiliza, tiene que ser consciente de una serie de requisitos fundamentales. Figura 9 muestra la topología de servidor único. 39

Figura 9: Tráfico de red de Team Foundation Server Fuente: http://msdn.microsoft.com/.net Framework. Según la documentación realizada por la comunidad de msdn es un componente integral de Windows que admite la creación y la ejecución de la siguiente generación de aplicaciones y servicios Web. Los componentes clave de.net Framework son Common Language Runtime (CLR) y la biblioteca de clases.net Framework, que incluye ADO.NET, ASP.NET, formularios Windows Forms y Windows Presentation Foundation (WPF)..NET Framework proporciona un entorno de ejecución administrado, un desarrollo e implementación simplificada y la integración con una gran variedad de lenguajes de programación. Windows Sharepoint Services (WSS). Según la documentación realizada por la comunidad de msdn permite a los grupos de trabajo crear sitios Web para compartir información y colaborar sobre los propios documentos, lo que supone un gran beneficio que aumenta la productividad individual y colectiva. Windows SharePoint Services es un componente de la infraestructura de Windows Server 2003 para los 40

profesionales de la información, y proporciona servicios de trabajo en equipo y sitios Web para Microsoft Office System y otros programas de puesto de trabajo. Además sirve de plataforma para el desarrollo de aplicaciones. Incluye recursos de TI como son portales, áreas de trabajo en equipo, correo electrónico, soporte para control de presencia y conferencia basada en Web. Windows SharePoint Services permite a los usuarios localizar rápidamente información distribuida, así como la conexión con otros usuarios y el trabajo en equipo de forma más eficiente y productiva. Base de Datos. Kendall y Kendall (1997) [13] señala, que una base de datos es una fuente central de datos significativos, los cuales son compartidos por numerosos usuarios para diversas aplicaciones. La esencia de una base de datos es el Sistema Administrador de la Base de Datos (DBMS: Database Management System), el cual permite la creación, modificación, y actualización de la base de datos; la recuperación de los datos y la emisión de reportes. El autor también señala que los objetivos de eficacia de la base de datos son: 1. Asegurar que los datos puedan ser compartidos por los usuarios, para una variedad de aplicaciones. 2. Que el mantenimiento de los datos sea preciso y consistente. 3. Asegurar que todos los datos requeridos para las aplicaciones presentes y futuras se encuentren siempre disponibles. 4. Permitir que la base de datos evolucione y se adapte a las necesidades crecientes de los usuarios. 5. Permitir que los usuarios desarrollen su propia visión de los datos, sin preocuparse por la manera en que los datos se encuentren almacenados físicamente. Microsoft SQL Server. Según la documentación realizada por la comunidad de msdn Microsoft SQL Server consolida la administración de servidores y la creación de objetos comerciales en dos entornos integrados: SQL Server Management Studio y Business Intelligence Development Studio. Ambos entornos utilizan soluciones y 41

proyectos para fines de administración y organización. Además, ambos ofrecen una funcionalidad de control de código fuente totalmente integrada. Aunque ambos entornos de estudio usan los contenedores y los elementos visuales establecidos en Microsoft Visual Studio 2005 ó 2008, estos entornos no forman parte, por sí mismos, de Visual Studio 2005 ó 2008. En su lugar, los entornos de estudio incluidos con SQL Server son entornos independientes que están diseñados para programadores de aplicaciones empresariales que funcionan con SQL Server, SQL Server Compact 3.5 SP1, Analysis Services, Integration Services y Reporting Services. No es posible utilizar estas herramientas para crear aplicaciones personalizadas o acometer grandes proyectos de desarrollo. SQL Server Management Studio: Es un entorno integrado para obtener acceso a todos los componentes de SQL Server, así como para configurarlos y administrarlos. SQL Server Management Studio combina un amplio grupo de herramientas gráficas con un editor de texto enriquecido para ofrecer acceso a SQL Server a los programadores y administradores, sin importar su nivel de especialización. SQL Server Management Studio combina las funciones del Administrador corporativo y el Analizador de consultas, herramientas incluidas en versiones anteriores de SQL Server, en un único entorno. Además, SQL Server Management Studio proporciona un entorno para administrar Analysis Services, Integration Services, Reporting Services y XQuery. Este entorno ofrece a los programadores una experiencia familiar y proporciona a los administradores de bases de datos una herramienta única para realizar sus tareas con la facilidad de las herramientas gráficas y una experiencia de Scripts enriquecida. Business Intelligence Development Studio: Es un entorno integrado para desarrollar construcciones de inteligencia empresarial, como cubos, orígenes de 42

datos, informes y paquetes de Integration Services. Business Intelligence Development Studio incluye plantillas de proyecto que proporcionan un contexto para desarrollar construcciones específicas. En Business Intelligence Development Studio, es posible desarrollar proyectos que formen parte de una solución independiente de un servidor concreto. Puede implementar los objetos en un servidor de prueba para probarlos durante el desarrollo y, posteriormente, implementar el resultado de los proyectos en uno o más servidores de ensayo o de producción. Modelo Lineal Secuencial. También llamado Ciclo de Vida Básico del desarrollo de sistemas o Modelo de Cascada, cuando se planea realiza un proyecto que implique tecnologías de información, se debe tener en cuenta una secuencia de actividades, donde la estrategia principal es seguir el progreso del desarrollo de software hacia puntos de revisión bien definidos. En este sentido, las actividades que se tomaron para el establecimiento del sistema de control de versiones de software de SofOS están enmarcadas dentro de la metodología lineal secuencial. Al respecto Senn, J. (1992) [14], el método de ciclo de vida para el desarrollo de sistemas es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información. (p. 23) El método del ciclo de vida para el desarrollo de sistemas consta de 6 fases: 1. Investigación Preliminar: La solicitud para recibir ayuda de un sistema de información puede originarse por varias razones: sin importar cuales sean estas, el proceso se inicia siempre con la petición de una persona. 2. Determinación de los requerimientos del sistema: El aspecto fundamental del análisis de sistemas es comprender todas las facetas importantes de la parte de la empresa que se encuentra bajo estudio. Los analistas, al trabajar con los empleados y 43

administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave: Qué es lo que hace? Cómo se hace? Con que frecuencia se presenta? Qué tan grande es el volumen de transacciones o decisiones? Cuál es el grado de eficiencia con el que se efectúan las tareas? Existe algún problema? Qué tan serio es? Cuál es la causa que lo origina? 3. Diseño del sistema: El diseño de un sistema de información produce los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis. Los especialistas en sistemas se refieren, con frecuencia, a esta etapa como diseño lógico en contraste con la del desarrollo del software, a la que denominan diseño físico. 4. Desarrollo del software: Los encargados de desarrollar software pueden instalar software comprobando a terceros o escribir programas diseñados a la medida del solicitante. La elección depende del costo de cada alternativa, del tiempo disponible para escribir el software y de la disponibilidad de los programadores. 5. Prueba de sistemas: Durante la prueba de sistemas, el sistema se emplea de manera experimental para asegurarse de que el software no tenga fallas, es decir, que funciona de acuerdo con las especificaciones y en la forma en que los usuarios esperan que lo haga. Se alimentan como entradas conjunto de datos de prueba para su procesamiento y después se examinan los resultados. 44

6. Implantación y evaluación: La implantación es el proceso de verificar e instalar nuevo equipo, entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos necesarios para utilizarla. Una vez instaladas, las aplicaciones se emplean durante muchos años. Sin embargo, las organizaciones y los usuarios cambian con el paso del tiempo, incluso el ambiente es diferente con el paso de las semanas y los meses. Por consiguiente, es indudable que debe darse mantenimiento a las aplicaciones. La evaluación de un sistema se lleva a cabo para identificar puntos débiles y fuertes. La evaluación ocurre a lo largo de cualquiera de las siguientes dimensiones: Evaluación operacional: Valoración de la forma en que funciona el sistema, incluyendo su facilidad de uso, tiempo de respuesta, lo adecuado de los formatos de información, confiabilidad global y nivel de utilización. Impacto organizacional: Identificación y medición de los beneficios para la organización en áreas tales como finanzas, eficiencia operacional e impacto competitivo. También se incluye el impacto sobre el flujo de información externo e interno. Opinión de loa administradores: evaluación de las actividades de directivos y administradores dentro de la organización así como de los usuarios finales. Desempeño del desarrollo: La evaluación de proceso de desarrollo de acuerdo con criterios tales como tiempo y esfuerzo de desarrollo, concuerdan con presupuestos y estándares, y otros criterios de administración de proyectos. También se incluye la valoración de los métodos y herramientas utilizados en el desarrollo. 45

Cabe destacar que no todas las actividades nombradas anteriormente fueron realizadas tal y como se describieron debido a que no se trata del desarrollo de software sino al establecimiento de una tecnología de información, específicamente un sistema para el control de versiones de software. 46