lunes, 20 de febrero de 2012

Fases de la Programación Extrema (eXtreme Programming - XP)

1ª Fase: Planificación del proyecto.
2ª Fase: Diseño.
3ª Fase: Codificación ó Programación.
4ª Fase: Pruebas.

Fuente: http://programacionextrema.tripod.com/fases.htm

Tips

La retroalimentación cliente-programador durante la etapa de programación-prueba del sistema en desarrollo, reduce significativamente el re-trabajo. 

Tips

Debemos tener claro el objetivo de nuestro programa, sus datos de entrada, procesos y resultados esperados. Comenzar con un prototipo que en conjunto con el cliente se irá transformando en un producto terminado. Las pruebas son muy importantes. Pruebas funcionales y modulares. El análisis de los resultados obtenidos nos dará confianza del funcionamiento del mismo.

domingo, 19 de febrero de 2012

Tips

Comentar el código fuente es muy importante, nos ahorrará tiempo a la hora de hacer modificaciones a nuestro programa. Comentar módulos, funciones y estructuras de datos. Si son modificaciones, colocar la fecha y hora del cambio.

jueves, 16 de febrero de 2012

Tips

Una de las mejores formas de elevar tu nivel de programación es leyendo y modificando los programas ejemplo de los libros.

Tips

Nunca te rindas ante un error. Utiliza el método científico para detectarlo y cuando lo encuentres, corrígelo usando la misma sistematicidad que usaste para hallarlo de forma que su corrección sea efectiva y sin efectos colaterales.

Método de solución de problemas

Método de solución de problemas:
  • Definir el problema (efecto)
  • Identificar las causas probables
  • Identificar las causas reales mediante: mediciones, hechos, análisis, opiniones de expertos, etc.
  • Registrar las causas reales
  • Desarrollar propuestas de solución
  • Priorizar  y seleccionar las soluciones
  • Obtener autorización
  • Implantar soluciones
  • Evaluar resultados
  • Actualizar procesos, procedimientos, métricas, indicadores, capacitación, políticas, reglamentos, etc.
  • Preguntarse ¿en dónde más se me puede presentar este problema o uno similar?
  • Seguir con la mejora continua

miércoles, 15 de febrero de 2012

¿Qué es la programación extrema (XP)?

La programación extrema es una metodología de desarrollo de software que forma parte de lo que se conoce colectivamente como metodologías ágiles. XP se basa en valores, principios y prácticas, y su objetivo es permitir que equipos pequeños y medianos produzcan software de alta calidad y se adapten a los requisitos cambiantes y en evolución.

Lo que diferencia a XP de las demás metodologías ágiles es que hace hincapié en los aspectos técnicos del desarrollo de software. La programación extrema es precisa sobre cómo trabajan los ingenieros, ya que seguir las prácticas de ingeniería permite a los equipos entregar código de alta calidad a un ritmo sostenible.

La programación extrema consiste, en pocas palabras, en las buenas prácticas llevadas al extremo. Como programación en parejas es buena, hagámosla siempre. Ya que las pruebas tempranas son buenas, probemos antes de escribir el código de producción.

¿Qué es Design Thinking?

Es un método para generar ideas innovadoras que centra su eficacia en entender y dar solución a las necesidades reales de los usuarios. Proviene de la forma en la que trabajan los diseñadores de producto. De ahí su nombre, que en español se traduce de forma literal como «Pensamiento de Diseño», aunque nosotros preferimos hacerlo como «La forma en la que piensan los diseñadores».

Se empezó a desarrollar de forma teórica en la Universidad de Stanford en California, EEUU a partir de los años 70, y su primera aplicabilidad con fines lucrativos como «Design Thinking» la llevó a cabo la consultoría de diseño IDEO, siendo hoy en día su principal precursora.

Según Tim Brown, actual CEO de IDEO, el Design Thinking «Es una disciplina que usa la sensibilidad y métodos de los diseñadores para hacer coincidir las necesidades de las personas con lo que es tecnológicamente factible y con lo que una estrategia viable de negocios puede convertir en valor para el cliente, así como en una gran oportunidad para el mercado».

Empresas como Apple, Google, IBM, Nike o Zara lo utilizan. Al ser un gran generador de innovación, se puede aplicar a cualquier campo. Desde el desarrollo de productos o servicios, hasta la mejora de procesos o la definición de modelos de negocio. Su aplicabilidad tiene como límites nuestra propia imaginación.


lunes, 13 de febrero de 2012

¿Qué es DevOps?

DevOps es un marco de trabajo y una filosofía en constante evolución que promueve un mejor desarrollo de aplicaciones en menos tiempo y la rápida publicación de nuevas o revisadas funciones de software o productos para los clientes.

Con DevOps se promueve una comunicación continua más fluida, la colaboración, la integración, la visibilidad y la transparencia entre equipos de desarrollo de aplicaciones (Dev) y sus homólogos en operaciones tecnológicas (Ops).

Esta relación estrecha entre «Dev» y «Ops» se extiende a cada una de las fases del ciclo de vida de DevOps: desde la planificación inicial del software a las fases de codificación, compilación, pruebas y publicación, y en la puesta en marcha, las operaciones y la supervisión continua. Esta relación impulsa un bucle de retroalimentación continua con los clientes sobre las mejoras, el desarrollo, las pruebas y la puesta en marcha. Uno de los resultados de todos estos esfuerzos puede ser la publicación continua y más rápida de las adiciones y los cambios que se necesitan en las funciones.

Algunas personas agrupan los objetivos de DevOps en cuatro categorías: cultura, automatización, medición y uso compartido (CAMS, por sus siglas en inglés), y las herramientas de DevOps pueden ayudar en estas tareas. Con estas herramientas, los flujos de trabajo de desarrollo y operaciones se convierten en tareas más optimizadas y colaborativas al automatizar tareas que antes eran manuales, estáticas o que llevaban mucho tiempo, y que son necesarias para la integración, el desarrollo, las pruebas, la puesta en marcha o la supervisión.

Además de los esfuerzos por romper las barreras de comunicación y fomentar la colaboración entre los equipos de desarrollo y operaciones tecnológicas, uno de los principales valores de DevOps es lograr la satisfacción del cliente y prestar sus servicios en menos tiempo. DevOps también se ha creado para impulsar la innovación empresarial y ser el motor de continuas mejoras en los procesos.

La práctica de DevOps propicia que cada empresa se ponga como objetivo ofrecer un mejor servicio cada vez, en menos tiempo, de mejor calidad y con mayor seguridad a sus clientes finales; por ejemplo, con actualizaciones, funciones o versiones de producto más frecuentes. Puede reflejarse en la rapidez con la que llega al cliente una nueva versión del producto o una nueva función manteniendo los mismos niveles de calidad y seguridad, o en el poco tiempo que se necesita para identificar un problema o un error y, a continuación, solucionarlo y volver a publicar una versión corregida.

Sin duda, todo este trabajo de DevOps se sustenta en una infraestructura subyacente con un rendimiento, una disponibilidad y una fiabilidad fluida y sin interrupciones del software, el cual se desarrolla y se prueba en primer lugar y, luego, se lanza a la fase de producción.

Métodos de DevOps

Existen varios métodos de DevOps comunes que las organizaciones usan para acelerar y mejorar el desarrollo y las publicaciones de productos. Normalmente se presentan como prácticas y metodologías de desarrollo de software. Entre los más populares están Scrum, Kanban y Agile:
  • Scrum. Scrum define la forma en la que los miembros de un equipo deben colaborar para conseguir entre todos acelerar los proyectos de desarrollo y control de calidad. Las prácticas de Scrum incluyen flujos de trabajo principales y terminología específica (sprints, bloques de tiempo, scrum diario [reunión]), y roles designados (Scrum Master, propietario del producto [product owner]).
  • Kanban. Kanban se originó a partir de las eficiencias que se alcanzaron en la fábrica de Toyota. Kanban prescribe que el estado «en curso» (WIP, del inglés «work in progress») de un proyecto de software debe controlarse en un tablero Kanban.
  • Agile. Los anteriores métodos de desarrollo de software Agile siguen teniendo una gran influencia en las herramientas y las prácticas de DevOps. Muchos de estos métodos, incluidos Scrum y Kanban, han incorporado elementos de la programación Agile. Algunas de estas prácticas están asociadas a una mayor capacidad de respuesta a los continuos cambios en requisitos y necesidades, los requisitos de documentación en forma de casos prácticos, la realización de reuniones diarias para ponerse al día y la incorporación de comunicación continua con los clientes para conocer sus opiniones. En Agile también se estipulan ciclos de desarrollo de software más cortos en lugar de los tradicionales métodos de desarrollo «en cascada» que se prolongaban en el tiempo.

¿Qué es VBA?

VBA son las siglas de “Visual Basic for Application”, un lenguaje de programación disponible para los usuarios de Microsoft Office en programas como Excel. VBA se desarrolló en los años noventa para unificar los distintos lenguajes de macros de cada uno de los programas. VBA para Excel te permite automatizar los flujos de trabajo repetitivos y generar herramientas prácticas para la gestión de proyectos o la contabilidad. La programación VBA en Excel facilita el intercambio de datos, tablas y diagramas entre los distintos programas de Microsoft 365 como Excel, Word o PowerPoint.

El lenguaje de programación VBA está disponible en Excel desde la versión 95, y aprenderlo resulta sencillo incluso para principiantes en materia de programación gracias a los numerosos tutoriales de VBA que pueblan la red. Al igual que cualquier otro programa de Office, Excel también se compone de distintos objetos como, por ejemplo, hojas de trabajo, celdas o tablas. Los métodos y propiedades de estos objetos se pueden controlar bien de forma manual, bien mediante la programación VBA si lo necesitas. Si tienes que repetir las mismas tareas una y otra vez, la programación Visual Basic de Excel te permitirá ahorrar mucho tiempo. Esto se debe a que VBA te permite crear, seleccionar o eliminar objetos de forma automática con solo dar la orden.

¿Cómo sucede esto exactamente? El editor VBA integrado en el programa te ayuda a generar tareas automatizadas, lo que no es en absoluto complicado, puesto que cada uno de los módulos de código está ya definido. Esto significa que prácticamente todas las operaciones estándar tienen un código preparado. Tu única tarea será montar cada uno de los módulos de código para conseguir una solución personalizada. Esas soluciones, también conocidas como macros de Excel, facilitan la organización, el formateo o la importación de datos. Para entender el código VBA y combinar los módulos correctamente, necesitarás formarte.

Antes de crear un nuevo programa en Excel con Visual Basic, necesitarás tener una estructura básica que después completarás con los módulos de código. 

En Visual Basic para Excel, las variables cumplen la misma función que en las ecuaciones matemáticas. Sin embargo, no solo sirven como indicadores de valores, sino también como indicadores de secuencias de caracteres y de objetos. El uso de variables siempre merecerá la pena si los elementos se mencionan en más de una ocasión. En el código VBA debes considerar una variable como tipo de dato. 

¿Qué es .NET y cómo funciona?

El lanzamiento de la plataforma .NET fue anunciado oficialmente por primera vez por Microsoft en el año 2000. Pero, dos años después, el framework se lanzó como parte de Visual Studio .NET.

La importancia de cada tecnología que incluye la plataforma ha cambiado significativamente con el tiempo. En este artículo conocerás toda la evolución de .NET y sus características principales.

.NET es una plataforma de aplicaciones que permite la creación y ejecución de servicios web y aplicaciones de Internet. En la plataforma de desarrollo se pueden utilizar una serie de lenguajes, implementaciones, herramientas y bibliotecas para el desarrollo de las aplicaciones.

En definitiva, es hoy en día la plataforma de desarrollo de software más usada para nuevos proyectos de desarrollo de software además de Java.

Microsoft .NET es una colección de diferentes plataformas de software de Microsoft. El framework original fue desarrollado como una competencia directa a la plataforma Java. Así pues, los entornos de aplicación pueden ser desarrollados y ejecutados en base a .NET.

Hasta aproximadamente 2003, el término .NET sirvió a Microsoft como término de marketing y como palabra de moda para productos nuevos, pero muy diferentes, como sistemas operativos, servidores y software de oficina. Más tarde, el término se concentró en el desarrollo de software.

Inicialmente no tuvo mucho éxito, pero el entorno .NET ha cambiado significativamente a lo largo de los años y ha ganado en importancia. Hoy en día, el framework .NET se ha vuelto indispensable en la práctica diaria.

Los componentes de la arquitectura .NET  juegan un papel importante en el desarrollo de aplicaciones. Los podemos clasificar en: el clásico .NET Framework, que es un framework monolítico, el más actual .NET Core framework, que es modular, la plataforma Xamarin y la específica de Windows UWP. A continuación los explico con mayor detenimiento para tu mayor comprensión.

.NET Framework está dividido en diferentes subcategorías y categorías de programas y, por lo tanto, contiene diferentes modelos de ejecución entre los que el usuario debe elegir al desarrollar el software. La base del desarrollo es la biblioteca de clases, que ha estado disponible en general como fuente compartida desde 2014. La llamada biblioteca de clases base permite el desarrollo de aplicaciones no sólo para entornos Windows, sino también para plataformas como Android o MacOS.

¿Qué es Java y para qué sirve?

Java es el lenguaje de programación y la plataforma de desarrollo número uno. Reduce costos, acorta los plazos de desarrollo, impulsa la innovación y mejora los servicios de las aplicaciones.
Características de Java

Java surgió como el lenguaje de programación que se usaba ampliamente en los dispositivos electrónicos de consumo, como microondas, televisión, etc. Poco tiempo después, se hicieron muchas investigaciones para construir un software pequeño, confiable, independiente del procesador, en tiempo real, seguro y distribuido para estos sistemas. 

El lenguaje de programación Java, fundado en 1995, ha sabido mantenerse vigente en el tiempo y siendo un factor diferencial con el avance de la era digital. Esto ha sido, en parte, por las propias características de Java que, a continuación, te las mencionaremos.

1. Simplicidad
Si bien es cierto que es muy potente, producto del Lenguaje C y C++, esto no lo hace más complejo. ¿La diferencia entre el lenguaje Java y estos? Java no cuenta con las características más confusas y menos usadas del lenguaje C y del C++, lo que lo hace más sencillo y fácil de manejar.

2. Orientado a objetos
De las cualidades más reconocidas de Java, ya que es uno de los estilos de programación más populares en el mundo. ¿De dónde viene tanto interés por saber qué es Java? De que este enfoque habilita el diseño del software para que los diversos tipos de datos permanezcan unidos a sus operaciones.

3. Distribuido e independiente de la plataforma
Entre sus características más destacadas están su gran biblioteca estándar, además de sus herramientas para que los software puedan distribuirse. Además, el lenguaje Java puede ejecutarse en cualquier hardware, lo que lo hace portátil y accesible.

4. Seguro y Multihilo
Si algo caracteriza a Java es que su plataforma es muy segura, además de garantizar canales de comunicación confiables para proteger la privacidad de los datos.

Y por sí le faltaba algo más a las características del lenguaje de programación Java es su capacidad para ¡elaborar tareas simultáneas dentro del programa! Con este rasgo, es mucho más accesible mejorar tanto el rendimiento como la velocidad de ejecución.



¿Qué es C++: Características y aplicaciones

C++ es un lenguaje de programación que proviene de la extensión del lenguaje C para que pudiese manipular objetos. A pesar de ser un lenguaje con muchos años, su gran potencia lo convierte en uno de los lenguajes de programación más demandados.

Si se busca programar en alto nivel, con la opción de poder bajar incluso a ensamblador, C++ sigue siendo una gran opción, ya que estamos ante un lenguaje de programación muy potente y que se ha mantenido actualizado.

La programación de videojuegos sigue siendo una profesión en auge y en ella el conocimiento de Unity y C++ es muy valorado.

Fue diseñado a mediados de los años 80 por el danés Bjarne Stroustrup. Su intención fue la de extender el lenguaje de programación C (con mucho éxito en ese momento) para que tuviese los mecanismos necesarios para manipular objetos. Por lo tanto C++ contiene los paradigmas de la programación estructurada y orientada a objetos, por lo que se le conoce como un lenguaje de programación multiparadigma.

A C++ primero se le conoció como “C con clases”. Luego se cambió a C++ que significa “incremento de C”, dando a entender que se trata de una extensión del lenguaje de programación C.

Las principales ventajas de programar en C++ son:
  • Alto rendimiento: Es una de sus principales características, el alto rendimiento que ofrece. Esto es debido a que puede hacer llamadas directas al sistema operativo, es un lenguaje compilado para cada plataforma, posee gran variedad de parámetros de optimización y se integra de forma directa con el lenguaje ensamblador.
  • Lenguaje actualizado: A pesar de que ya tiene muchos años, el lenguaje se ha ido actualizando, permitiendo crear, relacionar y operar con datos complejos y ha implementado múltiples patrones de diseño.
  • Multiplataforma
  • Extendido: C y C++ están muy extendidos. Casi cualquier programa o sistema están escritos o tienen alguna parte escrita en estos lenguajes (desde un navegador web hasta el propio sistema operativo).
Las principales desventajas de C++ es que se trata de un lenguaje muy amplio (con muchos años y muchas líneas de código), tiene que tener una compilación por plataforma y su depuración se complica debido a los errores que surgen. Además el manejo de librerías es más complicado que otros lenguajes como Java o .Net y su curva de aprendizaje muy alta.

Tips de Programación

A continuación les dejo un compendio de Tips de programación que me han servido mucho a lo largo de mi carrera profesional:

  • Aprender a programar es aprender a resolver problemas, no a usar un lenguaje de programación.
  • Antes de programar desde cero, primero busca en internet si ya existe una función o módulo que haga lo que necesitas, te permitirá ahorrar tiempo. Hay mucho código fuente gratis.
  • Por lo general podemos encontrar muchas funciones listas para utilizar, pero lo interesante es estudiarlas, ver cómo funcionan, de ahí aprendemos. Si solo copiamos y pegamos, vamos mal.
  • Deja que alguien pruebe tu programa. Incluso si no es un programador, podrá detectar problemas de interfaz, de desempeño o de diseño que como autor obviaste o pensaste que estaban bien.
  • La mejor técnica de diseño consiste en seleccionar las estructuras de datos más naturales para el problema y los algoritmos más sencillos que las administren mejor.
  • Debemos tener claro el objetivo de nuestro programa, sus datos de entrada, procesos y resultados esperados. Comenzar con un prototipo que en conjunto con el cliente se irá transformando en un producto terminado. Las pruebas son muy importantes. Pruebas funcionales y modulares. El análisis de los resultados obtenidos nos dará confianza del funcionamiento del mismo.
  • Una de las mejores formas de elevar tu nivel de programación es leyendo y modificando los programas ejemplo de los libros.
  • Cuando programes observa siempre la Regla No. 1 de la Informática: Haz copias de respaldo. La práctica de esta simple norma puede salvarte de un virus, un fallo de hardware, un dispositivo de almacenamiento defectuoso y hasta de ti mismo cuando hagas una mala modificación al código o una acción con la que elimines información.
  • Es importante buscar el momento adecuado para programar, se requiere de mucha concentración. Es preferible terminar lo que estas haciendo, antes de programar algo mal y después tener que arreglarlo.
  • Nunca te rindas ante un error. Utiliza el método científico para detectarlo y cuando lo encuentres, corrígelo usando la misma sistematicidad que usaste para hallarlo de forma que su corrección sea efectiva y sin efectos colaterales.
  • Comentar el código fuente es muy importante, nos ahorrará tiempo a la hora de hacer modificaciones a nuestro programa. Comentar módulos, funciones y estructuras de datos. Si son modificaciones, colocar la fecha y hora del cambio.
  • Entre más programas ejemplo leas y más problemas propuestos resuelvas, más experiencia en programación tendrás. La experiencia no la podrás adquirir de otra manera, ni siquiera estudiando una docena de lenguajes de programación.
  • Organiza tu código, de manera que puedas reutilizarlo. Por ejemplo: VBA - Función para ordenar celdas de excel, VBA - Función para buscar archivos en carpetas, etc. Te ahorrará tiempo de programación en los nuevos proyectos.
  • Solicita siempre una opinión a tus colegas sobre tus problemas de depuración. Una perspectiva ajena, externa, y fresca, es mucho mejor que la propia, por cuanto está menos involucrada con el código.
  • La retroalimentación cliente-programador durante la etapa de programación-prueba del sistema en desarrollo, reduce significativamente el re-trabajo.
  • No te desvíes durante la codificación del diseño original. Si se te ocurre una forma alternativa de realizar una tarea, anótala para analizarla e incluirla en la siguiente versión del programa.
  • Tómate un break cuando sientas que estás en un callejón sin salida. Un paseo, un café, una plática y hasta un videojuego puede ser el relax que necesitas mientras tu subconsciente busca la solución a tu problema.

    domingo, 12 de febrero de 2012

    12 puntos que llevaron a Steve Jobs (1955-2011) al éxito

    1. Haz lo que te gusta hacer. Encuentra tu verdadera pasión. La única manera de hacer un gran trabajo es hacer lo que te gusta. 

    2. Sé diferente. Piensa diferente. 

    3. Esfuerzate al máximo. Haz tu mejor esfuerzo en cualquier trabajo. No te duermas! El éxito genera más éxito. Así que mantente hambriento de éxito. Contrata a gente con pasión por la excelencia. 

    4. Haz un análisis FODA.. Tan pronto como inicies/crees una empresa haz una lista escrita de fortalezas y debilidades de ti y tu empresa. No dudes en eliminar las manzanas podridas. 

    5. Sé emprendedor. Busca lo próximo que viene. Encuentra un grupo de ideas sobre las que hay que actuar rápida y decididamente y métete en eso. A veces el primer paso es el más difícil. Solo hazlo! Ten el coraje de seguir a tu corazón y tu intuición. 

    6. Comienza en pequeño, piensa en grande. No te preocupes de demasiadas cosas a la vez. Toma un puñado de cosas simples para comenzar, y entonces ve progresando hacia cosas más complejas. No pienses solo en el mañana, sino también en el futuro distante. 

    7. Aspira a ser líder. Posee y controla la tecnología primaria en todo lo que haces. Si hay una mejor tecnología disponible, úsala, no importa si no hay nadie más usándola. Sé el primero, y conviértelo en un estándar de la industria. 

    8. Enfócate en el resultado. La gente te juzga por el resultado, así que enfócate en el resultado. Sé un patrón de calidad. Algunas personas no están acostumbradas a un ambiente donde se espera la excelencia. Promociona. Si no saben de ti, no te van a comprar. Pon atención en el diseño. "El diseño no es solo como se ve o qué parece, es como funciona." 

    9. Pide la opinión. Pide la opinión de personas con distintos trasfondos. Cada uno de ellos te dirá algo útil. Enfócate en aquellos que van a usar tu producto. Escucha a tus clientes. 

    10. Innova. La innovación distingue a un líder de los seguidores. Delega, deja que otros hagan el 50% del trabajo administrativo para poder pasar el 50% de tu tiempo en cosas nuevas. Concéntrate en las creaciones importantes y en la innovación radical. Contrata a personas que quieran hacer las mejores cosas del mundo. Necesitas una cultura orientada al producto, incluso en una empresa de tecnología. 

    11. Aprende del fracaso. Algunas veces, cuando innovas cometes errores. Es bueno admitirlos rápidamente y seguir mejorando tus otras innovaciones. 

    12. Aprende continuamente. Siempre hay "algo mas" para aprender! Haz polinización cruzada de ideas tanto dentro como fuera de la empresa. Aprende de clientes, competidores y socios. Y eres socio de alguien que no te gusta, aprende a quererlo, halágalo y aprende a beneficiarte de él. Aprende a criticar a tus enemigos abierta y honestamente. 

    viernes, 10 de febrero de 2012

    ¿Que es Ingeniería de Software?

    Definición:

    La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de programas informáticos, mas conocidos como softwares.

    La ingeniería de software engloba toda la gestión de un proyecto. Desde el análisis previo de la situación, el planteamiento del diseño hasta su implementación, pasando por las pruebas recurrentes para su correcto funcionamiento. Podríamos decir que la ingeniería del software es el continente donde se aloja el contenido, que sería el software en sí.

    Etapas de la Ingeniería de Software:

    Dentro de la ingeniería de software entendemos que también se encuentra todo el proceso de elaboración del software, que se denomina ciclo de vida. Está formado por cuatro etapas:
    • Concepción. En esta primera fase se desarrolla el modelo de negocio. Es decir, conocemos las necesidades que debe de tener un software y empezamos a buscar las herramientas para cubrirlas.
    • Elaboración. Se detalla las características de la estructura del software.
    • Construcción. Tal y como su nombre indica en este paso empezamos a elaborar de forma tangible todo aquello que, de momento, solo hemos plasmado en forma de ideas.
    • Transición. Es el momento de la implementación y el desarrollo para los clientes o usuarios. Deben tener tiempo para familiarizarse con el nuevo software.
    Una vez se realiza todo este ciclo, entramos en otra fase conocida como mantenimiento. Es una de las etapas más importantes ya que se solucionan los problemas o errores que puedan surgir durante su implementación y también su posterior puesta en marcha. Además, se incorporan actualizaciones teniendo en cuenta los requisitos del cliente con el objetivo de que puedan cumplir la mayor cantidad de tareas.

    Relacionado con la ingeniería de software también se encuentra la arquitectura de sistemas. Consiste en la esquematización de la estructura general del proyecto a desarrollar. El objetivo de conocer el esqueleto del software es tener la capacidad de señalar y conocer cuáles son los componentes que son necesarios para llevar a cabo el desarrollo.

    Hay que tener en cuenta que existen dos tipos de softwares. Por un lado, destacamos el estándar, más generalista y que se puede adaptar a varios modelos de negocio. Mientras que por el otro lado, tenemos el personalizado. Se trata de un tipo de software que se desarrolla para el uso exclusivo de un cliente. Se diseña a su imagen y semejanza, por lo que es lógico que solamente sirve para esa empresa, ya que se adapta a las necesidades y características de la compañía que ha solicitado diseñarlo. A pesar de estas diferencias clave todos los softwares presentan tres elementos que lo caracterizan: Programas y/o algoritmos, Estructura de datos y Documentos.

    Objetivos de la Ingeniería de Software

    La ingeniería de software cubre un marco muy amplio. Hay que entender esto como la posibilidad de que enmarque varios objetivos a tener en cuenta cuando queremos implementar u optar por un servicio de ingeniería de software:
    • Diseño de programas informáticos adaptados a las necesidades y exigencias de los clientes.
    • Solucionar problemas de programación.
    • Estar presente en todas las fases del ciclo de vida de un producto.
    • Contabilizar los costes de un proyecto y evaluar los tiempos de desarrollo.
    • Realizar el seguimiento del presupuesto y cumplir los plazos de entrega.
    • Liderar equipos de trabajo de desarrollo de software.
    • Estructurar la elaboración de evidencias que comprueben el perfecto funcionamiento de los programas y que se adaptan a los requerimientos de análisis y diseño.
    • Diseñar, construir y administrar bases de datos.
    • Liderar y orientar a los programadores durante el desarrollo de aplicaciones.
    • Incluir procesos de calidad en los sistemas, calculando métricas e indicadores y chequeando la calidad del software producido.
    • Estructurar e inspeccionar el trabajo del equipo ya sea el grupo de técnicos de mantenimiento o el grupo de ingenieros de sistemas y redes.
    No siempre una ingeniería de software debe enfocarse a todos estos objetivos. Es decir, se dirigen hacia la consecución de algunos de ellos, pero no necesariamente a todos, ya que las empresas que contratan este servicio no requieren el mismo tipo de proyecto.


    jueves, 9 de febrero de 2012

    Bienvenidos a mi Blog

    Bienvenidos a mi Blog, los invito a compartir mis experiencias y conocimientos en las siguientes áreas: Inteligencia Artificial, Tecnología, Desarrollo de Software, Optimización y Simulación.

    Soy Ingeniero de Sistemas con mas de 30 años de experiencia en el Desarrollo de Soluciones Computacionales para la Industria Petrolera, Empresas de Consultoría, Universidades, entre otras.

    Actualmente me desempeño como Consultor de Soluciones TI en las áreas de: Desarrollo de Soluciones Computacionales, Optimización, Inteligencia Artificial, Modelos Probabilísticos, Investigación de Operaciones, Métodos Numéricos Avanzados, Computo Científico, Confiabilidad y Análisis de Riesgo.

    Ing. Manuel Freitas
    Consultor en Soluciones TI

    Correo: freitas.manuel@gmail.com