Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TecNM
i
apital
Revista
Intelectual
Ciencia Tecnología Sociedad
Salario en México
Pronóstico para el año 2016
Transformando al mundo
Diez teorías que seguirán transformando al mundo
Universidad - Empresa
La Vinculación como estrategia
de competitividad en México.
Lic. José Antonio Bonales Rojas M.I. Miguel Ángel Mota Velázquez
Director de Educación Media Superior y Superior de la SEGE Jefe de División de Ingeniería en Mecatrónica
Lic. José Luis León López M.P.S. Adela Marisol Sierra Guerrero
Director General del ITSSLP, C Jefe de División de Ingeniería Industrial
01
Índice
Impacto de los Mecanismos de fomento al emprendimiento
y las incubadoras de empresas en las Universidades, caso SLP
Jacqueline Cruz Ortega, Edgardo Castellano Ramos
03
José Téllez Estrada, Claudia Viridiana Gallegos Medina, Lya Adlih Oros Méndez
34
E
I. INTRODUCCIÓN
Este documento analiza los aspectos importantes que
debe tener una empresa con respecto a la
cliente y a la propia empresa que se cuenta con la
última tecnología para realizar desarrollos
profesionales y de calidad.
infraestructura tecnológica de software con la que Para determinar lo anterior, se debe contar con lo
cuenta. Está destinado a aquellos departamentos de siguiente para conformar una infraestructura física
Tecnologías de la Información (TI) que deseen conocer vasta y adecuada para el desarrollo de software.
los aspectos básicos, técnicos y estructurales de lo que ŸDepartamento físico: Se considera el área u oficina
debe tener un departamento de software para donde se realizarán los desarrollos de ideas y de
considerarse óptimo, o bien los aspectos proyectos, estos que a su vez serán convertidos en
fundamentales que deben cumplir para favorecer el producto denominado Software. El departamento
mantenimiento de sistemas. Está enfocado también a debe contar con todo lo necesario para la realización
aquellas empresas que deseen conocer las de actividades, desde equipos y dispositivos hasta
características principales que debe cumplir un sistema licencias y software o programas que servirán como
y éste sea empleado con toda confianza dentro de sus herramientas vitales para el trabajo. El departamento
instalaciones. también debe contar con todas las comodidades y
A pesar de que los sistemas comerciales actualmente espacios adecuados para los programadores o
cuentan con todos los estándares de confianza, de empleados. El aspecto, como ya se ha mencionado
seguridad y de usabilidad, se tienen que tener a antes, debe generar confianza y fiabilidad a personas
consideración distintos aspectos por los que tiene que internas o ajenas a la empresa. Esta área también es la
ser evaluado un sistema, desde su implementación responsable de que la corporación implemente
hasta su interacción con el usuario final. Si bien, toda adecuadamente sus sistemas creados desde “casa”.
15
ŸUn departamento de desarrollo de software siempre resultados. En este sentido Scouler y Bakal (2012)
estará en la mira de otros departamentos que soliciten comentan que los proyectos de nuevo desarrollo
alguna solución tecnológica o que pueda facilitar algún suelen comenzar con un código fuente existente.
proceso de trabajo. Entender el código es esencial para reutilizar, lo cual no
ŸEquipamiento y herramientas: Todo trabajo es tan simple como parece. Por ejemplo, puede
requiere de un conjunto de herramientas o elementos suceder que el desarrollador original se haya mudado o
de apoyo para su realización, el desarrollo de software se haya retirado. El código puede haber sido escrito por
no es la excepción. El equipo de desarrollo de software varios desarrolladores o puede provenir de múltiples
(sus integrantes), deben de contar con herramientas fuentes. Es posible que el código exista como código
prácticas que sirvan de apoyo para la realización de un que es propiedad de su empresa, código externo (por
proyecto. ejemplo, código abierto o estándar) o como bibliotecas.
¦ Herramientas de Hardware: Son esenciales para Es probable que haya cambiado y evolucionado a lo
la construcción de sistemas, se puede decir que sin largo de muchos años. Cualquiera que sea la historia
hardware no hay software. Las herramientas que del código, usted necesita saber cómo interactúa el
podría usar un departamento de Desarrollo serían código fuente y qué contiene. Es necesario entender
equipos de cómputo (principalmente), equipos de red cómo se adapta el código, cómo hará mejor uso del
básicos (módem casero), conexión a internet, y en mismo en el futuro y qué partes querrá modificar.
casos necesarios servidores de prueba físicos. La programación para Galimany (1985), es el proceso
¦ Herramientas de Software: Este tipo de de diseñar, codificar, depurar y mantener el código
herramientas queda a decisión del programador o fuente de programas computacionales. El código
desarrollador de sistemas. Dentro de las herramientas fuente es escrito en un lenguaje de programación. El
básicas de desarrollo se puede definir un editor de propósito de la programación es crear programas que
texto, un compilador y una interfaz de usuario. exhiban un comportamiento deseado.
Herramientas sofisticadas como depuradores de
código, IDE de usuarios, generadores de estilos, El proceso de escribir código requiere frecuentemente
convertidores de código, generadores de código, conocimientos en varias áreas distintas, además del
controlador de versiones, generador de dominio del lenguaje a utilizar, algoritmos
documentación y editores de maquetación son algunos especializados y lógica formal. Programar no involucra
programas de gran utilidad para un desarrollador, si necesariamente otras tareas tales como el análisis y
bien no son de gran necesidad para construir un diseño de la aplicación (pero sí el diseño del código),
proyecto, ayudan en gran medida al ahorro de tiempo y aunque sí suelen estar fusionadas en el desarrollo de
de generación de sistemas. Las herramientas de pequeñas aplicaciones.
desarrollo para un departamento como tal, pueden
favorecer a la reutilización de código.
responsabilidades. Por ejemplo, si nadie se siente aplicable a todo tipo de proyectos, más bien cada tipo
responsable de probar el software, será inevitable que de proyecto tiene una metodología a la que se adapta
17
de aplicaciones tiende a englobar también la Según Rerych, (2007), Una metodología de desarrollo
usabilidad, utilidad y la rapidez de ejecución. de software se refiere a un framework que es usado
Incremental: Es de naturaleza interactiva brindando al para estructurar, planear y controlar el proceso de
final de cada incremento la entrega de un producto desarrollo en sistemas de información.
completamente operacional. Este modelo es A lo largo del tiempo, una gran cantidad de métodos
particularmente útil cuando no se cuenta con una han sido desarrollados diferenciándose por su
dotación de personal suficiente. Los primeros pasos fortaleza y debilidad.
los pueden realizar un grupo reducido de personas y en El concepto de metodología, dentro de la Ingeniería del
cada incremento se añadirá personal, de ser Software es, sin duda, uno de los más oscuros y que
necesario. Por otro lado los incrementos se pueden más confusión produce tanto en estudiantes como en
planear para gestionar riesgos técnicos. profesionales involucrados en procesos de desarrollo
SCRUM: La base fundamental de esta metodología de de software.
desarrollo ágil consiste en la división del trabajo Tanto es así, que en muchos proyectos de desarrollo
completo (Product Backlog) en distintos apartados o (no todos, por supuesto), la aplicación de una
bloques que pueden ser abordados en periodos cortos metodología brilla por su ausencia, siendo éste un
de tiempo (1-4 semanas) que se denominan Sprints. concepto casi desconocido.
Extreme Programming: La Programación Extrema es Además, la constante innovación tecnológica hace que
una metodología de desarrollo ágil que tiene como cada vez sea necesaria la aplicación de nuevas
principal objetivo aumentar la productividad a la hora metodologías adaptadas a los nuevos tiempos y, sin
de desarrollar un proyecto software. Da prioridad a los embargo, siguen figurando en los libros de texto viejas
trabajos que dan un resultado directo y en los cuales se metodologías pensadas para viejos problemas; cosa
reduce la burocracia que pueda existir en el entorno de que no sería necesariamente mala si las nuevas
trabajo. metodologías tuviesen también su lugar, pero a
KanBan: Método para gestionar el trabajo intelectual, menudo no es así. Y no es que haya una metodología
con énfasis en la entrega justo a tiempo, mientras no se claramente superior a las demás. Como ya hemos
sobrecargan a los miembros del equipo. dicho en más de una ocasión, todas las metodologías
ScrumBan: Combinación de Scrum y Kanban; Aunque son, en esencia, bienintencionadas. Obviamente, las
en principio pueden parecer iguales, las dos más modernas responden a problemas y necesidades
estrategias de gestión presentan diferencias en la más actuales.
manera de ejecutar el proyecto. Es por eso que el Se ha comentamos que en el ciclo de vida del software
novedoso plan Scrumban se encarga de combinar se debían completar una serie de tareas para obtener
aquellos elementos que resultan complementarios. un producto de software. A menudo, se dice que los
distintos componentes de software deben pasar por
distintas fases o etapas durante el ciclo de vida. Cada
una de esas tareas puede ser abordada y resuelta de
múltiples maneras con distintas herramientas y
utilizando distintas técnicas. Es necesario saber
cuándo podemos dar por concluida una tarea.
Todos los integrantes de un equipo de desarrollo deben
seguir un criterio común a la hora de realizar las tareas
del ciclo de vida. Ese criterio, esa manera común es
una metodología de desarrollo.
Fig. 2 Metodologías Ágiles de Desarrollo de Software A lo largo de los años se han propuesto numerosas
18
metodologías. Algunas han sido escritas por autores
del ámbito académico, otras por autores del ámbito
cComo se ha mencionado con anterioridad, queda a
decisión del departamento y de los integrantes del
empresarial de desarrollo del software, otras por grupo de trabajo, adecuar de manera diferente cada
administraciones públicas. proyecto a estas metodologías, paradigmas y ciclos de
La mayoría de estas metodologías son similares en su vida del desarrollo. En consideración, debe usarse de
funcionamiento referente a los proyectos. acuerdo a las necesidades y requerimientos del
Adicionalmente a las metodologías de desarrollo proyecto para beneficiar en tiempo y costos a la
existen los paradigmas: empresa.
· Programación estructurada Con respecto al departamento de desarrollo de
· Programación orientada a objetos (POO) software, se recomienda documentar para cada
· Modelo vista – controlador (MVC) proyecto, el tipo de metodología empleada. Esta
· Programación modular documentación servirá como experiencia para
· Programación por procedimientos proyectos posteriores.
· Abstracción de datos
· Programación orientada a eventos C. Trato con el cliente
Una excelente comunicación, transparencia con sus
Hemos retomado lo que son las metodologías y los
clientes, proactividad, que entiendan y se acoplen a la
paradigmas, pero existe otro concepto que se puede
cultura del negocio, con recurso humano de amplio
anexar a las formas de trabajo como son los ciclos de
“kilometraje” en el área que permita brindar las
vida del desarrollo de software como por ejemplo:
soluciones más eficientes, y que a todo esto se le sume
· Modelo incremental
· Modelo en cascada una excelente trabajo administrativo, son solo una
· Modelo RAD parte de lo que los negocios que contratan una
· Modelo XP empresa desarrolladora de software buscan; no solo se
Estos modelos pueden usarse dependiendo del tipo de trata de entregar un excelente producto, ser excelentes
requerimientos que tenga el software, el departamento en la parte administrativa, sino también en preocuparse
debe estar consciente a usar el adecuado para en el antes, durante y después de su cliente. Esto se
implementarlo en algún proyecto. También dependerán logra con un buen y estructurado sistema de mercadeo.
del tipo de empresa, aptitudes del personal y demandas Enfocado siempre en el cliente ideal, en aquellos que
de proyectos para la elección de algún método de valoran más lo que usted hace por ellos, esto permite
trabajo. que todos los esfuerzos tengan más posibilidad éxito.
Mayormente, para su elección el equipo de trabajo
El cliente es lo más importante en cualquier entorno
debe de buscar en primera instancia la rapidez, con el
comercial. Si se habla de un entorno de tecnologías de
fin de agilizar los desarrollos y los procesos y etapas del
la información, se vuelve tan indispensable el ir
proyecto.
mejorando día con día la atención al cliente derivado a
la competencia que surge por las otras empresas.
19
independientemente, defendiendo sólo su propio Los miembros individuales del equipo pueden no tener
beneficio. Hay clientes que simplemente no estarán la personalidad propia para una participación intensa.
dispuestos a invertir el tiempo necesario. Por lo tanto, es posible que no se relacionen
adecuadamente con los otros miembros del equipo.
Se puede pensar que tratar al cliente como parte del Priorizar los cambios puede ser extremadamente difícil,
equipo de desarrollo es extraño, pero en realidad, no lo específicamente en sistemas en los que existen
es: El cliente es un factor importante en el éxito de un muchos implicados.
proyecto, tanto como cualquier otro miembro del
equipo, por eso es importante contar con la D. Trabajo en equipo
participación activa del cliente dentro del proyecto. Trabajar en equipo va más allá de contar con un
Pérez (2015), menciona que es importante entender servicio de control de versiones. En realidad, trabajar
quién es en realidad “El Cliente”. Tanto si se desarrolla en equipo es un concepto más cultural y relevante para
software para clientes actuales, como si se desarrolla las organizaciones, ya que al final del día la unión de
para uno mismo, o para la propia empresa u todos los esfuerzos hace un resultado en común que es
organización, siempre hay un rol de cliente. El cliente, cumplir los objetivos.
es en esencia, quien pone en marcha el proyecto, paga En el desarrollo de software se manejan roles, roles que
las cuentas, o define el resultado final. Aun si no se ya se han mencionado con anterioridad en este
tiene literalmente un “cliente”, es bueno entender que artículo. Los miembros del equipo especializan sus
aun así existe un rol “cliente” en su proyecto. Esto esfuerzos atendiendo aspectos relevantes, concretos y
puede ayudar a evitar confusiones. Si hay varias esenciales del proyecto, todo con el fin de salir en
personas diciendo que características se necesitan, tiempos, costos y respetables niveles de calidad. No
hay que asegurarse de que exista algún responsable todo el software o las herramientas de desarrollo
de tomar las decisiones cuando estos requisitos sean producen magia. Trabajar en equipo es una actividad
contradictorios. indeleble que en la mayoría de las organizaciones
Esto destaca que siempre hay que ajustarse o realizamos, algunas de manera consciente y otras no.
adecuarse a las necesidades del cliente, despejar La conciencia de trabajo en equipo es vital para el área
dudas y ambigüedades y aclarar funcionalidades y o departamento de desarrollo de software.
diseño del producto. Hay que señalar al cliente todo lo Para trabajar en equipo necesitamos:
que está dentro de un entorno “posible” y todo lo que no · Objetivos claramente definidos
se podría realizar en un tiempo corto o por alguna · Comunicación efectiva
circunstancia ajena al equipo de desarrollo de · Cohesión grupal
software. Debe tener conocimiento certero de las Logrando lo anterior entonces podemos identificar las
limitantes. etapas del ciclo de vida de un equipo, ya que estas nos
Si bien la idea de participación del cliente en el proceso permitirán establecer mejores maneras de
de desarrollo es atractiva, el éxito dependerá de tener organizarnos.
un cliente que esté dispuesto y lo más importante El aspecto humano es muy relevante también y cuando
pueda pasar tiempo con el equipo de desarrollo para trabajamos en equipo produce efectos positivos el
así presentar a todos los implicados del sistema, los contemplar lo siguiente:
clientes están sometidos a otras presiones y no pueden · Confianza absoluta entre los miembros
participar plenamente en el desarrollo del software. El · Compartir liderazgo
cliente es el punto clave, solicita los requerimientos que · Consideración del objetivo individual
se deben de incluir.
20
Estos aspectos influyen dentro de cada miembro del Ÿ¿Cómo podemos ayudar para que el equipo logre
equipo, tienen que considerar responsabilidad y mejoras de una manera sostenida?
consciencia al momento de aplicar estos efectos dentro Ÿ¿Qué necesidades personales de los miembros
del entorno de trabajo. deben alcanzarse?
Ramírez (2010), propone 4 etapas del ciclo de vida del Ÿ¿Cómo podemos asegurarnos que están tomando
trabajo en equipo el cual contempla hacernos las las decisiones correctas?
siguientes preguntas, mismas que se pueden trasladar
a mi experiencia a un equipo de desarrollo de software: Llámalo equipo, gente, personas, integrantes,
Formación colaboradores, “superhéroes” o como gustes, pero es
Ÿ¿Quiénes serán los integrantes? tu equipo de desarrollo quien te dará una ventaja
Ÿ¿Por qué estamos en este equipo y en qué forma competitiva sobre tu competencia y no bastará con
participaremos? tener a los mejores individuos y especialistas, tienes
Ÿ¿Por qué vamos a confiar en el resto de los que hacer que como equipo entreguen el mayor valor al
integrantes? negocio y les quede claro cuál es la visión de la
Ÿ¿Qué es lo que supuestamente vamos a ganar? empresa o producto en el mercado.
Ÿ¿Qué autoridad vamos a tener? Una de las primeras recomendaciones que les damos a
Ÿ¿Qué habilidades y talentos tenemos y cuales se nuestros clientes, es buscar que el equipo sea
ocupan? interdisciplinario. El debate y los diferentes puntos de
Normación vista enriquecerán el proceso de desarrollo y ayudarán
Ÿ¿En qué forma tomaremos decisiones? a generar mayor valor al negocio.
Ÿ¿Qué trato recibiré de los demás? Un equipo interdisciplinario supone que no todos los
Ÿ¿Cuál es el costo en tiempo y esfuerzo de ser parte perfiles serán técnicos. Aunque por muchos años se
del equipo? pensó que ser de perfil técnico era más que suficiente
Ÿ¿Qué esperamos unos de otros y de la para incorporarse a un equipo de desarrollo de
organización? software; hoy se le da más peso a que los integrantes
Ÿ¿Qué pasa si uno de los miembros se disgusta? tengan:
Ÿ¿Requerimos llegar a un consenso en todo? ŸUna personalidad que pueda influenciar
Ÿ¿Qué hacer si un miembro no contribuye o hace las positivamente al equipo de trabajo.
tareas asignadas? ŸHabilidades de comunicación sobresalientes.
Activismo ŸVisión de negocio y liderazgo.
Ÿ¿Quién manejará los conflictos? ŸLa capacidad de apoyar en la definición de la
Ÿ¿Cómo responde cada individuo del equipo al estrategia del proyecto.
conflicto? ŸHabilidad para proponer mejoras o cambios.
Ÿ¿Cómo canalizar positivamente el conflicto? ŸLa capacidad de aceptar retroalimentación.
Ÿ¿Qué tipos de conflictos se pueden tener con otros ŸLa apertura para entender que los logros del equipo
equipos? se basan en los entregables de todo el equipo. No se
Ÿ¿ C ó m o podemos sustraer las políticas vale concluir que el equipo no entregó valor al negocio
departamentales del proceso? porque X o Y integrante no lograron terminar sus
Producción asignaciones.
Ÿ¿Cuál es el modelo ideal de funcionamiento de E. Tamaño del equipo de desarrollo
nuestro equipo? El equipo de desarrollo de software puede ser tan
Ÿ¿Cómo vamos a monitorear los logros del equipo? pequeño o tan grande como se requiera. En su
21
estructura más básica, el equipo deberá de contar con permiten a los programas manipular adecuadamente la
mínimo dos integrantes los cuales realizarán información.
actividades correspondientes a diferentes roles. El El software no se desarrolla, se fabrica. Los costes se
siguiente diagrama muestra los roles más típicos que centran en ingeniería, no en fabricación. Los proyectos
un equipo de desarrollo debería de incluir (Northware no se pueden gestionar como proceso de fabricación.
Software Development, 2014). Se considera que el software no se estropea, ya que se
considera intangible cuando se habla de producto. Este
concepto se refiere a qué el software como producto
puede ofrecer beneficios en su portabilidad y manejo a
la hora de comercializarlo, ya que no requieren tantos
análisis de logística, traslado y empaquetado.
22
Un producto de software comercial en teoría no se que ejecuta sus proyectos en temas de globalización
puede reparar, ya que el impacto de costos y tiempo de software ya que, en el entorno de la industria de
sería considerable. Para ello las empresas grandes de software, una compañía que desee mantener sus
desarrollo, implementan actualizaciones de fallos y operaciones a mediano y largo plazo debe considerar
cambios a sus sistemas actuales que ya están en la internacionalización de software no sólo como una
producción. Muchas veces las reparaciones dañan más oportunidad sino como una necesidad impuesta por las
el software. Se recomienda que el software deba estar c o n d i c i o n e s a c tu a l e s d e c o m p e ti ti v i d a d y
bien diseñado para facilitar su evolución. Un software globalización.
bien diseñado consta principalmente de la ingeniería, la
cual consiste en la creación y mantenimiento de una RECONOCIMIENTOS
serie de componentes estándar con el fin de no Al Instituto Tecnológico de Chiná y la Universidad
reinventar. Debe favorecer también la reutilización de Interamericana para el Desarrollo (UNID) por la
código para proyectos posteriores. confianza depositada en mi como docente a nivel
Licenciatura y Posgrado respectivamente. De igual
Atributos del software bien diseñado: manera agradezco a mi esposa e hija por todo su amor,
· Mantenible apoyo incondicional y comprensión en todas las
· Seguro actividades que desempeño.
· Eficiente
· Amistoso REFERENCIAS
[1] Alegsa (2010). Reutilización de Código. Recuperado el 17 de Febrero
· Bien documentado de 2016, de:
III. CONCLUSIONES http://www.alegsa.com.ar/Dic/reutilizacion%20de%20codigo.php
[2] Galimany, D. (1985). Conceptos básicos de Software. Recuperado el
1. To d a s l a s r e c o m e n d a c i o n e s a n t e s
20 de Febrero de 2016, de:
mencionadas han sido previamente analizadas y http://www.aulapc.es/basico_conceptos_software.html
seleccionadas con la finalidad de enriquecer un área o [3] Northware Software Development (2014). ¿Cómo armar un equipo de
desarrollo de software?. Recuperado el 30 de Marzo de 2016, de:
departamento orientado al desarrollo de software.
http://www.northware.mx/como-armar-un-equipo-de-desarrollo-de-
2. El seguimiento de cada orientación será puesto software/
en práctica a preferencia de cada persona que esté [4] Pérez, M. (2015). Roles y Responsabilidades en un Equipo de
Desarrollo de Software. Recuperado el 02 de Marzo de 2016, de:
involucrada con el desarrollo de software decidiendo http://www.marioperez.com.mx/equipos-de-desarrollo/roles-y-
qué aspectos aplicar a su propia área. Todas estas responsabilidades/
[5] Pressman, R. (2002). Ingeniería de Software. Un enfoque practico.
prácticas se resumen a una buena organización,
Recuperado el 20 de Abril de 2016, de:
reducción de tiempo, rapidez y estándares que siguen http://es.slideshare.net/jdbg16/ingenieria-de-software-un-enfoque-prctico-
grandes empresas de desarrollo. pressman-5th-ed
[6] Ramírez, M. (2010). La importancia del trabajo en equipo como factor
de éxito en proyectos de TI . Recuperado el 05 de Abril de 2016, de:
3. Cabe destacar que existen mejoras en la http://es.slideshare.net/meramirez08/la-importancia-del-trabajo-en-
i
carr. 57 zona industrial
carretera 57 México - Piedras Negras Km. 189+100 Tramo Querétaro - San Luis Potosí No. 6501
Delegación Municipal de Villa de Pozos, San Luis Potosí
Teléfono: (444) 804.12.47 Conmutador: (444) 804.12.20