Publicado por & archivado en Algoritmica y Programacion.

Perfil del buen Profesor

Libro Uno: El Vacío Silencioso

Asi habló el programador maestro:
“Cuando hayas aprendido a sacar el código de error, será la hora que te vayas.”

Libro Dos: Los Maestros Antiguos

Así habló el programador maestro:
“Después de tres días sin programar, la vida se vuelve sin sentido.”

Libro Tres: Diseño

Así habló el programador maestro:
“Cuando el programa está siendo probado, es muy tarde para hacer cambios de diseño.”

Libro Cuatro: Codificación

Así habló el programador maestro:
“Un programa bien escrito es su propio cielo; un programa mal escrito es su propio infierno.”

Libro Cinco: Mantenimiento

Así habló el programador maestro:
“Aunque un programa sólo tenga tres líneas de largo, algún dia tendrá que ser mantenido.”

Libro Seis: Administración

Así habló el programador maestro:
“Sean los programadores muchos y los administradores pocos — entonces todos serán productivos.”

Libro Siete: Sabiduría Corporativa

Así habló el programador maestro:
“Le puedes mostrar un programa a un ejecutivo de la corporación, pero no puedes hacer que entienda las computadoras.”

Libro Ocho: Hardware y Software

Así habló el programador maestro:
“Sin viento, el pasto no se mueve. Sin software, el hardware es inútil.”

Libro Nueve: Epílogo

Así habló el programador maestro:
“Es hora de que te vayas.”

Referencias:

Geoffrey James. The Tao of Programming. Infobooks. 1986

Publicado por & archivado en Internet y la Web.

Mis Parecidos con las Celebridades¿Te gustaria saber realmente a que celebridad te pareces?… ¡Es muy facil!. Lo único que tienes que hacer es seleccionar la foto tuya que prefieras e ingresar al sitio myHeritage, una web realmente imperdible, que te permite utilizar completamente gratis tecnologia super sofisticada de reconocimiento de rostros (face recognition) para establecer automaticamente similitudes de tu rostro o de los rostros de una foto familiar, o de un grupo de amigos, con personajes famosos… ¿entretenido verdad?.

Solamente debes seleccionar la foto tuya que prefieras y tenerla a mano (dentro de tu pc, en formato gif o jpg). Luego, la podrás comparar con una base de datos de 3.200 rostros más, para encontrar así notables semejanzas expresadas en porcentajes con celebridades de todo el mundo. La colección de celebridades de myHeritage no incluye solamente a los típicos actores de cine, sino que también a las más famosas y los más famosos en otras areas: musica, arte, ciencias, literatura, deportes, espacio, política, etc., de lo siglos 19, 20 y 21.

Si deseas saber a que celebridad te pareces [Click Aqui]

Mis Parecidos con las Celebridades

Publicado por & archivado en Algoritmica y Programacion.

Como NO realizar una practica de programacion

De la programación propiamente dicha

  • Ignora los mensajes de error
  • Ignora las advertencias, “warnings” o “hints”
  • Escribe el código directamente sin pensar
  • Aunque el código no compile o no funcione, sigue escribiendo
  • Si el código tiene un error que no se produce siempre, ignóralo y sigue escribiendo
  • Si el código tiene un error que se produce siempre, cambia cosas aleatoriamente hasta que desaparezca
  • Construye enormes porciones de código sin compilar / ejecutar / probar
  • No escribas comentarios, salvo los obligatorios
  • Ignora los enunciados
  • Ignora las normas de programación y presentación
  • Escribe la documentación al final
  • No aprendas a utilizar el depurador ni otras herramientas
  • No utilices jamás breakpoints al depurar un programa

De la relación con el profesor

  • No pidas ayuda
  • Nunca describas un problema en detalle
  • Lleva siempre los fuentes equivocados
  • No aísles el problema
  • Usa el correo electrónico con habilidad
  • Eskríbelo todo cn abrvtrs o konsonantes ekstrañas
  • Comete faltas de ortografía
  • No te identifiques

Y, sobre todo…

  • Deja el trabajo para el final
  • Copia las prácticas
  • No vayas a clase

Fuente Original:

Agustín Cernuda del Río. Como NO realizar una practica de programacion. Universidad de Oviedo. 2002

Publicado por & archivado en Ingenieria de Software.

¿Que es el Proceso Unificado de Desarrollo de Software?

  1. Proceso de Desarrollo de Software: Proceso de negocio, o caso de uso de negocio, de un negocio de desarrollo de software. Conjunto total de actividades necesarias para transformar los requisitos de un cliente en un conjunto consistente de artefactos que representan un producto software y en punto posterior en el tiempo para transformar cambiso en dichos requisitos en nuevas versiones del producto.
  2. Lenguaje Unificado de Modelado (UML): Lenguaje estandar para el modelado de software lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (Artefactos) en esquemas o diagramas estandarizados.
  3. Proceso Unificado de Desarrollo de Software (PUDS): Proceso de desarrollo de software basado en el Lenguaje Unificado de Modelado y que es iterativo, centrado en la arquitectura y dirigido por los casos de uso y los riesgos. Proceso que se organiza en cuatro fases: inicio, elaboracion, construccion y transicion, y que se estructura en torno a cinco flujos de trabajo fundamentales: recopilacion de requisitos, analisis, diseño, implementacion y pruebas. Proceso que se describe en terminos de un modelo de negocio, el cual esta a su vez estructurado en funcion de tres bloques de construccion primordiales trabajadores, actividades y artefactos.
  4. Requisitos: Flujo de trabajo fundamental cuyo proposito esencial es orientado al desarrollado hacia el sistema correcto. Esto se lleva a cabo mediante la descripcion de los requisitos del sistema de forma tal que se pueda llegar a un acuerdo entre el cliente(incluyendo los usuarios) y los desarrolladores del sistema, acerca de lo que el sistema debe hacer y lo que no.
  5. Analisisis: Flujos de trabajo fundamental cuyo proposito principal es analizar los requisitos descritos en la captura de requisitos, mediante su refinamiento y estructuracion. El objetivo de esto es (1) lograr una comprension mas precisa de los requisitos, y (2) obtener una descripcion de los requisitos que sea facil de mantener y que nos ayude a dar estructura al sistema en su conjunto incluyendo su arquitectura.
  6. Diseño: Flujo de trabajo fundamental cuyo proposito principal es la de formular modelos que se centran en los requisitos no funcionales y el dominio de la solucion y que prepara para la implementacion y pruebas del sistema.
  7. Implementacion: Flujo de trabajo fundamental cuyo proposito esencial es implementar el sistema en terminos de componentes, es decir codigo fuente guiones, ficheros binarios, ejecutables, et.
  8. Prueba: Flujo de trabajo fundamental cuyo proposito esencial es comprobar el resultado de la implementacion mediante las pruebas de cada construccion, incluyendo tanto construcciones internas como intermedias, asi como las versiones finales del sistema que van a ser entregadas a terceras personas.
  9. Fase de Inicio: Primera fase del ciclo de vida del software, en la que la idea inicial para el desarrollo es refinada hasta el punto de quedar lo suficientemente bien establecida como para garantizar la entrada en la base de elaboracion.
  10. Fase de Elaboracion: Segunda fase del ciclo de vida, en la que se define la arquitectura.
  11. Fase de Construccion: Tercera fase del ciclo de vida del software, en la que el software es desarrollado a partir de una linea base de la arquitectura ejecutable, hasta el punto en el que se esta listo para ser transmitido a las comunidades de usuarios.
  12. Fase de Transicion: Cuarta fase del ciclo de vida del software es puesto en manos de la comunidad de usuarios.
  13. Arquitectura: Conjunto de desiciones significativas, acerca de la organizacion de un sistema software, la seleccion de los elementos estructurales apartir de los cuales se compone el sistema y las interfaces entre ellos, junto con su comportamiento, tal y como se especifica en las colaboraciones entre estos elementos, la composicion de estos elementos estructurales y de comportamiento de subsistemas progresivamente mayores, y el estilo arquitectonico que guia esta organizacion, estos elementos y sus interfaces, sus colaboraciones y su composicion. La arquitectura de software se interesa no solo por la estructura y el comportamiento, sino tambien por las restricciones y compromisos de uso, funcionamiento, flexibilidad al cambio, reutilizacion, comprension, economia y tecnologia, asi como aspectos esteticos.
  14. Vista Arquitectonica del Modelo de Casos de Uso: Vista de la arquitectura de un sistema abarcando los casos de uso significativos desde un punto de vista arquitectonico.
  15. Vista Arquitectonica del Modelo de Analisis: Vista arquitectonica de un sistema, abarcando las clases, paquetes y realizaciones de casos de uso del analisis, vista que fundamentalmente aborda el refinamiento y estructuracion de los requisitos del sistema. La estrucutra de esta vista se preserva en la medida de lo posible cuando se diseña e implementa la arquitectura del sistema.
  16. Vista Arquitectonica del Modelo de Diseño: Vista de la arquitectura de un sistema, abarcando las clases , subsistemas, interfaces y realizaciones de casos de uso del diseño que forman el vocabulario del dominio de la solucion del sistema, vista que abarca tambien los hilos y procesos qeu establecen la concurrencia y mecanismos de sincronizacion del sistema, vista que aborda los requisitos no funcionales, incluyendo los requisitos de rendimiento y capacidad de crecimiento de un sistema.
  17. Vista Arquitectonica del Modelo de Despliege: Vista de la arquitectura de un sistema abarcando los nodos que forman la topologia hardware sobre la que se ejecuta el sistema, vista que aborda la distribucion, entrega e instalacion de las partes que constituyen el sistema fisico.
  18. Vista Arquitectonica del Modelo de Implementacion: Vista arquitectonica de un sistema, abarcando los componentes usados para el ensamblado y lanzamiento del sistema fisico, vista que aborda la gestion de la configuracion de las versiones del sistema, constituida por componentes independientes que pueden ser ensambladas de varias formas para producir un sistema ejecutable

Fuente Original:
Grady Booch, Ivar Jacobson, James Rumbaugh. El Proceso Unificado de Desarrollo de Software. Addison Wesley, 2000

Publicado por & archivado en Ingenieria de Software.

¿Que es el Lenguaje Unificado de Modelado?

  1. Lenguaje Unificado de Modelado (UML): Lenguaje estandar para el modelado de software. Lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado. Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo (artefactos) en esquemas o diagramas estandarizados.
  2. Caso de Uso: Una descripcion de un conjunto de secuencias e acciones, incluyendo variaciones, que un sistema lleva a cabo yq ue conduce a un resultado observable de interes para un actor determinado. Un caso de uso es en esencia un interaccion tipica entre un usuario y un sistema de computo.
  3. Diagrama: Un representacion grafica de un conjunto de elementos, usualmente representado como un grafo conectado de vertices (elementos) y arcos (relaciones).
  4. Diagrama de Caso de Uso: Un diagrama que muestra un conjuntos de casos de uso y de actores y sus relaciones, los diagramas de casos de uso muestran los casos de uso de un sistema desde un punto de vista estatico.
  5. Diagrama de Clases: Un diagrama que muestra un conjunto de clases, interface y colaboraciones y las relaciones entre estos, los diagramas de clases muestran el diseño de un sistema desde un punto de vista estatico, un diagrama que muestra una coleccion de elementos (estaticos) declarativos.
  6. Diagrama de Objetos: Un diagrama de muestra un conjunto de objetos y sus relaciones en un momento determinado; los diagramas de objetos muestran el diseño o los procesos de un sistema desde un punto de vista estático.
  7. Diagrama de Interaccion: Un diagrama que muestra un interaccion, consiste en un conjunto de objetos y sus relaciones, incluyendo los mensajes que pueden ser enviados entre ellos, los diagramas de interaccion trata la vista dianmica de un sistema, un termino generico que se aplica a varios tipos de diagramas que enfatizan las interacciones de objetos, incluyendo diagramas de secuencia, diagramas de colaboracion y diagramas de actividad.
  8. Diagrama de Secuencia: Un diagrama de interaccion, que hace enfasis en la ordenacion temporal de los mensajes.
  9. Diagrama de Colaboracion: Un diagrama de interaccion que enfatiza la organizacion estructural de los objetos que envian y reciben mensajes, un diagrama que muestra las instrucciones organizadas alrededor de instancias y de los enlaces entre ellas.
  10. Diagrama de Paquetes: Muestra grupos de clases y las dependencias entre ellos.
  11. Diagrama de Estados: Un diagrama que muestra una maquina de estados; los diagramas de estados tratan la vista dinamica de un sistema.
  12. Diagrama de Actividades: Un diagrama que muestra un flujo de actividad a actividad. Los diagramas de actividad tratan la vista dinámica de un sistema. Un caso especial de diagrama de estados en el cual casi todos los estados son estados en acción y en el cual todos o casi todos los estados son estados de acción y en el cual todas o casi todas las transiciones son disparadas por la terminación de las acciones en los estados origen.
  13. Diagrama de Despliegue: Un diagrama que muestra un conjunto de nodos y sus relaciones, un diagrama de despliegue muestra el despliegue de un sistema desde el punto de vista estatico. Muestra la disposicion fisica de los componentes en los nodos de hardware y software.
  14. Diagrama de Componentes: Un diagrama que muestra un conjunto de componentes y sus relaciones, los diagramas de componentes muestran los componentes de un sistema desde un punto de vista estatico.

Fuente Original:

Grady Booch, Ivar Jacobson, James Rumbaugh. El Lenguaje Unificado de Modelado. Addison Wesley. 2000

Publicado por & archivado en Computacion e Informatica.

Como citar este artículo:
Quispe-Otazu, R. Etica, Informatica y Sociedad. Blog de Rodolfo Quispe-Otazu [Internet]. Noviembre 2007. Disponible en: http://www.rodolfoquispe.org/blog/etica-informatica-y-sociedad.php

Etica, Informatica y Sociedad

Introduccion

Hoy en día no podemos entender nuestra sociedad sin computadores o sin las redes de comunicación de datos que las enlazan llegando a ser el centro y la base de información de nuestra sociedad.

La Computación e Informática es actualmente el área de mayor influencia cultural a tal grado que han logrado cambiar nuestros modos de pensar y de ser como parte de la sociedad y como personas.

Todos sus cambios están configurando nuestros modos de pensar, a la vez degenerar nuevos problemas en donde la Computación e Informática sin lugar a dudas toma nuevamente un papel principal

Conforme la sociedad se hace mas y mas dependiente de las computadores, se hace a la vez mas y mas vulnerable a los fallos que se produzcan, sea por un mal funcionamiento de sus componentes, equipos o sistemas programáticos o por una mala utilización por parte de las personan que deben manejar dichos computadores.

Los fallos informáticos han estado y están creando una serie de problemas sociales, a la vez de incluir en nuestro lenguaje nuevos términos como: crimen informático, robo de software, piratas, virus informáticos, etc., hechos que son realidades cotidianas y que representan un problema importante para el hombre, su sociedad, los países y el ambiente a nivel global .Cada uno de estos problemas crea dilemas éticos para los profesionales y para los usuarios de la tecnología.

Estamos seguros que el desarrollo de una asignatura de Ética Aplicada a la Computación e Informática así como el conocimiento y aplicación de los códigos de ética profesional pueden ayudar a resolver dichos problemas, permitiendo a la vez un adecuado y humanizado uso de la Computación e Informática

Definiciones

Diccionario RAE (Real Academia Española)

  • Parte de la filosofía que trata de la moral y de las obligaciones del hombre.
  • Conjunto de normas morales que rigen la conducta humana.

Ética disciplina que trata de la valoración moral de los actos humanos, además de conjunto de principios y de normas morales que regulan las actividades humanas. Del griego ethos, el término ética equivale etimológicamente al de moral (del latín mos, moris: costumbre, modo de comportarse).

Ética es una palabra derivada del concepto griego Ethikos, que define aquella parte de la filosofía que trata de la moral y de las obligaciones del hombre en un contexto de entregar o proveer las reglas de conducta que deben seguirse para hacer el bien y evitar el mal.

Los principios de la etica

La ética es una disciplina muy antigua, pues ya en la Grecia clásica hubo grandes filósofos preocupados por esta cuestión, como son Platón, Aristóteles, Epicureo, Diógenes, etc. (siglos V-III a.c.).

La ética nos proporciona los conocimientos teóricos y prácticos para poder usar bien la libertad. Nadie es capaz de vivir bien con sólo desearlo. Hace falta tener claro en que consiste vivir bien y después ponerlo en práctica. La buena intención no basta.

La ética no depende de gustos, opiniones o apetencias. No da lo mismo comportarse de un modo u otro. Es una parte, y parte importante de la vida de un hombre, es la que éste pasa cuando se dedicada a su profesión. Por ello, la ética toma parte de los diversos problemas que afectan a cada una de las profesiones humanas

De ahí la gran importancia de definir reglas de comportamiento que guíen el correcto obrar.

Problemas relacionados con la computadora

  1. Delitos por Computador: hackers, crackers, phreakers
  2. La problemática del software y la propiedad intelectual: copias ilegales, calidad del software, fallas de software
  3. Almacenamiento de datos y la invasión de la intimidad.
  4. La utilización de la información
  5. Los problemas de automatización.
  6. Los problemas en el Internet
    • Robo de información.
    • Alteración (borrado, agregado o modificado) de datos o información
    • Robo de la propiedad intelectual
    • Invasión a la intimidad, mal uso de la información
    • Perdida de la información
    • Daño a los datos, a la información o a los equipos

Principales principios eticos aplicables a la Computación e Informática

  1. El secreto profesional y la confidencialidad
  2. La responsabilidad profesional
  3. La lealtad hacia su empresa y su público usuario
  4. La dignidad, la honestidad y la honradez
  5. La preferencia del servicio al bien común y al bien publico
  6. La preparación académica y continuada
  7. La solidaridad profesional
  8. La integridad profesional
  9. El apoyar y practicar el derecho a proveer y recibir información
  10. El transmitir datos con exactitud
  11. El evitar invasiones de la intimidad
  12. El utilizar solamente justos u honestos medios en el ejercicio de la actividad profesional
  13. El colaborar y promover en el desarrollo de la Computación e Informática
  14. El saber mostrar su competencia
  15. El respeto y protección de la propiedad intelectual y la observancia de los derechos de autor, mencionando las fuentes de lo escrito, haciendo citas y referencias apropiadas
  16. Otros mas

La etica aplicada a la Computacion e Informatica

¿Cómo podemos conseguir el uso adecuado de la Computación e Informática?
¿Cual es el origen y la solución a estos problemas?

El desarrollo de la tecnología en los últimos decenios ha originado muchos cambios en los planes curriculares de las carreras de ingeniería, incluyendo un interés creciente por la importancia de la responsabilidad ética y social de los profesionales de Computación e Informática

La serie de responsabilidades que un profesional debe tomar en su vida profesional (y privada) se presentan como un desafió para formar profesionales técnicamente competentes que tengan además sensibilidad ética.

En la medida en que se establecen las normas que regulan el comportamiento de las personas en un determinado campo, las personas se sienten con más libertad para poder actuar bien en el, salvo casos extremos o patológicos, la mayoría deseamos vivir bien.

Desde algunos años, las organizaciones internacionales más importantes como la ACM (Association for Computing Machinery), el IEEE (Institute of Electrical and Electronics Engineers) o el IEDEI (Instituto Español de Ética Informática) entre otros han formulado y desarrollado códigos de ética y normas de conducta aplicables a la Computación e Informática. Un problema tradicional de estos códigos es que son muy generales, con expresiones fácilmente aplicables a cualquier profesión como por ejemplo: “En tu profesión debes ser siempre honesto y justo”. De todos ellos, el código presentado por la ACM en octubre de 1992 fué mejorado en este aspecto y trato de problemas específicos de ética en la Computación e Informática.

No obstante su existencia, el siguiente paso es el de procurar que los contenidos éticos y de conducta profesional estén presentes en las enseñanzas de la Computación e informática a nivel universitario y técnico, pues de esa forma se estaría creando una mayor conciencia en los estudiantes de esta disciplina.. Estudiantes que todos esperamos sean los profesionales del mañana. La gran importancia que están tomando los contenidos éticos dentro de la informática han conducido a que, en el último informe realizado conjuntamente por la ACM y el IEEE se dedique un apartado específico al problema ético y social. Y se describa cuales enseñanzas debe de contener un buen curriculum en Computación e Informática,

En dicho informe, se declara que las carreras de Computación e Informática deben preparar a los estudiantes a comprender el campo de la Computación e Informática tanto como una disciplina académica, como una profesión dentro del contexto de una sociedad. Por tanto, un objetivo importante es acercar a los estudiantes a los conceptos éticos y sociales que van asociados con el campo de la Computación e Informática. Los estudiantes necesitan desarrollar la capacidad de preguntarse acerca del impacto social de la Computación e Informática, y sobre los principales problemas de su mal uso, como por ejemplo: ¿Este producto mejorará o degradará la calidad de vida?, o ¿Hasta donde es bastante para desarrollar la calidad de un producto de software?, etc.

Si hacemos una revisión de los planes de estudios de diversas universidades, tanto nacionales como extranjeras, la mayoría no tienen cursos relacionados con la ética en Computación e Informática. No obstante que un alto porcentaje tienen cursos relacionados con temas ético filosóficos religiosos..

Aunque este enfoque ha sido exitoso en algunas universidades debido a una cierta tradición y tipo de currículos, tiene sus desventajas en particular cuando no se relaciona con otras asignaturas de su especialidad, pudiendo dejar en los alumnos la impresión de que la ética es algo innecesaria y no una parte integral de su vida.

Dicha formación ética ayudará no solamente a mejorar la calidad de la Computación e Informática o sus productos si no al futuro profesional en todos sus aspectos como persona, como parte de una sociedad o como un ciudadano del mundo. Otro aspecto importante es como aplicar la teoría moral a la práctica profesional: el salto de la teoría a la práctica.

Aunque visualizamos la necesidad de que la enseñanza de la ética y sus principios sea desde los primeros niveles de estudio proponemos que en una profesión tan importante como la Computación e Informática se deba preparar a los futuros profesionales en los aspectos deontológicos con los que se va a encontrar a la hora de ejercer su profesión, tomar decisiones y actuar.

Conclusion

Aun no se ha desarrollado un corpus de normas morales que ayuden a resolver los problemas diarios que se plantean en el ejercicio de nuestra profesión. Esto está produciendo un impacto social negativo, trayendo una serie de problemas difíciles que hasta el momento no han sido resueltos acertadamente.

Para remediar esta situación, nos parece que sería adecuado aplicar la ética a la Computación e Informática, y dotarlas a ambas de un conjunto de normas claras de comportamiento. Para ello, se tendría que realizar una acción encaminada a conseguir dos objetivos fundamentales.

El desarrollo de contenidos éticos y de conducta profesional que deben estar presentes en cualquier enseñanza de Computación e Informática, de cara a formar correctamente a los estudiantes para abordar y resolver sin dificultad cualquier problema que les pueda aparecer en el ejercicio de su profesión.

El desarrollo y la puesta en marcha de un código deontológico que ayude a clarificar que modos de conducta son correctos y cuales son impropios de la condición humana.

Dichas normas éticas y contenidos ayudarían a los profesionales de la Informática a actuar con más libertad al conocer claramente cual es el comportamiento que deben tener.

Estos aspectos tienen importancia en el momento de evaluar las habilidades de un profesional.

Otro aspecto importante por destacar es que a nivel internacional los criterios para la Acreditación de carreras de Computación e Informática están aumentado su atención a la responsabilidad ética de los profesionales y el contexto social.

De lo anterior podemos también concluir que estamos ante nuevos retos tanto en el mundo profesional, como en el mundo educativo. Los códigos deontológicos pretenden responder a cuestiones éticas que surgen en la vida profesional. Sin embargo, no son una respuesta suficiente a los problemas derivados de la profesión, aunque sí un medio de plantear los problemas y concienciarse de la relevancia de los mismos. Finalmente la Ética supone un reto para la vida educativa, en el sentido de que educar con conciencia ética debe ser también parte de la currícula de los centros de enseñanza e investigación en Computación e Informática

Recordamos por último, que los principales obstáculos interiores para la libertad de una persona son la ignorancia y la debilidad. El que no sabe lo que tiene que hacer, sólo tiene la libertad de equivocarse, pero carece de la libertad de acertar. Cuando los hombres no saben que hacer, acaban cometiendo el tremendo error de pensar que dedicarse a ganar dinero es lo único sensato que se puede hacer en la vida. Esto hace que cada vez más el hombre se centre en si mismo, sin darse cuenta de que ese modo de vivir es incoherente con la posición que le corresponde al hombre en el mundo.

Fuentes Originales:

Publicado por & archivado en Marketing en Internet.

Como citar este artículo:
Rodolfo Quispe-Otazu. Factores de Posicionamiento Web en Buscadores. Blog de Rodolfo Quispe-Otazu [Internet]. Octubre 2007. Disponible en: http://www.rodolfoquispe.org/blog/factores-de-posicionamiento-web-en-buscadores.php

Factores de Posicionamiento Web en Buscadores

Los algoritmos que utilizan Google, Yahoo! o Bing para calcular los resultados de busqueda, pueden variar en cualquier momento. Sin embargo normalmente eludimos algunos detalles especificos relacionados con buscadores particulares y sus algoritmos. Los buscadores se conocen por modificar ocasionalmente sus algoritmos y como resultado invertir los SERPs (Search Engine Result Pages).

Se consideran como los factores mas importantes y que son el abecedario de un especialista en SEO que afectan a los ranking de buscadores se agrupan en las siguientes categorias generales:

  • Factores visibles en la pagina
  • Factores invisibles en la pagina
  • Factores basados en el tiempo
  • Factores externos

Factores visibles en el pagina

  • Titulo de la pagina
  • Encabezados de pagina
  • Texto de la pagina
  • Enlaces de salida
  • Palabra clave en la url de pagina y nombre de dominio
  • Estructura de enlaces internos y anchor text
  • Actualizacion del sitio web

Factores invisibles en la pagina

  • Descripcion
  • Palabras claves
  • Alt y atributos Title
  • Consideraciones acerca de la estructura de la pagina

Factores basados en el tiempo

  • Sitio y edad de la pagina
  • Edad del enlace
  • Duracion del registro de un dominio

Factores externos

  • Cantidad de los enlaces de entrada
  • Calidad de los enlaces de entrada
  • Relevancia de los enlaces de entrada
  • Link churn
  • Velocidad para la adquisicion de enlaces
  • Texto de enlace y texto circundante
  • Enlaces reciprocos
  • Numero de enlaces en una pagina
  • Relacion semantica entre los enlaces de una pagina
  • Direcciones IP de sitios de intercambio de enlaces
  • TLD o nombre de dominio para un enlace
  • Localizacion de un enlace
  • Cumplimiento de estanderes de la Web
  • Factores “red-flag” perjudiciales

Referencias:

Publicado por & archivado en Marketing en Internet.

Como citar este artículo:
Rodolfo Quispe-Otazu. Use las palabras clave correctas. Blog de Rodolfo Quispe-Otazu [Internet]. Setiembre 2007. Disponible en: http://www.rodolfoquispe.org/blog/use-las-palabras-clave-correctas.php

Use las palabras clave correctas

Introduccion

Como sabemos las técnicas de posicionamiento en buscadores, no se limitan únicamente a dar de alta una web en los buscadores o directorios, sino tambien es hacer que una página web aparezca en posiciones destacadas de las páginas de resultados de los buscadores SERPs (Search Engine Result Pages) para determinadas palabras clave.

En la actualidad son miles las web que compiten por ocupar las primeras posiciones para dar a conocer sus productos o servicios a través de Internet con el objetivo de atraer visitantes y convertirlos en clientes.

Elegir las palabras claves y las frases correctas en sus páginas es extremadamente importante para ayudar a maximizar su posicionamiento en las páginas de resultados de los motores de búsqueda. Por ello la importancia que tiene el comprender y analizar el comportamiento de su audiencia para descubrir el modo en que utiliza el lenguaje en la búsqueda de productos o servicios .

El problema es que sin una adecuada estrategia de promoción, y sin una web adecuada a este factor tan importante y otros factores que toman en cuenta los algoritmos que los buscadores utilizan, es casi imposible conseguir estar en el top.

Optimización en motores de búsqueda

Para conseguir esta meta debemos conocer como funcionan los motores de búsqueda y cómo valoran las webs para posicionarlas en su ranking.

Aunque cada motor de búsqueda cuente con sus propios algoritmos, existen factores de posicionamiento general ampliamente aceptados. Dichos factores de posicionamiento se dividen en dos grupos, dependiendo si están (on the page ) o no (off the page) bajo el control de un especialista en SEO (Search Engine Optimization):

Factores on the page :

  • Optimización de palabras clave.
  • Optimización de los títulos.
  • Las meta etiquetas.
  • Palabras clave secundarias.

Factores off the page :

  • El PageRank (PR).
  • El texto de los links.
  • Los links externos.

El trabajo de un especialista y/o consultor SEO sera utilizar diversas técnicas de posicionamiento para conseguir que su web aparezca en posiciones destacadas de las páginas de resultados de los buscadores SERPs (Search Engine Result Pages) principalmente en Google, cosa que no es tarea fácil ni mucho menos barata. Es un gran conocedor de la WWW (los sitios web de Internet), esta al dia con los cambios y las nuevas tendencias en los buscadores, y principalmente le ayudará a conseguir enlaces de calidad hacia su sitio web, y reestructura su sitio web y sus contenidos en caso de que sea necesario.

Optimización de palabras clave

La selección de palabras clave es considerada como el factor más importante en el posicionamiento en buscadores y es la base de toda estrategia SEO. Para una selección óptima de keywords se deben tener en cuenta los siguientes puntos:

  • Popularidad de las Keywords.
  • Competencia por las keywords.
  • Relevancia desde el punto de vista del Marketing.
  • Relación de las keywords con el contenido de la web.

A la hora de posicionar una web se deben elegir las palabras clave que mejor se ajusten con los contenidos de la web y las palabras clave que son mas buscadas en los diferentes motores de búsqueda.

Para valorar la efectividad de estas palabras clave existen algunos métodos estandarizados que miden la relación entre la dificultad y los beneficios de posicionar una determinada palabra clave:

  • KEI (Keyword Efectiveness Index)
  • Google PageRank

Herramientas Gratuitas para la seleccion de keywords

Existen una infinidad de herramientas gratutitas para investigar las palabras de busqueda mas utilizadas. De todas las mas conocidas y importantes tenemos:

Publicado por & archivado en Ingenieria de Software.

Como citar este artículo:
Quispe-Otazu, R. ¿Que es la Ingenieria de Requisitos?. Blog de Rodolfo Quispe-Otazu [Internet]. Agosto 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-requisitos.php

¿Que es la Ingenieria de Requerimientos?

La parte más difícil de construir un sistema es precisamente saber qué construir. Ninguna otra parte del trabajo conceptual es tan difícil como establecer los requisitos técnicos detallados, incluyendo todas las interfaces con gente, máquinas y otros sistemas. Ninguna otra parte del trabajo afecta tanto el sistema si es hecha mal. Ninguna es tan difícil de corregir más adelante … Entonces, la tarea más importante que el ingeniero de software hace para el cliente es la extracción iterativa y el refinamiento de los requerimientos del producto. [Frederick P. Brooks, 1987]

Introduccion:

Es muy frecuente escuchar entre los conocedores del desarrollo de software (programas de computadoras), que un gran número de los proyectos de software fracasan por no realizar una adecuada definición, especificación, y administración de los requisitos. Dentro de esa mala administración se pueden encontrar factores como la falta de participación del usuario, requisitos incompletos y el mal manejo del cambio a los requisitos.

La Ingeniería de Requisitos (IR) cumple un papel primordial en el proceso de producción de software, ya que se enfoca un área fundamental: la definición de lo que se desea producir. Su principal tarea consiste en la generación de especificaciones correctas que describan con claridad, sin ambigüedades, en forma consistente y compacta, las necesidades de los usuarios o clientes; de esta manera, se pretende minimizar los problemas relacionados por la mala gestión de los requisitos en el desarrollo de sistemas.

Definicion: Requisito

  • Una condición o necesidad de un usuario para resolver un problema o alcanzar un objetivo. [Std 610.12-1900, IEEE: 62]
  • Una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal. [Std 610.12-1900, IEEE: 62]
  • Un requisito es simplemente una declaración abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restricción de éste. [Sommerville, 2005: 108]

Definicion: Ingenieria de Requisitos

  • La Ingeniería de Requisitos ayuda a los ingenieros de software a entender mejor el problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente quiere y cómo interactuarán los usuarios finales con el software. [Pressman, 2006: 155]
  • La Ingeniería de Requisitos es el proceso de desarrollar una especificación de software. Las especificaciones pretender comunicar las necesidades del sistema del cliente a los desarrolladores del sistema. [Sommerville, 2005: 82]
  • La Ingeniería de Requisitos se define, como un conjunto de actividades en las cuales, utilizando técnicas y herramientas, se analiza un problema y se concluye con la especificación de una solución (a veces más de una). [Ortas 1997]

Actividades de la Ingenieria de Requisitos:

  • Extracción: Esta fase representa el comienzo de cada ciclo. Extracción es el nombre comúnmente dado a las actividades involucradas en el descubrimiento de los requisitos del sistema.
  • Análisis: Sobre la base de la extracción realizada previamente, comienza esta fase en la cual se enfoca en descubrir problemas con los requisitos del sistema identificados hasta el momento.
  • Especificación: En esta fase se documentan los requisitos acordados con el cliente, en un nivel apropiado de detalle.
  • Validación: La validación es la etapa final de la IR. Su objetivo es, ratificar los requisitos, es decir, verificar todos los requisitos que aparecen en el documento especificado para asegurarse que representan una descripción, por lo menos, aceptable del sistema que se debe implementar. Esto implica verificar que los requisitos sean consistentes y que estén completos.

Técnicas y Herramientas utilizadas en las actividades de Ingeniería de Requisitos:

  • Entrevistas y cuestionarios
  • Sistemas existentes
  • Grabaciones de video y de audio
  • Brainstorming (tormenta de ideas)
  • Arqueología de documentos
  • Aprendiz.
  • Observación
  • Run Use Case WorkShop (talleres de trabajo basados en los Casos de Uso)
  • Prototipos
  • Análisis FODA (Fortalezas, Oportunidades, Debilidades y Amenazas)
  • Cadena de valor
  • Modelo de clase conceptual, Diagrama Conceptual, Diagrama de Clases Conceptual
  • Diagrama de pescado (Ishikawa Diagram, Cause-and-Effect o Fishbone Diagram)
  • Glosario
  • Diagrama de actividad
  • Documento ESRE, Casos de uso
  • Lista de requerimientos
  • Casos de uso
  • Casa de calidad o QFD (Quality Function Deployment)
  • Checklist (lista de verificación)

Referencias:

Publicado por & archivado en Algoritmica y Programacion.

¿Que es la Programacion Orientada a Objetos?

Programacion Orientada a Objetos (POO): Metodo de Implementacion en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son miembros de una jerarquia de clases unidas mediante relaciones de herencia. En tales programas las clases suelen verse estaticas, mientras que los objetos suelen tener una naturaleza mucho mas dinamica, promovida por la evidencia de la ligadura dinamica y el polimorfismo.

Objeto: Algo a lo cual se le puede hacer cosas. Un objeto tiene un estado, comportamiento e identidad; la estructura y comportamiento de objetos similares se definen en una clase comun. Los terminos instancia y objeto son intercambiables.

Clase: Conjunto de objetos que comparten una estructura comun y un comportamiento comun. Los terminos y clase y tipo suelen ser (no siempre) equivalentes; una clase es un concepto ligeramente diferente del de un tipo, en el sentido de que enfatiza la clasificacion de estructura y comportamiento.

Encapsulación: El proceso de introducir en el mismo comportamiento los elementos de abstraccion que constituyen su estructura y comportamiento; el encapsulamiento sirve para separar el interfaz contractual de una abstraccion y su implantacion.

Abstraccion: Las caracteristicas esenciales de un objeto que lo distiguen de todos los demas objetos y proporcionan asi fronteras conceptuales definidas con nitidez en relacion con la prespectiva del observador; el proceso de centrarse en las caracteristicas esenciales de un objeto. La abstraccion es uno de los elementos fundamentales del modelo de objetos.

Herencia: Relacion entre clases, en la que una clase comparte la estructura y comportamiento definido en otra (herencia simple) u otras (herencia multiple) clases. La herencia define una relacion “de tipo” entre clases en la que una subclase hereda de una o mas superclases generalizadas, una subclase suele especializar a sus superclases aumentando o refinando la estructuras y comportamiento existentes.

Polimorfismo: Un concepto de teoria de tipos, de acuerdo con el cual un nombre (como declaracion de una variable) puede denotar objetos de muchas clases diferentes que se relacionan mediante alguna superclase comun; asi todo objeto denotado por este nombre es capaz de responder a algun conjunto comun de operaciones de diferentes modos.

Ligadura dinámica y estatica: Ligadura denota asociacion de un nombre (como un declaracion de un variable) con una clase; ligadura dinamica es una ligadura en la que la asociacion nombre/clase no se realiza hasta que el objeto designado por le nombre se crea en tiempo de ejecucion; ligadura estatica es una ligadura en la que la asociacion nombre/clase se realiza cuando se declara el nombre (en tiempo de compilacion) pero antes de la creacion del objeto se designa el nombre.

Mensaje: Operacion que un objeto realiza sobre otro. Los terminos mensaje, metodo o operacion suelen ser equivalentes.

Metodo: Operacion sobre un objeto, definida como parte de la declaracion de una clase; todos los metodos son operaciones, pero no todas las operaciones son metodos. Los terminos mensaje, metodo o operacion suelen ser equivalentes.

Comportamiento: Como actua y reacciona un objeto, en terminos de sus cambios de estado y su paso de mensajes; la actividad exteriormente visible y comprobable de un objeto.

Clase abstracta: Una clase que no tiene instancias. Una clase abstracta se escribe con la intencion de que sus subclases concretas añadan elementos nuevos a sus estructura y comportamiento, normalmente implementas en operaciones abastractas.

Clase base: La clase mas generalizada en una estructuras de clases. La mayoria de las aplicaciones tienen muchas de tales clases raiz. Algunos ejemplos definen una clase base primitiva, que sirve como la superclase ultima de todas las clases.

Clase concreta: Clase cuya implementacion esta completa y por tanto puede estar instanciada.

Clase contenedor (container): Clases que sirve como plantilla para otras clases, en las que la plantilla puede denotar colecciones homogeneas (todos los objetos de la coleccion son de la misma clase) o heterogeneas (cada uno de los objetos de la coleccion puede ser una clase diferente, aunque generalmente todos deben comportir un superlcase comun). Las clases contenedor se definen la mayoria de las veces como clases parametrizadas, en las que algun parametro designa la clase de los objetos contenidos.

Clase generica: Clase que sirve como plantilla para otras clases, en las que la plantilla puede parametrizarse con otras clases objetos y/o operaciones. Un clase generica debe ser instanciada (rellenados sus parametros) antes de que puedan crearse objetos. Las clases genericas se usan tipicamente como clases contenedor. Los terminos clase generia y clase parametrizada son intercambiables.

Jerarquia: Clasificacion u ordenacion de abstracciones. Las dos jerarquias mas habituales en un sistema complejo son su estructura de clases (que incluye jerarquia “de tipo”) y sus estructura de objetos (que incluye jerarquia “de partes” y de colaboracion); pueden encontrarse tambien jerarquias en las arquitecturas de modulos y procesos de un sistema complejo.

Operacion: Algun trabajo que un objeto realiza sobre otro con el fin de provocar una reaccion. Todas las operaciones sobre un objeto concreto pueden encontrarse en forma de subprogramas libres y funciones miembros o metodos. Los terminos mensaje, metodo y operacion son intercambiables.

Constructor: Operacion que crea un objeto y/o inicializa su estado.

Destructor: Operacion de libera el estado de un objeto y/o destruye el propio objeto.

Fuente Original:

  • Grady Booch. Analisis y Diseño Orientado a Objetos con Aplicaciones. Addison Wesley, 1996
  • Bertrand Meyer. Construccion de Software Orientado a Objetos. Prentice-Hall, 1998

Publicado por & archivado en Ingenieria de Software.

Un proceso define quien esta haciendo que, cuando, y como alcanzar un determinado objetivo. En la Ingenieria del Software el objetivo es construir un producto software o mejorar uno existente. Un proceso efectivo proporciona normas para el desarrollo eficiente de software de calidad. Captua y presenta las mejores practicas que el estado actual de la tecnologia permite. En consecuencia, reduce el riesgo y hace el proyecto mas predecible. El efecto global es el fomento de una vision y una cultura comunes.

Es necesario un proceso que sirva como guia para todos los participantes clientes, usuarios, desarrolladores y directivos ejecutivos. No nos sirve ningun proceso antiguo; necesitamos uno que sea el mejor proceso que la industria pueda reunir en este punto de su historia. Por ultimo necesitamos un proceso que este ampliamente disponible de forma que todos los interesados puedan comprender su papel en el desarrollo en el que se encuentran implicados.

Un proceso de desarrollo de software deberia tambien ser capaz de evolucionar durante muchos años. Durante esta evolucion deberia limitar su alcance, en un momentodel tiempo dado, a las realidades que permitan las tecnologias, herramientas, personas y patrones de organizacion.

  1. Tecnologias: El proceso debe contruirse sobre las tecnologias lenguajes de programacion, sistemas operativos computadores, estructuras de red, entornos de desarrollo, etc disponibles en el momento en que se va a emplear el proceso. Por ejemplo hace varios años el modealado visual no era realmente de uso general. Era demasiado caro. En aquellos tiempos, un creador de un proceso practicamente tenia que asumir que se usarian diagramas hechos a mano. Esa suposicion limitaba mucho el gado en el cual el creador del proceso podia establecer el modelado dentro del proceso.
  2. Herramientas: Los procesos y las herramientas deben desarrollarse en paralelo. Las herramientas son esenciales en el proceso. Dicho de otra forma, un proceso ampliamente utilizado para soportar la inversion necesaria para crear las herramientas que lo soporten.
  3. Personas: Un creador del proceso debe limitar el conjunto de habilidades necesarias para trabajar en el proceso a las habilidades que los desarrolladores actuales poseen, o apuntar aquellas que los desarrolladores puedan obtener rapidamente. Hoy es posible empotrar las herramientas software tecnicas que antes requieran amplios conocimientos, como la comprobacion de la consistencia en los diagramas del modelo.
  4. Patrones de Organizacion: Aunque los desarralladores de software no pueden ser expertos tan independientes como los musicos de una orquestas, estan muy lejos de los trabajadores automatas en los cuales Frederick W. Taylor baso su “Direccion Cientifica” hace cien años. El creador del proceso debe adoptar el proceso a las realidades del momento hechos como mezcla(en empresas pequeñas recien montadas) de socios de la empresa, empleados asalariados, trabajadores de obra y subcontratas de outsourcing y la prolongada escacez de desarrolladores de software.

Los ingenieros del proceso deben equilibrar estos cuatro conjuntos de circunstancias. Ademas el equilibrio debe estar presente no solo ahora, sino tambien en el futuro. El creador del proceso debe diseñar el proceso de forma que pueda evolucionar, de igual forma que el desarrollador de software intenta desarrollar un sistema que no solo funciona este año, sino que evoluciona con exito en los años venideros. Un proceso debe madurar durante varios años antes de productos comerciales manteniendo a la vez un nivel razonable de riesgo de utilizacion. El desarrollo de un producto nuevo es bastante arriesgado en el mismo como para añadirle el riesgo de un proceso puede ser estable. Sin este equilibrio de tecnologias, herramientas, personas y organizacion, el uso del proceso seria bastante arriesgado.

Fuente Original:

Grady Booch, Ivar Jacobson, James Rumbaugh. El Proceso Unificado de Desarrollo de Software. Addison Wesley. 2000

Publicado por & archivado en Ingenieria de Software.

Como citar este artículo:
Quispe-Otazu, R. ¿Que es la Ingenieria de Software?. Blog de Rodolfo Quispe-Otazu [Internet]. Mayo 2007. Disponible en: http://www.rodolfoquispe.org/blog/que-es-la-ingenieria-de-software.php

¿Que es la Ingenieria de Software?

Mas que una disciplina o un cuerpo de conocimiento, la ingenieria es un verbo, una palabra de accion, una manera de abordar un problema. [Scott Whitmire]

Introduccion

La Ingenieria del Software es una disciplina o area de la informatica o ciencias de la computacion, que ofrece metodo y tecnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy dia es cada vez mas frecuente la consideracion de la Ingenieria del Software como un nueva area de la ingenieria, y el Ingeniero del Software comienza a ser una profesion implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideracion social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.

Definicion: Ingenieria

La ingeniería es el estudio y la aplicación de las distintas ramas de la tecnología. El profesional en este ámbito recibe el nombre de ingeniero.

La actividad del ingeniero supone la concreción de una idea en la realidad. Esto quiere decir que, a través de técnicas, diseños y modelos, y con el conocimiento proveniente de las ciencias, la ingeniería puede resolver problemas y satisfacer necesidades humanas.

La ingeniería también supone la aplicación de la inventiva y del ingenio para desarrollar una cierta actividad. Esto, por supuesto, no implica que no se utilice el método científico para llevar a cabo los planes.

Definicion: Software

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. [Std. 729, IEEE]

El software no son solo programas, sino todos los documentos asociados y la configuracion de datos que se necesitan para hacer que estos programas operen de manera correcta. Un sistema de software consiste en diversos programas independientes, archivos de configuracion que se utilizan para ejecutar estos programas, un sistema de documentacion que describe la estructura del sistema, la documentacion para el usuario que explica como utilizar el sistema y sitios web que permitan a los usuarios descargar la informacion de productos recientes. [Sommerville, 2004]

El software de computadora es el producto que los ingenieros de software construyen y despues mantienen en el largo plazo. El software se forma con (1) las instrucciones (programas de computadora) que al ejecutar se proporcionan las caracteristicas, funciones y el grado de desempeño deseados; (2) las estructuras de datos que permiten que los programas manipulen informacion de manera adecuada; y (3) los documentos que describen la operacion y uso de los programas. [Pressman, 2005]

El software o soporte lógico de un computador es el conjunto de programas (instrucciones que el ordenador necesita para funcionar) ejecutables por el computador. Hoy en día el software ya no son solo programas, sino todos los procedimientos, reglas, documentos asociados (la documentación para el usuario que explica cómo utilizar el sistema) y los archivos de configuración que se necesitan para hacer que estos programas operen de manera correcta y los sitios web que permitan a los usuarios descargar la información de productos recientes. [Rodolfo Quispe-Otazú, 2010]

Definiciones: Ingenieria del Software

  • Ingenieria del Software es el estudio de los principios y metodologias para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978]
  • Ingenieria del Software es la aplicacion practica del conocimiento cientifico en el diseño y construccion de programas de computadora y la documentacion asociada requerida para desarrollar y operar (funcionar) y mantenerlos. Asi como tambien desarrollo de software o produccion de software. [Bohem, 1976]
  • La Ingenieria del Software es el establecimiento y uso de principios solidos de la ingenieria para obtener economicamente un software confiable y que funcione de modo eficiente en maquinas reales. [Bauer, 1972]
  • Ingenieria de Software es la aplicacion de un enfoque sistematico, disciplinado y cuantificable al desarrollo operacion (funcionamiento) y mantenimiento del software: es decir, la aplicacion de ingenieria al software. [IEEE, 1993]
  • La Ingenieria de Software es una disciplina de la ingenieria que comprende todos los aspectos de la produccion de software desde las etapas iniciales de la especificacion del sistema hasta el mantenimiento de este despues que se utiliza. [Sommerville, 2004]
  • La Ingenieria de Software es una disciplina que integra el proceso, los metodos, y las herramientas para el desarrollo de software de computadora. [Pressman, 2005]

Principales areas de estudio y/o investigacion

Referencias: